Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion doc/TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ A binary is a link set. Its files share their libraries, their fakes and their d

- **`UNIT`** compiles the library's own files into the binary in place of linking the library, for a test that stubs what they call. Such a test is a binary of its own.
- **`SUPPORT`** names object libraries linked whole: fakes and checks. A case or listener in a static archive would be dropped by the linker.
- **`GL`** labels the entries `gl` and registers them disabled with `-DAL_ENABLE_GL_TESTS=OFF`. **`PYTHON`** gives them the interpreter, and registers them disabled without one that has `llsd`.
- **`GL`** labels the entries `gl`, registers them disabled with `-DAL_ENABLE_GL_TESTS=OFF`, and holds Mesa's llvmpipe to AVX2 (`GALLIUM_OVERRIDE_CPU_CAPS=avx`): llvmpipe compiles the shaders for the host's CPU, and LLVM 21's AVX-512 code for AMD's Zen 4 leaves a NaN in `reflectionprobe_gl`'s screen-space reflection. A GL binary run by hand on llvmpipe wants the same. **`PYTHON`** gives them the interpreter, and registers them disabled without one that has `llsd`.
- **`ISA_TIER`** builds the binary at an x86-64 tier, and it skips on a host below it.
- **`RERUN`** runs some files a second time with more environment. alscript's SLua tests run again under Luau's new solver, as `alscript_tests_newsolver/<file stem>`, with `AL_TEST_LUAU_SOLVER=new`.
- **`<binary>/stray_cases`** fails when a case belongs to no file's entry, such as one written in a header.
Expand Down
15 changes: 12 additions & 3 deletions indra/cmake/ALAddTestBinary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,10 @@ endif()
# the environment and labels a file's entry would have.
#
# ENVIRONMENT sets variables for the runs, VAR=value each. GL, PYTHON and
# ISA_TIER mean what they mean to al_add_test: a GL binary is labelled gl and
# registered disabled without AL_ENABLE_GL_TESTS, a PYTHON binary is given the
# interpreter and registered disabled without one that has llsd, and an
# ISA_TIER mean what they mean to al_add_test: a GL binary is labelled gl,
# registered disabled without AL_ENABLE_GL_TESTS and run with Mesa's llvmpipe
# held to AVX2, a PYTHON binary is given the interpreter and registered
# disabled without one that has llsd, and an
# ISA_TIER binary is built at that x86-64 tier, named <name>_<tier>, labelled
# isa, and skips on a host below it -- or below the tree's own tier, since it
# links the tree's libraries, built at that one. RESOURCE_LOCK names what the binary's
Expand Down Expand Up @@ -283,6 +284,14 @@ function(al_add_test_binary name)
if(NOT AL_ENABLE_GL_TESTS)
set(disabled TRUE)
endif()
# Mesa's llvmpipe, the Linux runners' GL, compiles the shaders for the
# host's CPU, and LLVM 21's AVX-512 code for AMD's Zen 4 (znver4) leaves
# a NaN in the green of reflectionprobe_gl's screen-space reflection. Its
# AVX2 code for the same CPU does not, nor its code for Zen 3 or for
# Intel's AVX-512 CPUs. Clearing AVX-512 from what Mesa sees of the CPU
# holds llvmpipe to AVX2 on every host; a driver that compiles for a GPU
# draws nothing differently.
list(APPEND environment "GALLIUM_OVERRIDE_CPU_CAPS=avx")
endif()
math(EXPR timeout "${timeout} * ${AL_TEST_TIMEOUT_SCALE}")

Expand Down
Loading