Vulkan-Docs/appendices/VK_NV_compute_shader_derivatives.txt
Jon Leech 9858c1e89e Change log for September 19, 2018 Vulkan 1.1.85 spec update:
* Update release number to 85.

Public Issues:

  * Add self-dependency ename:VK_DEPENDENCY_BY_REGION_BIT valid usage
    statements for slink:VkSubpassDependency(public pull request 778).
  * Apply fix from pull request 742 to slink:VkSubpassDependency and
    slink:VkSubpassDependency2 (public pull request 779).
  * Specify the units of slink:VkBufferImageCopy::pname:bufferRowLength and
    pname:bufferImageHeight as texels (public pull request 781).
  * Better specify promoted parameter mapping in the
    `<<VK_KHR_create_renderpass2>>` appendix (public pull request 782).

Internal Issues:

  * Only include the <<fundamentals-validusage-versions, Valid Usage for
    Newer Core Versions>> section in Vulkan 1.1 or later (internal issue
    1381).

Other Issues:

  * Clean up redundant valid usage language for the
    `VK_ANDROID_external_memory_android_hardware_buffer` extension
    interaction with slink:VkImageCreateInfo.
  * Fix error in a flag name within valid usage statements for
    slink:VkMemoryAllocateInfo.
  * Clarify that memory types are not totally ordered in
    slink:VkPhysicalDeviceMemoryProperties.
  * For slink:VkWriteDescriptorSetInlineUniformBlockEXT, set
    structextends="VkWriteDescriptorSet" in `vk.xml`, and make
    slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::pname:pBindingFlags
    optional.
  * Add documentation of 'provisional' XML attribute to registry.txt.

New Extensions:

  * `VK_NV_compute_shader_derivatives`
  * `VK_NV_corner_sampled_image`
  * `VK_NV_fragment_shader_barycentric`
  * `VK_NV_mesh_shader`
  * `VK_NV_representative_fragment_test`
  * `VK_NV_scissor_exclusive`
  * `VK_NV_shader_image_footprint`
  * `VK_NV_shading_rate_image`
  * `VK_NVX_raytracing`
2018-09-15 18:35:16 -07:00

68 lines
1.7 KiB
Plaintext

include::meta/VK_NV_compute_shader_derivatives.txt[]
*Last Modified Date*::
2018-07-19
*IP Status*::
No known IP claims.
*Contributors*::
- Pat Brown, NVIDIA
This extension adds Vulkan support for the
`SPV_NV_compute_shader_derivatives` SPIR-V extension.
The SPIR-V extension provides two new execution modes, both of which allow
compute shaders to use built-ins that evaluate compute derivatives
explicitly or implicitly.
Derivatives will be computed via differencing over a 2x2 group of shader
invocations.
The code:DerivativeGroupQuadsNV execution mode assembles shader invocations
into 2x2 groups, where each group has x and y coordinates of the local
invocation ID of the form (2m+{0,1}, 2n+{0,1}).
The code:DerivativeGroupLinearNV execution mode assembles shader invocations
into 2x2 groups, where each group has local invocation index values of the
form 4m+{0,1,2,3}.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
=== New Enums
None.
=== New Structures
* slink:VkPhysicalDeviceComputeShaderDerivativesFeaturesNV
=== New Functions
None.
=== New SPIR-V Capability
* <<spirvenv-capabilities-table-computederivatives-quads,ComputeDerivativeGroupQuadsNV>>
* <<spirvenv-capabilities-table-computederivatives-linear,ComputeDerivativeGroupLinearNV>>
=== Issues
(1) Should we specify that the groups of four shader invocations used for
derivatives in a compute shader are the same groups of four invocations
that form a "quad" in shader subgroups?
*RESOLVED*: Yes.
=== Examples
None.
=== Version History
* Revision 1, 2018-07-19 (Pat Brown)
- Initial draft