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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20163>
This commit is contained in:
Emma Anholt 2022-12-01 13:41:50 -08:00 committed by Marge Bot
parent 8d7d2aeba2
commit ee7e440743
6 changed files with 303 additions and 0 deletions

View file

@ -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

View file

@ -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.*

View file

@ -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.*

View file

@ -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-"

View file

@ -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-"

View file

@ -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