Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_EXT_conservative_rasterization - device extension
VK_EXT_conservative_rasterization
- Name String
VK_EXT_conservative_rasterization
- Extension Type
- Device extension
- Registered Extension Number
- 102
- Revision
- 1
- Extension and Version Dependencies
- Requires support for Vulkan 1.0
- Requires
VK_KHR_get_physical_device_properties2
to be enabled for any device-level functionality
- Contact
Other Extension Metadata
- Last Modified Date
- 2020-06-09
- Interactions and External Dependencies
- This extension requires
SPV_EXT_fragment_fully_covered
if the
PhysicalDeviceConservativeRasterizationPropertiesEXT
::fullyCoveredFragmentShaderInputVariable
feature is used. - This extension requires
SPV_KHR_post_depth_coverageif
the
PhysicalDeviceConservativeRasterizationPropertiesEXT
::conservativeRasterizationPostDepthCoverage
feature is used. - This extension provides API support for
GL_NV_conservative_raster_underestimation
if the
PhysicalDeviceConservativeRasterizationPropertiesEXT
::fullyCoveredFragmentShaderInputVariable
feature is used.
- This extension requires
SPV_EXT_fragment_fully_covered
if the
- Contributors
- Daniel Koch, NVIDIA
- Daniel Rakos, AMD
- Jeff Bolz, NVIDIA
- Slawomir Grajewski, Intel
- Stu Smith, Imagination Technologies
Description
This extension adds a new rasterization mode called conservative rasterization. There are two modes of conservative rasterization; overestimation and underestimation.
When overestimation is enabled, if any part of the primitive, including its edges, covers any part of the rectangular pixel area, including its sides, then a fragment is generated with all coverage samples turned on. This extension allows for some variation in implementations by accounting for differences in overestimation, where the generating primitive size is increased at each of its edges by some sub-pixel amount to further increase conservative pixel coverage. Implementations can allow the application to specify an extra overestimation beyond the base overestimation the implementation already does. It also allows implementations to either cull degenerate primitives or rasterize them.
When underestimation is enabled, fragments are only generated if the rectangular pixel area is fully covered by the generating primitive. If supported by the implementation, when a pixel rectangle is fully covered the fragment shader input variable builtin called FullyCoveredEXT is set to true. The shader variable works in either overestimation or underestimation mode.
Implementations can process degenerate triangles and lines by either discarding them or generating conservative fragments for them. Degenerate triangles are those that end up with zero area after the rasterizer quantizes them to the fixed-point pixel grid. Degenerate lines are those with zero length after quantization.
New Structures
New Enums
New Bitmasks
New Enum Constants
New Built-In Variables
New SPIR-V Capabilities
Version History
Revision 1.1, 2020-09-06 (Piers Daniell)
- Add missing SPIR-V and GLSL dependencies.
Revision 1, 2017-08-28 (Piers Daniell)
- Internal revisions
See Also
ConservativeRasterizationModeEXT
,
PhysicalDeviceConservativeRasterizationPropertiesEXT
,
PipelineRasterizationConservativeStateCreateFlagsEXT
,
PipelineRasterizationConservativeStateCreateInfoEXT
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- data PhysicalDeviceConservativeRasterizationPropertiesEXT = PhysicalDeviceConservativeRasterizationPropertiesEXT {
- primitiveOverestimationSize :: Float
- maxExtraPrimitiveOverestimationSize :: Float
- extraPrimitiveOverestimationSizeGranularity :: Float
- primitiveUnderestimation :: Bool
- conservativePointAndLineRasterization :: Bool
- degenerateTrianglesRasterized :: Bool
- degenerateLinesRasterized :: Bool
- fullyCoveredFragmentShaderInputVariable :: Bool
- conservativeRasterizationPostDepthCoverage :: Bool
- data PipelineRasterizationConservativeStateCreateInfoEXT = PipelineRasterizationConservativeStateCreateInfoEXT {}
- newtype PipelineRasterizationConservativeStateCreateFlagsEXT = PipelineRasterizationConservativeStateCreateFlagsEXT Flags
- newtype ConservativeRasterizationModeEXT where
- ConservativeRasterizationModeEXT Int32
- pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: ConservativeRasterizationModeEXT
- pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: ConservativeRasterizationModeEXT
- pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT
- type EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1
- pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: forall a. Integral a => a
- type EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization"
- pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data PhysicalDeviceConservativeRasterizationPropertiesEXT Source #
VkPhysicalDeviceConservativeRasterizationPropertiesEXT - Structure describing conservative raster properties that can be supported by an implementation
Description
If the PhysicalDeviceConservativeRasterizationPropertiesEXT
structure
is included in the pNext
chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2
,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
PhysicalDeviceConservativeRasterizationPropertiesEXT | |
|
Instances
data PipelineRasterizationConservativeStateCreateInfoEXT Source #
VkPipelineRasterizationConservativeStateCreateInfoEXT - Structure specifying conservative raster state
Description
If this structure is not included in the pNext
chain,
conservativeRasterizationMode
is considered to be
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
, and and conservative
rasterization is disabled.
Polygon rasterization can be made conservative by setting
conservativeRasterizationMode
to
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
or
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
in
PipelineRasterizationConservativeStateCreateInfoEXT
.
Note
If conservativePointAndLineRasterization is supported, conservative rasterization can be applied to line and point primitives, otherwise it must be disabled.
Valid Usage (Implicit)
See Also
VK_EXT_conservative_rasterization,
ConservativeRasterizationModeEXT
,
PipelineRasterizationConservativeStateCreateFlagsEXT
,
StructureType
PipelineRasterizationConservativeStateCreateInfoEXT | |
|
Instances
newtype PipelineRasterizationConservativeStateCreateFlagsEXT Source #
VkPipelineRasterizationConservativeStateCreateFlagsEXT - Reserved for future use
Description
PipelineRasterizationConservativeStateCreateFlagsEXT
is a bitmask type
for setting a mask, but is currently reserved for future use.
See Also
VK_EXT_conservative_rasterization,
PipelineRasterizationConservativeStateCreateInfoEXT
Instances
newtype ConservativeRasterizationModeEXT Source #
VkConservativeRasterizationModeEXT - Specify the conservative rasterization mode
See Also
VK_EXT_conservative_rasterization,
PipelineRasterizationConservativeStateCreateInfoEXT
,
cmdSetConservativeRasterizationModeEXT
pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: ConservativeRasterizationModeEXT |
|
pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: ConservativeRasterizationModeEXT |
|
pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT |
|
Instances
pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" Source #
pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #