vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_KHR_shader_draw_parameters

Description

Name

VK_KHR_shader_draw_parameters - device extension

VK_KHR_shader_draw_parameters

Name String
VK_KHR_shader_draw_parameters
Extension Type
Device extension
Registered Extension Number
64
Revision
1
Ratification Status
Ratified
Extension and Version Dependencies; Deprecation State
Contact

Other Extension Metadata

Last Modified Date
2017-09-05
IP Status
No known IP claims.
Interactions and External Dependencies
Contributors
  • Daniel Koch, NVIDIA Corporation
  • Jeff Bolz, NVIDIA
  • Daniel Rakos, AMD
  • Jan-Harald Fredriksen, ARM
  • John Kessenich, Google
  • Stuart Smith, IMG

Description

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:

  • BaseInstance, containing the firstInstance parameter passed to drawing commands,
  • BaseVertex, containing the firstVertex or vertexOffset parameter passed to drawing commands, and
  • DrawIndex, containing the index of the draw call currently being processed from an indirect drawing 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;BaseInstance,
  • in int gl_BaseVertexARB;BaseVertex, and
  • in int gl_DrawIDARB;DrawIndex.

Promotion to Vulkan 1.1

All functionality in this extension is included in core Vulkan 1.1. However, the shaderDrawParameters feature bit was added to distinguish whether it is actually available or not.

New Enum Constants

New Built-In Variables

New SPIR-V Capabilities

Issues

1) Is this the same functionality as GL_ARB_shader_draw_parameters?

RESOLVED: It is actually a superset, as it also adds in support for arrayed drawing commands.

In GL for GL_ARB_shader_draw_parameters, 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 gl_BaseVertexARB is zero. This means that gl_BaseVertexARB = baseVertex (for glDrawElements commands with baseVertex) or 0. In particular there are no 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

See Also

No cross-references are available

Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

Documentation

type KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" Source #