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:
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