From af618dd90730e4e66608f6c4376abcb59a1edf65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 21 Nov 2024 14:04:22 -0500 Subject: [PATCH] radeonsi/ci: stop using a global flakes list, only use a per-chip flakes list We need to start treating flakes as fails and they are likely different between chips. I removed the gfx9 flakes file and renamed the original flakes file to gfx6-tahiti-flakes.csv, but it would be better to add a new flakes file for each generation we test. Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- ...onsi-flakes.csv => gfx6-tahiti-flakes.csv} | 27 ++--------- .../radeonsi/ci/gfx9-vega20-flakes.csv | 20 -------- .../drivers/radeonsi/ci/radeonsi-run-tests.py | 48 +++++++++---------- 3 files changed, 26 insertions(+), 69 deletions(-) rename src/gallium/drivers/radeonsi/ci/{radeonsi-flakes.csv => gfx6-tahiti-flakes.csv} (53%) delete mode 100644 src/gallium/drivers/radeonsi/ci/gfx9-vega20-flakes.csv diff --git a/src/gallium/drivers/radeonsi/ci/radeonsi-flakes.csv b/src/gallium/drivers/radeonsi/ci/gfx6-tahiti-flakes.csv similarity index 53% rename from src/gallium/drivers/radeonsi/ci/radeonsi-flakes.csv rename to src/gallium/drivers/radeonsi/ci/gfx6-tahiti-flakes.csv index c01a5e29c5e..c4b4318f3f8 100644 --- a/src/gallium/drivers/radeonsi/ci/radeonsi-flakes.csv +++ b/src/gallium/drivers/radeonsi/ci/gfx6-tahiti-flakes.csv @@ -1,5 +1,3 @@ -# piglit - # This crashes on Ubuntu 20.04, but not later LTS versions glx@glx-make-current # samples=8 is flaky @@ -18,6 +16,10 @@ spec@egl_mesa_configless_context@basic spec@egl_chromium_sync_control@conformance spec@egl_chromium_sync_control@conformance@eglGetSyncValuesCHROMIUM_msc_and_sbc_test spec@ext_image_dma_buf_import@ext_image_dma_buf_import-refcount-multithread +# This one will be Crash or Fail depending on the shader cache state +spec@!opengl 1.0@rasterpos +spec@!opengl 1.0@rasterpos@glsl_vs_gs_linked +spec@!opengl 1.0@rasterpos@glsl_vs_tes_linked # glcts KHR-GL46.sparse_texture2_tests.SparseTexture2Lookup @@ -30,24 +32,3 @@ KHR-GL46.pipeline_statistics_query_tests_ARB.functional_primitives_vertices_subm # escts KHR-GLES31.core.shader_image_load_store.basic-allFormats-store-fs - -# gfx11 fails these randomly, probably because of streamout -KHR-GL46.geometry_shader.primitive_counter.lines_to_line_strip -KHR-GL46.geometry_shader.primitive_counter.lines_to_line_strip_rp -KHR-GL46.geometry_shader.primitive_counter.triangles_to_line_strip -KHR-GL46.geometry_shader.primitive_counter.triangles_to_line_strip_rp -KHR-GL46.geometry_shader.primitive_counter.points_to_line_strip -KHR-GL46.geometry_shader.primitive_counter.points_to_line_strip_rp -KHR-GLES31.core.geometry_shader.primitive_counter.points_to_line_strip -KHR-GLES31.core.geometry_shader.primitive_counter.points_to_line_strip_rp -KHR-GLES32.core.geometry_shader.primitive_counter.points_to_line_strip -KHR-GLES32.core.geometry_shader.primitive_counter.points_to_line_strip_rp -dEQP-GLES31.functional.tessellation.invariance.primitive_set.triangles_fractional_even_spacing_ccw_point_mode -dEQP-GLES31.functional.tessellation.invariance.primitive_set.triangles_fractional_even_spacing_cw_point_mode -dEQP-GLES31.functional.tessellation.invariance.primitive_set.triangles_fractional_odd_spacing_ccw_point_mode -dEQP-GLES31.functional.tessellation.invariance.primitive_set.triangles_fractional_odd_spacing_cw_point_mode - -# This one will be Crash or Fail depending on the shader cache state -spec@!opengl 1.0@rasterpos -spec@!opengl 1.0@rasterpos@glsl_vs_gs_linked -spec@!opengl 1.0@rasterpos@glsl_vs_tes_linked diff --git a/src/gallium/drivers/radeonsi/ci/gfx9-vega20-flakes.csv b/src/gallium/drivers/radeonsi/ci/gfx9-vega20-flakes.csv deleted file mode 100644 index ce8429c79ad..00000000000 --- a/src/gallium/drivers/radeonsi/ci/gfx9-vega20-flakes.csv +++ /dev/null @@ -1,20 +0,0 @@ -spec@!opengl 1.1@depthstencil-default_fb-blit samples=2 -spec@!opengl 1.1@depthstencil-default_fb-blit samples=4 -spec@!opengl 1.1@depthstencil-default_fb-blit samples=6 -spec@!opengl 1.1@depthstencil-default_fb-blit samples=8 -spec@!opengl 1.1@depthstencil-default_fb-blit -spec@!opengl 1.1@depthstencil-default_fb-copypixels samples=2 -spec@!opengl 1.1@depthstencil-default_fb-copypixels samples=4 -spec@!opengl 1.1@depthstencil-default_fb-copypixels -spec@arb_depth_buffer_float@fbo-depthstencil-gl_depth32f_stencil8-blit -spec@arb_depth_buffer_float@fbo-depthstencil-gl_depth32f_stencil8-copypixels -spec@arb_depth_buffer_float@fbo-stencil-gl_depth32f_stencil8-blit -spec@arb_texture_stencil8@fbo-stencil-blit -spec@ext_framebuffer_object@fbo-stencil-gl_stencil_index1-blit -spec@ext_framebuffer_object@fbo-stencil-gl_stencil_index16-copypixels -spec@ext_framebuffer_object@fbo-stencil-gl_stencil_index4-blit -spec@ext_framebuffer_object@fbo-stencil-gl_stencil_index4-copypixels -spec@ext_framebuffer_object@fbo-stencil-gl_stencil_index8-blit -spec@ext_packed_depth_stencil@fbo-depthstencil-gl_depth24_stencil8-blit -spec@ext_packed_depth_stencil@fbo-depthstencil-gl_depth24_stencil8-copypixels -spec@ext_packed_depth_stencil@fbo-stencil-gl_depth24_stencil8-copypixels diff --git a/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py b/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py index 2685ea1704e..264da4b52a5 100755 --- a/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py +++ b/src/gallium/drivers/radeonsi/ci/radeonsi-run-tests.py @@ -222,31 +222,37 @@ is_amd = args.llvmpipe + args.softpipe + args.virgl + args.zink == 0 if args.llvmpipe: env["LIBGL_ALWAYS_SOFTWARE"] = '1' baseline = "../../llvmpipe/ci/llvmpipe-fails.txt" - flakes_lists = ["../../llvmpipe/ci/llvmpipe-flakes.txt"] + flakes_list = "../../llvmpipe/ci/llvmpipe-flakes.txt" skips_list = "../../llvmpipe/ci/llvmpipe-skips.txt" elif args.softpipe: env["LIBGL_ALWAYS_SOFTWARE"] = '1' env["GALLIUM_DRIVER"] = 'softpipe' baseline = "../../softpipe/ci/softpipe-fails.txt" - flakes_lists = ["../../softpipe/ci/softpipe-flakes.txt"] + flakes_list = "../../softpipe/ci/softpipe-flakes.txt" skips_list = "../../softpipe/ci/softpipe-skips.txt" elif args.virgl: env["PIGLIT_PLATFORM"] = "gbm" baseline = '' - flakes_lists = [] + flakes_list = None skips_list = "skips.csv" elif args.zink: env["PIGLIT_PLATFORM"] = "gbm" env["MESA_LOADER_DRIVER_OVERRIDE"] = 'zink' baseline = "../../zink/ci/zink-radv-navi31-fails.txt" - flakes_lists = ["../../zink/ci/zink-radv-navi31-flakes.txt"] + flakes_list = "../../zink/ci/zink-radv-navi31-flakes.txt" skips_list = "../../zink/ci/zink-radv-navi31-skips.txt" -else: +elif is_amd: env["PIGLIT_PLATFORM"] = "gbm" + flakes_list = None # it will be determined later skips_list = "skips.csv" +else: + assert False -if not is_amd and baseline: +if not is_amd: baseline = os.path.normpath(os.path.join(os.path.dirname(__file__), baseline)) + if flakes_list is not None: + flakes_list = os.path.normpath(os.path.join(os.path.dirname(__file__), flakes_list)) + skips_list = os.path.normpath(os.path.join(os.path.dirname(__file__), skips_list)) env_glinfo = dict(env) env_glinfo["AMD_DEBUG"] = "info" @@ -393,12 +399,12 @@ def parse_test_filters(include_tests, baseline): return cmd -def select_baseline(basepath, gfx_level, gpu_name): +def select_baseline(basepath, gfx_level, gpu_name, suffix): gfx_level_str = gfx_level_to_str(gfx_level) # select the best baseline we can find # 1. exact match - exact = os.path.join(basepath, "{}-{}-fail.csv".format(gfx_level_str, gpu_name)) + exact = os.path.join(basepath, "{}-{}-{}.csv".format(gfx_level_str, gpu_name, suffix)) if os.path.exists(exact): return exact # 2. any baseline with the same gfx_level @@ -406,7 +412,7 @@ def select_baseline(basepath, gfx_level, gpu_name): gfx_level_str += '-' for subdir, dirs, files in os.walk(basepath): for file in files: - if file.find(gfx_level_str) == 0 and file.endswith("-fail.csv"): + if file.find(gfx_level_str) == 0 and file.endswith("-{}.csv".format(suffix)): return os.path.join(basepath, file) # No match. Try an earlier class gfx_level = gfx_level - 1 @@ -416,31 +422,21 @@ def select_baseline(basepath, gfx_level, gpu_name): if is_amd: - baseline = select_baseline(args.baseline, gfx_level, gpu_name) + baseline = select_baseline(args.baseline, gfx_level, gpu_name, 'fail') + flakes_list = select_baseline(args.baseline, gfx_level, gpu_name, 'flakes') success = True filters_args = parse_test_filters(args.include_tests, baseline) -flakes = [ - os.path.normpath(f) - for f in ( - os.path.join(args.baseline, g) - for g in - ([ - "radeonsi-flakes.csv", - "{}-{}-flakes.csv".format(gfx_level_to_str(gfx_level), gpu_name), - ] if is_amd else flakes_lists) - ) - if os.path.exists(f) -] flakes_args = [] -for f in flakes: - flakes_args += ["--flakes", f] if os.path.exists(baseline): print_yellow("Baseline: {}".format(baseline)) + +if flakes_list is not None and os.path.exists(flakes_list): + print_yellow("Flakes: {}".format(flakes_list)) + flakes_args = ["--flakes", flakes_list] + print_yellow("Skips: {}".format(skips_list)) -if flakes_args: - print_yellow("Flakes: {}".format(flakes_args)) # piglit test if args.piglit: