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

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

=== Other Extension Metadata

*Last Modified Date*::
    2020-08-11
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - Requires the
    {spirv}/KHR/SPV_KHR_terminate_invocation.html[`SPV_KHR_terminate_invocation`]
    SPIR-V extension.
*Contributors*::
  - Alan Baker, Google
  - Jeff Bolz, NVIDIA
  - Jesse Hall, Google
  - Ralph Potter, Samsung
  - Tom Olson, Arm

=== Description

This extension adds Vulkan support for the
{spirv}/KHR/SPV_KHR_terminate_invocation.html[`SPV_KHR_terminate_invocation`]
SPIR-V extension.
That SPIR-V extension provides a new instruction,
code:OpTerminateInvocation, which causes a shader invocation to immediately
terminate and sets the coverage of shaded samples to `0`; only previously
executed instructions will have observable effects.
The code:OpTerminateInvocation instruction, along with the
code:OpDemoteToHelperInvocation instruction from the
<<VK_EXT_shader_demote_to_helper_invocation>> extension, together replace
the code:OpKill instruction, which could behave like either of these
instructions.
code:OpTerminateInvocation provides the behavior required by the GLSL
code:discard statement, and should be used when available by GLSL compilers
and applications that need the GLSL code:discard behavior.

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

=== Version History

  * Revision 1, 2020-08-11 (Jesse Hall)
