Vulkan-Docs/appendices/VK_EXT_conservative_rasterization.txt
Jon Leech 22a5a1459f Change log for October 6, 2019 Vulkan 1.1.124 spec update:
* Update release number to 124.

Github Issues:

  * Fix Makefile SPECREMARK macro to work when not building in a git tree
    (public issue 992).
  * Ignore pname:aspectMask for unused attachments in
    slink:VkSubpassDescription2KHR valid usage statements (public pull
    request 1028).
  * Minor markup / spelling fixes (public pull requests 1035, 1045).

Internal Issues:

  * Fix markup in Valid Usage statement for slink:VkCreateFramebuffer
    (internal issue 1823).
  * Add a new <<synchronization-signal-operation-order, _signal operation
    order_>> section to the synchronization chapter which describes in
    detail the ordering guarantees provided by the API between fence and
    semaphore signal operations (internal merge request 3368).
  * Move generated `appendix/meta/` files into the Makefile GENERATED
    directory (internal merge request 3381).

New Extensions

  * `<<VK_KHR_shader_clock>>`
  * `<<VK_KHR_timeline_semaphore>>`
2019-10-06 12:42:12 -07:00

75 lines
2.4 KiB
Plaintext

include::{generated}/meta/VK_EXT_conservative_rasterization.txt[]
*Last Modified Data*::
2017-08-28
*Contributors*::
- Daniel Koch, NVIDIA
- Daniel Rakos, AMD
- Jeff Bolz, NVIDIA
- Slawomir Grajewski, Intel
- Stu Smith, Imagination Technologies
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 Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
** ename:VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
=== New Enums
* tlink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
* elink:VkConservativeRasterizationModeEXT
=== New Structures
* slink:VkPhysicalDeviceConservativeRasterizationPropertiesEXT
* slink:VkPipelineRasterizationConservativeStateCreateInfoEXT
=== New Functions
None.
=== Issues
None.
=== Version History
* Revision 1, 2017-08-28 (Piers Daniell)
- Internal revisions