bf4c160909
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: https://gitlab.freedesktop.org/mesa/mesa/-/issues/6602 Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17163>