Vulkan-Docs/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
Jon Leech df88ded281 Change log for September 5, 2017 Vulkan 1.0.60 spec update:
* Bump API patch number and header version number to 60 for this update.

Github Issues:

  * Document that <<queries-timestamps, Timestamp Queries>> can only be
    meaningfully compared when they are written from the same queue (public
    issue 216).
  * Document that the `<extension>` tag `type` attribute is required for
    non-disabled extensions (derived from, but does not close public issue
    354).
  * Clean up registry schema length attribute descriptions to be consistent
    and correct (public issue 555).

Internal Issues:

  * Replace as much of the hand-written extension appendix metadata as
    possible with asciidoc includes generated from corresponding attributes
    of +vk.xml+, and enhance the style guide to match. This avoids
    inconsistencies between +vk.xml+ and the appendices, and produces a more
    uniform style (internal issue 137).
  * Remove the generated extDependency.{py,sh} files from the tree and
    create them dynamically on demand instead, reducing merge conflicts
    (internal issue 713).
  * Add a prototype tool for generating in-place difference markup for
    sections guarded by asciidoc conditionals, and new syntax for open
    blocks to support it (internal issue 833).
  * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle
    types to the same physical device in the
    slink:VkPhysicalDeviceIDPropertiesKHR,
    flink:VkImportMemoryWin32HandleInfoKHR,
    slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR,
    slink:VkImportSemaphoreWin32HandleInfoKHR,
    slink:VkImportSemaphoreFdInfoKHR
    <<external-memory-handle-types-compatibility, External memory handle
    types compatibility>>, <<external-semaphore-handle-types-compatibility,
    External semaphore handle types compatibility>>, and
    <<external-fence-handle-types-compatibility, External fence handle types
    compatibility>> sections (internal issue 956).

Other Issues:

  * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there
    is an interaction, but not a strict dependency), and add a new
    `extension` attribute to the `<require` XML tag to allow classifying a
    subset of interfaces of an extension as requiring another extension.
    Update the registry schema and documentation accordingly.

New Extensions:

  * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask`
    GLSL extension)
  * `VK_EXT_sample_locations`
  * `VK_EXT_validation_cache`
2017-09-04 03:06:55 -07:00

111 lines
3.7 KiB
Plaintext

include::meta/VK_EXT_shader_subgroup_ballot.txt[]
*Status*::
Draft
*Last Modified Date*::
2016-11-28
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_shader_ballot.html[+SPV_KHR_shader_ballot+]
SPIR-V extension.
- This extension requires the
https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_ballot.txt[+GL_ARB_shader_ballot+]
extension for GLSL source languages.
*Contributors*::
- Jeff Bolz, NVIDIA
- Neil Henning, Codeplay
- Daniel Koch, NVIDIA Corporation
This extension adds support for the following SPIR-V extension in Vulkan:
* +SPV_KHR_shader_ballot+
This extension provides the ability for a group of invocations, which
execute in parallel, to do limited forms of cross-invocation communication
via a group broadcast of a invocation value, or broadcast of a bitarray
representing a predicate value from each invocation in the group.
This extension provides access to a number of additional built-in shader
variables in Vulkan:
* code:SubgroupEqMaskKHR, which contains the subgroup mask of the current
subgroup invocation,
* code:SubgroupGeMaskKHR, which contains the subgroup mask of the
invocations greater than or equal to the current invocation,
* code:SubgroupGtMaskKHR, which contains the subgroup mask of the
invocations greater than the current invocation,
* code:SubgroupLeMaskKHR, which contains the subgroup mask of the
invocations less than or equal to the current invocation,
* code:SubgroupLtMaskKHR, which contains the subgroup mask of the
invocations less than the current invocation,
* code:SubgroupLocalInvocationId, which contains the index of an
invocation within a subgroup, and
* code:SubgroupSize, which contains the maximum number of invocations in a
subgroup.
Additionally, this extension provides access to the new SPIR-V instructions:
* code:OpSubgroupBallotKHR,
* code:OpSubgroupFirstInvocationKHR, and
* code:OpSubgroupReadInvocationKHR,
When using GLSL source-based shader languages, the following variables and
shader functions from GL_ARB_shader_ballot can map to these SPIR-V built-in
decorations and instructions:
* in uint64_t gl_SubGroupEqMaskARB; -> code:SubgroupEqMaskKHR,
* in uint64_t gl_SubGroupGeMaskARB; -> code:SubgroupGeMaskKHR,
* in uint64_t gl_SubGroupGtMaskARB; -> code:SubgroupGtMaskKHR,
* in uint64_t gl_SubGroupLeMaskARB; -> code:SubgroupLeMaskKHR,
* in uint64_t gl_SubGroupLtMaskARB; -> code:SubgroupLtMaskKHR,
* in uint gl_SubGroupInvocationARB; -> code:SubgroupLocalInvocationId,
* uniform uint gl_SubGroupSizeARB; -> code:SubgroupSize,
* ballotARB() -> code:OpSubgroupBallotKHR,
* readFirstInvocationARB() -> code:OpSubgroupFirstInvocationKHR, and
* readInvocationARB() -> code:OpSubgroupReadInvocationKHR.
=== New Object Types
None.
=== New Enum Constants
None.
=== New Enums
None.
=== New Structures
None.
=== New Functions
None.
=== New Built-In Variables
* <<interfaces-builtin-variables-sgeq,code:SubgroupEqMaskKHR>>
* <<interfaces-builtin-variables-sgge,code:SubgroupGeMaskKHR>>
* <<interfaces-builtin-variables-sggt,code:SubgroupGtMaskKHR>>
* <<interfaces-builtin-variables-sgle,code:SubgroupLeMaskKHR>>
* <<interfaces-builtin-variables-sglt,code:SubgroupLtMaskKHR>>
* <<interfaces-builtin-variables-sgli,code:SubgroupLocalInvocationId>>
* <<interfaces-builtin-variables-sgs,code:SubgroupSize>>
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-subgroupballot,SubgroupBallotKHR>>
=== Issues
None.
=== Version History
* Revision 1, 2016-11-28 (Daniel Koch)
- Initial draft