summaryrefslogtreecommitdiff
path: root/appendices/VK_EXT_shader_demote_to_helper_invocation.adoc
blob: 27bb4aae6c147a6b3c4caffbc9428fd1b485c3df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright 2019-2023 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
    2019-06-01
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.3 Core
*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`]
  - This extension provides API support for
    {GLSLregistry}/ext/GLSL_EXT_demote_to_helper_invocation.txt[`GL_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.adoc[]

=== New SPIR-V Capability

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

=== Promotion to Vulkan 1.3

Functionality in this extension is included in core Vulkan 1.3, with the EXT
suffix omitted.
The original type, enum and command names are still available as aliases of
the core functionality.

=== Version History

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