HORIZON HASKELLDocslts/ghc-10.0.xfc4e5982026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · fc4e598 · 2026-10-11

Modulevulkan-3.27GHC2021

Vulkan.Extensions.VK_EXT_conservative_rasterization

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

Ratification Status

Ratified

Extension and Version Dependencies

VK_KHR_get_physical_device_properties2

or

Vulkan Version 1.1

SPIR-V Dependencies
Contact

Other Extension Metadata

Last Modified Date

2020-06-09

Interactions and External Dependencies
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

No cross-references are available

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.

  • 6 types
  • Packagevulkan-3.27
  • Exports11
  • LanguageGHC2021
  • LicenceBSD-3-Clause
  • SourceVK_EXT_conservative_rasterization.hs

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.

Structure Chaining

Extends the structure

See Also

VK_EXT_conservative_rasterization, Bool32, StructureType

Constructors

  • PhysicalDeviceConservativeRasterizationPropertiesEXT
    • primitiveOverestimationSize :: Float

      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 :: 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.

    • extraPrimitiveOverestimationSizeGranularity :: 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.

    • primitiveUnderestimation :: Bool

      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.

    • conservativePointAndLineRasterization :: 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.

    • degenerateTrianglesRasterized :: 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.

    • degenerateLinesRasterized :: 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.

    • fullyCoveredFragmentShaderInputVariable :: Bool

      fullyCoveredFragmentShaderInputVariable is TRUE if the implementation supports the SPIR-V builtin fragment shader input variable FullyCoveredEXT specifying that conservative rasterization is enabled and the fragment area is fully covered by the generating primitive.

    • conservativeRasterizationPostDepthCoverage :: Bool

      conservativeRasterizationPostDepthCoverage is TRUE if the implementation supports conservative rasterization with the PostDepthCoverage execution mode enabled. Otherwise the PostDepthCoverage execution mode must not be used when conservative rasterization is enabled.

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

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 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.

If conservativePointAndLineRasterization is supported, conservative rasterization can be applied to line and point primitives, otherwise it must be disabled.

Structure Chaining

Extends the structure

See Also

VK_EXT_conservative_rasterization, ConservativeRasterizationModeEXT, PipelineRasterizationConservativeStateCreateFlagsEXT, StructureType

Constructors

Instances6Eq, Show, Storable, FromCStruct, ToCStruct, Zero

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, Flags, PipelineRasterizationConservativeStateCreateInfoEXT

Instances8Eq, Ord, Read, Show, Bits, FiniteBits, …

VkConservativeRasterizationModeEXT - Specify the conservative rasterization mode

Description

See Also

VK_EXT_conservative_rasterization, PipelineRasterizationConservativeStateCreateInfoEXT, cmdSetConservativeRasterizationModeEXT

Instances6Eq, Ord, Read, Show, Storable, Zero