| 
              
f691b3b5
               | 
              
2020-12-02T13:11:54
               | 
              
               | 
              
Vulkan: Support PrimitivesGenerated query
This query uses the Vulkan transform feedback extension.  In GL,
GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN and GL_PRIMITIVES_GENERATED
queries can be independently begun/ended.  However, Vulkan requires that
queries from pools of the same type can only be active one at a time.
This forbids the two GL queries from being handled by two VK queries
when they are simultaneously begun.
This change makes these queries share their QueryHelper objects.  The
Vulkan transform feedback queries unconditionally retrieve both results
anyway, so this is just a matter of making sure the two GL queries are
merged as one when they are simultaneously used.
The change fixes a number of issues as collateral:
- TransformFeedbackPrimitivesWritten queries when !emulated were not
  released
- Stashed queries were never released
- If no render pass is open when a query ends, then getResult(no_wait)
  ended up waiting
Bug: angleproject:5404
Change-Id: I8ce13ea76ffd31b3152ded7c713c6466d0315504
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2573580
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
               |