Module: Mesa Branch: main Commit: be325029795afcd8e3fd8e36b53e18580306705e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=be325029795afcd8e3fd8e36b53e18580306705e
Author: Samuel Pitoiset <[email protected]> Date: Thu Oct 5 08:53:04 2023 +0200 radv: fix synchronization with emulated GS primitives/invocations queries Move emitting the EOP even which writes the availability bit after the GDS copy to ensure it's available. This should fix all GS primitives/invocations flakes in CI. Cc: mesa-stable Signed-off-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25457> --- src/amd/ci/radv-navi10-aco-flakes.txt | 1 - src/amd/ci/radv-navi21-aco-flakes.txt | 5 ----- src/amd/ci/radv-vangogh-aco-flakes.txt | 5 ----- src/amd/vulkan/radv_query.c | 8 ++++---- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/amd/ci/radv-navi10-aco-flakes.txt b/src/amd/ci/radv-navi10-aco-flakes.txt index d5e06006fca..af305ac3c1f 100644 --- a/src/amd/ci/radv-navi10-aco-flakes.txt +++ b/src/amd/ci/radv-navi10-aco-flakes.txt @@ -7,7 +7,6 @@ dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.contents_secondary_cmdbuffers dEQP-VK.dynamic_rendering.primary_cmd_buff.basic.single_cmdbuffer dEQP-VK.pipeline.fast_linked_library.image.suballocation.sampling_type.combined.view_type.cube_array.format.r8g8b8a8_unorm.count_4.size.32x32_array_of_36 dEQP-VK.pipeline.monolithic.extended_dynamic_state.cmd_buffer_start.topology_line_geom -dEQP-VK.query_pool.statistics_query.host_query_reset.geometry_shader_invocations.secondary.32bits_triangle_strip_clear_depth dEQP-VK.texture.filtering.3d.combinations.nearest.linear.mirror_clamp_to_edge.mirror_clamp_to_edge.repeat # Catch all the line-related flakes we see on navi10 diff --git a/src/amd/ci/radv-navi21-aco-flakes.txt b/src/amd/ci/radv-navi21-aco-flakes.txt index ee083051645..213dc8c5d9a 100644 --- a/src/amd/ci/radv-navi21-aco-flakes.txt +++ b/src/amd/ci/radv-navi21-aco-flakes.txt @@ -21,11 +21,6 @@ dEQP-VK.pipeline.fast_linked_library.multisample_interpolation.sample_interpolat dEQP-VK.mesh_shader.ext.query.all_stats_query.triangles.host_reset.copy.wait.indirect_draw.32bit.with_availability.single_block.task_mesh.inside_rp.single_view.only_primary -dEQP-VK.query_pool.statistics_query.host_query_reset.geometry_shader_invocations.secondary.32bits_dstoffset_cmdcopyquerypoolresults_line_list -dEQP-VK.query_pool.statistics_query.host_query_reset.geometry_shader_primitives.secondary.32bits_dstoffset_cmdcopyquerypoolresults_line_list_with_adjacency -dEQP-VK.query_pool.statistics_query.host_query_reset.geometry_shader_invocations.secondary.32bits_triangle_list -dEQP-VK.query_pool.statistics_query.host_query_reset.geometry_shader_primitives.secondary.64bits_dstoffset_cmdcopyquerypoolresults_line_list_with_adjacency_clear_color - # Too many of these tests to follow, so let's cast a broad net dEQP-VK.pipeline.*line_stipple_enable dEQP-VK.pipeline.*line_stipple_params diff --git a/src/amd/ci/radv-vangogh-aco-flakes.txt b/src/amd/ci/radv-vangogh-aco-flakes.txt index 098d25b5006..85fee0b108b 100644 --- a/src/amd/ci/radv-vangogh-aco-flakes.txt +++ b/src/amd/ci/radv-vangogh-aco-flakes.txt @@ -15,8 +15,3 @@ dEQP-VK.draw.renderpass.linear_interpolation.no_offset_4_samples dEQP-VK.draw.renderpass.linear_interpolation.no_offset_8_samples dEQP-VK.pipeline.monolithic.image.suballocation.sampling_type.separate.view_type.2d_array.format.r4g4b4a4_unorm_pack16.count_4.size.32x16_array_of_6 - -# Seem to have been introduced with !19442, and can only be reproduced on -# Steam Deck 2 at Martin Roukala (mupuf)'s farm. Investigation is under way. -dEQP-VK.query_pool.statistics_query.geometry_shader_primitives.* -dEQP-VK.query_pool.statistics_query.host_query_reset.geometry_shader_primitives.* diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c index 7333542f9a2..25184a27fe5 100644 --- a/src/amd/vulkan/radv_query.c +++ b/src/amd/vulkan/radv_query.c @@ -1904,10 +1904,6 @@ emit_end_query(struct radv_cmd_buffer *cmd_buffer, struct radv_query_pool *pool, radeon_emit(cs, va); radeon_emit(cs, va >> 32); - si_cs_emit_write_event_eop(cs, cmd_buffer->device->physical_device->rad_info.gfx_level, - radv_cmd_buffer_uses_mec(cmd_buffer), V_028A90_BOTTOM_OF_PIPE_TS, 0, EOP_DST_SEL_MEM, - EOP_DATA_SEL_VALUE_32BIT, avail_va, 1, cmd_buffer->gfx9_eop_bug_va); - if (pool->uses_gds) { if (pool->vk.pipeline_statistics & VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT) { uint32_t gs_prim_offset = @@ -1928,6 +1924,10 @@ emit_end_query(struct radv_cmd_buffer *cmd_buffer, struct radv_query_pool *pool, if (!cmd_buffer->state.active_pipeline_gds_queries) cmd_buffer->state.dirty |= RADV_CMD_DIRTY_SHADER_QUERY; } + + si_cs_emit_write_event_eop(cs, cmd_buffer->device->physical_device->rad_info.gfx_level, + radv_cmd_buffer_uses_mec(cmd_buffer), V_028A90_BOTTOM_OF_PIPE_TS, 0, EOP_DST_SEL_MEM, + EOP_DATA_SEL_VALUE_32BIT, avail_va, 1, cmd_buffer->gfx9_eop_bug_va); break; } case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:
