mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-14 23:37:21 +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`
105 lines
3.0 KiB
Plaintext
105 lines
3.0 KiB
Plaintext
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
|
// Creative Commons Attribution 4.0 International License; see
|
|
// http://creativecommons.org/licenses/by/4.0/
|
|
|
|
include::meta/VK_KHR_shader_draw_parameters.txt[]
|
|
|
|
*Status*::
|
|
Complete
|
|
*Last Modified Date*::
|
|
2016-10-05
|
|
*IP Status*::
|
|
No known IP claims.
|
|
*Interactions and External Dependencies*::
|
|
- Requires the
|
|
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_shader_draw_parameters.html[+SPV_KHR_shader_draw_parameters+]
|
|
SPIR-V extension.
|
|
- Requires
|
|
https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_draw_parameters.txt[+GL_ARB_shader_draw_parameters+]
|
|
for GLSL source languages.
|
|
*Contributors*::
|
|
- Daniel Koch, NVIDIA Corporation
|
|
- Jeff Bolz, NVIDIA
|
|
- Daniel Rakos, AMD
|
|
- Jan-Harald Fredriksen, ARM
|
|
- John Kessenich, Google
|
|
- Stuart Smith, IMG
|
|
|
|
This extension adds support for the following SPIR-V extension in Vulkan:
|
|
|
|
* +SPV_KHR_shader_draw_parameters+
|
|
|
|
The extension provides access to three additional built-in shader variables
|
|
in Vulkan:
|
|
|
|
* code:BaseInstance, which contains the firstInstance parameter passed to
|
|
draw commands,
|
|
* code:BaseVertex, which contains the firstVertex/vertexOffset parameter
|
|
passed to draw commands, and
|
|
* code:DrawIndex, which contains the index of the draw call currently
|
|
being processed from an indirect draw call.
|
|
|
|
When using GLSL source-based shader languages, the following variables from
|
|
+GL_ARB_shader_draw_parameters+ can map to these SPIR-V built-in
|
|
decorations:
|
|
|
|
* in int gl_BaseInstanceARB; -> code:BaseInstance,
|
|
* in int gl_BaseVertexARB -> code:BaseVertex, and
|
|
* in int gl_DrawIDARB; -> code:DrawIndex.
|
|
|
|
=== New Object Types
|
|
|
|
None.
|
|
|
|
=== New Enum Constants
|
|
|
|
None.
|
|
|
|
=== New Enums
|
|
|
|
None.
|
|
|
|
=== New Structures
|
|
|
|
None.
|
|
|
|
=== New Functions
|
|
|
|
None.
|
|
|
|
=== New Built-In Variables
|
|
|
|
* <<interfaces-builtin-variables-baseinstance,code:BaseInstance>>
|
|
* <<interfaces-builtin-variables-basevertex,code:BaseVertex>>
|
|
* <<interfaces-builtin-variables-drawindex,code:DrawIndex>>
|
|
|
|
=== New SPIR-V Capabilities
|
|
|
|
* <<spirvenv-capabilities-table-drawparameters,DrawParameters>>
|
|
|
|
=== Issues
|
|
|
|
1) Is this the same functionality as +GL_ARB_shader_draw_parameters+?
|
|
|
|
*RESOLVED*: It's actually a superset as it also adds in support for arrayed
|
|
drawing commands.
|
|
|
|
In GL for +GL_ARB_shader_draw_parameters+, code:gl_BaseVertexARB holds the
|
|
integer value passed to the parameter to the command that resulted in the
|
|
current shader invocation.
|
|
In the case where the command has no baseVertex parameter, the value of
|
|
code:gl_BaseVertexARB is zero.
|
|
This means that code:gl_BaseVertexARB = baseVertex (for code:glDrawElements
|
|
commands with baseVertex) or 0.
|
|
In particular there are no code:glDrawArrays commands that take a baseVertex
|
|
parameter.
|
|
|
|
Now in Vulkan, we have *BaseVertex* = _vertexOffset_ (for indexed drawing
|
|
commands) or _firstVertex_ (for arrayed drawing commands), and so Vulkan's
|
|
version is really a superset of GL functionality.
|
|
|
|
=== Version History
|
|
|
|
* Revision 1, 2016-10-05 (Daniel Koch)
|
|
- Internal revisions
|