VK_EXT_primitives_generated_query(3)

# VK_EXT_primitives_generated_query(3) Manual Page

## Name

VK_EXT_primitives_generated_query - device extension

Loading… please wait.

## Registered Extension Number

383

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_EXT_transform_feedback

## Special Use

- OpenGL / ES support

## Contact

- Shahbaz Youssefi [GitHub]syoussefi

## Extension Proposal

VK_EXT_primitives_generated_query

## Other Extension Metadata

Last Modified Date

  2022-01-24

Contributors

  - Shahbaz Youssefi, Google

  - Piers Daniell, NVIDIA

  - Faith Ekstrand, Collabora

  - Jan-Harald Fredriksen, Arm

## Description

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

## New Structures

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT

## New Enum Constants

- `VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME`

- `VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION`

- Extending VkQueryType:

  - VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT

## Issues

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.

2) Can `VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT` be used instead?

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

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.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0