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

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

=== Other Extension Metadata

*Last Modified Date*::
    2019-06-01
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - This extension requires
    {spirv}/EXT/SPV_EXT_demote_to_helper_invocation.html[`SPV_EXT_demote_to_helper_invocation`]
*Contributors*::
  - Jeff Bolz, NVIDIA

=== Description

This extension adds Vulkan support for the
{spirv}/EXT/SPV_EXT_demote_to_helper_invocation.html[`SPV_EXT_demote_to_helper_invocation`]
SPIR-V extension.
That SPIR-V extension provides a new instruction
code:OpDemoteToHelperInvocationEXT allowing shaders to "`demote`" a fragment
shader invocation to behave like a helper invocation for its duration.
The demoted invocation will have no further side effects and will not output
to the framebuffer, but remains active and can participate in computing
derivatives and in <<shaders-group-operations, group operations>>.
This is a better match for the "`discard`" instruction in HLSL.

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

=== New SPIR-V Capability

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

=== Version History

 * Revision 1, 2019-06-01 (Jeff Bolz)
   - Initial draft
