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