Skip to content

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)

Edited by Danylo Piliaiev

Merge request reports