{-# language CPP #-} -- | = Name -- -- VK_EXT_robustness2 - device extension -- -- = VK_EXT_robustness2 -- -- [__Name String__] -- @VK_EXT_robustness2@ -- -- [__Extension Type__] -- Device extension -- -- [__Registered Extension Number__] -- 287 -- -- [__Revision__] -- 1 -- -- [__Ratification Status__] -- Ratified -- -- [__Extension and Version Dependencies__] -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2> -- or -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1> -- -- [__Deprecation State__] -- -- - /Promoted/ to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_robustness2 VK_KHR_robustness2> -- extension -- -- [__Contact__] -- -- - Liam Middlebrook -- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_robustness2] @liam-middlebrook%0A*Here describe the issue or question you have about the VK_EXT_robustness2 extension* > -- -- == Other Extension Metadata -- -- [__Last Modified Date__] -- 2020-01-29 -- -- [__IP Status__] -- No known IP claims. -- -- [__Contributors__] -- -- - Liam Middlebrook, NVIDIA -- -- - Jeff Bolz, NVIDIA -- -- == Description -- -- This extension adds stricter requirements for how out of bounds reads -- and writes are handled. Most accesses /must/ be tightly bounds-checked, -- out of bounds writes /must/ be discarded, out of bound reads /must/ -- return zero. Rather than allowing multiple possible (0,0,0,x) vectors, -- the out of bounds values are treated as zero, and then missing -- components are inserted based on the format as described in -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-component-substitution> -- and -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>. -- -- These additional requirements /may/ be expensive on some -- implementations, and should only be enabled when truly necessary. -- -- This extension also adds support for “null descriptors”, where -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' /can/ be used instead of a -- valid handle. Accesses to null descriptors have well-defined behavior, -- and do not rely on robustness. -- -- == Promotion to @VK_KHR_robustness2@ -- -- All functionality in this extension is included in @VK_KHR_robustness2@, -- with the suffix changed to KHR. The original type, enum, and command -- names are still available as aliases of the core functionality. -- -- == New Structures -- -- - Extending -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', -- 'Vulkan.Core10.Device.DeviceCreateInfo': -- -- - 'PhysicalDeviceRobustness2FeaturesEXT' -- -- - Extending -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2': -- -- - 'PhysicalDeviceRobustness2PropertiesEXT' -- -- == New Enum Constants -- -- - 'EXT_ROBUSTNESS_2_EXTENSION_NAME' -- -- - 'EXT_ROBUSTNESS_2_SPEC_VERSION' -- -- - Extending 'Vulkan.Core10.Enums.StructureType.StructureType': -- -- - 'STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT' -- -- - 'STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT' -- -- == Issues -- -- 1. Why do -- 'PhysicalDeviceRobustness2PropertiesEXT'::@robustUniformBufferAccessSizeAlignment@ -- and -- 'PhysicalDeviceRobustness2PropertiesEXT'::@robustStorageBufferAccessSizeAlignment@ -- exist? -- -- __RESOLVED__: Some implementations cannot efficiently tightly -- bounds-check all buffer accesses. Rather, the size of the bound range is -- padded to some power of two multiple, up to 256 bytes for uniform -- buffers and up to 4 bytes for storage buffers, and that padded size is -- bounds-checked. This is sufficient to implement D3D-like behavior, -- because D3D only allows binding whole uniform buffers or ranges that are -- a multiple of 256 bytes, and D3D raw and structured buffers only support -- 32-bit accesses. -- -- == Examples -- -- None. -- -- == Version History -- -- - Revision 1, 2019-11-01 (Jeff Bolz, Liam Middlebrook) -- -- - Initial draft -- -- == See Also -- -- No cross-references are available -- -- == Document Notes -- -- For more information, see the -- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>. -- -- This page is a generated document. Fixes and changes should be made to -- the generator scripts, not directly. module Vulkan.Extensions.VK_EXT_robustness2 ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT , PhysicalDeviceRobustness2FeaturesEXT , PhysicalDeviceRobustness2PropertiesEXT , EXT_ROBUSTNESS_2_SPEC_VERSION , pattern EXT_ROBUSTNESS_2_SPEC_VERSION , EXT_ROBUSTNESS_2_EXTENSION_NAME , pattern EXT_ROBUSTNESS_2_EXTENSION_NAME , PhysicalDeviceRobustness2FeaturesKHR(..) , PhysicalDeviceRobustness2PropertiesKHR(..) ) where import Data.String (IsString) import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR) import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2PropertiesKHR) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR)) import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2FeaturesKHR(..)) import Vulkan.Extensions.VK_KHR_robustness2 (PhysicalDeviceRobustness2PropertiesKHR(..)) -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT" pattern $mSTRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r $bSTRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT :: StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR -- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT" pattern $mSTRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r $bSTRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT :: StructureType STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR -- No documentation found for TopLevel "VkPhysicalDeviceRobustness2FeaturesEXT" type PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR -- No documentation found for TopLevel "VkPhysicalDeviceRobustness2PropertiesEXT" type PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR type EXT_ROBUSTNESS_2_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_ROBUSTNESS_2_SPEC_VERSION" pattern EXT_ROBUSTNESS_2_SPEC_VERSION :: forall a . Integral a => a pattern $mEXT_ROBUSTNESS_2_SPEC_VERSION :: forall {r} {a}. Integral a => a -> ((# #) -> r) -> ((# #) -> r) -> r $bEXT_ROBUSTNESS_2_SPEC_VERSION :: forall a. Integral a => a EXT_ROBUSTNESS_2_SPEC_VERSION = 1 type EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" -- No documentation found for TopLevel "VK_EXT_ROBUSTNESS_2_EXTENSION_NAME" pattern EXT_ROBUSTNESS_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a pattern $mEXT_ROBUSTNESS_2_EXTENSION_NAME :: forall {r} {a}. (Eq a, IsString a) => a -> ((# #) -> r) -> ((# #) -> r) -> r $bEXT_ROBUSTNESS_2_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2"