mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-06 03:23:40 +00:00
* 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`
111 lines
3.7 KiB
Plaintext
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
|