tu: Sort out QUERY_TYPE_PRIMITIVES_GENERATED and pipeline stats interactions, refactor START/STOP events for pipeline stats
For a5xx+ renamed:
-
RST_PIX_CNT
->START_FRAGMENT_CTRS
-
RST_VTX_CNT
->STOP_FRAGMENT_CTRS
-
TILE_FLUSH
->START_COMPUTE_CTRS
-
STAT_EVENT
->STOP_COMPUTE_CTRS
I'm not sure about a5xx itself but I'll take a chance of it being similar to a6xx in this regard.
Passes tests:
dEQP-VK.query_pool.statistics_query.*
dEQP-VK.transform_feedback.primitives_generated_query.*
Fixed:
-
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
was able to stop prim counter when pipeline stats query is running.- This may have happened when prim gen query was in secondary cmdbuf.
-
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
counting geometry in each tile. -
VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
counting geometry in each tile when pipeline stats query is started inside prim gen query and inside a renderpass.
The matter of VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
and pipeline stats
interaction is solved by tracking whether pipeline stats query is
running both on CPU (for non secondary cmdbuf case) and on GPU (for
secondary cmdbuf).
Note, prim gen query is not allowed with secondary command buffers, so only pipeline stats query is tracked on gpu. See https://gitlab.khronos.org/vulkan/vulkan/-/issues/3142
Counting geometry per each tile is solved by:
- Conditionally executing
START/STOP_PRIMITIVE_CTRS
to not run in tiling pass. Solves the case when prim gen query is inside a renderpass. - Stop prim counters before executing
draw_cs
and restarting them afterwards. Solves prim gen query being outside a renderpass.
Fixes GL CTS tests with Zink + TU_DEBUG=gmem
:
GTF-GL46.gtf30.GL3Tests.transform_feedback.transform_feedback_max_separate
GTF-GL46.gtf40.GL3Tests.transform_feedback2.transform_feedback2_basic
GTF-GL46.gtf40.GL3Tests.transform_feedback2.transform_feedback2_framebuffer
GTF-GL46.gtf40.GL3Tests.transform_feedback3.transform_feedback3_streams_overflow
GTF-GL46.gtf40.GL3Tests.transform_feedback3.transform_feedback3_streams_queried
GTF-GL46.gtf40.GL3Tests.transform_feedback2.transform_feedback2_states
Closes: #6602 (closed)