// Copyright 2021-2024 The Khronos Group Inc. // // SPDX-License-Identifier: CC-BY-4.0 include::{generated}/meta/{refprefix}VK_EXT_primitives_generated_query.adoc[] === 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. include::{generated}/interfaces/VK_EXT_primitives_generated_query.adoc[] === 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 sname:VkPipelineRasterizationStateCreateInfo::pname: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