// Copyright (c) 2019-2020 NVIDIA Corporation
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
    2019-05-28
*Interactions and External Dependencies*::
 - This extension requires
   {spirv}/NV/SPV_NV_shader_sm_builtins.html[`SPV_NV_shader_sm_builtins`].
 - This extension enables
   https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GLSL_NV_shader_sm_builtins.txt[`GL_NV_shader_sm_builtins`]
   for GLSL source languages.
*Contributors*::
  - Jeff Bolz, NVIDIA
  - Eric Werness, NVIDIA

=== Description

This extension provides the ability to determine device-specific properties
on NVIDIA GPUs.
It provides the number of streaming multiprocessors (SMs), the maximum
number of warps (subgroups) that can run on an SM, and shader builtins to
enable invocations to identify which SM and warp a shader invocation is
executing on.

This extension enables support for the SPIR-V code:ShaderSMBuiltinsNV
capability.

These properties and built-ins should: typically only be used for debugging
purposes.

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

=== New or Modified Built-In Variables

  * <<interfaces-builtin-variables-warpspersmnv,code:WarpsPerSMNV>>
  * <<interfaces-builtin-variables-smcountnv,code:SMCountNV>>
  * <<interfaces-builtin-variables-warpidnv,code:WarpIDNV>>
  * <<interfaces-builtin-variables-smidnv,code:SMIDNV>>

=== New SPIR-V Capabilities

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

=== Issues
. What should we call this extension?
+
--
*RESOLVED*: `NV_shader_sm_builtins`.
Other options considered included:

  * `NV_shader_smid` - but SMID is really easy to typo/confuse as SIMD.
  * `NV_shader_sm_info` - but *Info* is typically reserved for input
    structures

--


=== Version History

  * Revision 1, 2019-05-28 (Daniel Koch)
    - Internal revisions


