From ee7e440743fd48c8e38981ddcbf248c957a26a9a Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Thu, 1 Dec 2022 13:41:50 -0800 Subject: [PATCH] ci/radv: Add testing of the GLES CTS using ANGLE on stoney. We're interested in a Vulkan-only stack in Chrome OS, where Android's GLES would be provided by ANGLE-over-Venus-over-RADV. Let's get some testing covering ANGLE-on-RADV first. This is structured as a single partial job pre-merge to catch most regressions, and 2 longer manual jobs to do full coverage for when you need to update the xfails list. Part-of: --- src/amd/ci/angle-radv-stoney-aco-fails.txt | 101 ++++++++++++++++++++ src/amd/ci/angle-radv-stoney-aco-flakes.txt | 27 ++++++ src/amd/ci/angle-radv-stoney-aco-skips.txt | 16 ++++ src/amd/ci/deqp-radv-stoney-angle-full.toml | 68 +++++++++++++ src/amd/ci/deqp-radv-stoney-angle.toml | 71 ++++++++++++++ src/amd/ci/gitlab-ci.yml | 20 ++++ 6 files changed, 303 insertions(+) create mode 100644 src/amd/ci/angle-radv-stoney-aco-fails.txt create mode 100644 src/amd/ci/angle-radv-stoney-aco-flakes.txt create mode 100644 src/amd/ci/angle-radv-stoney-aco-skips.txt create mode 100644 src/amd/ci/deqp-radv-stoney-angle-full.toml create mode 100644 src/amd/ci/deqp-radv-stoney-angle.toml diff --git a/src/amd/ci/angle-radv-stoney-aco-fails.txt b/src/amd/ci/angle-radv-stoney-aco-fails.txt new file mode 100644 index 00000000000..6739f7a75d8 --- /dev/null +++ b/src/amd/ci/angle-radv-stoney-aco-fails.txt @@ -0,0 +1,101 @@ +# Fails on both radv and anv: +# "Valid format used but glReadPixels failed for input = [GL_RED, GL_BYTE] output = [GL_RGBA, GL_UNSIGNED_BYTE]" +# Conclusion is it's an ext spec+test bug +# https://gitlab.khronos.org/opengl/API/-/issues/180 +KHR-GLES3.packed_pixels.pbo_rectangle.r8_snorm,Fail +KHR-GLES3.packed_pixels.pbo_rectangle.rg8_snorm,Fail +KHR-GLES3.packed_pixels.pbo_rectangle.rgba8_snorm,Fail +KHR-GLES3.packed_pixels.rectangle.r8_snorm,Fail +KHR-GLES3.packed_pixels.rectangle.rg8_snorm,Fail +KHR-GLES3.packed_pixels.rectangle.rgba8_snorm,Fail +KHR-GLES3.packed_pixels.varied_rectangle.r8_snorm,Fail +KHR-GLES3.packed_pixels.varied_rectangle.rg8_snorm,Fail +KHR-GLES3.packed_pixels.varied_rectangle.rgba8_snorm,Fail + +# Regression between ANGLE db67df60f8c8020017c36b2dd446bc3d86614ffe and +# 82f1cee01a9ea24960e8f23b24d348fccbe0aae0. +# +# "Rendered data at (28, 21) equal (0.0980392, 0.2, 0.298039, 0.4) exceeds allowed epsilon when compared to reference data equal (0.5, 0.6, 0.7, 0.8). +# Data comparison failed at esextcGeometryShaderRendering.cpp:5751" +# +# Also fails, reports no validation failures on my RX Vega. +KHR-GLES31.core.geometry_shader.rendering.rendering.triangles_with_adjacency_input_line_strip_output_triangle_strip_adjacency_drawcall,Fail +KHR-GLES31.core.geometry_shader.rendering.rendering.triangles_with_adjacency_input_triangle_strip_output_triangle_strip_adjacency_drawcall,Fail + +# ANGLE passes depthBiasConstantFactor directly to GlobalDepthOffsetConstant, while zink multiplies by 2.0. +# radeonsi has an extra 2.0 factor in the 16-bit depth case vs 24-bit, which radv doesn't have. +# I expect this is a radv bug due to missing VK CTS coverage: +# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4169 +dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units,Fail + +# Failure in later miplevels, occasionally flaky +dEQP-GLES3.functional.texture.specification.teximage2d_depth.depth_component24,Fail +dEQP-GLES3.functional.texture.specification.teximage2d_depth.depth24_stencil8,Fail +dEQP-GLES3.functional.texture.specification.teximage2d_depth.depth32f_stencil8,Fail +dEQP-GLES3.functional.texture.specification.teximage3d_depth.depth_component24_2d_array,Fail +dEQP-GLES3.functional.texture.specification.teximage3d_depth.depth24_stencil8_2d_array,Fail +dEQP-GLES3.functional.texture.specification.teximage3d_depth.depth32f_stencil8_2d_array,Fail +dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth_component24_2d,Fail +dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth_component24_cube,Fail +dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth24_stencil8_2d,Fail +dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth24_stencil8_cube,Fail +dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth32f_stencil8_2d,Fail +dEQP-GLES3.functional.texture.specification.texstorage2d.format.depth32f_stencil8_cube,Fail +dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component24_2d_array,Fail +dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth24_stencil8_2d_array,Fail +dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth32f_stencil8_2d_array,Fail +dEQP-GLES3.functional.texture.specification.texsubimage2d_depth.depth_component24,Fail +dEQP-GLES3.functional.texture.specification.texsubimage2d_depth.depth24_stencil8,Fail +dEQP-GLES3.functional.texture.specification.texsubimage2d_depth.depth32f_stencil8,Fail +dEQP-GLES3.functional.texture.specification.texsubimage3d_depth.depth_component24_2d_array,Fail +dEQP-GLES3.functional.texture.specification.texsubimage3d_depth.depth24_stencil8_2d_array,Fail +dEQP-GLES3.functional.texture.specification.texsubimage3d_depth.depth32f_stencil8_2d_array,Fail +dEQP-GLES31.functional.texture.specification.texstorage3d.format.depth_component24_cube_array,Fail +dEQP-GLES31.functional.texture.specification.texsubimage3d_depth.depth24_stencil8_cube_array,Fail +dEQP-GLES31.functional.texture.specification.texsubimage3d_depth.depth32f_stencil8_cube_array,Fail +dEQP-GLES31.functional.texture.specification.texstorage3d.format.depth24_stencil8_cube_array,Fail +dEQP-GLES31.functional.texture.specification.texstorage3d.format.depth32f_stencil8_cube_array,Fail + +# "Iteration 3/3: Samples per pixel: 2 +# Verifying image has (at least) 3 different shades +# Found 2 different shades. Rare (less than 100 pixels): 0 Common: 2 +# Also fails, reports no validation failures on my RX Vega. +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_2_color,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_2_discard,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_4_color,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_4_discard,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_8_color,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_renderbuffer_samples_8_discard,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_2_color,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_2_discard,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_4_color,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_4_discard,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_8_color,Fail +dEQP-GLES31.functional.sample_shading.min_sample_shading.multisample_texture_samples_8_discard,Fail + +# "Result buffer failed, got unexpected values. +# Error at index 16: expected 1, got 0." +# Also fails, reports no validation failures on my RX Vega. +dEQP-GLES31.functional.synchronization.in_invocation.ssbo_alias_write,Fail +dEQP-GLES31.functional.synchronization.inter_invocation.image_alias_write,Fail +dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_alias_write,Fail + +# No useful debug info in the qpa. Also fails, reports no validation failures on my an RX Vega. +KHR-GLES31.core.sample_shading.render.rgba32f.full,Fail +KHR-GLES31.core.sample_shading.render.rgba32f.half,Fail +KHR-GLES31.core.sample_shading.render.rgba8.full,Fail +KHR-GLES31.core.sample_shading.render.rgba8.half,Fail +KHR-GLES31.core.sample_shading.render.rgba8i.full,Fail +KHR-GLES31.core.sample_shading.render.rgba8i.half,Fail +KHR-GLES31.core.sample_shading.render.rgba8ui.full,Fail +KHR-GLES31.core.sample_shading.render.rgba8ui.half,Fail + +# Note that the set of test failures in this group changes based on the tests +# run before them in the caselist! We set them to what CI currently produces +# for the default fractional test run, and mark the rest as flakes. +multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.multiply,Fail +multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.overlay,Fail +multisample-dEQP-GLES31.functional.blend_equation_advanced.basic.screen,Fail + +multisample-dEQP-GLES31.functional.sample_shading.min_sample_shading.default_framebuffer_color,Fail +multisample-dEQP-GLES31.functional.sample_shading.min_sample_shading.default_framebuffer_discard,Fail diff --git a/src/amd/ci/angle-radv-stoney-aco-flakes.txt b/src/amd/ci/angle-radv-stoney-aco-flakes.txt new file mode 100644 index 00000000000..9889ba07df1 --- /dev/null +++ b/src/amd/ci/angle-radv-stoney-aco-flakes.txt @@ -0,0 +1,27 @@ +# Vertex attrib array state reset failed: glGetError() returned GL_CONTEXT_LOST at gluStateReset.cpp:93 +# Naming a few specific flakes seen here, but also including a general regex match. +dEQP-GLES3.functional.fbo.blit.default_framebuffer.rg32f_nearest_scale_blit_from_default +dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgb565 +dEQP-GLES3.functional.fbo.blit.default_framebuffer.rgba4_linear_out_of_bounds_blit_from_default +dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_stencil_only +dEQP-GLES3.functional.fbo.blit.depth_stencil.depth32f_stencil8_stencil_only +dEQP-GLES3.functional.fbo.*blit.* +dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16 +dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8 +dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8 +dEQP-GLES3.functional.fbo.msaa.4_samples.* + +# "ERROR: Verification against low precision requirements failed, failing test case." +dEQP-GLES3.functional.texture.shadow.2d.*depth24_stencil8 + +# Mostly fails, occasional pass +dEQP-GLES3.*functional.texture.specification.*depth.* + +dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_stencil + +dEQP-GLES31.functional.blend_equation_advanced.basic.multiply + +# MSAA dEQP-GLES31.functional.blend_equation_advanced exhibits different +# failures based on the caselist test order. This regex covers the different +# results for the full test run. +multisample-dEQP-GLES31.functional.blend_equation_advanced.* diff --git a/src/amd/ci/angle-radv-stoney-aco-skips.txt b/src/amd/ci/angle-radv-stoney-aco-skips.txt new file mode 100644 index 00000000000..efa841d0b09 --- /dev/null +++ b/src/amd/ci/angle-radv-stoney-aco-skips.txt @@ -0,0 +1,16 @@ +# Unlike zink which does support it, ANGLE relies on a waiver to not implement +# capturing individual array elements (see waivers.xml and gles3-waivers.txt in the CTS) +dEQP-GLES3.functional.transform_feedback.array_element.* +dEQP-GLES3.functional.transform_feedback.random.* +dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.*_array_element +dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.*.array.* +KHR-GLES31.core.program_interface_query.transform-feedback-types + +# ANGLE throws this warning +# "Unimplemented: CopyImageSubData(../../src/libANGLE/renderer/vulkan/vk_helpers.cpp:6562" +# which is "// No support for emulated compressed formats." +# +# ANGLE doesn't plan on implementing it, given that Android insists on VK having ASTC support +# anyway, so ANGLE-on-RADV is going to need either support inside radv (unlikely) or a compat +# layer. +dEQP-GLES31.functional.copy_image.*astc.* diff --git a/src/amd/ci/deqp-radv-stoney-angle-full.toml b/src/amd/ci/deqp-radv-stoney-angle-full.toml new file mode 100644 index 00000000000..b252321d30e --- /dev/null +++ b/src/amd/ci/deqp-radv-stoney-angle-full.toml @@ -0,0 +1,68 @@ +# Basic test set +[[deqp]] +deqp = "/deqp/modules/gles2/deqp-gles2" +caselists = ["/deqp/mustpass/gles2-master.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] +version_check = "GL ES 3.1" +renderer_check = "ANGLE.*RADV" + +[[deqp]] +deqp = "/deqp/modules/gles3/deqp-gles3" +caselists = ["/deqp/mustpass/gles3-master.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] + +[[deqp]] +deqp = "/deqp/modules/gles31/deqp-gles31" +caselists = ["/deqp/mustpass/gles31-master.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] + +# Note that KHR-GL3* test sets include all tests from the previous +# version, so we only need to run one test list (unlike dEQP-GLES, +# where the test sets are separate). +[[deqp]] +deqp = "/deqp/external/openglcts/modules/glcts" +caselists = [ + "/deqp/mustpass/gles2-khr-master.txt", + "/deqp/mustpass/gles3-khr-master.txt", + "/deqp/mustpass/gles31-khr-master.txt", +] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] + +# 565-no-depth-no-stencil: Not supported with angle on X11? + +# multisample +[[deqp]] +deqp = "/deqp/modules/gles3/deqp-gles3" +caselists = ["/deqp/mustpass/gles3-multisample.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms4", +] +prefix = "multisample-" + +[[deqp]] +deqp = "/deqp/modules/gles31/deqp-gles31" +caselists = ["/deqp/mustpass/gles31-multisample.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms4", +] +prefix = "multisample-" diff --git a/src/amd/ci/deqp-radv-stoney-angle.toml b/src/amd/ci/deqp-radv-stoney-angle.toml new file mode 100644 index 00000000000..97e86f5f546 --- /dev/null +++ b/src/amd/ci/deqp-radv-stoney-angle.toml @@ -0,0 +1,71 @@ +# Basic test set +[[deqp]] +deqp = "/deqp/modules/gles2/deqp-gles2" +caselists = ["/deqp/mustpass/gles2-master.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] +fraction = 4 +version_check = "GL ES 3.1" +renderer_check = "ANGLE.*RADV" + +[[deqp]] +deqp = "/deqp/modules/gles3/deqp-gles3" +caselists = ["/deqp/mustpass/gles3-master.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] +fraction = 12 + +[[deqp]] +deqp = "/deqp/modules/gles31/deqp-gles31" +caselists = ["/deqp/mustpass/gles31-master.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] +fraction = 12 + +# Note that KHR-GL3* test sets include all tests from the previous +# version, so we only need to run one test list (unlike dEQP-GLES, +# where the test sets are separate). +[[deqp]] +deqp = "/deqp/external/openglcts/modules/glcts" +caselists = [ + "/deqp/mustpass/gles2-khr-master.txt", + "/deqp/mustpass/gles3-khr-master.txt", + "/deqp/mustpass/gles31-khr-master.txt", +] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms0", +] + +# 565-no-depth-no-stencil: Not supported with angle on X11? + +# multisample +[[deqp]] +deqp = "/deqp/modules/gles3/deqp-gles3" +caselists = ["/deqp/mustpass/gles3-multisample.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms4", +] +prefix = "multisample-" + +[[deqp]] +deqp = "/deqp/modules/gles31/deqp-gles31" +caselists = ["/deqp/mustpass/gles31-multisample.txt"] +deqp_args = [ + "--deqp-surface-width=256", "--deqp-surface-height=256", + "--deqp-surface-type=pbuffer", "--deqp-visibility=hidden", + "--deqp-gl-config-name=rgba8888d24s8ms4", +] +prefix = "multisample-" diff --git a/src/amd/ci/gitlab-ci.yml b/src/amd/ci/gitlab-ci.yml index deec4bc94ff..8af9958f4d7 100644 --- a/src/amd/ci/gitlab-ci.yml +++ b/src/amd/ci/gitlab-ci.yml @@ -45,6 +45,26 @@ radv-stoney-vkcts:x86_64: variables: DEQP_FRACTION: 11 +radv-stoney-angle: + extends: + - .lava-test-deqp:x86_64 + - .radv-stoney-test:x86_64 + - .radeonsi+radv-rules # Note: Xorg uses radeonsi, so depend on both gl and vulkan + variables: + DEQP_SUITE: radv-stoney-angle + USE_ANGLE: 1 + HWCI_START_XORG: 1 + GPU_VERSION: angle-radv-stoney-aco + +radv-stoney-angle-full: + extends: + - radv-stoney-angle + - .radv-valve-manual-rules + parallel: 2 + variables: + DEQP_SUITE: radv-stoney-angle-full + JOB_TIMEOUT: 60 + radeonsi-stoney-gl:x86_64: extends: - .lava-test-deqp:x86_64