ci/anv: Add testing of the GLES CTS using ANGLE on TGL.

We're interested in a Vulkan-only stack in Chrome OS, where Android's GLES
would be provided by ANGLE-over-Venus-over-ANV.  Let's get some testing
covering ANGLE-on-ANV first.

This is structured as a single partial job pre-merge to catch most
regressions, and a longer manual job 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 11:54:03 -08:00
committed by Marge Bot
parent ebec1e3677
commit 2e3c445b68
9 changed files with 222 additions and 0 deletions

View File

@@ -110,6 +110,7 @@ for var in \
SKQP_ASSETS_DIR \
SKQP_BACKENDS \
TU_DEBUG \
USE_ANGLE \
VIRGL_HOST_API \
WAFFLE_PLATFORM \
VK_CPU \

View File

@@ -21,6 +21,10 @@ export EGL_PLATFORM=surfaceless
export VK_ICD_FILENAMES="$PWD"/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.${VK_CPU:-$(uname -m)}.json
export OCL_ICD_VENDORS="$PWD"/install/etc/OpenCL/vendors/
if [ -n "$USE_ANGLE" ]; then
export LD_LIBRARY_PATH=/angle:$LD_LIBRARY_PATH
fi
RESULTS="$PWD/${DEQP_RESULTS_DIR:-results}"
mkdir -p "$RESULTS"

View File

@@ -924,6 +924,12 @@
- !reference [.iris-rules, rules]
- !reference [.anv-rules, rules]
.intel-manual-rules:
stage: intel
rules:
- !reference [.iris-manual-rules, rules]
- !reference [.anv-manual-rules, rules]
.virgl-rules:
stage: layered-backends
rules:

View File

@@ -0,0 +1,29 @@
# 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
# ANGLE marks non-shadow linear-filtered textures incomplete (see GLES 3.2 spec
# 8.17 Texture Completeness), so you get a fallback texture sample, while Mesa
# incorrectly marks it complete. The CTS incorrectly expects texture
# completeness.
# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/4292
# https://bugs.chromium.org/p/angleproject/issues/detail?id=7877
KHR-GLES31.core.texture_border_clamp.Texture2DDC16Linear,Fail
KHR-GLES31.core.texture_border_clamp.Texture2DDC32FLinear,Fail
# Regression between ANGLE db67df60f8c8020017c36b2dd446bc3d86614ffe and
# 82f1cee01a9ea24960e8f23b24d348fccbe0aae0
# Fails the same, with no validation complaints on ADL. Doesn't fail on CFL.
multisample-dEQP-GLES3.functional.depth_stencil_clear.depth_scissored,Fail
multisample-dEQP-GLES3.functional.depth_stencil_clear.depth_scissored_masked,Fail
multisample-dEQP-GLES3.functional.depth_stencil_clear.depth_stencil_scissored,Fail

View File

@@ -0,0 +1,17 @@
# May be bogus, happened around a bunch of interpolate_at_sample hangs
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide
# The last quad that was supposed to be overwritten by red has a green triangle showing.
dEQP-GLES3.functional.multisample.fbo_8_samples.constancy_alpha_to_coverage
dEQP-GLES3.functional.multisample.fbo_8_samples.constancy_both_inverted
# "Failure: Non-zero green color component detected - should have been completely overwritten by red quad"
# the "rendered image" looks suspiciously black, though, which is the clear color?
dEQP-GLES3.functional.multisample.fbo_max_samples.constancy_sample_coverage
dEQP-GLES3.functional.multisample.fbo_max_samples.constancy_sample_coverage_inverted
# non-gpu-hang, frequent flakes that can happen deep in a series of copy_image tests.
# multiple fails per caselist, with those fails separated by passes!
dEQP-GLES31.functional.copy_image.mixed.viewclass_.*_mixed.*
dEQP-GLES31.functional.copy_image.*viewclass_.*

View File

@@ -0,0 +1,7 @@
# 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

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.*TGL"
[[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,70 @@
# 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.*TGL"
[[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 = 3
[[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 = 3
# 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

@@ -66,6 +66,26 @@ hasvk-hsw:
variables:
DEQP_FRACTION: 10
anv-tgl-angle:
extends:
- .anv-tgl-test
- .intel-rules # Note: Xorg uses iris, so depend on both GL and vulkan
variables:
DEQP_SUITE: anv-tgl-angle
GPU_VERSION: angle-anv-tgl
VK_DRIVER: intel
USE_ANGLE: 1
# ANGLE requires X11 running for some reason.
HWCI_START_XORG: 1
anv-tgl-angle-full:
extends:
- anv-tgl-angle
- .intel-manual-rules
variables:
DEQP_SUITE: anv-tgl-angle-full
JOB_TIMEOUT: 60
## Iris only
# 5 boards
.iris-apl-test: