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 <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32288>
This commit is contained in:
Marek Olšák
2024-11-21 14:04:22 -05:00
committed by Marge Bot
parent 3ff8111fc6
commit af618dd907
3 changed files with 26 additions and 69 deletions
@@ -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
1 # piglit # This crashes on Ubuntu 20.04, but not later LTS versions
# piglit
# This crashes on Ubuntu 20.04, but not later LTS versions
1 glx@glx-make-current # This crashes on Ubuntu 20.04, but not later LTS versions
2 # samples=8 is flaky glx@glx-make-current
3 glx@glx-copy-sub-buffer # samples=8 is flaky
16 spec@ext_image_dma_buf_import@ext_image_dma_buf_import-refcount-multithread spec@egl_chromium_sync_control@conformance@eglGetSyncValuesCHROMIUM_msc_and_sbc_test
17 # glcts spec@ext_image_dma_buf_import@ext_image_dma_buf_import-refcount-multithread
18 KHR-GL46.sparse_texture2_tests.SparseTexture2Lookup # This one will be Crash or Fail depending on the shader cache state
19 spec@!opengl 1.0@rasterpos
20 spec@!opengl 1.0@rasterpos@glsl_vs_gs_linked
21 spec@!opengl 1.0@rasterpos@glsl_vs_tes_linked
22 # glcts
23 # flaky (at least on gfx11 and gfx10) KHR-GL46.sparse_texture2_tests.SparseTexture2Lookup
24 GTF-GL46.gtf30.GL3Tests.blend_minmax.blend_minmax_clamping # flaky (at least on gfx11 and gfx10)
25 # NGG culling (gfx10-gfx10.3) breaks this statistic. Only reproducible with AMD_DEBUG=mono GTF-GL46.gtf30.GL3Tests.blend_minmax.blend_minmax_clamping
32 KHR-GL46.geometry_shader.primitive_counter.lines_to_line_strip_rp
33 KHR-GL46.geometry_shader.primitive_counter.triangles_to_line_strip
34 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
@@ -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
1 spec !opengl 1.1 depthstencil-default_fb-blit samples=2
2 spec !opengl 1.1 depthstencil-default_fb-blit samples=4
3 spec !opengl 1.1 depthstencil-default_fb-blit samples=6
4 spec !opengl 1.1 depthstencil-default_fb-blit samples=8
5 spec !opengl 1.1 depthstencil-default_fb-blit
6 spec !opengl 1.1 depthstencil-default_fb-copypixels samples=2
7 spec !opengl 1.1 depthstencil-default_fb-copypixels samples=4
8 spec !opengl 1.1 depthstencil-default_fb-copypixels
9 spec arb_depth_buffer_float fbo-depthstencil-gl_depth32f_stencil8-blit
10 spec arb_depth_buffer_float fbo-depthstencil-gl_depth32f_stencil8-copypixels
11 spec arb_depth_buffer_float fbo-stencil-gl_depth32f_stencil8-blit
12 spec arb_texture_stencil8 fbo-stencil-blit
13 spec ext_framebuffer_object fbo-stencil-gl_stencil_index1-blit
14 spec ext_framebuffer_object fbo-stencil-gl_stencil_index16-copypixels
15 spec ext_framebuffer_object fbo-stencil-gl_stencil_index4-blit
16 spec ext_framebuffer_object fbo-stencil-gl_stencil_index4-copypixels
17 spec ext_framebuffer_object fbo-stencil-gl_stencil_index8-blit
18 spec ext_packed_depth_stencil fbo-depthstencil-gl_depth24_stencil8-blit
19 spec ext_packed_depth_stencil fbo-depthstencil-gl_depth24_stencil8-copypixels
20 spec ext_packed_depth_stencil fbo-stencil-gl_depth24_stencil8-copypixels
@@ -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: