• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2018-2020 NVIDIA Corporation
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5include::{generated}/meta/{refprefix}VK_NV_compute_shader_derivatives.txt[]
6
7=== Other Extension Metadata
8
9*Last Modified Date*::
10    2018-07-19
11*IP Status*::
12    No known IP claims.
13*Interactions and External Dependencies*::
14  - This extension requires
15    {spirv}/NV/SPV_NV_compute_shader_derivatives.html[`SPV_NV_compute_shader_derivatives`]
16  - This extension provides API support for
17    https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_compute_shader_derivatives.txt[`GL_NV_compute_shader_derivatives`]
18*Contributors*::
19  - Pat Brown, NVIDIA
20
21=== Description
22
23This extension adds Vulkan support for the
24{spirv}/NV/SPV_NV_compute_shader_derivatives.html[`SPV_NV_compute_shader_derivatives`]
25SPIR-V extension.
26
27The SPIR-V extension provides two new execution modes, both of which allow
28compute shaders to use built-ins that evaluate compute derivatives
29explicitly or implicitly.
30Derivatives will be computed via differencing over a 2x2 group of shader
31invocations.
32The code:DerivativeGroupQuadsNV execution mode assembles shader invocations
33into 2x2 groups, where each group has x and y coordinates of the local
34invocation ID of the form (2m+{0,1}, 2n+{0,1}).
35The code:DerivativeGroupLinearNV execution mode assembles shader invocations
36into 2x2 groups, where each group has local invocation index values of the
37form 4m+{0,1,2,3}.
38
39include::{generated}/interfaces/VK_NV_compute_shader_derivatives.txt[]
40
41=== New SPIR-V Capability
42
43  * <<spirvenv-capabilities-table-ComputeDerivativeGroupQuadsNV,ComputeDerivativeGroupQuadsNV>>
44  * <<spirvenv-capabilities-table-ComputeDerivativeGroupLinearNV,ComputeDerivativeGroupLinearNV>>
45
46=== Issues
47
48(1) Should we specify that the groups of four shader invocations used for
49derivatives in a compute shader are the same groups of four invocations that
50form a "`quad`" in shader subgroups?
51
52*RESOLVED*: Yes.
53
54
55=== Examples
56
57None.
58
59=== Version History
60
61 * Revision 1, 2018-07-19 (Pat Brown)
62   - Initial draft
63