// Copyright 2017-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_post_depth_coverage.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2017-07-17
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/KHR/SPV_KHR_post_depth_coverage.html[`SPV_KHR_post_depth_coverage`]
  - This extension provides API support for
    https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_post_depth_coverage.txt[`GL_ARB_post_depth_coverage`]
    and
    https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_post_depth_coverage.txt[`GL_EXT_post_depth_coverage`]
*Contributors*::
  - Jeff Bolz, NVIDIA

=== Description

This extension adds support for the following SPIR-V extension in Vulkan:

  * `SPV_KHR_post_depth_coverage`

which allows the fragment shader to control whether values in the
code:SampleMask built-in input variable reflect the coverage after early
<<fragops-depth,depth>> and <<fragops-stencil,stencil>> tests are applied.

This extension adds a new code:PostDepthCoverage execution mode under the
code:SampleMaskPostDepthCoverage capability.
When this mode is specified along with code:EarlyFragmentTests, the value of
an input variable decorated with the
<<interfaces-builtin-variables-samplemask, code:SampleMask>> built-in
reflects the coverage after the <<shaders-fragment-earlytest, early fragment
tests>> are applied.
Otherwise, it reflects the coverage before the depth and stencil tests.

When using GLSL source-based shading languages, the code:post_depth_coverage
layout qualifier from GL_ARB_post_depth_coverage or
GL_EXT_post_depth_coverage maps to the code:PostDepthCoverage execution
mode.

include::{generated}/interfaces/VK_EXT_post_depth_coverage.txt[]

=== New SPIR-V Capabilities

  * <<spirvenv-capabilities-table-SampleMaskPostDepthCoverage,SampleMaskPostDepthCoverage>>

=== Version History

  * Revision 1, 2017-07-17 (Daniel Koch)
    - Internal revisions
