Registered Extension Number




Extension and Version Dependencies

Special Use


Extension Proposal

Other Extension Metadata

Last Modified Date


  • Shahbaz Youssefi, Google

  • Piers Daniell, NVIDIA

  • Jason Ekstrand, Collabora

  • Jan-Harald Fredriksen, Arm


This extension adds support for a new query type to match OpenGL’s GL_PRIMITIVES_GENERATED to support layering.

New Structures

New Enum Constants



  • Extending VkQueryType:


  • Extending VkStructureType:



1) Can the query from VK_EXT_transform_feedback be used instead?

RESOLVED: No. While the query from VK_EXT_transform_feedback can produce the same results as in this extension, it is only available while transform feedback is active. The OpenGL GL_PRIMITIVES_GENERATED query is independent from transform feedback. Emulation through artificial transform feedback is unnecessarily inefficient.


RESOLVED: It could, but we prefer the extension for simplicity. Vulkan requires that only one query be active at a time. If both the GL_PRIMITIVES_GENERATED and the GL_CLIPPING_INPUT_PRIMITIVES_ARB queries need to be simultaneously enabled, emulation of both through VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT is inconvenient.

3) On some hardware, this query cannot be implemented if VkPipelineRasterizationStateCreateInfo::rasterizerDiscardEnable is enabled. How will this be handled?

RESOLVED: A feature flag is exposed by this extension for this. On said hardware, the GL implementation disables rasterizer-discard and achieves the same effect through other means. It will not be able to do the same in Vulkan due to lack of state information. A feature flag is exposed by this extension so the OpenGL implementation on top of Vulkan would be able to implement a similar workaround.

4) On some hardware, this query cannot be implemented for non-zero query indices. How will this be handled?

RESOLVED: A feature flag is exposed by this extension for this. If this feature is not present, the query from VK_EXT_transform_feedback can be used to the same effect.

5) How is the interaction of this extension with transformFeedbackRasterizationStreamSelect handled?

RESOLVED: Disallowed for non-zero streams. In OpenGL, the rasterization stream is always stream zero.

Version History

  • Revision 1, 2021-06-23 (Shahbaz Youssefi)

    • Internal revisions

See Also

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.

Copyright 2014-2022 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0