Compare commits

..

39 Commits

Author SHA1 Message Date
Eric Engestrom
e658e900bb VERSION: bump to 20.1.0-rc2
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
2020-05-06 21:49:41 +02:00
Marek Olšák
f7d67c99a6 radeonsi: fix compilation of monolithic PS
This was totally broken. Monolithic PS is only used if FBFETCH or
interpolateAtSample are used.

When the PS prolog was built, it overwrote ctx->main_fn.

Discovered by @eefano.

Fixes: 8832a88434 "radeonsi: move PS LLVM code into si_shader_llvm_ps.c"
Closes: #2814

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4918>
(cherry picked from commit 29da521280)
2020-05-06 19:32:39 +02:00
Danylo Piliaiev
b896c506b8 i965: Fix out-of-bounds access to brw_stage_state::surf_offset
../src/mesa/drivers/dri/i965/brw_wm_surface_state.c:1378:32: runtime error: index 3503345872 out of bounds for type 'uint32_t [149]'

brw_assign_common_binding_table_offsets has the following comment:
 "Unused groups are initialized to 0xd0d0d0d0 to make it obvious that they're
 unused but also make sure that addition of small offsets to them will
 trigger some of our asserts that surface indices are < BRW_MAX_SURFACES."

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4350>
(cherry picked from commit 784358bd6e)
2020-05-06 19:32:28 +02:00
Samuel Pitoiset
fa1739113b radv: don't report error with other vendor DRM devices
Enumeration should just skip unsupported DRM devices.

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4806>
(cherry picked from commit 8d993c9d2c)
2020-05-06 19:32:28 +02:00
Samuel Pitoiset
d4c1cb59c2 radv: report INITIALIZATION_FAILED when the amdgpu winsys init failed
The driver should be capable if it reaches the winsys initialization.

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4806>
(cherry picked from commit f03abd5041)
2020-05-06 19:32:28 +02:00
Erik Faye-Lund
1ed51096ac zink: lower b2b to b2i
Zink requires 1-bit booleans, but this requirement was missed before
b2b1s started getting automatically inserted. Let's lower these away, to
avoid piglit regressions.

Fixes the following piglits:
- shaders@glsl-vs-if-bool
- spec@!opengl 2.0@vertex-program-two-side

Fixes: c217ee8d35 ("nir: Insert b2b1s around booleans in nir_lower_to")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2902
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4903>
(cherry picked from commit 7f6a491eec)
2020-05-06 19:32:28 +02:00
Dave Airlie
a36b7d8c97 llvmpipo/nir: free compute shader NIR
I forgot this in the last round.

Fixes: 18f896e55d (llvmpipe: add initial nir support)

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4899>
(cherry picked from commit 870b6a6050)
2020-05-06 19:32:28 +02:00
Dave Airlie
ebb656bfb3 draw/tess: free tessellation control shader i/o memory.
Fixes: 0d02a7b8ca (draw: add main tessellation code)

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4899>
(cherry picked from commit d1ad1be35a)
2020-05-06 19:32:28 +02:00
Rhys Perry
b4e46da708 nir: add missing group_memory_barrier handling
Totals from 2 (0.00% of 127638) affected shaders:
VGPRs: 164 -> 168 (+2.44%)
CodeSize: 18420 -> 18756 (+1.82%)
Instrs: 3658 -> 3700 (+1.15%)
Cycles: 82912 -> 83080 (+0.20%)
VMEM: 70 -> 69 (-1.43%)
PreVGPRs: 155 -> 168 (+8.39%)

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
CC: <mesa-stable@lists.freedesktop.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4889>
(cherry picked from commit a46aa3dc2e)
2020-05-06 19:32:28 +02:00
Pierre-Eric Pelloux-Prayer
f2a012f987 radeonsi: don't print gs_copy_shader stats for shaderdb
Fixes: dbc86fa3de ("radeonsi: dump shader stats when hitting the live cache")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4607>
(cherry picked from commit 547e81655a)
2020-05-06 19:32:28 +02:00
Pierre-Eric Pelloux-Prayer
a25234047f driconf: add force_integer_tex_nearest option
And enable it for "GRID Autosport" and "DIRT: Showdown" games.

CC: 20.1 <mesa-stable@lists.freedesktop.org>
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1258
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4647>
(cherry picked from commit 403eb507f5)
2020-05-06 19:32:28 +02:00
Pierre-Eric Pelloux-Prayer
ae44a916ec mesa: add gl_coontext::ForceIntegerTexNearest
Some applications incorrectly use GL_LINEAR* values for integers texture.
copyimage.c already implemented a tolerance for such app in prepare_target_err.

This commit adds a boolean that will treat GL_LINEAR* filters as
GL_NEAREST for integer textures.

CC: 20.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4647>
(cherry picked from commit 12fb7d7008)
2020-05-06 19:32:28 +02:00
Eric Engestrom
6486ac1a4c .pick_status.json: Update to 29da521280 2020-05-06 19:32:19 +02:00
Eric Engestrom
ad9b00ee4e .pick_status.json: Mark 3fac55ce0d as denominated 2020-05-06 19:09:48 +02:00
Marek Olšák
de3a2b29bc ac/surface: fix MSAA crash with FORCE_SWIZZLE_MODE on gfx9
Fixes: 3dc2ccc14c "ac/surface: replace RADEON_SURF_OPTIMIZE_FOR_SPACE with !FORCE_SWIZZLE_MODE"

Closes: #2884

Tested-by: Michel Dänzer <mdaenzer@redhat.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4862>
(cherry picked from commit c4cdef64ad)
2020-05-05 18:56:46 +02:00
Marek Olšák
12d23b4a08 Revert "ac: reassociate FP expressions for inexact instructions for radeonsi"
This reverts commit cf2f3c2753.

It breaks shadows in Unigine Superposition.

Fixes: cf2f3c2753

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4837>
(cherry picked from commit b97cc41aa2)
2020-05-05 18:56:46 +02:00
Christian Gmeiner
33a086f44e etnaviv: do not use int filter when anisotropic filtering is used
The blob does not use this combination. This change moves the
decision if int filter gets used to state emit time.

Fixes: 7aaa0e5908 ("etnaviv: add anisotropic filter support")
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4872>
(cherry picked from commit 89a41dae77)
2020-05-05 18:56:46 +02:00
Christian Gmeiner
00001525f5 etnaviv: fix SAMP_ANISOTROPY register value
This caused some serious problems like shredded output, ~1fps and GPU hungs.

Fixes: 7aaa0e5908 ("etnaviv: add anisotropic filter support")
Reported-by: Lukas F. Hartmann <lukas@mntmn.com>
Tested-by: Lukas F. Hartmann <lukas@mntmn.com>
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4872>
(cherry picked from commit b38e51bd96)
2020-05-05 18:56:46 +02:00
Jason Ekstrand
86629193f5 vulkan: Allow destroying NULL debug report callbacks
Fixes: 086cfa5652 "anv: implementation of VK_EXT_debug_report extension"
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Kristian H. Kristensen <hoegsberg@google.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4690>
(cherry picked from commit 9d10bde5a8)
2020-05-05 18:56:46 +02:00
Tapani Pälli
e1e22e38e7 st/mesa: destroy only own program variants when program is released
Earlier commit tried to achieve this but actually did more. This makes
sure the variants for other contexts continue to live.

Fixes: de3d7dbed5 ("mesa/st: release variants for active programs before unref")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2865
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4831>
(cherry picked from commit 46b3cb011f)
2020-05-05 18:56:45 +02:00
Pierre-Eric Pelloux-Prayer
4af564cb92 radeonsi: fix export count
Fixes: 17acff01a0 ("radeonsi: skip vs output optimizations for some outputs")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2877
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4871>
(cherry picked from commit 7e7bb38bd8)
2020-05-05 18:56:45 +02:00
Eric Engestrom
7a93e75a41 .pick_status.json: Update to 5779694698 2020-05-05 18:56:45 +02:00
Marek Olšák
4e07d00fa5 Revert "ac/surface: remove RADEON_SURF_TC_COMPATIBLE_HTILE and assume it's always set"
This reverts commit f6d87ec8a9.

It breaks RADV.

Fixes: f6d87ec8a9 "ac/surface: remove RADEON_SURF_TC_COMPATIBLE_HTILE and assume it's always set"
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4864>
(cherry picked from commit f1a40a26a9)
2020-05-05 18:56:45 +02:00
Bas Nieuwenhuizen
ec918aa04c radv: Extend tiling flags to 64-bit.
SCANOUT is bit 63 ....

Fixes: bfd9e7ff24 "radv: Use new scanout gfx9 metadata flag."
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2879
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4859>
(cherry picked from commit df9629e593)
2020-05-05 18:56:45 +02:00
Rhys Perry
afa6e8cc0b aco: add message to static_assert
static_assert without a message is only supported with C++17 and later.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Fixes: c99107ece0
    ('aco: add explicit padding for all Instruction sub-structs')

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4850>
(cherry picked from commit b5f7b0ce19)
2020-05-05 18:56:45 +02:00
Rhys Perry
a63ca1776f aco: remove use of f-strings
f-strings require Python 3.6 but 3.5 is still maintained and used.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2839
Fixes: 2ab45f41 ("aco: implement sub-dword swaps")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4850>
(cherry picked from commit 8e02de4d7f)
2020-05-05 18:56:45 +02:00
D Scott Phillips
263451f9c9 anv,iris: Fix input vertex max for tcs on gen12
gen12 does away with the single patch dispatch mode for tcs, and
increases some limits so that 8_patch mode can always work. Make the
necessary changes so we don't try to fall back to single patch mode.

Fixes KHR-GL46.tessellation_shader.single.max_patch_vertices and others

Fixes: 44754279ac ("intel/fs/gen12: Use TCS 8_PATCH mode.")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4843>
(cherry picked from commit 65b05ebdda)
2020-05-05 18:56:45 +02:00
D Scott Phillips
3668e27ec3 intel/fs: Update location of Render Target Array Index for gen12
Render Target Array Index has moved from R0.0[26:16] to
R1.1[26:16] on gen12.

Fixes dEQP-VK.multiview.input_attachments.*

Cc: <mesa-stable@lists.freedesktop.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4836>
(cherry picked from commit 7bd15135a6)
2020-05-05 18:56:45 +02:00
Tomeu Vizoso
5a7b5ea470 panfrost: Add Bifrost texture trampoline BO to batch
Fixes: d3eb23adb5 ("panfrost: Emit sampler descriptor on bifrost")
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4832>
(cherry picked from commit 3a81abf3b2)
2020-05-05 18:56:45 +02:00
Samuel Pitoiset
e2037aea0c ci: fix reporting the number of unexpected/flakes
`wc -l $file` returns the number of lines and the filename.

Fixes: b8c66aeb93 ("ci: Clean up some excessive use of pipes in dEQP results processing.")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4829>
(cherry picked from commit cc2c3b41b8)
2020-05-05 18:56:45 +02:00
Marek Olšák
725f45bc63 radeonsi: revert an accidental change in si_clear_buffer
The change was in: 7b0b085c94

Fixes: 7b0b085c94 ("radeonsi: drop the negation from fmask_is_not_identity")

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4761>
(cherry picked from commit bdd2f284d9)
2020-05-05 18:56:45 +02:00
Marek Olšák
16c3eca327 radeonsi: unify and align down the max SSBO/TBO/UBO buffer binding size
Rounding down the size fixes:
    KHR-GL45.enhanced_layouts.ssb_member_invalid_offset_alignment

Fixes: 03e2adc990

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4761>
(cherry picked from commit e58dcc47c3)
2020-05-05 18:56:45 +02:00
Lionel Landwerlin
c98e895185 iris: don't assert on unfinished aux import in copy paths
After a resource is created the first command using it could be a copy
command.

In iris_state we finish the import on surface/view creation but we
don't do that for copies.

v2: Move finish call to gallium entrypoints (Ken)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: <mesa-stable@lists.freedesktop.org>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2725
Reviewed-by: Tapani Pälli <tapani.palli@intel.com> (v1)
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4657>
(cherry picked from commit 612e35c8d9)
2020-05-05 18:56:45 +02:00
Andres Gomez
8c0ad1d2db gitlab-ci: update tracie README after changes in main script
v2:
  - Update the default location for the traces when there is no
    traces-db entry in the traces definition file (Alexandros).

Fixes: 90a39af5f6 "(ci: Drop the git dependency in tracie)"
Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4640>
(cherry picked from commit 5e9ae40430)
2020-05-04 22:00:04 +02:00
Francisco Jerez
4e710b3c37 intel/ir: Update performance analysis parameters for memory fence codegen changes.
The SFID field of the SHADER_OPCODE_MEMORY_FENCE and
SHADER_OPCODE_INTERLOCK instructions now indicates the target function
of the memory fence.  Account the cycle-count cost to the right shared
unit.

Fixes: f858fa26b4 ("intel/fs,vec4: Pull stall logic for memory fences up into the IR")
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4817>
(cherry picked from commit 0842758ec0)
2020-05-04 22:00:03 +02:00
Rob Clark
8229d22234 freedreno: fix buffer import
`rsc->layout.cpp` is zero until we `fd_resource_layout_init()`

Fixes: 5a8718f01b ("freedreno: Make the slice pitch be bytes, not pixels.")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4818>
(cherry picked from commit a0fe98b478)
2020-05-04 22:00:02 +02:00
Bas Nieuwenhuizen
6236c97699 radv: Fix implicit sync with recent allocation changes.
the implicit sync flag gets set at the beginning at the function,
but I used = instead of |= later.

Fixes: bec9285027 "radv: Stop using memory type indices."
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4814>
(cherry picked from commit 85fe0e551f)
2020-05-04 22:00:00 +02:00
Eric Engestrom
1b0e98c295 .pick_status.json: Update to af55bdd05d 2020-05-04 21:59:52 +02:00
Eric Engestrom
0865c5107f VERSION: bump to 20.1.0-rc1
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
2020-04-30 00:09:58 +02:00
3290 changed files with 148990 additions and 313945 deletions

View File

@@ -2,20 +2,20 @@ goto %1
:install
rem Check pip
python --version
python -m pip install --upgrade pip
python -m pip --version
if "%buildsystem%" == "scons" (
python --version
python -m pip --version
rem Install Mako
python -m pip install Mako==1.1.3
python -m pip install Mako==1.0.7
rem Install pywin32 extensions, needed by SCons
python -m pip install pypiwin32
rem Install python wheels, necessary to install SCons via pip
python -m pip install wheel
rem Install SCons
python -m pip install scons==3.1.2
python -m pip install scons==3.0.1
call scons --version
) else (
python --version
python -m pip install Mako meson
meson --version
@@ -44,7 +44,7 @@ goto :eof
:build_script
if "%buildsystem%" == "scons" (
call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.2 machine=x86 llvm=1
call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1
) else (
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=x86
rem We use default-library as static to affect any wraps (such as expat and zlib)
@@ -59,7 +59,7 @@ goto :eof
:test_script
if "%buildsystem%" == "scons" (
call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.2 machine=x86 llvm=1 check
call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check
) else (
call meson test -C builddir
)

File diff suppressed because it is too large Load Diff

212
.gitlab-ci/README.md Normal file
View File

@@ -0,0 +1,212 @@
# Mesa testing
The goal of the "test" stage of the .gitlab-ci.yml is to do pre-merge
testing of Mesa drivers on various platforms, so that we can ensure no
regressions are merged, as long as developers are merging code using
marge-bot.
There are currently 4 automated testing systems deployed for Mesa.
LAVA and gitlab-runner on the DUTs are used in pre-merge testing and
are described in this document. Managing bare metal using
gitlab-runner is described under [bare-metal/README.md]. Intel also
has a jenkins-based CI system with restricted access that isn't
connected to gitlab.
## Mesa testing using LAVA
[LAVA](https://lavasoftware.org/) is a system for functional testing
of boards including deploying custom bootloaders and kernels. This is
particularly relevant to testing Mesa because we often need to change
kernels for UAPI changes (and this lets us do full testing of a new
kernel during development), and our workloads can easily take down
boards when mistakes are made (kernel oopses, OOMs that take out
critical system services).
### Mesa-LAVA software architecture
The gitlab-runner will run on some host that has access to the LAVA
lab, with tags like "lava-mesa-boardname" to control only taking in
jobs for the hardware that the LAVA lab contains. The gitlab-runner
spawns a docker container with lava-cli in it, and connects to the
LAVA lab using a predefined token to submit jobs under a specific
device type.
The LAVA instance manages scheduling those jobs to the boards present.
For a job, it will deploy the kernel, device tree, and the ramdisk
containing the CTS.
### Deploying a new Mesa-LAVA lab
You'll want to start with setting up your LAVA instance and getting
some boards booting using test jobs. Start with the stock QEMU
examples to make sure your instance works at all. Then, you'll need
to define your actual boards.
The device type in lava-gitlab-ci.yml is the device type you create in
your LAVA instance, which doesn't have to match the board's name in
`/etc/lava-dispatcher/device-types`. You create your boards under
that device type and the Mesa jobs will be scheduled to any of them.
Instantiate your boards by creating them in the UI or at the command
line attached to that device type, then populate their dictionary
(using an "extends" line probably referencing the board's template in
`/etc/lava-dispatcher/device-types`). Now, go find a relevant
healthcheck job for your board as a test job definition, or cobble
something together from a board that boots using the same boot_method
and some public images, and figure out how to get your boards booting.
Once you can boot your board using a custom job definition, it's time
to connect Mesa CI to it. Install gitlab-runner and register as a
shared runner (you'll need a gitlab admin for help with this). The
runner *must* have a tag (like "mesa-lava-db410c") to restrict the
jobs it takes or it will grab random jobs from tasks across fd.o, and
your runner isn't ready for that.
The runner will be running an ARM docker image (we haven't done any
x86 LAVA yet, so that isn't documented). If your host for the
gitlab-runner is x86, then you'll need to install qemu-user-static and
the binfmt support.
The docker image will need access to the lava instance. If it's on a
public network it should be fine. If you're running the LAVA instance
on localhost, you'll need to set `network_mode="host"` in
`/etc/gitlab-runner/config.toml` so it can access localhost. Create a
gitlab-runner user in your LAVA instance, log in under that user on
the web interface, and create an API token. Copy that into a
`lavacli.yaml`:
```
default:
token: <token contents>
uri: <url to the instance>
username: gitlab-runner
```
Add a volume mount of that `lavacli.yaml` to
`/etc/gitlab-runner/config.toml` so that the docker container can
access it. You probably have a `volumes = ["/cache"]` already, so now it would be
```
volumes = ["/home/anholt/lava-config/lavacli.yaml:/root/.config/lavacli.yaml", "/cache"]
```
Note that this token is visible to anybody that can submit MRs to
Mesa! It is not an actual secret. We could just bake it into the
gitlab CI yml, but this way the current method of connecting to the
LAVA instance is separated from the Mesa branches (particularly
relevant as we have many stable branches all using CI).
Now it's time to define your test runner in
`.gitlab-ci/lava-gitlab-ci.yml`.
## Mesa testing using gitlab-runner on DUTs
### Software architecture
For freedreno and llvmpipe CI, we're using gitlab-runner on the test
devices (DUTs), cached docker containers with VK-GL-CTS, and the
normal shared x86_64 runners to build the Mesa drivers to be run
inside of those containers on the DUTs.
The docker containers are rebuilt from the debian-install.sh script
when DEBIAN\_TAG is changed in .gitlab-ci.yml, and
debian-test-install.sh when DEBIAN\_ARM64\_TAG is changed in
.gitlab-ci.yml. The resulting images are around 500MB, and are
expected to change approximately weekly (though an individual
developer working on them may produce many more images while trying to
come up with a working MR!).
gitlab-runner is a client that polls gitlab.freedesktop.org for
available jobs, with no inbound networking requirements. Jobs can
have tags, so we can have DUT-specific jobs that only run on runners
with that tag marked in the gitlab UI.
Since dEQP takes a long time to run, we mark the job as "parallel" at
some level, which spawns multiple jobs from one definition, and then
deqp-runner.sh takes the corresponding fraction of the test list for
that job.
To reduce dEQP runtime (or avoid tests with unreliable results), a
deqp-runner.sh invocation can provide a list of tests to skip. If
your driver is not yet conformant, you can pass a list of expected
failures, and the job will only fail on tests that aren't listed (look
at the job's log for which specific tests failed).
### DUT requirements
#### DUTs must have a stable kernel and GPU reset.
If the system goes down during a test run, that job will eventually
time out and fail (default 1 hour). However, if the kernel can't
reliably reset the GPU on failure, bugs in one MR may leak into
spurious failures in another MR. This would be an unacceptable impact
on Mesa developers working on other drivers.
#### DUTs must be able to run docker
The Mesa gitlab-runner based test architecture is built around docker,
so that we can cache the debian package installation and CTS build
step across multiple test runs. Since the images are large and change
approximately weekly, the DUTs also need to be running some script to
prune stale docker images periodically in order to not run out of disk
space as we rev those containers (perhaps [this
script](https://gitlab.com/gitlab-org/gitlab-runner/issues/2980#note_169233611)).
Note that docker doesn't allow containers to be stored on NFS, and
doesn't allow multiple docker daemons to interact with the same
network block device, so you will probably need some sort of physical
storage on your DUTs.
#### DUTs must be public
By including your device in .gitlab-ci.yml, you're effectively letting
anyone on the internet run code on your device. docker containers may
provide some limited protection, but how much you trust that and what
you do to mitigate hostile access is up to you.
#### DUTs must expose the dri device nodes to the containers.
Obviously, to get access to the HW, we need to pass the render node
through. This is done by adding `devices = ["/dev/dri"]` to the
`runners.docker` section of /etc/gitlab-runner/config.toml.
### HW CI farm expectations
To make sure that testing of one vendor's drivers doesn't block
unrelated work by other vendors, we require that a given driver's test
farm produces a spurious failure no more than once a week. If every
driver had CI and failed once a week, we would be seeing someone's
code getting blocked on a spurious failure daily, which is an
unacceptable cost to the project.
Additionally, the test farm needs to be able to provide a short enough
turnaround time that people can regularly use the "Merge when pipeline
succeeds" button successfully (until we get
[marge-bot](https://github.com/smarkets/marge-bot) in place on
freedesktop.org). As a result, we require that the test farm be able
to handle a whole pipeline's worth of jobs in less than 5 minutes (to
compare, the build stage is about 10 minutes, if you could get all
your jobs scheduled on the shared runners in time.).
If a test farm is short the HW to provide these guarantees, consider
dropping tests to reduce runtime.
`VK-GL-CTS/scripts/log/bottleneck_report.py` can help you find what
tests were slow in a `results.qpa` file. Or, you can have a job with
no `parallel` field set and:
```
variables:
CI_NODE_INDEX: 1
CI_NODE_TOTAL: 10
```
to just run 1/10th of the test list.
If a HW CI farm goes offline (network dies and all CI pipelines end up
stalled) or its runners are consistenly spuriously failing (disk
full?), and the maintainer is not immediately available to fix the
issue, please push through an MR disabling that farm's jobs by adding
'.' to the front of the jobs names until the maintainer can bring
things back up. If this happens, the farm maintainer should provide a
report to mesa-dev@lists.freedesktop.org after the fact explaining
what happened and what the mitigation plan is for that failure next
time.

View File

@@ -45,10 +45,3 @@ CONFIG_SOFTLOCKUP_DETECTOR=n
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n
CONFIG_FW_LOADER_COMPRESS=y
CONFIG_USB_USBNET=y
CONFIG_NETDEVICES=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_RTL8152=y
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_SMSC95XX=y

View File

@@ -29,27 +29,6 @@ CONFIG_TYPEC_FUSB302=y
CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
# Cheza platform bits
CONFIG_QCOM_RPMHPD=y
CONFIG_SDM_GPUCC_845=y
CONFIG_SDM_VIDEOCC_845=y
CONFIG_SDM_DISPCC_845=y
CONFIG_SDM_LPASSCC_845=y
CONFIG_SDM_CAMCC_845=y
CONFIG_RESET_QCOM_PDC=y
CONFIG_DRM_TI_SN65DSI86=y
CONFIG_I2C_QCOM_GENI=y
CONFIG_SPI_QCOM_GENI=y
CONFIG_PHY_QCOM_QUSB2=y
CONFIG_PHY_QCOM_QMP=y
CONFIG_QCOM_LLCC=y
CONFIG_QCOM_SPMI_TEMP_ALARM=y
CONFIG_POWER_RESET_QCOM_PON=y
CONFIG_RTC_DRV_PM8XXX=y
CONFIG_INTERCONNECT=y
CONFIG_INTERCONNECT_QCOM_SDM845=y
CONFIG_QCOM_WDT=y
# db410c ethernet
CONFIG_USB_RTL8152=y
@@ -91,6 +70,7 @@ CONFIG_ARCH_ZYNQMP=n
# Strip out some stuff we don't need for graphics testing, to reduce
# the build.
CONFIG_CAN=n
CONFIG_SPI=n
CONFIG_WIRELESS=n
CONFIG_RFKILL=n
CONFIG_WLAN=n
@@ -114,11 +94,3 @@ CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_FW_LOADER_COMPRESS=y
CONFIG_FW_LOADER_USER_HELPER=n
CONFIG_USB_USBNET=y
CONFIG_NETDEVICES=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_RTL8152=y
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_SMSC95XX=y

View File

@@ -0,0 +1,80 @@
# bare-metal Mesa testing
Testing Mesa with gitlab-runner running on the devices being tested
(DUTs) proved to be too unstable, so this set of scripts is for
running Mesa testing on bare-metal boards connected to a separate
system using gitlab-runner. Currently only "fastboot" devices are
supported.
In comparison with LAVA, this doesn't involve maintaining a separate
webservice with its own job scheduler and replicating jobs between the
two. It also places more of the board support in git, instead of
webservice configuration. Most importantly, it doesn't download the
rootfs as artifacts on each job, so we can avoid traffic to
freedesktop.org. On the other hand, the serial interactions and
bootloader support are more primitive.
## Requirements
This testing requires power control of the DUTs by the gitlab-runner
machine, since this is what we use to reset the system and get back to
a pristine state at the start of testing.
We require access to the console output from the gitlb-runner system,
since that is how we get the final results back from te tests. You
should probably have the console on a serial connection, so that you
can see bootloader progress.
The boards need to be able to have a kernel/initramfs supplied by the
gitlab-runner system, since the initramfs is what contains the Mesa
testing payload. Currently only "fastboot" devices are supported.
The boards should have networking, so that (in a future iteration of
this code) we can extract the dEQP .xml results to artifacts on
gitlab.
## Setup
Each board will be registered in fd.o gitlab. You'll want something
like this to register:
```
sudo gitlab-runner register \
--url https://gitlab.freedesktop.org \
--registration-token $1 \
--name MY_BOARD_NAME \
--tag-list MY_BOARD_TAG \
--executor docker \
--docker-image "alpine:latest" \
--docker-volumes "/dev:/dev" \
--docker-network-mode "host" \
--docker-privileged \
--non-interactive
```
The registration token has to come from a fd.o gitlab admin going to
https://gitlab.freedesktop.org/admin/runners
The name scheme for Google's lab is google-freedreno-boardname-nn, and
our tag is google-freedreno-db410c. The tag is what identifies a
board type so that board-specific jobs can be dispatched into that
pool.
We need privileged mode and the /dev bind mount in order to get at the
serial console and fastboot USB devices (--device arguments don't
apply to devices that show up after container start, which is the case
with fastboot). We use host network mode so that we can (in the
future) spin up a server to collect XML results.
Once you've added your boards, you're going to need to specify the
board-specific env vars, adding something like this `environment` line
to each runner in `/etc/gitlab-runner/config.toml`
```
[[runners]]
name = "google-freedreno-db410c-01"
environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390"]
```
Once you've updated your runners' configs, restart with `sudo service
gitlab-runner restart`

View File

@@ -1,14 +0,0 @@
#!/bin/sh
while true; do
devcds=`find /sys/devices/virtual/devcoredump/ -name data`
for i in $devcds; do
echo "Found a devcoredump at $i."
if cp $i /results/first.devcore; then
echo 1 > $i
echo "Saved to the job artifacts at /first.devcore"
exit 0
fi
done
sleep 10
done

View File

@@ -1,105 +0,0 @@
#!/bin/bash
# Boot script for Chrome OS devices attached to a servo debug connector, using
# NFS and TFTP to boot.
# We're run from the root of the repo, make a helper var for our paths
BM=$CI_PROJECT_DIR/install/bare-metal
# Runner config checks
if [ -z "$BM_SERIAL" ]; then
echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
echo "This is the CPU serial device."
exit 1
fi
if [ -z "$BM_SERIAL_EC" ]; then
echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
echo "This is the EC serial device for controlling board power"
exit 1
fi
if [ ! -d /nfs ]; then
echo "NFS rootfs directory needs to be mounted at /nfs by the gitlab runner"
exit 1
fi
if [ ! -d /tftp ]; then
echo "TFTP directory for this board needs to be mounted at /tftp by the gitlab runner"
exit 1
fi
# job config checks
if [ -z "$BM_KERNEL" ]; then
echo "Must set BM_KERNEL to your board's kernel FIT image"
exit 1
fi
if [ -z "$BM_ROOTFS" ]; then
echo "Must set BM_ROOTFS to your board's rootfs directory in the job's variables"
exit 1
fi
if [ -z "$BM_CMDLINE" ]; then
echo "Must set BM_CMDLINE to your board's kernel command line arguments"
exit 1
fi
set -ex
# Clear out any previous run's artifacts.
rm -rf results/
mkdir -p results
find artifacts/ -name serial\*.txt | xargs rm -f
# Create the rootfs in the NFS directory. rm to make sure it's in a pristine
# state, since it's volume-mounted on the host.
rsync -a --delete $BM_ROOTFS/ /nfs/
mkdir -p /nfs/results
. $BM/rootfs-setup.sh /nfs
# Set up the TFTP kernel/cmdline. When we support more than one board with
# this method, we'll need to do some check on the runner name or something.
rm -rf /tftp/*
cp $BM_KERNEL /tftp/vmlinuz
echo "$BM_CMDLINE" > /tftp/cmdline
# Start watching serials, and power up the device.
$BM/serial-buffer.py $BM_SERIAL_EC | tee serial-ec-output.txt | sed -u 's|^|SERIAL-EC> |g' &
$BM/serial-buffer.py $BM_SERIAL | tee serial-output.txt | sed -u 's|^|SERIAL-CPU> |g' &
while [ ! -e serial-output.txt ]; do
sleep 1
done
# Flush any partial commands in the EC's prompt, then ask for a reboot.
$BM/write-serial.py $BM_SERIAL_EC ""
$BM/write-serial.py $BM_SERIAL_EC reboot
# This is emitted right when the bootloader pauses to check for input. Emit a
# ^N character to request network boot, because we don't have a
# direct-to-netboot firmware on cheza.
$BM/expect-output.sh serial-output.txt -f "load_archive: loading locale_en.bin"
$BM/write-serial.py $BM_SERIAL `printf '\016'`
# Wait for the device to complete the deqp run
$BM/expect-output.sh serial-output.txt \
-f "bare-metal result" \
-e "---. end Kernel panic" \
-e "POWER_GOOD not seen in time"
# power down the CPU on the device
$BM/write-serial.py $BM_SERIAL_EC 'power off'
set -ex
# Bring artifacts back from the NFS dir to the build dir where gitlab-runner
# will look for them. Note that results/ may already exist, so be careful
# with cp.
mkdir -p results
cp -Rp /nfs/results/. results/
set +e
if grep -q "bare-metal result: pass" serial-output.txt; then
exit 0
else
exit 1
fi

View File

@@ -2,29 +2,8 @@
set -e
STRINGS=$(mktemp)
ERRORS=$(mktemp)
echo "Waiting for $1 to say '$2'"
trap "rm $STRINGS; rm $ERRORS;" EXIT
FILE=$1
shift 1
while getopts "f:e:" opt; do
case $opt in
f) echo "$OPTARG" >> $STRINGS;;
e) echo "$OPTARG" >> $STRINGS ; echo "$OPTARG" >> $ERRORS;;
esac
done
shift $((OPTIND -1))
echo "Waiting for $FILE to say one of following strings"
cat $STRINGS
while ! egrep -wf $STRINGS $FILE; do
while ! grep -q "$2" $1; do
sleep 2
done
if egrep -wf $ERRORS $FILE; then
exit 1
fi

View File

@@ -1,13 +1,10 @@
#!/bin/bash
BM=$CI_PROJECT_DIR/install/bare-metal
BM=$CI_PROJECT_DIR/.gitlab-ci/bare-metal
if [ -z "$BM_SERIAL" -a -z "$BM_SERIAL_SCRIPT" ]; then
echo "Must set BM_SERIAL OR BM_SERIAL_SCRIPT in your gitlab-runner config.toml [[runners]] environment"
echo "BM_SERIAL:"
echo " This is the serial device to talk to for waiting for fastboot to be ready and logging from the kernel."
echo "BM_SERIAL_SCRIPT:"
echo " This is a shell script to talk to for waiting for fastboot to be ready and logging from the kernel."
if [ -z "$BM_SERIAL" ]; then
echo "Must set BM_SERIAL in your gitlab-runner config.toml [[runners]] environment"
echo "This is the serial device to talk to for waiting for fastboot to be ready and logging from the kernel."
exit 1
fi
@@ -45,32 +42,35 @@ if [ -z "$BM_ROOTFS" ]; then
exit 1
fi
if [ -z "$BM_WEBDAV_IP" -o -z "$BM_WEBDAV_PORT" ]; then
echo "BM_WEBDAV_IP and/or BM_WEBDAV_PORT is not set - no results will be uploaded from DUT!"
WEBDAV_CMDLINE=""
else
WEBDAV_CMDLINE="webdav=http://$BM_WEBDAV_IP:$BM_WEBDAV_PORT"
fi
set -ex
# Clear out any previous run's artifacts.
rm -rf results/
mkdir -p results
find artifacts/ -name serial\*.txt | xargs rm -f
# Copy the rootfs to a temporary for our setup, as I believe changes to the
# container can end up impacting future runs.
cp -Rp $BM_ROOTFS rootfs
# Create the rootfs in a temp dir
rsync -a --delete $BM_ROOTFS/ rootfs/
. $BM/rootfs-setup.sh rootfs
# Set up the init script that brings up the system.
cp $BM/init.sh rootfs/init
sed -i "s|DEQP_VER_REPLACE|$DEQP_VER|g" rootfs/init
sed -i "s|DEQP_PARALLEL_REPLACE|$DEQP_PARALLEL|g" rootfs/init
sed -i "s|DEQP_EXPECTED_RENDERER_REPLACE|$DEQP_EXPECTED_RENDERER|g" rootfs/init
sed -i "s|CI_NODE_INDEX_REPLACE|$CI_NODE_INDEX|g" rootfs/init
sed -i "s|CI_NODE_TOTAL_REPLACE|$CI_NODE_TOTAL|g" rootfs/init
# Finally, pack it up into a cpio rootfs. Skip the vulkan CTS since none of
# these devices use it and it would take up space in the initrd.
# Add the Mesa drivers we built, and make a consistent symlink to them.
mkdir -p rootfs/$CI_PROJECT_DIR
tar -C rootfs/$CI_PROJECT_DIR/ -xf $CI_PROJECT_DIR/artifacts/install.tar
ln -sf $CI_PROJECT_DIR/install rootfs/install
# Copy the deqp runner script and metadata.
cp .gitlab-ci/deqp-runner.sh rootfs/deqp/.
cp .gitlab-ci/$DEQP_SKIPS rootfs/$CI_PROJECT_DIR/install/deqp-skips.txt
if [ -n "$DEQP_EXPECTED_FAILS" ]; then
cp .gitlab-ci/$DEQP_EXPECTED_FAILS rootfs/$CI_PROJECT_DIR/install/deqp-expected-fails.txt
fi
# Finally, pack it up into a cpio rootfs.
pushd rootfs
find -H | \
egrep -v "external/(openglcts|vulkancts|amber|glslang|spirv-tools)" |
egrep -v "traces-db|apitrace|renderdoc|python" | \
cpio -H newc -o | \
xz --check=crc32 -T4 - > $CI_PROJECT_DIR/rootfs.cpio.gz
find -H | cpio -H newc -o | xz --check=crc32 -T4 - > $CI_PROJECT_DIR/rootfs.cpio.gz
popd
cat $BM_KERNEL $BM_DTB > Image.gz-dtb
@@ -79,47 +79,28 @@ abootimg \
--create artifacts/fastboot.img \
-k Image.gz-dtb \
-r rootfs.cpio.gz \
-c cmdline="$BM_CMDLINE $WEBDAV_CMDLINE"
-c cmdline="$BM_CMDLINE"
rm Image.gz-dtb
# Start nginx to get results from DUT
if [ -n "$WEBDAV_CMDLINE" ]; then
ln -s `pwd`/results /results
sed -i s/80/$BM_WEBDAV_PORT/g /etc/nginx/sites-enabled/default
sed -i s/www-data/root/g /etc/nginx/nginx.conf
nginx
fi
# Start watching serial, and power up the device.
if [ -n "$BM_SERIAL" ]; then
$BM/serial-buffer.py $BM_SERIAL | tee artifacts/serial-output.txt &
else
PATH=$BM:$PATH $BM_SERIAL_SCRIPT | tee artifacts/serial-output.txt &
fi
$BM/serial-buffer.py $BM_SERIAL | tee artifacts/serial-output.txt &
while [ ! -e artifacts/serial-output.txt ]; do
sleep 1
done
PATH=$BM:$PATH $BM_POWERUP
# Once fastboot is ready, boot our image.
$BM/expect-output.sh artifacts/serial-output.txt \
-f "fastboot: processing commands" \
-f "Listening for fastboot command on" \
-e "data abort"
$BM/expect-output.sh artifacts/serial-output.txt "fastboot: processing commands"
fastboot boot -s $BM_FASTBOOT_SERIAL artifacts/fastboot.img
# Wait for the device to complete the deqp run
$BM/expect-output.sh artifacts/serial-output.txt \
-f "bare-metal result" \
-e "---. end Kernel panic"
$BM/expect-output.sh artifacts/serial-output.txt "DEQP RESULT"
# power down the device
PATH=$BM:$PATH $BM_POWERDOWN
set +e
if grep -q "bare-metal result: pass" artifacts/serial-output.txt; then
if grep -q "DEQP RESULT: pass" artifacts/serial-output.txt; then
exit 0
else
exit 1

View File

@@ -7,4 +7,4 @@ if [ -z "$relay" ]; then
exit 1
fi
$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py off $relay
$CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py off $relay

View File

@@ -7,6 +7,6 @@ if [ -z "$relay" ]; then
exit 1
fi
$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py off $relay
$CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py off $relay
sleep 5
$CI_PROJECT_DIR/install/bare-metal/google-power-relay.py on $relay
$CI_PROJECT_DIR/.gitlab-ci/bare-metal/google-power-relay.py on $relay

43
.gitlab-ci/bare-metal/init.sh Executable file → Normal file
View File

@@ -7,41 +7,22 @@ mount -t sysfs none /sys
mount -t devtmpfs none /dev || echo possibly already mounted
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
mount -t tmpfs tmpfs /tmp
. /set-job-env-vars.sh
# Store Mesa's disk cache under /tmp, rather than sending it out over NFS.
export XDG_CACHE_HOME=/tmp
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# Not all DUTs have network
sntp -sS pool.ntp.org || true
# Overwrite traces.yml file with the baremetal version
cp /install/traces-baremetal.yml /install/traces.yml
# Start a little daemon to capture the first devcoredump we encounter. (They
# expire after 5 minutes, so we poll for them).
./capture-devcoredump.sh &
if sh $BARE_METAL_TEST_SCRIPT; then
OK=1
else
OK=0
export DEQP_NO_SAVE_RESULTS=1
export DEQP_VER=DEQP_VER_REPLACE
export DEQP_PARALLEL=DEQP_PARALLEL_REPLACE
export DEQP_EXPECTED_RENDERER=DEQP_EXPECTED_RENDERER_REPLACE
export CI_NODE_INDEX=CI_NODE_INDEX_REPLACE
export CI_NODE_TOTAL=CI_NODE_TOTAL_REPLACE
export DEQP_SKIPS=deqp-skips.txt
if [ -e /install/deqp-expected-fails.txt ]; then
export DEQP_EXPECTED_FAILS=deqp-expected-fails.txt
fi
# upload artifacts via webdav
WEBDAV=$(cat /proc/cmdline | tr " " "\n" | grep webdav | cut -d '=' -f 2 || true)
if [ -n "$WEBDAV" ]; then
find /results -type f -exec curl -T {} $WEBDAV/{} \;
fi
if [ $OK -eq 1 ]; then
echo "bare-metal result: pass"
if sh /deqp/deqp-runner.sh; then
echo "DEQP RESULT: pass"
else
echo "bare-metal result: fail"
echo "DEQP RESULT: fail"
fi
# Wait until the job would have timed out anyway, so we don't spew a "init

View File

@@ -1,20 +0,0 @@
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
dav_methods PUT;
dav_ext_methods PROPFIND OPTIONS;
dav_access user:rw group:rw all:r;
client_body_temp_path /tmp;
client_max_body_size 0;
create_full_put_path on;
root /results;
autoindex on;
}
}

View File

@@ -1,63 +0,0 @@
#!/bin/bash
rootfs_dst=$1
mkdir -p $rootfs_dst/results
# Set up the init script that brings up the system.
cp $BM/init.sh $rootfs_dst/init
cp $BM/capture-devcoredump.sh $rootfs_dst/
set +x
# Pass through relevant env vars from the gitlab job to the baremetal init script
touch $rootfs_dst/set-job-env-vars.sh
chmod +x $rootfs_dst/set-job-env-vars.sh
for var in \
BARE_METAL_TEST_SCRIPT \
CI_COMMIT_BRANCH \
CI_COMMIT_TITLE \
CI_JOB_JWT \
CI_JOB_ID \
CI_JOB_URL \
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME \
CI_MERGE_REQUEST_TITLE \
CI_NODE_INDEX \
CI_NODE_TOTAL \
CI_PIPELINE_ID \
CI_PROJECT_PATH \
CI_RUNNER_DESCRIPTION \
DEQP_CASELIST_FILTER \
DEQP_EXPECTED_FAILS \
DEQP_EXPECTED_RENDERER \
DEQP_NO_SAVE_RESULTS \
DEQP_PARALLEL \
DEQP_RUN_SUFFIX \
DEQP_SKIPS \
DEQP_VER \
DEVICE_NAME \
FD_MESA_DEBUG \
FLAKES_CHANNEL \
IR3_SHADER_DEBUG \
MESA_GL_VERSION_OVERRIDE \
MESA_GLSL_VERSION_OVERRIDE \
MESA_GLES_VERSION_OVERRIDE \
NIR_VALIDATE \
TRACIE_NO_UNIT_TESTS \
TRACIE_UPLOAD_TO_MINIO \
TU_DEBUG \
VK_DRIVER \
; do
val=`echo ${!var} | sed 's|"||g'`
if [ -n "$val" ]; then
echo "export $var=\"${val}\"" >> $rootfs_dst/set-job-env-vars.sh
fi
done
echo "Variables passed through:"
cat $rootfs_dst/set-job-env-vars.sh
set -x
# Add the Mesa drivers we built, and make a consistent symlink to them.
mkdir -p $rootfs_dst/$CI_PROJECT_DIR
tar -C $rootfs_dst/$CI_PROJECT_DIR/ -xf $CI_PROJECT_DIR/artifacts/install.tar
ln -sf $CI_PROJECT_DIR/install $rootfs_dst/install

View File

@@ -1,11 +0,0 @@
#!/usr/bin/python3
import sys
import serial
dev = sys.argv[1]
command = sys.argv[2] + '\n'
ser = serial.Serial(dev, 115200, timeout=5)
ser.write(command.encode())
ser.close()

View File

@@ -9,25 +9,22 @@ WAFFLE_VERSION="e3c995d9a2693b687501715b6550619922346089"
git clone https://gitlab.freedesktop.org/mesa/waffle.git --single-branch --no-checkout /waffle
pushd /waffle
git checkout "$WAFFLE_VERSION"
cmake -B_build -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_ARGS .
make -C _build install
mkdir -p build/lib build/bin
cp _build/lib/libwaffle-1.so build/lib/libwaffle-1.so.0
cp _build/bin/wflinfo build/bin/wflinfo
${STRIP_CMD:-strip} build/lib/* build/bin/*
find . -not -path './build' -not -path './build/*' -delete
cmake -B_build -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release .
make -C _build -j4 install
popd
rm -rf /waffle
APITRACE_VERSION="9.0"
git clone https://github.com/apitrace/apitrace.git --single-branch --no-checkout /apitrace
pushd /apitrace
git checkout "$APITRACE_VERSION"
cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=False -DENABLE_WAFFLE=on -DWaffle_DIR=/usr/local/lib/cmake/Waffle/ $EXTRA_CMAKE_ARGS
cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=False -DENABLE_WAFFLE=on -DWaffle_DIR=/usr/local/lib/cmake/Waffle/
ninja -C _build
mkdir build
cp _build/apitrace build
cp _build/glretrace build
cp _build/eglretrace build
${STRIP_CMD:-strip} build/*
strip build/*
find . -not -path './build' -not -path './build/*' -delete
popd

View File

@@ -2,7 +2,7 @@
set -ex
git clone https://gitlab.freedesktop.org/mesa/parallel-deqp-runner.git --depth 1 -b mesa-ci-2020-06-15 /parallel-deqp-runner
git clone https://gitlab.freedesktop.org/mesa/parallel-deqp-runner.git --depth 1 -b mesa-ci-2019-12-17 /parallel-deqp-runner
pushd /parallel-deqp-runner
meson build/ $EXTRA_MESON_ARGS
ninja -C build install

View File

@@ -40,11 +40,6 @@ for gles in gles2 gles3 gles31; do
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/$gles-master.txt \
/deqp/mustpass/$gles-master.txt
done
cp \
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
/deqp/mustpass/.
# Save *some* executor utils, but otherwise strip things down
# to reduct deqp build size:
@@ -53,16 +48,13 @@ cp /deqp/executor/testlog-to-* /deqp/executor.save
rm -rf /deqp/executor
mv /deqp/executor.save /deqp/executor
ls /deqp/external | grep -v openglcts | xargs rm -rf
rm -rf /deqp/external
rm -rf /deqp/modules/internal
rm -rf /deqp/execserver
rm -rf /deqp/modules/egl
rm -rf /deqp/framework
rm -rf /deqp/external/openglcts/modules/gl_cts/data/mustpass
rm -rf /deqp/external/openglcts/modules/cts-runner
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-build-programs
find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf
${STRIP_CMD:-strip} modules/*/deqp-* external/openglcts/modules/glcts
${STRIP_CMD:-strip} modules/*/deqp-*
du -sh *
rm -rf /VK-GL-CTS
popd

View File

@@ -2,12 +2,10 @@
set -ex
git config --global user.email "mesa@example.com"
git config --global user.name "Mesa CI"
git clone \
https://github.com/KhronosGroup/VK-GL-CTS.git \
-b vulkan-cts-1.2.3.0 \
--depth 1 \
https://github.com/KhronosGroup/VK-GL-CTS.git \
-b vulkan-cts-1.2.1.0 \
/VK-GL-CTS
pushd /VK-GL-CTS
@@ -18,43 +16,27 @@ python3 external/fetch_sources.py --insecure
mkdir -p /deqp
# Save the testlog stylesheets:
cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp
popd
pushd /deqp
cmake -G Ninja \
-DDEQP_TARGET=${DEQP_TARGET:-x11_glx} \
-DDEQP_TARGET=x11_glx \
-DCMAKE_BUILD_TYPE=Release \
$EXTRA_CMAKE_ARGS \
/VK-GL-CTS
ninja
# Copy out the mustpass lists we want.
# Copy out the mustpass list we want.
mkdir /deqp/mustpass
cp /VK-GL-CTS/external/vulkancts/mustpass/master/vk-default.txt \
/deqp/mustpass/vk-master.txt
for gles in gles2 gles3 gles31; do
cp \
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/$gles-master.txt \
/deqp/mustpass/$gles-master.txt
done
# Save *some* executor utils, but otherwise strip things down
# to reduct deqp build size:
mkdir /deqp/executor.save
cp /deqp/executor/testlog-to-* /deqp/executor.save
rm -rf /deqp/executor
mv /deqp/executor.save /deqp/executor
rm -rf /deqp/modules/internal
rm -rf /deqp/executor
rm -rf /deqp/execserver
rm -rf /deqp/modules/egl
rm -rf /deqp/framework
find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
${STRIP_CMD:-strip} modules/*/deqp-*
strip external/vulkancts/modules/vulkan/deqp-vk
du -sh *
rm -rf /VK-GL-CTS
popd

View File

@@ -2,20 +2,18 @@
set -ex
GFXRECONSTRUCT_VERSION=57c588c04af631d1d6d381a48e2b9283f9d9d528
# https://github.com/LunarG/gfxreconstruct/issues/328
GFXRECONSTRUCT_VERSION=b66cd392a84b226cb60ad9d4130ddeb58a1559cb
# Using the "dev" branch by now because it solves a crash and will allow us to
# use the gfxreconstruct-info tool
git clone https://github.com/LunarG/gfxreconstruct.git --single-branch -b dev --no-checkout /gfxreconstruct
git clone https://github.com/LunarG/gfxreconstruct.git --single-branch --no-checkout /gfxreconstruct
pushd /gfxreconstruct
git checkout "$GFXRECONSTRUCT_VERSION"
git submodule update --init
git submodule update
cmake -G Ninja -B_build -H. -DCMAKE_BUILD_TYPE=Release
ninja -C _build gfxrecon-replay gfxrecon-info
ninja -C _build gfxrecon-replay
mkdir -p build/bin
install _build/tools/replay/gfxrecon-replay build/bin
install _build/tools/info/gfxrecon-info build/bin
strip build/bin/*
find . -not -path './build' -not -path './build/*' -delete
popd

View File

@@ -1,14 +0,0 @@
#!/bin/bash
set -ex
export LIBDRM_VERSION=libdrm-2.4.102
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.xz
tar -xvf $LIBDRM_VERSION.tar.xz && rm $LIBDRM_VERSION.tar.xz
cd $LIBDRM_VERSION
meson build -D vc4=true -D freedreno=true -D etnaviv=true $EXTRA_MESON_ARGS
ninja -C build install
cd ..
rm -rf $LIBDRM_VERSION

View File

@@ -4,7 +4,7 @@ set -ex
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
pushd /piglit
git checkout 404862743cf8a7b37a4e3a93b4ba1858d59cd4ab
git checkout 8771c3860505db2bcf4877216221d774bf90af6b
patch -p1 <$OLDPWD/.gitlab-ci/piglit/disable-vs_in.diff
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release
ninja

View File

@@ -7,11 +7,11 @@ RENDERDOC_VERSION=da02e88201dc3b64316fc33ce6ff69cc729689aa
git clone https://github.com/baldurk/renderdoc.git --single-branch --no-checkout /renderdoc
pushd /renderdoc
git checkout "$RENDERDOC_VERSION"
cmake -G Ninja -B_build -H. -DENABLE_QRENDERDOC=false -DCMAKE_BUILD_TYPE=Release $EXTRA_CMAKE_ARGS
cmake -G Ninja -B_build -H. -DENABLE_QRENDERDOC=false -DCMAKE_BUILD_TYPE=Release
ninja -C _build
mkdir -p build/lib
${STRIP_CMD:-strip} _build/lib/*.so
cp _build/lib/renderdoc.so build/lib
cp _build/lib/librenderdoc.so build/lib
strip build/lib/*
find . -not -path './build' -not -path './build/*' -delete
popd

View File

@@ -10,7 +10,7 @@ ninja -C build install
popd
rm -rf /epoxy
VIRGLRENDERER_VERSION=43148d1115a12219a0560a538c9872d07c28c558
VIRGLRENDERER_VERSION=70b18e56d5c3ed69c561c36e098e8aea71ebffc2
git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git --single-branch --no-checkout /virglrenderer
pushd /virglrenderer
git checkout "$VIRGLRENDERER_VERSION"

View File

@@ -1,5 +0,0 @@
#!/bin/bash
arch=arm64
. .gitlab-ci/container/baremetal_build.sh

View File

@@ -3,53 +3,81 @@
set -e
set -o xtrace
############### Install packages for building
apt-get -y install ca-certificates
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
dpkg --add-architecture armhf
apt-get update
apt-get -y install \
abootimg \
android-sdk-ext4-utils \
autoconf \
automake \
bc \
bison \
ccache \
cmake \
cpio \
crossbuild-essential-armhf \
debootstrap \
fastboot \
flex \
g++ \
gettext \
git \
lavacli \
libdrm-dev \
libdrm-dev:armhf \
libegl1-mesa-dev \
libegl1-mesa-dev:armhf \
libelf-dev \
libelf-dev:armhf \
libexpat1-dev \
libexpat1-dev:armhf \
libgles2-mesa-dev \
libgles2-mesa-dev:armhf \
libpng-dev \
libpng-dev:armhf \
libssl-dev \
libvulkan-dev \
libvulkan-dev:armhf \
llvm-7-dev:armhf \
llvm-8-dev \
meson \
pkg-config \
python \
python3-distutils \
python3-mako \
python3-pil \
python3-requests \
python3-pip \
python3-setuptools \
python3-serial \
unzip \
wget \
xz-utils \
zlib1g-dev
pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@6f5af7e5574509726c79109e3c147cee95e81366
apt install -y --no-remove -t buster-backports \
meson
arch=armhf
. .gitlab-ci/container/cross_build.sh
. .gitlab-ci/container/container_pre_build.sh
# dependencies where we want a specific version
EXTRA_MESON_ARGS=
. .gitlab-ci/build-libdrm.sh
export LIBDRM_VERSION=libdrm-2.4.100
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
cd $LIBDRM_VERSION; meson build -D vc4=true -D freedreno=true -D etnaviv=true; ninja -C build install; cd ..
rm -rf $LIBDRM_VERSION
############### Generate cross build file for Meson
cross_file="/cross_file-armhf.txt"
/usr/share/meson/debcrossgen --arch armhf -o "$cross_file"
# Explicitly set ccache path for cross compilers
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
# Don't need wrapper for armhf executables
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
############### Generate kernel, ramdisk, test suites, etc for LAVA jobs
DEBIAN_ARCH=arm64 . .gitlab-ci/container/lava_arm.sh
DEBIAN_ARCH=armhf . .gitlab-ci/container/lava_arm.sh
apt-get purge -y \
python3-distutils \
wget
. .gitlab-ci/container/container_post_build.sh

View File

@@ -1,45 +0,0 @@
#!/bin/bash
set -e
set -o xtrace
############### Install packages for building
apt-get install -y ca-certificates
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
apt-get install -y --no-remove \
abootimg \
android-sdk-ext4-utils \
bc \
bison \
bzip2 \
ccache \
cmake \
cpio \
g++ \
debootstrap \
fastboot \
flex \
git \
netcat \
nginx-full \
python3-distutils \
python3-minimal \
python3-serial \
python3.7 \
pkg-config \
procps \
rsync \
u-boot-tools \
unzip
apt install -t buster-backports -y --no-remove \
meson
# setup nginx
sed -i '/gzip_/ s/#\ //g' /etc/nginx/nginx.conf
cp .gitlab-ci/bare-metal/nginx-default-site /etc/nginx/sites-enabled/default
. .gitlab-ci/container/container_post_build.sh

View File

@@ -0,0 +1,72 @@
#!/bin/bash
set -e
set -o xtrace
############### Install packages for building
apt-get -y install ca-certificates
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
apt-get -y install \
bzip2 \
ccache \
cmake \
g++ \
gcc \
git \
libc6-dev \
libdrm-nouveau2 \
libexpat1 \
libgbm-dev \
libgbm-dev \
libgles2-mesa-dev \
libllvm8 \
libpng16-16 \
libpng-dev \
libvulkan-dev \
libvulkan1 \
meson \
netcat \
pkg-config \
procps \
python \
python3-distutils \
waffle-utils \
wget \
zlib1g
. .gitlab-ci/container/container_pre_build.sh
############### Build dEQP runner
. .gitlab-ci/build-cts-runner.sh
############### Build dEQP GL
. .gitlab-ci/build-deqp-gl.sh
############### Uninstall the build software
ccache --show-stats
apt-get purge -y \
bzip2 \
ccache \
cmake \
g++ \
gcc \
git \
libc6-dev \
libgbm-dev \
libgles2-mesa-dev \
libpng-dev \
libvulkan-dev \
meson \
pkg-config \
python \
python3-distutils \
wget
apt-get autoremove -y --purge

View File

@@ -1,60 +0,0 @@
#!/bin/bash
set -e
set -o xtrace
ROOTFS=/lava-files/rootfs-${arch}
dpkg --add-architecture $arch
apt-get update
# Cross-build test deps
BAREMETAL_EPHEMERAL=" \
autoconf \
automake \
crossbuild-essential-$arch \
git-lfs \
libdrm-dev:$arch \
libboost-dev:$arch \
libegl1-mesa-dev:$arch \
libelf-dev:$arch \
libexpat1-dev:$arch \
libffi-dev:$arch \
libgbm-dev:$arch \
libgles2-mesa-dev:$arch \
libpciaccess-dev:$arch \
libpcre3-dev:$arch \
libpng-dev:$arch \
libpython3-dev:$arch \
libstdc++6:$arch \
libtinfo-dev:$arch \
libegl1-mesa-dev:$arch \
libvulkan-dev:$arch \
libxcb-keysyms1-dev:$arch \
libpython3-dev:$arch \
python3-dev \
qt5-default \
qt5-qmake \
qtbase5-dev:$arch \
"
apt-get install -y --no-remove $BAREMETAL_EPHEMERAL
mkdir /var/cache/apt/archives/$arch
############### Create cross-files
. .gitlab-ci/create-cross-file.sh $arch
. .gitlab-ci/container/container_pre_build.sh
############### Create rootfs
KERNEL_URL=https://gitlab.freedesktop.org/drm/msm/-/archive/drm-msm-fixes-2020-06-25/msm-drm-msm-fixes-2020-06-25.tar.gz
DEBIAN_ARCH=$arch INCLUDE_VK_CTS=1 . .gitlab-ci/container/lava_build.sh
ccache --show-stats
. .gitlab-ci/container/container_post_build.sh
apt-get purge -y $BAREMETAL_EPHEMERAL

View File

@@ -14,11 +14,16 @@ export CXX="/usr/lib/ccache/g++"
ccache --show-stats
if uname -m | grep -q arm || uname -m | grep -q aarch64; then
export JFLAGS=-j8
else
export JFLAGS=-j4
fi
# Make a wrapper script for ninja to always include the -j flags
echo '#!/bin/sh -x' > /usr/local/bin/ninja
echo '/usr/bin/ninja -j${FDO_CI_CONCURRENT:-4} "$@"' >> /usr/local/bin/ninja
echo /usr/bin/ninja $JFLAGS '"$@"' > /usr/local/bin/ninja
chmod +x /usr/local/bin/ninja
# Set MAKEFLAGS so that all make invocations in container builds include the
# flags (doesn't apply to non-container builds, but we don't run make there)
export MAKEFLAGS="-j${FDO_CI_CONCURRENT:-4}"
export MAKEFLAGS=$JFLAGS

View File

@@ -1,48 +0,0 @@
#!/bin/bash
set -e
set -o xtrace
export DEBIAN_FRONTEND=noninteractive
# Ephemeral packages (installed for this script and removed again at the end)
STABLE_EPHEMERAL=" \
libpciaccess-dev:$arch
"
dpkg --add-architecture $arch
apt-get update
apt-get install -y --no-remove \
$STABLE_EPHEMERAL \
crossbuild-essential-$arch \
libelf-dev:$arch \
libexpat1-dev:$arch \
libffi-dev:$arch \
libstdc++6:$arch \
libtinfo-dev:$arch \
wget
if [[ $arch == "armhf" ]]; then
LLVM=llvm-7-dev
else
LLVM=llvm-8-dev
fi
apt-get install -y --no-remove -t buster-backports \
$LLVM:$arch
. .gitlab-ci/create-cross-file.sh $arch
. .gitlab-ci/container/container_pre_build.sh
# dependencies where we want a specific version
EXTRA_MESON_ARGS="--cross-file=/cross_file-${arch}.txt -D libdir=lib/$(dpkg-architecture -A $arch -qDEB_TARGET_MULTIARCH)"
. .gitlab-ci/build-libdrm.sh
apt-get purge -y \
$STABLE_EPHEMERAL
. .gitlab-ci/container/container_post_build.sh

View File

@@ -1,5 +0,0 @@
#!/bin/bash
arch=i386
. .gitlab-ci/container/cross_build.sh

View File

@@ -0,0 +1,98 @@
#!/bin/bash
set -e
set -o xtrace
if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
GCC_ARCH="aarch64-linux-gnu"
KERNEL_ARCH="arm64"
DEFCONFIG="arch/arm64/configs/defconfig"
DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb arch/arm64/boot/dts/qcom/apq8016-sbc.dtb"
KERNEL_IMAGE_NAME="Image"
else
GCC_ARCH="arm-linux-gnueabihf"
KERNEL_ARCH="arm"
DEFCONFIG="arch/arm/configs/multi_v7_defconfig"
DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
KERNEL_IMAGE_NAME="zImage"
fi
############### Build dEQP runner
if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt"
fi
. .gitlab-ci/build-cts-runner.sh
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin
mv /usr/local/bin/deqp-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/.
############### Build dEQP
EXTRA_CMAKE_ARGS="-DCMAKE_C_COMPILER=${GCC_ARCH}-gcc -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++"
STRIP_CMD="${GCC_ARCH}-strip"
. .gitlab-ci/build-deqp-gl.sh
mv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/.
############### Cross-build kernel
KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz"
if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
export ARCH=${KERNEL_ARCH}
export CROSS_COMPILE="${GCC_ARCH}-"
fi
mkdir -p kernel
wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel
pushd kernel
./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.gitlab-ci/${KERNEL_ARCH}.config
make ${KERNEL_IMAGE_NAME} dtbs
cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /lava-files/.
cp ${DEVICE_TREES} /lava-files/.
popd
rm -rf kernel
############### Create rootfs
set +e
debootstrap \
--variant=minbase \
--arch=${DEBIAN_ARCH} \
--components main,contrib,non-free \
testing \
/lava-files/rootfs-${DEBIAN_ARCH}/ \
http://deb.debian.org/debian
cat /lava-files/rootfs-${DEBIAN_ARCH}/debootstrap/debootstrap.log
set -e
cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/.
chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh
rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh
if [ ${DEBIAN_ARCH} = arm64 ]; then
# Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355
# ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the
# .config from
# http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64
# with the following merged in:
#
# CONFIG_DRM=y
# CONFIG_DRM_MSM=y
# CONFIG_ATL1C=y
#
# Reason: 5.5 has a big stack of oopses and warns on db820c. 4.14-5.4
# linaro kernel binaries (see above .config link) have these as modules
# and distributed the modules only in the debian system, not the initrd,
# so they're very hard to extract (involving simg2img and loopback
# mounting). 4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for
# the command size") so it can't actually run fredreno. qcomlt-4.14 is
# unstable at boot (~10% instaboot rate). The 5.4 qcomlt kernel with msm
# built in seems like the easiest way to go.
wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/Image.gz -O Image.gz \
-O /lava-files/db820c-kernel
wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/apq8096-db820c.dtb \
-O /lava-files/db820c.dtb
# Make a gzipped copy of the Image for db410c.
gzip -k /lava-files/Image
fi

View File

@@ -1,239 +0,0 @@
#!/bin/bash
set -e
set -o xtrace
check_minio()
{
MINIO_PATH="minio-packet.freedesktop.org/mesa-lava/$1/${DISTRIBUTION_TAG}/${DEBIAN_ARCH}"
if wget -q --method=HEAD "https://${MINIO_PATH}/done"; then
exit
fi
}
# If remote files are up-to-date, skip rebuilding them
check_minio "mesa/mesa"
check_minio "${CI_PROJECT_PATH}"
. .gitlab-ci/container/container_pre_build.sh
if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
GCC_ARCH="aarch64-linux-gnu"
KERNEL_ARCH="arm64"
DEFCONFIG="arch/arm64/configs/defconfig"
DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb arch/arm64/boot/dts/qcom/apq8016-sbc.dtb"
KERNEL_IMAGE_NAME="Image"
elif [[ "$DEBIAN_ARCH" = "armhf" ]]; then
GCC_ARCH="arm-linux-gnueabihf"
KERNEL_ARCH="arm"
DEFCONFIG="arch/arm/configs/multi_v7_defconfig"
DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
KERNEL_IMAGE_NAME="zImage"
. .gitlab-ci/create-cross-file.sh armhf
else
GCC_ARCH="x86_64-linux-gnu"
KERNEL_ARCH="x86_64"
DEFCONFIG="arch/x86/configs/x86_64_defconfig"
DEVICE_TREES=""
KERNEL_IMAGE_NAME="bzImage"
fi
# Determine if we're in a cross build.
if [[ -e /cross_file-$DEBIAN_ARCH.txt ]]; then
EXTRA_MESON_ARGS="--cross-file /cross_file-$DEBIAN_ARCH.txt"
EXTRA_CMAKE_ARGS="-DCMAKE_TOOLCHAIN_FILE=/toolchain-$DEBIAN_ARCH.cmake"
export ARCH=${KERNEL_ARCH}
export CROSS_COMPILE="${GCC_ARCH}-"
fi
apt-get update
apt-get install -y automake \
git \
bc \
cmake \
wget \
debootstrap \
libboost-dev \
libegl1-mesa-dev \
libgbm-dev \
libgles2-mesa-dev \
libpcre3-dev \
libpng-dev \
libpython3-dev \
libssl-dev \
libvulkan-dev \
libxcb-keysyms1-dev \
python3-dev \
python3-distutils \
python3-serial \
qt5-default \
qt5-qmake \
qtbase5-dev
if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
apt-get install -y libboost-dev:armhf \
libegl1-mesa-dev:armhf \
libelf-dev:armhf \
libgbm-dev:armhf \
libgles2-mesa-dev:armhf \
libpcre3-dev:armhf \
libpng-dev:armhf \
libpython3-dev:armhf \
libvulkan-dev:armhf \
libxcb-keysyms1-dev:armhf \
qtbase5-dev:armhf
fi
############### Build dEQP runner
. .gitlab-ci/build-cts-runner.sh
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin
mv /usr/local/bin/deqp-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/.
############### Build dEQP
STRIP_CMD="${GCC_ARCH}-strip"
if [ -n "$INCLUDE_VK_CTS" ]; then
DEQP_TARGET=surfaceless . .gitlab-ci/build-deqp-vk.sh
else
. .gitlab-ci/build-deqp-gl.sh
fi
mv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/.
############### Build apitrace
. .gitlab-ci/build-apitrace.sh
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/apitrace
mv /apitrace/build /lava-files/rootfs-${DEBIAN_ARCH}/apitrace
rm -rf /apitrace
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/waffle
mv /waffle/build /lava-files/rootfs-${DEBIAN_ARCH}/waffle
rm -rf /waffle
############### Build renderdoc
EXTRA_CMAKE_ARGS+=" -DENABLE_XCB=false"
. .gitlab-ci/build-renderdoc.sh
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/renderdoc
mv /renderdoc/build /lava-files/rootfs-${DEBIAN_ARCH}/renderdoc
rm -rf /renderdoc
############### Build libdrm
EXTRA_MESON_ARGS+=" -D prefix=/libdrm"
. .gitlab-ci/build-libdrm.sh
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH
find /libdrm/ -name lib\*\.so\* | xargs cp -t /lava-files/rootfs-${DEBIAN_ARCH}/usr/lib/$GCC_ARCH/.
rm -rf /libdrm
############### Cross-build kernel
mkdir -p kernel
wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel
pushd kernel
./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.gitlab-ci/${KERNEL_ARCH}.config
make ${KERNEL_IMAGE_NAME}
for image in ${KERNEL_IMAGE_NAME}; do
cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/.
done
if [[ -n ${DEVICE_TREES} ]]; then
make dtbs
cp ${DEVICE_TREES} /lava-files/.
fi
if [[ ${DEBIAN_ARCH} = "arm64" ]] && which mkimage > /dev/null; then
make Image.lzma
mkimage \
-f auto \
-A arm \
-O linux \
-d arch/arm64/boot/Image.lzma \
-C lzma\
-b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
/lava-files/cheza-kernel
fi
popd
rm -rf kernel
############### Create rootfs
set +e
debootstrap \
--variant=minbase \
--arch=${DEBIAN_ARCH} \
--components main,contrib,non-free \
buster \
/lava-files/rootfs-${DEBIAN_ARCH}/ \
http://deb.debian.org/debian
cat /lava-files/rootfs-${DEBIAN_ARCH}/debootstrap/debootstrap.log
set -e
cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/.
cp .gitlab-ci/container/llvm-snapshot.gpg.key /lava-files/rootfs-${DEBIAN_ARCH}/.
chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh
rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh
rm /lava-files/rootfs-${DEBIAN_ARCH}/llvm-snapshot.gpg.key
du -ah /lava-files/rootfs-${DEBIAN_ARCH} | sort -h | tail -100
pushd /lava-files/rootfs-${DEBIAN_ARCH}
tar cvzf /lava-files/lava-rootfs.tgz .
popd
if [ ${DEBIAN_ARCH} = arm64 ]; then
# Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355
# ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the
# .config from
# http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64
# with the following merged in:
#
# CONFIG_DRM=y
# CONFIG_DRM_MSM=y
# CONFIG_ATL1C=y
#
# Reason: 5.5 has a big stack of oopses and warns on db820c. 4.14-5.4
# linaro kernel binaries (see above .config link) have these as modules
# and distributed the modules only in the debian system, not the initrd,
# so they're very hard to extract (involving simg2img and loopback
# mounting). 4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for
# the command size") so it can't actually run fredreno. qcomlt-4.14 is
# unstable at boot (~10% instaboot rate). The 5.4 qcomlt kernel with msm
# built in seems like the easiest way to go.
wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/Image.gz -O Image.gz \
-O /lava-files/db820c-kernel
wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/apq8096-db820c.dtb \
-O /lava-files/db820c.dtb
# Make a gzipped copy of the Image for db410c.
gzip -k /lava-files/Image
# Add missing a630 firmware, added to debian packge in apr 2020
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_gmu.bin \
-O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_gmu.bin
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_sqe.fw \
-O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_sqe.fw
fi
. .gitlab-ci/container/container_post_build.sh
############### Upload the files!
if [ -n "$UPLOAD_FOR_LAVA" ]; then
ci-fairy minio login $CI_JOB_JWT
FILES_TO_UPLOAD="lava-rootfs.tgz \
$KERNEL_IMAGE_NAME"
if [[ -n $DEVICE_TREES ]]; then
FILES_TO_UPLOAD="$FILES_TO_UPLOAD $(basename -a $DEVICE_TREES)"
fi
for f in $FILES_TO_UPLOAD; do
ci-fairy minio cp /lava-files/$f \
minio://${MINIO_PATH}/$f
done
touch /lava-files/done
ci-fairy minio cp /lava-files/done minio://${MINIO_PATH}/done
fi

View File

@@ -0,0 +1,20 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.15 (GNU/Linux)
mQENBFu8fWQBCADM64J7qlcnI2KwxSKSdyaOi7hz44EUXDpC3+3hfFP8k28SgV3U
4a/ydOdd2cDSne5w+yjrnJWYuS0sTiE7vQPtKfmCmQZfCStvoRe5Pt+AOy1GA/iu
U5wHIZD+/A9CeQcu5L3PkVkmijz0LmSCq7HnnVB0SdFA5eFlV98H875EasvpJ3xU
ziI3yvqdZ5/0LgKzOiFjk4rMXQS01a1dNpwFO7EXiq921ZjnXatdnsDQ/NAj7z8P
3qnTAj6yvl7DtdlXXA2hiznEOZNCRLZ69vHq0hGIw+OKjpsUkCZK29AnY4wJxxzY
frjknVW7tyZ6Hxwz6R4vaVlZ6h5WR/OiAdqlABEBAAG0NEVtdWxhdG9ycyBPQlMg
UHJvamVjdCA8RW11bGF0b3JzQGJ1aWxkLm9wZW5zdXNlLm9yZz6JAT4EEwEIACgF
Alu8fWQCGwMFCQQesAAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEN+hdadR
BJYOXVoH/Rd0dRx4SUx7KVjTrDfSuf6jXseyenkl4aQnp46n0MttatkoCdGVvyrq
VWvGfO3MI122MnFKqia7Hep1HlcYGe2a5tW/w1SGGEy+VZduxcZCMmVuSnl+3ioG
2fRGx3uoNBEGQIbZ5VVlABUJC+c/Vq1m6kT9Edz4XWRPHW1Nwjjfn79618ebGZMc
R0fUM9L3GZw9V/kAK8kXmIL7rkglfewTbs6fByqAix79MjsNURAuCeIc5OmbxL4j
LxuoNhnxxucB7YGBhCa9ZL8LYEIbdeyaJmgdHDoUQjz4peXibz5v+Er8mGOwuSLl
y1U21T3huNf9Osjw52nxVcDmugBWqQKIRgQTEQIABgUCW7x9ZAAKCRA7MBG3a51l
IwayAJ9dHmDag9nFY9GujfMr+foKquFS9wCfQlvp6Sz0N5aKdW00NGnZZ/EKHIQ=
=uZyA
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,8 +0,0 @@
#!/bin/bash
arch=ppc64el
. .gitlab-ci/container/cross_build.sh
apt-get install -y --no-remove \
libvulkan-dev:$arch

View File

@@ -1,5 +0,0 @@
#!/bin/bash
arch=s390x
. .gitlab-ci/container/cross_build.sh

View File

@@ -1,97 +0,0 @@
#!/bin/bash
set -e
set -o xtrace
export DEBIAN_FRONTEND=noninteractive
apt-get install -y \
ca-certificates \
gnupg \
python3-pip \
python3-setuptools \
unzip \
wget
# Upstream LLVM package repository
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
apt-get install -y --no-remove \
$STABLE_EPHEMERAL \
bison \
ccache \
clang-9 \
dpkg-cross \
flex \
g++ \
g++-mingw-w64-x86-64 \
gcc \
git \
libclang-9-dev \
libclc-dev \
libelf-dev \
libepoxy-dev \
libexpat1-dev \
libgtk-3-dev \
libomxil-bellagio-dev \
libpciaccess-dev \
libunwind-dev \
libva-dev \
libvdpau-dev \
libvulkan-dev \
libx11-dev \
libx11-xcb-dev \
libxdamage-dev \
libxext-dev \
libxml2-utils \
libxrandr-dev \
libxrender-dev \
libxshmfence-dev \
libxvmc-dev \
libxxf86vm-dev \
libz-mingw-w64-dev \
llvm-9-dev \
pkg-config \
python-mako \
python3-mako \
python3-pil \
python3-pip \
python3-requests \
python3-setuptools \
qemu-user \
scons \
wine64-development \
x11proto-dri2-dev \
x11proto-gl-dev \
x11proto-randr-dev \
xz-utils \
zlib1g-dev
apt-get install -y --no-remove -t buster-backports \
libclang-8-dev \
libllvm8 \
meson
# Needed for ci-fairy, this revision is able to upload files to MinIO
pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@6f5af7e5574509726c79109e3c147cee95e81366
# for the vulkan overlay layer and ACO tests
wget https://github.com/KhronosGroup/glslang/releases/download/SDK-candidate-26-Jul-2020/glslang-master-linux-Release.zip
unzip glslang-master-linux-Release.zip bin/glslangValidator
install -m755 bin/glslangValidator /usr/local/bin/
rm bin/glslangValidator glslang-master-linux-Release.zip
############### Uninstall ephemeral packages
apt-get purge -y \
gnupg \
unzip
. .gitlab-ci/container/container_post_build.sh

View File

@@ -5,39 +5,133 @@ set -o xtrace
export DEBIAN_FRONTEND=noninteractive
# Ephemeral packages (installed for this script and removed again at the end)
STABLE_EPHEMERAL=" \
CROSS_ARCHITECTURES="i386 ppc64el s390x"
for arch in $CROSS_ARCHITECTURES; do
dpkg --add-architecture $arch
done
apt-get install -y \
ca-certificates \
gnupg \
unzip \
wget
# Upstream LLVM package repository
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
# Upstream Wine (WineHQ) package repository. We use the OBS service
# instead of the repository at the winehq.org domain because:
#
# " The WineHQ packages for Debian 10 and later require libfaudio0
# as a dependency. Since the distro does not provide it for Debian
# 10, users of that version can download libfaudio0 packages from
# the OBS. See https://forum.winehq.org/viewtopic.php?f=8&t=32192
# for details."
#
# As explained at https://wiki.winehq.org/Debian
apt-key add .gitlab-ci/container/obs-emulators-wine-debian.gpg.key
echo 'deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/Debian_10/ ./' >/etc/apt/sources.list.d/obs-emulators-wine-debian.list
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y --no-remove \
autoconf \
automake \
autotools-dev \
bzip2 \
bison \
ccache \
clang-9 \
cmake \
gnupg \
flex \
g++ \
gcc \
gettext \
git \
libclang-6.0-dev \
libclang-7-dev \
libclang-8-dev \
libclang-9-dev \
libclc-dev \
libelf-dev \
libepoxy-dev \
libexpat1-dev \
libgbm-dev \
libgtk-3-dev \
libomxil-bellagio-dev \
libpciaccess-dev \
libtool \
make \
unzip \
wget \
"
# We need multiarch for Wine
dpkg --add-architecture i386
apt-get update
apt-get install -y --no-remove \
$STABLE_EPHEMERAL \
libarchive-dev \
liblua5.3-dev \
libxml2-dev \
wine-development \
wine32-development
apt-get install -y --no-remove -t buster-backports \
llvm-8-dev
libunwind-dev \
libva-dev \
libvdpau-dev \
libvulkan-dev \
libvulkan-dev:ppc64el \
libx11-dev \
libx11-xcb-dev \
libxdamage-dev \
libxext-dev \
libxml2-utils \
libxrandr-dev \
libxrender-dev \
libxshmfence-dev \
libxvmc-dev \
libxxf86vm-dev \
llvm-6.0-dev \
llvm-7-dev \
llvm-9-dev \
meson \
pkg-config \
python-mako \
python3-mako \
python3-pil \
python3-requests \
qemu-user \
scons \
x11proto-dri2-dev \
x11proto-gl-dev \
x11proto-randr-dev \
xz-utils \
zlib1g-dev
. .gitlab-ci/container/container_pre_build.sh
# Cross-build Mesa deps
for arch in $CROSS_ARCHITECTURES; do
apt-get install -y --no-remove \
crossbuild-essential-${arch} \
libdrm-dev:${arch} \
libelf-dev:${arch} \
libexpat1-dev:${arch} \
libffi-dev:${arch} \
libllvm8:${arch} \
libstdc++6:${arch} \
libtinfo-dev:${arch}
if [ "$arch" == "i386" ]; then
# libpciaccess-dev is only needed for Intel.
apt-get install -y --no-remove \
libpciaccess-dev:${arch}
fi
mkdir /var/cache/apt/archives/${arch}
# Download llvm-* packages, but don't install them yet, since they can
# only be installed for one architecture at a time
apt-get install -o Dir::Cache::archives=/var/cache/apt/archives/$arch --download-only -y --no-remove \
llvm-8-dev:${arch}
done
apt-get install -y --no-remove \
llvm-8-dev \
# for 64bit windows cross-builds
apt-get install -y --no-remove \
libz-mingw-w64-dev \
mingw-w64 \
winehq-stable
# Debian's pkg-config wrapers for mingw are broken, and there's no sign that
# they're going to be fixed, so we'll just have to fix it ourselves
@@ -50,12 +144,36 @@ EOF
chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config
# Generate cross build files for Meson
for arch in $CROSS_ARCHITECTURES; do
cross_file="/cross_file-$arch.txt"
/usr/share/meson/debcrossgen --arch "$arch" -o "$cross_file"
# Explicitly set ccache path for cross compilers
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
if [ "$arch" = "i386" ]; then
# Work around a bug in debcrossgen that should be fixed in the next release
sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
fi
# Rely on qemu-user being configured in binfmt_misc on the host
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
done
# for the vulkan overlay layer
wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip
unzip glslang-master-linux-Release.zip bin/glslangValidator
install -m755 bin/glslangValidator /usr/local/bin/
rm bin/glslangValidator glslang-master-linux-Release.zip
# dependencies where we want a specific version
export XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
export XCB_RELEASES=https://xcb.freedesktop.org/dist
export WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
export XORGMACROS_VERSION=util-macros-1.19.0
export LIBDRM_VERSION=libdrm-2.4.100
export XCBPROTO_VERSION=xcb-proto-1.13
export LIBXCB_VERSION=libxcb-1.13
export LIBWAYLAND_VERSION=wayland-1.15.0
@@ -76,7 +194,14 @@ tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2
cd $LIBXCB_VERSION; ./configure; make install; cd ..
rm -rf $LIBXCB_VERSION
. .gitlab-ci/build-libdrm.sh
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
cd $LIBDRM_VERSION
meson build -D vc4=true -D freedreno=true -D etnaviv=true -D libdir=lib/x86_64-linux-gnu; ninja -C build install
rm -rf build; meson --cross-file=/cross_file-ppc64el.txt build -D libdir=lib/powerpc64le-linux-gnu; ninja -C build install
rm -rf build; meson --cross-file=/cross_file-i386.txt build -D libdir=lib/i386-linux-gnu; ninja -C build install
cd ..
rm -rf $LIBDRM_VERSION
wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz
@@ -92,7 +217,7 @@ rm -rf $WAYLAND_PROTOCOLS_VERSION
# The version of libglvnd-dev in debian is too old
# Check this page to see when this local compilation can be dropped in favour of the package:
# https://packages.debian.org/libglvnd-dev
GLVND_VERSION=1.3.2
GLVND_VERSION=1.2.0
wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz
tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
@@ -110,6 +235,15 @@ popd
############### Uninstall the build software
apt-get purge -y \
$STABLE_EPHEMERAL
autoconf \
automake \
autotools-dev \
cmake \
git \
gnupg \
libgbm-dev \
libtool \
unzip \
wget
. .gitlab-ci/container/container_post_build.sh

View File

@@ -30,12 +30,11 @@ apt-get install -y --no-remove \
flex \
g++ \
gcc \
gettext \
git \
libclang-3.9-dev \
libclang-4.0-dev \
libclang-5.0-dev \
libclang-6.0-dev \
libclang-7-dev \
libclc-dev \
libdrm-dev \
libelf-dev \
@@ -46,22 +45,14 @@ apt-get install -y --no-remove \
llvm-3.9-dev \
llvm-4.0-dev \
llvm-5.0-dev \
llvm-6.0-dev \
llvm-7-dev \
ninja-build \
meson \
pkg-config \
python-mako \
python3-mako \
python3-pip \
python3-setuptools \
python3-wheel \
scons \
xz-utils \
zlib1g-dev
# We need at least 0.52.0, which is not in stretch
python3 -m pip install meson>=0.52
. .gitlab-ci/container/container_pre_build.sh
############### Uninstall unused packages

View File

@@ -1,61 +0,0 @@
#!/bin/bash
set -e
set -o xtrace
export DEBIAN_FRONTEND=noninteractive
apt-get install -y \
ca-certificates \
gnupg
# Upstream LLVM package repository
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y --no-remove \
git \
git-lfs \
libexpat1 \
libllvm9 \
liblz4-1 \
libpcre32-3 \
libpng16-16 \
libpython3.7 \
libvulkan1 \
libwayland-client0 \
libwayland-server0 \
libxcb-ewmh2 \
libxcb-randr0 \
libxcb-keysyms1 \
libxcb-xfixes0 \
libxkbcommon0 \
libxrandr2 \
libxrender1 \
python \
python3-mako \
python3-numpy \
python3-pil \
python3-pytest \
python3-requests \
python3-six \
python3-yaml \
python3.7 \
qt5-default \
qt5-qmake \
vulkan-tools \
waffle-utils \
xauth \
xvfb \
zlib1g
apt-get purge -y \
gnupg
apt-get autoremove -y --purge

View File

@@ -5,36 +5,78 @@ set -o xtrace
export DEBIAN_FRONTEND=noninteractive
# Ephemeral packages (installed for this script and removed again at the end)
STABLE_EPHEMERAL=" \
apt-get install -y \
ca-certificates \
gnupg
# Upstream LLVM package repository
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
# Use newer packages from backports by default
cat >/etc/apt/preferences <<EOF
Package: *
Pin: release a=buster-backports
Pin-Priority: 500
EOF
apt-get dist-upgrade -y
apt-get install -y --no-remove \
autoconf \
automake \
ccache \
cmake \
g++ \
gcc \
git \
libexpat1 \
libgbm-dev \
libgles2-mesa-dev \
libllvm9 \
libpcre3-dev \
libpciaccess-dev \
libpcre32-3 \
libpng-dev \
libpng16-16 \
libpython3.7 \
libvulkan-dev \
libvulkan1 \
libwaffle-dev \
libwayland-server0 \
libxcb-keysyms1 \
libxcb-keysyms1-dev \
libxcb-xfixes0 \
libxkbcommon-dev \
libxkbcommon0 \
libxrender-dev \
libxrender1 \
make \
meson \
patch \
pkg-config \
python \
python3-distutils \
python3-mako \
python3-numpy \
python3-pil \
python3-requests \
python3-six \
python3-yaml \
python3.7 \
python3.7-dev \
qt5-default \
qt5-qmake \
waffle-utils \
wget \
xauth \
xvfb \
xz-utils \
"
apt-get install -y --no-remove \
$STABLE_EPHEMERAL
zlib1g
. .gitlab-ci/container/container_pre_build.sh
@@ -62,15 +104,34 @@ apt-get install -y --no-remove \
. .gitlab-ci/build-renderdoc.sh
############### Build libdrm
. .gitlab-ci/build-libdrm.sh
############### Uninstall the build software
ccache --show-stats
apt-get purge -y \
$STABLE_EPHEMERAL
autoconf \
automake \
ccache \
cmake \
g++ \
gcc \
gnupg \
libc6-dev \
libgbm-dev \
libgles2-mesa-dev \
libpcre3-dev \
libpng-dev \
libwaffle-dev \
libxcb-keysyms1-dev \
libxkbcommon-dev \
libxrender-dev \
make \
meson \
patch \
pkg-config \
python3-distutils \
python3.7-dev \
wget \
xz-utils
apt-get autoremove -y --purge

View File

@@ -5,36 +5,64 @@ set -o xtrace
export DEBIAN_FRONTEND=noninteractive
# Ephemeral packages (installed for this script and removed again at the end)
STABLE_EPHEMERAL=" \
apt-get install -y \
ca-certificates \
gnupg
# Upstream LLVM package repository
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
apt-get update
apt-get dist-upgrade -y
apt-get install -y --no-remove \
ccache \
cmake \
g++ \
gcc \
git \
git-lfs \
libexpat1 \
libgbm-dev \
libgles2-mesa-dev \
libllvm9 \
liblz4-1 \
liblz4-dev \
libpng-dev \
libpng16-16 \
libvulkan-dev \
libvulkan1 \
libwayland-client0 \
libwayland-server0 \
libxcb-ewmh-dev \
libxcb-ewmh2 \
libxcb-keysyms1 \
libxcb-keysyms1-dev \
libxcb-randr0 \
libxcb-xfixes0 \
libxkbcommon-dev \
libxkbcommon0 \
libxrandr-dev \
libxrandr2 \
libxrender-dev \
libzstd-dev \
libxrender1 \
meson \
p7zip \
pkg-config \
python \
python3-distutils \
python3-pil \
python3-requests \
python3-yaml \
vulkan-tools \
wget \
"
# Unfortunately, gfxreconstruct needs the -dev packages:
# https://github.com/LunarG/gfxreconstruct/issues/402
apt-get install -y --no-remove \
libwayland-dev \
libx11-xcb-dev \
libxcb-keysyms1-dev \
libxcb1-dev \
$STABLE_EPHEMERAL
xauth \
xvfb
# We need multiarch for Wine
dpkg --add-architecture i386
@@ -46,7 +74,6 @@ apt-get install -y --no-remove \
wine32 \
wine64
############### Set up Wine env variables
export WINEDEBUG="-all"
@@ -132,6 +159,24 @@ wine \
ccache --show-stats
apt-get purge -y \
$STABLE_EPHEMERAL
ccache \
cmake \
g++ \
gcc \
gnupg \
libgbm-dev \
libgles2-mesa-dev \
liblz4-dev \
libpng-dev \
libvulkan-dev \
libxcb-ewmh-dev \
libxcb-keysyms1-dev \
libxkbcommon-dev \
libxrandr-dev \
libxrender-dev \
meson \
p7zip \
pkg-config \
wget
apt-get autoremove -y --purge

View File

@@ -1,34 +0,0 @@
#!/bin/bash
arch=$1
cross_file="/cross_file-$arch.txt"
/usr/share/meson/debcrossgen --arch $arch -o "$cross_file"
# Explicitly set ccache path for cross compilers
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
if [ "$arch" = "i386" ]; then
# Work around a bug in debcrossgen that should be fixed in the next release
sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
fi
# Rely on qemu-user being configured in binfmt_misc on the host
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
# Set up cmake cross compile toolchain file for dEQP builds
toolchain_file="/toolchain-$arch.cmake"
if [[ "$arch" = "arm64" ]]; then
GCC_ARCH="aarch64-linux-gnu"
DE_CPU="DE_CPU_ARM_64"
CMAKE_ARCH=arm
elif [[ "$arch" = "armhf" ]]; then
GCC_ARCH="arm-linux-gnueabihf"
DE_CPU="DE_CPU_ARM"
CMAKE_ARCH=arm
fi
if [[ -n "$GCC_ARCH" ]]; then
echo "set(CMAKE_SYSTEM_NAME Linux)" > "$toolchain_file"
echo "set(CMAKE_SYSTEM_PROCESSOR arm)" >> "$toolchain_file"
echo "set(CMAKE_C_COMPILER /usr/lib/ccache/$GCC_ARCH-gcc)" >> "$toolchain_file"
echo "set(CMAKE_CXX_COMPILER /usr/lib/ccache/$GCC_ARCH-g++)" >> "$toolchain_file"
echo "set(ENV{PKG_CONFIG} \"/usr/bin/$GCC_ARCH-pkg-config\")" >> "$toolchain_file"
echo "set(DE_CPU $DE_CPU)" >> "$toolchain_file"
fi

View File

@@ -2,53 +2,18 @@
set -ex
if [ $DEBIAN_ARCH = arm64 ]; then
ARCH_PACKAGES="firmware-qcom-media"
elif [ $DEBIAN_ARCH = amd64 ]; then
# Upstream LLVM package repository
apt-get -y install --no-install-recommends gnupg ca-certificates
apt-key add /llvm-snapshot.gpg.key
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
apt-get update
ARCH_PACKAGES="libelf1
libllvm9
libxcb-dri2-0
libxcb-dri3-0
libxcb-present0
libxcb-sync1
libxcb-xfixes0
libxshmfence1
firmware-amd-graphics
"
fi
apt-get -y install --no-install-recommends \
ca-certificates \
curl \
initramfs-tools \
libpng16-16 \
strace \
libsensors5 \
libexpat1 \
libx11-6 \
libx11-xcb1 \
$ARCH_PACKAGES \
netcat-openbsd \
python3 \
libpython3.7 \
python3-pil \
python3-pytest \
python3-requests \
python3-yaml \
sntp \
libdrm2 \
libdrm-nouveau2 \
firmware-qcom-media \
wget \
xz-utils
if [ -n "$INCLUDE_VK_CTS" ]; then
apt-get install -y libvulkan1
fi
passwd root -d
chsh -s /bin/sh
@@ -79,8 +44,7 @@ cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
UNNEEDED_PACKAGES="libfdisk1
tzdata
diffutils
gnupg"
diffutils"
export DEBIAN_FRONTEND=noninteractive
@@ -102,7 +66,6 @@ rm -rf /var/log/*
# Dropping documentation, localization, i18n files, etc
rm -rf /usr/share/doc/*
rm -rf /usr/share/locale/*
rm -rf /usr/share/X11/locale/*
rm -rf /usr/share/man
rm -rf /usr/share/i18n/*
rm -rf /usr/share/info/*
@@ -132,8 +95,8 @@ rm -rf usr/share/misc/usb.ids
# IMPORTANT: The Debian system is not longer functional at this point,
# for example, apt and dpkg will stop working
UNNEEDED_PACKAGES="apt libapt-pkg6.0 "\
"ncurses-bin ncurses-base libncursesw6 libncurses6 "\
UNNEEDED_PACKAGES="apt libapt-pkg5.0 "\
"ncurses-bin ncurses-base libncursesw5 libncurses5 "\
"perl-base "\
"debconf libdebconfclient0 "\
"e2fsprogs e2fslibs libfdisk1 "\
@@ -150,15 +113,6 @@ UNNEEDED_PACKAGES="apt libapt-pkg6.0 "\
"hostname "\
"adduser "\
"debian-archive-keyring "\
"libegl1-mesa-dev "\
"libegl-mesa0 "\
"libgl1-mesa-dev "\
"libgl1-mesa-dri "\
"libglapi-mesa "\
"libgles2-mesa-dev "\
"libglx-mesa0 "\
"mesa-common-dev "\
"libz3-4 "\
# Removing unneeded packages
for PACKAGE in ${UNNEEDED_PACKAGES}
@@ -212,10 +166,10 @@ rm -rf usr/lib/xtables
rm -rf usr/lib/locale/*
# partition helpers
rm -rf usr/sbin/*fdisk
rm usr/sbin/*fdisk
# local compiler
rm -rf usr/bin/localedef
rm usr/bin/localedef
# Systemd dns resolver
find usr etc -name '*systemd-resolve*' -prune -exec rm -r {} \;
@@ -236,16 +190,16 @@ find usr etc -name '*fuse*' -prune -exec rm -r {} \;
rm -rf usr/lib/lsb
# Only needed when adding libraries
rm -rf usr/sbin/ldconfig*
rm usr/sbin/ldconfig*
# Games, unused
rmdir usr/games
# Remove pam module to authenticate against a DB
# plus libdb-5.3.so that is only used by this pam module
rm -rf usr/lib/*/security/pam_userdb.so
rm -rf usr/lib/*/libdb-5.3.so
rm usr/lib/*/security/pam_userdb.so
rm usr/lib/*/libdb-5.3.so
# remove NSS support for nis, nisplus and hesiod
rm -rf usr/lib/*/libnss_hesiod*
rm -rf usr/lib/*/libnss_nis*
rm usr/lib/*/libnss_hesiod*
rm usr/lib/*/libnss_nis*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,3 @@
dEQP-GLES31.functional.blend_equation_advanced.barrier.colorburn
dEQP-GLES31.functional.blend_equation_advanced.barrier.colordodge
dEQP-GLES31.functional.blend_equation_advanced.barrier.darken
@@ -67,6 +66,16 @@ dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_bl
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_blend_eq
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_separate_blend_eq
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_separate_blend_eq_buffer_blend_eq
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.15
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.18
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.2
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.6
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.19
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.3
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_depth_fbo
dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4x2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3

View File

@@ -1,15 +1,4 @@
# Possibly https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2035 related
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
dEQP-VK.binding_model.descriptorset_random.sets4.constant.ubolimitlow.sbolimithigh.imglimithigh.noiub.uab.frag.ialimitlow.0
dEQP-VK.draw.output_location.array.b8g8r8a8-unorm-mediump-output-vec3
dEQP-VK.glsl.linkage.varying.struct.mat3x2
dEQP-VK.graphicsfuzz.mat-array-deep-control-flow
dEQP-VK.spirv_assembly.instruction.compute.float_controls.fp32.input_args.negate_denorm_preserve
dEQP-VK.spirv_assembly.instruction.compute.float_controls.fp32.input_args.rounding_rtz_out_prod
dEQP-VK.spirv_assembly.instruction.graphics.opquantize.carry_bit_geom
dEQP-VK.subgroups.builtin_var.graphics.subgroupinvocationid
# not sure what's wrong here
dEQP-VK.tessellation.invariance.outer_edge_index_independence.triangles_equal_spacing_ccw_point_mode
dEQP-VK.tessellation.invariance.primitive_set.isolines_fractional_odd_spacing_ccw_point_mode
dEQP-GLES2.functional.clip_control.depth_mode_zero_to_one
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw

View File

@@ -0,0 +1,18 @@
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw
dEQP-GLES31.functional.ubo.random.all_per_block_buffers.11
dEQP-GLES31.functional.ubo.random.all_per_block_buffers.16
dEQP-GLES31.functional.ubo.random.all_per_block_buffers.21
dEQP-GLES31.functional.ubo.random.all_per_block_buffers.31
dEQP-GLES31.functional.ubo.random.all_per_block_buffers.6
dEQP-GLES31.functional.ubo.random.all_shared_buffer.12
dEQP-GLES31.functional.ubo.random.all_shared_buffer.17
dEQP-GLES31.functional.ubo.random.all_shared_buffer.2
dEQP-GLES31.functional.ubo.random.all_shared_buffer.27
dEQP-GLES31.functional.ubo.random.all_shared_buffer.37
dEQP-GLES31.functional.ubo.random.all_shared_buffer.47
dEQP-GLES31.functional.ubo.random.basic_type_arrays.1
dEQP-GLES31.functional.ubo.random.basic_type_arrays.11
dEQP-GLES31.functional.ubo.random.basic_type_arrays.16
dEQP-GLES31.functional.ubo.random.basic_type_arrays.21
dEQP-GLES31.functional.ubo.random.basic_type_arrays.6

View File

@@ -9,29 +9,55 @@ dEQP-GLES[0-9]*.stress.*
# These are really slow on tiling architectures (including llvmpipe).
dEQP-GLES[0-9]*.functional.flush_finish.*
# Unstable test results
#dEQP-GLES3.functional.fragment_out.random.*
dEQP-GLES3.functional.transform_feedback.*points.*
dEQP-GLES3.functional.transform_feedback.*lines.*
dEQP-GLES31.functional.primitive_bounding_box.*
#dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array.*
# Intermittent timeout
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.23
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48
# Flakes reported more than once during Jan-Feb 2020
dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array
# This started failing, despite passing locally (and generating identical
# cmdstream as before. Not sure what is going on, but adding it to skips
# for now
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_int
# Non-sysmem flakes
dEQP-VK.pipeline.spec_constant.compute.composite.matrix.mat3x2
# Fails NIR_VALIDATE so probably flaky
dEQP-VK.memory_model.write_after_read.core11.u32.coherent.fence_fence.atomicwrite.workgroup.payload_nonlocal.workgroup.guard_local.buffer.comp
# Sysmem flake: this one is fairly frequent, but if you enable it then
# it moves to dEQP-VK.renderpass.dedicated_allocation.attachment.3.393
#
#dEQP-VK.renderpass.suballocation.attachment_allocation.grow_shrink.89
# At least some of the separate_channels tests fail on sysmem due to an
# interaction of use of a UBWC buffer as both a render target and a
# texture. Stores are done through both paths in separate channels,
# and the UBWC updates don't get synced. The current a650 blob also
# fails these tests and qcom apparently noted the failure at one point
# https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/2017
dEQP-VK.renderpass.*separate_channels.*
dEQP-GLES3.functional.fragment_out.random.0
dEQP-GLES3.functional.fragment_out.random.1
dEQP-GLES3.functional.fragment_out.random.12
dEQP-GLES3.functional.fragment_out.random.13
dEQP-GLES3.functional.fragment_out.random.17
dEQP-GLES3.functional.fragment_out.random.24
dEQP-GLES3.functional.fragment_out.random.27
dEQP-GLES3.functional.fragment_out.random.28
dEQP-GLES3.functional.fragment_out.random.32
dEQP-GLES3.functional.fragment_out.random.34
dEQP-GLES3.functional.fragment_out.random.35
dEQP-GLES3.functional.fragment_out.random.36
dEQP-GLES3.functional.fragment_out.random.40
dEQP-GLES3.functional.fragment_out.random.44
dEQP-GLES3.functional.fragment_out.random.47
dEQP-GLES3.functional.fragment_out.random.5
dEQP-GLES3.functional.fragment_out.random.50
dEQP-GLES3.functional.fragment_out.random.51
dEQP-GLES3.functional.fragment_out.random.55
dEQP-GLES3.functional.fragment_out.random.58
dEQP-GLES3.functional.fragment_out.random.59
dEQP-GLES3.functional.fragment_out.random.61
dEQP-GLES3.functional.fragment_out.random.63
dEQP-GLES3.functional.fragment_out.random.66
dEQP-GLES3.functional.fragment_out.random.67
dEQP-GLES3.functional.fragment_out.random.69
dEQP-GLES3.functional.fragment_out.random.70
dEQP-GLES3.functional.fragment_out.random.71
dEQP-GLES3.functional.fragment_out.random.80
dEQP-GLES3.functional.fragment_out.random.82
dEQP-GLES3.functional.fragment_out.random.86
dEQP-GLES3.functional.fragment_out.random.88
dEQP-GLES3.functional.fragment_out.random.91
dEQP-GLES3.functional.fragment_out.random.93
dEQP-GLES3.functional.fragment_out.random.95
dEQP-GLES3.functional.fragment_out.random.96
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.highp_mat2x3
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.lowp_mat2x4
dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles.lowp_mat2x4

View File

@@ -28,6 +28,9 @@ dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec3_bias
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_etc1
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888
@@ -76,3 +79,45 @@ dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_clamp
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_mirror
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_repeat
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_clamp
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_mirror
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_repeat
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_clamp
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_mirror
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_repeat
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_clamp
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_mirror
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_repeat
dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_clamp
dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_mirror
dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_repeat
dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_clamp
dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_mirror
dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_repeat
dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_clamp
dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_mirror
dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_repeat
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_clamp
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_mirror
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_repeat
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat

View File

@@ -19,8 +19,11 @@ dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_com
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16

View File

@@ -12,6 +12,3 @@ dEQP-GLES[0-9]*.functional.flush_finish.*
# XXX: Why does this flake?
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
# Needs investigation
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16

View File

@@ -0,0 +1,31 @@
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16

View File

@@ -0,0 +1,31 @@
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16

File diff suppressed because it is too large Load Diff

View File

@@ -11,3 +11,10 @@ dEQP-GLES[0-9]*.functional.flush_finish.*
# XXX: Why does this flake?
dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_neg_x_neg_z_and_pos_x_pos_z_and_neg_x_neg_y_pos_z
# XXX: Causes irrecoverable GPU hangs when run in parallel with dEQP-GLES3.functional.transform_feedback.*
dEQP-GLES3.functional.rasterizer_discard.*
# XXX: Not completely implemented yet, behave flakily
dEQP-GLES3.functional.shaders.derivate.*

View File

@@ -1,11 +0,0 @@
# Note: skips lists for CI are just a list of lines that, when
# non-zero-length and not starting with '#', will regex match to
# delete lines from the test list. Be careful.
# Skip the perf/stress tests to keep runtime manageable
dEQP-GLES[0-9]*.performance.*
dEQP-GLES[0-9]*.stress.*
# These are really slow on tiling architectures (including llvmpipe).
dEQP-GLES[0-9]*.functional.flush_finish.*

View File

@@ -1,3 +1,19 @@
# CTS bug (should be fixed in next version)
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw
# SPIR-V->NIR issues.
dEQP-VK.glsl.builtin.precision.asin.highp.scalar
dEQP-VK.glsl.builtin.precision.asin.highp.vec2
dEQP-VK.glsl.builtin.precision.asin.highp.vec3
dEQP-VK.glsl.builtin.precision.asin.highp.vec4
# CTS bug (list of extensions not up-to-date).
dEQP-VK.info.device_extensions
# ACO specific issues.
dEQP-VK.graphicsfuzz.loops-ifs-continues-call
# Interesting failures...
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_max
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_2.d32_sfloat_s8_uint.stencil_min
@@ -17,13 +33,3 @@ dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_max
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_min
dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_16_64_6.samples_8.d32_sfloat_s8_uint_separate_layouts.stencil_zero
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide

View File

@@ -1,9 +1,13 @@
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
# SPIR-V->NIR issues.
dEQP-VK.glsl.builtin.precision.asin.highp.scalar
dEQP-VK.glsl.builtin.precision.asin.highp.vec2
dEQP-VK.glsl.builtin.precision.asin.highp.vec3
dEQP-VK.glsl.builtin.precision.asin.highp.vec4
# CTS bug (list of extensions not up-to-date).
dEQP-VK.info.device_extensions
# ACO specific issues.
dEQP-VK.transform_feedback.simple.multistreams_1
dEQP-VK.transform_feedback.simple.multistreams_3
dEQP-VK.graphicsfuzz.loops-ifs-continues-call

View File

@@ -1,9 +0,0 @@
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide

View File

@@ -1,11 +1,11 @@
dEQP-VK.pipeline.depth.format.d16_unorm.compare_ops.never_zerodepthbounds_depthdisabled_stencilenabled
dEQP-VK.pipeline.depth.format.d32_sfloat.compare_ops.never_zerodepthbounds_depthdisabled_stencilenabled
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
# SPIR-V->NIR issues.
dEQP-VK.glsl.builtin.precision.asin.highp.scalar
dEQP-VK.glsl.builtin.precision.asin.highp.vec2
dEQP-VK.glsl.builtin.precision.asin.highp.vec3
dEQP-VK.glsl.builtin.precision.asin.highp.vec4
# CTS bug (list of extensions not up-to-date).
dEQP-VK.info.device_extensions
# ACO specific issues.
dEQP-VK.graphicsfuzz.loops-ifs-continues-call

View File

@@ -1,9 +1,15 @@
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
# CTS bug (should be fixed in next version)
dEQP-VK.api.buffer_marker.graphics.default_mem.bottom_of_pipe.memory_dep.draw
dEQP-VK.api.buffer_marker.graphics.external_host_mem.bottom_of_pipe.memory_dep.draw
# SPIR-V->NIR issues.
dEQP-VK.glsl.builtin.precision.asin.highp.scalar
dEQP-VK.glsl.builtin.precision.asin.highp.vec2
dEQP-VK.glsl.builtin.precision.asin.highp.vec3
dEQP-VK.glsl.builtin.precision.asin.highp.vec4
# CTS bug (list of extensions not up-to-date).
dEQP-VK.info.device_extensions
# ACO specific issues.
dEQP-VK.graphicsfuzz.loops-ifs-continues-call

View File

@@ -1,9 +0,0 @@
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide

View File

@@ -1,3 +0,0 @@
# This subset of CTS seems to randomly hangs on RAVEN only.
# This needs to be investigated and fixed!
dEQP-VK.synchronization.*

View File

@@ -1,9 +1,13 @@
dEQP-VK.rasterization.flatshading.line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_line_strip_wide
dEQP-VK.rasterization.flatshading.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.basic.line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.basic.non_strict_lines_wide
dEQP-VK.rasterization.interpolation.projected.lines_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_line_strip_wide
dEQP-VK.rasterization.interpolation.projected.non_strict_lines_wide
# SPIR-V->NIR issues.
dEQP-VK.glsl.builtin.precision.asin.highp.scalar
dEQP-VK.glsl.builtin.precision.asin.highp.vec2
dEQP-VK.glsl.builtin.precision.asin.highp.vec3
dEQP-VK.glsl.builtin.precision.asin.highp.vec4
# CTS bug (list of extensions not up-to-date).
dEQP-VK.info.device_extensions
# ACO specific issues.
dEQP-VK.transform_feedback.simple.multistreams_1
dEQP-VK.transform_feedback.simple.multistreams_3
dEQP-VK.graphicsfuzz.loops-ifs-continues-call

View File

@@ -7,10 +7,12 @@ DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer"
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-gl-config-name=rgba8888d24s8ms0"
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden"
# deqp's shader cache (for vulkan) is not multiprocess safe for a common
# filename, see:
# https://gitlab.freedesktop.org/mesa/parallel-deqp-runner/-/merge_requests/13
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-shadercache=disable"
# It would be nice to be able to enable the watchdog, so that hangs in a test
# don't need to wait the full hour for the run to time out. However, some
# shaders end up taking long enough to compile
# (dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20 for example)
# that they'll sporadically trigger the watchdog.
#DEQP_OPTIONS="$DEQP_OPTIONS --deqp-watchdog=enable"
if [ -z "$DEQP_VER" ]; then
echo 'DEQP_VER must be set to something like "gles2", "gles31" or "vk" for the test run'
@@ -34,7 +36,7 @@ INSTALL=`pwd`/install
# Set up the driver environment.
export LD_LIBRARY_PATH=`pwd`/install/lib/
export EGL_PLATFORM=surfaceless
export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.`uname -m`.json
export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.x86_64.json
# the runner was failing to look for libkms in /usr/local/lib for some reason
# I never figured out.
@@ -47,14 +49,9 @@ mkdir -p $RESULTS
if [ "$DEQP_VER" = "vk" ]; then
cp /deqp/mustpass/vk-master.txt /tmp/case-list.txt
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
elif [ "$DEQP_VER" = "gles2" -o "$DEQP_VER" = "gles3" -o "$DEQP_VER" = "gles31" ]; then
cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
SUITE=dEQP
else
cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt
DEQP=/deqp/external/openglcts/modules/glcts
SUITE=KHR
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
fi
# If the job is parallel, take the corresponding fraction of the caselist.
@@ -64,7 +61,7 @@ if [ -n "$CI_NODE_INDEX" ]; then
fi
if [ -n "$DEQP_CASELIST_FILTER" ]; then
sed -ni "/$DEQP_CASELIST_FILTER/p" /tmp/case-list.txt
sed -i "/$DEQP_CASELIST_FILTER/p" /tmp/case-list.txt
fi
if [ ! -s /tmp/case-list.txt ]; then
@@ -80,10 +77,6 @@ set +e
if [ -n "$DEQP_PARALLEL" ]; then
JOB="--job $DEQP_PARALLEL"
elif [ -n "$FDO_CI_CONCURRENT" ]; then
JOB="--job $FDO_CI_CONCURRENT"
else
JOB="--job 4"
fi
run_cts() {
@@ -109,16 +102,7 @@ report_flakes() {
return 0
fi
flakes=$1
# The nick needs to be something unique so that multiple runners
# connecting at the same time don't race for one nick and get blocked.
# freenode has a 16-char limit on nicks (9 is the IETF standard, but
# various servers extend that). So, trim off the common prefixes of the
# runner name, and append the job ID so that software runners with more
# than one concurrent job (think swrast) don't collide. For freedreno,
# that gives us a nick as long as db410c-N-JJJJJJJJ, and it'll be a while
# before we make it to 9-digit jobs (we're at 7 so far).
runner=`echo $CI_RUNNER_DESCRIPTION | sed 's|mesa-||' | sed 's|google-freedreno-||g'`
bot="$runner-$CI_JOB_ID"
bot="$CI_RUNNER_DESCRIPTION-$CI_PIPELINE_ID"
channel="$FLAKES_CHANNEL"
(
echo NICK $bot
@@ -127,10 +111,8 @@ report_flakes() {
echo "JOIN $channel"
sleep 1
desc="Flakes detected in job: $CI_JOB_URL on $CI_RUNNER_DESCRIPTION"
if [ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then
if [ -n "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then
desc="$desc on branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_MERGE_REQUEST_TITLE)"
elif [ -n "$CI_COMMIT_BRANCH" ]; then
desc="$desc on branch $CI_COMMIT_BRANCH ($CI_COMMIT_TITLE)"
fi
echo "PRIVMSG $channel :$desc"
for flake in `cat $flakes`; do
@@ -147,21 +129,15 @@ extract_xml_result() {
shift 1
qpas=$*
start="#beginTestCaseResult $testcase"
# Pick the first QPA mentioning our testcase
qpa=`grep -l "$start" $qpas | head -n 1`
# If we found one, go extract just that testcase's contents from the QPA
# to a new QPA, then do testlog-to-xml on that.
if [ -n "$qpa" ]; then
for qpa in $qpas; do
while IFS= read -r line; do
if [ "$line" = "$start" ]; then
dst="$testcase.qpa"
echo "#beginSession" > $dst
echo "$line" >> $dst
echo $line >> $dst
while IFS= read -r line; do
if [ "$line" = "#endTestCaseResult" ]; then
echo "$line" >> $dst
echo $line >> $dst
echo "#endSession" >> $dst
/deqp/executor/testlog-to-xml $dst "$RESULTS/$testcase$DEQP_RUN_SUFFIX.xml"
# copy the stylesheets here so they only end up in artifacts
@@ -170,12 +146,12 @@ extract_xml_result() {
cp /deqp/testlog.xsl "$RESULTS/"
return 0
fi
echo "$line" >> $dst
echo $line >> $dst
done
return 1
fi
done < $qpa
fi
done
}
extract_xml_results() {
@@ -224,26 +200,15 @@ parse_renderer() {
}
check_renderer() {
echo "Capturing renderer info for GLES driver sanity checks"
echo "Capturing renderer info for driver sanity checks"
# If you're having trouble loading your driver, uncommenting this may help
# debug.
# export EGL_LOG_LEVEL=debug
VERSION=`echo $DEQP_VER | tr '[a-z]' '[A-Z]'`
$DEQP $DEQP_OPTIONS --deqp-case=$SUITE-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa
$DEQP $DEQP_OPTIONS --deqp-case=dEQP-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa
parse_renderer
}
check_vk_device_name() {
echo "Capturing device info for VK driver sanity checks"
$DEQP $DEQP_OPTIONS --deqp-case=dEQP-VK.info.device --deqp-log-filename=$RESULTS/deqp-info.qpa
DEVICENAME=`grep deviceName $RESULTS/deqp-info.qpa | sed 's|deviceName: ||g'`
echo "deviceName: $DEVICENAME"
if [ -n "$DEQP_EXPECTED_RENDERER" -a $DEVICENAME != "$DEQP_EXPECTED_RENDERER" ]; then
echo "Expected deviceName $DEQP_EXPECTED_RENDERER"
exit 1
fi
}
# wrapper to supress +x to avoid spamming the log
quiet() {
set +x
@@ -255,21 +220,16 @@ if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
# deqp is to use virpipe, and virgl_test_server llvmpipe
export GALLIUM_DRIVER="$GALLIUM_DRIVER"
VTEST_ARGS="--use-egl-surfaceless"
if [ "$VIRGL_HOST_API" = "GLES" ]; then
VTEST_ARGS="$VTEST_ARGS --use-gles"
fi
GALLIUM_DRIVER=llvmpipe \
GALLIVM_PERF="nopt,no_filter_hacks" \
virgl_test_server $VTEST_ARGS >$RESULTS/vtest-log.txt 2>&1 &
VTEST_USE_EGL_SURFACELESS=1 \
VTEST_USE_GLES=1 \
virgl_test_server >$RESULTS/vtest-log.txt 2>&1 &
sleep 1
fi
if [ $DEQP_VER = vk ]; then
quiet check_vk_device_name
else
if [ $DEQP_VER != vk ]; then
quiet check_renderer
fi
@@ -280,29 +240,26 @@ FLAKESFILE=$RESULTS/cts-runner-flakes$DEQP_RUN_SUFFIX.txt
run_cts $DEQP /tmp/case-list.txt $RESULTSFILE
DEQP_EXITCODE=$?
echo "System load: $(cut -d' ' -f1-3 < /proc/loadavg)"
echo "# of CPU cores: $(cat /proc/cpuinfo | grep processor | wc -l)"
# junit is disabled, because it overloads gitlab.freedesktop.org to parse it.
#quiet generate_junit $RESULTSFILE > $RESULTS/results.xml
if [ $DEQP_EXITCODE -ne 0 ]; then
# preserve caselist files in case of failures:
cp /tmp/deqp_runner.*.txt $RESULTS/
egrep -v ",Pass|,Skip|,ExpectedFail" $RESULTSFILE > $UNEXPECTED_RESULTSFILE
egrep -v ",Pass|,Skip|,ExpectedFail" $RESULTSFILE > $UNEXPECTED_RESULTSFILE.txt
if [ -z "$DEQP_NO_SAVE_RESULTS" ]; then
echo "Some unexpected results found (see cts-runner-results.txt in artifacts for full results):"
head -n 50 $UNEXPECTED_RESULTSFILE
head -n 50 $UNEXPECTED_RESULTSFILE.txt
# Save the logs for up to the first 50 unexpected results:
head -n 50 $UNEXPECTED_RESULTSFILE | quiet extract_xml_results /tmp/*.qpa
head -n 50 $UNEXPECTED_RESULTSFILE.txt | quiet extract_xml_results /tmp/*.qpa
else
echo "Unexpected results found:"
cat $UNEXPECTED_RESULTSFILE
cat $UNEXPECTED_RESULTSFILE.txt
fi
count=`cat $UNEXPECTED_RESULTSFILE | wc -l`
count=`cat $UNEXPECTED_RESULTSFILE.txt | wc -l`
# Re-run fails to detect flakes. But use a small threshold, if
# something was fundamentally broken, we don't want to re-run

View File

@@ -0,0 +1,720 @@
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner
dEQP-GLES2.functional.clipping.point.wide_point_clip
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
dEQP-GLES2.functional.draw.random.10
dEQP-GLES2.functional.draw.random.42
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.depth.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.polygon_offset.default_displacement_with_units
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units
dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide
dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide
dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
dEQP-GLES3.functional.draw.random.124
dEQP-GLES3.functional.draw.random.174
dEQP-GLES3.functional.draw.random.31
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16
dEQP-GLES3.functional.fbo.msaa.2_samples.r16f
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8
dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8
dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24
dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f
dEQP-GLES3.functional.fbo.msaa.4_samples.r8
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage_inverted
dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert
dEQP-GLES3.functional.negative_api.buffer.blit_framebuffer_multisample
dEQP-GLES3.functional.negative_api.buffer.read_pixels_fbo_format_mismatch
dEQP-GLES3.functional.polygon_offset.default_displacement_with_units
dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units
dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_mediump
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_highp
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_mediump
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp
dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64
dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads1
dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components2_vec2_quads256
dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components2_vec3_quads256
dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components2_vec4_quads256
dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components4_vec2_quads1
dEQP-GLES3.functional.vertex_arrays.single_attribute.output_types.unsigned_int.components4_vec4_quads1
dEQP-GLES31.functional.atomic_counter.dec.1_counter_100_calls_1_thread
dEQP-GLES31.functional.atomic_counter.dec.8_counters_5_calls_1_thread
dEQP-GLES31.functional.atomic_counter.dec_branch.4_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.get.1_counter_100_calls_1_thread
dEQP-GLES31.functional.atomic_counter.get.8_counters_5_calls_1_thread
dEQP-GLES31.functional.atomic_counter.get_branch.4_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.get_dec.1_counter_100_calls_1_thread
dEQP-GLES31.functional.atomic_counter.get_dec.8_counters_5_calls_1_thread
dEQP-GLES31.functional.atomic_counter.get_dec_branch.4_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.get_inc.1_counter_1_call_1_thread
dEQP-GLES31.functional.atomic_counter.get_inc.4_counters_5_calls_10_threads
dEQP-GLES31.functional.atomic_counter.get_inc_branch.1_counter_1_call_5000_threads
dEQP-GLES31.functional.atomic_counter.get_inc_branch.8_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.get_inc_dec.1_counter_100_calls_1_thread
dEQP-GLES31.functional.atomic_counter.get_inc_dec.8_counters_5_calls_1_thread
dEQP-GLES31.functional.atomic_counter.get_inc_dec_branch.4_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.inc.1_counter_1_call_1_thread
dEQP-GLES31.functional.atomic_counter.inc.4_counters_5_calls_10_threads
dEQP-GLES31.functional.atomic_counter.inc_branch.1_counter_1_call_5000_threads
dEQP-GLES31.functional.atomic_counter.inc_branch.8_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.inc_dec.1_counter_1_call_1_thread
dEQP-GLES31.functional.atomic_counter.inc_dec.4_counters_5_calls_10_threads
dEQP-GLES31.functional.atomic_counter.inc_dec_branch.1_counter_1_call_5000_threads
dEQP-GLES31.functional.atomic_counter.inc_dec_branch.8_counters_1_call_10_threads
dEQP-GLES31.functional.atomic_counter.layout.default_offset_set.get_dec.8_counters_5_calls_1_thread
dEQP-GLES31.functional.atomic_counter.layout.first_offset_set.inc_dec.8_counters_1_call_1_thread
dEQP-GLES31.functional.atomic_counter.layout.reset_default_offset.get_dec.8_counters_1_call_1_thread
dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.get_inc.8_counters_1_call_1_thread
dEQP-GLES31.functional.atomic_counter.layout.reverse_offset.inc_dec.8_counters_5_calls_1_thread
dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small
dEQP-GLES31.functional.compute.basic.shared_var_single_invocation
dEQP-GLES31.functional.compute.basic.ssbo_unsized_arr_multiple_groups
dEQP-GLES31.functional.compute.basic.ubo_to_ssbo_single_invocation
dEQP-GLES31.functional.compute.indirect_dispatch.gen_in_compute.large_offset_multiple_invocations
dEQP-GLES31.functional.compute.indirect_dispatch.upload_buffer.large_offset
dEQP-GLES31.functional.compute.shared_var.atomic.add.mediump_uint
dEQP-GLES31.functional.compute.shared_var.atomic.and.highp_uint
dEQP-GLES31.functional.compute.shared_var.atomic.compswap.lowp_uint
dEQP-GLES31.functional.compute.shared_var.atomic.max.lowp_uint
dEQP-GLES31.functional.compute.shared_var.atomic.xor.mediump_uint
dEQP-GLES31.functional.compute.shared_var.basic_type.float_lowp
dEQP-GLES31.functional.compute.shared_var.basic_type.int_mediump
dEQP-GLES31.functional.compute.shared_var.basic_type.ivec4_highp
dEQP-GLES31.functional.compute.shared_var.basic_type.mat2x4_highp
dEQP-GLES31.functional.compute.shared_var.basic_type.mat4x2_lowp
dEQP-GLES31.functional.compute.shared_var.basic_type.uvec4_lowp
dEQP-GLES31.functional.compute.shared_var.basic_type.vec4_mediump
dEQP-GLES31.functional.compute.shared_var.work_group_size.float_1_1_64
dEQP-GLES31.functional.compute.shared_var.work_group_size.vec4_13_2_4
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x10_khr.texture3d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x5_khr.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_10x6_khr.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x10_khr.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_12x12_khr.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x4_khr.texture3d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_5x5_khr.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x5_khr.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_6x6_khr.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x6_khr.texture3d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rgba_astc_8x8_khr.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x5_khr.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x6_khr.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_10x8_khr.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x10_khr.texture3d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_12x12_khr.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_4x4_khr.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_5x5_khr.texture3d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x6_khr.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x5_khr.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_8x8_khr.texture3d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x10_khr_rgba32f.texture2d_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x6_khr_rgba32f.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f.texture2d_array_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_10x8_khr_rgba32f.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32f.cubemap_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f.texture2d_array_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x4_khr_rgba32f.texture2d_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_5x5_khr_rgba32f.cubemap_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_6x6_khr_rgba32f.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f.texture2d_array_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x5_khr_rgba32f.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x6_khr_rgba32f.texture2d_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_8x8_khr_rgba32f.cubemap_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f.texture2d_array_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x10_khr_rgba32f.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x5_khr_rgba32f.cubemap_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_10x8_khr_rgba32f.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x10_khr_rgba32f.texture2d_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_12x12_khr_rgba32f.cubemap_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_4x4_khr_rgba32f.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f.texture2d_array_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x4_khr_rgba32f.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_5x5_khr_rgba32f.texture2d_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_6x5_khr_rgba32f.cubemap_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x5_khr_rgba32f.texture2d_array_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f.texture2d_array_to_texture3d
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32f.texture2d_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f.cubemap_to_texture2d_array
dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x8_khr_rgba32f.texture2d_to_texture3d
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_combined_grid_200x200_drawcount_8
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays_separate_grid_200x200_drawcount_800
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_combined_grid_1000x1000_drawcount_5000
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements_separate_grid_200x200_drawcount_1
dEQP-GLES31.functional.draw_indirect.compute_interop.separate.drawelements_compute_data_and_indices
dEQP-GLES31.functional.fbo.no_attachments.interaction.127x127ms0_default_129x129ms0
dEQP-GLES31.functional.fbo.no_attachments.npot_size.15x511
dEQP-GLES31.functional.fbo.no_attachments.npot_size.65x65
dEQP-GLES31.functional.fbo.no_attachments.random.0
dEQP-GLES31.functional.image_load_store.2d.atomic.comp_swap_r32ui_result
dEQP-GLES31.functional.image_load_store.2d.atomic.max_r32ui_result
dEQP-GLES31.functional.image_load_store.2d.atomic.or_r32i_return_value
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32f_r32i
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.r32i_rgba8ui
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba32i_rgba32ui
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8_snorm
dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8ui_r32i
dEQP-GLES31.functional.image_load_store.2d.image_size.readonly_7x1
dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8i
dEQP-GLES31.functional.image_load_store.2d.qualifiers.coherent_r32i
dEQP-GLES31.functional.image_load_store.2d.store.r32f
dEQP-GLES31.functional.image_load_store.2d.store.rgba8_snorm
dEQP-GLES31.functional.image_load_store.2d_array.atomic.exchange_r32ui_return_value
dEQP-GLES31.functional.image_load_store.2d_array.atomic.min_r32ui_return_value
dEQP-GLES31.functional.image_load_store.2d_array.atomic.or_r32i_result
dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32f_rgba8i
dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.r32i_r32f
dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba32i_rgba32f
dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32i
dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8ui_rgba8i
dEQP-GLES31.functional.image_load_store.2d_array.image_size.readonly_1x1x1
dEQP-GLES31.functional.image_load_store.2d_array.load_store.r32i_single_layer
dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba32f_single_layer
dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8ui_single_layer
dEQP-GLES31.functional.image_load_store.2d_array.qualifiers.volatile_r32ui
dEQP-GLES31.functional.image_load_store.2d_array.store.rgba16i_single_layer
dEQP-GLES31.functional.image_load_store.2d_array.store.rgba32ui_single_layer
dEQP-GLES31.functional.image_load_store.3d.atomic.add_r32ui_result
dEQP-GLES31.functional.image_load_store.3d.atomic.max_r32i_return_value
dEQP-GLES31.functional.image_load_store.3d.atomic.xor_r32ui_result
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.r32ui_r32i
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16f_rgba16i
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba16ui_rgba16i
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8ui
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_snorm_rgba8
dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8i_r32i
dEQP-GLES31.functional.image_load_store.3d.image_size.readonly_writeonly_12x34x56
dEQP-GLES31.functional.image_load_store.3d.load_store.rgba16ui
dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8i
dEQP-GLES31.functional.image_load_store.3d.qualifiers.coherent_r32f
dEQP-GLES31.functional.image_load_store.3d.store.r32f
dEQP-GLES31.functional.image_load_store.3d.store.rgba32i
dEQP-GLES31.functional.image_load_store.3d.store.rgba8_snorm
dEQP-GLES31.functional.image_load_store.cube.atomic.and_r32ui_return_value
dEQP-GLES31.functional.image_load_store.cube.atomic.exchange_r32i_result
dEQP-GLES31.functional.image_load_store.cube.atomic.min_r32i_result
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32i_rgba8
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.r32ui_r32f
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32f_rgba32ui
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba32ui_rgba32f
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8_snorm_r32ui
dEQP-GLES31.functional.image_load_store.cube.format_reinterpret.rgba8i_r32f
dEQP-GLES31.functional.image_load_store.cube.image_size.writeonly_1x1
dEQP-GLES31.functional.image_load_store.cube.load_store.r32f_single_layer
dEQP-GLES31.functional.image_load_store.cube.load_store.rgba32i_single_layer
dEQP-GLES31.functional.image_load_store.cube.load_store.rgba8_snorm_single_layer
dEQP-GLES31.functional.image_load_store.cube.store.r32i_single_layer
dEQP-GLES31.functional.image_load_store.cube.store.rgba32f_single_layer
dEQP-GLES31.functional.image_load_store.cube.store.rgba8ui_single_layer
dEQP-GLES31.functional.shaders.builtin_constants.core.max_combined_image_uniforms
dEQP-GLES31.functional.shaders.builtin_constants.core.max_draw_buffers
dEQP-GLES31.functional.shaders.builtin_constants.core.max_vertex_atomic_counter_buffers
dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader.max_tess_control_total_output_components
dEQP-GLES31.functional.shaders.builtin_constants.tessellation_shader.max_tess_evaluation_uniform_components
dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.int_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.precision.abs.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.acosh.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.add.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.add.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.asin.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.asinh.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.atan2.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.atanh.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.ceil.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.clamp.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.cos.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.cosh.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.degrees.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.distance.lowp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.div.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.highp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.dot.lowp_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.exp.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.exp2.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.faceforward.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.floor.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.fract.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.lowp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.inversesqrt.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp.highp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.length.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.log.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.log2.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.highp_compute.mat2
dEQP-GLES31.functional.shaders.builtin_functions.precision.matrixcompmult.lowp_compute.mat4
dEQP-GLES31.functional.shaders.builtin_functions.precision.max.lowp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.min.lowp_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.mix.mediump_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.mod.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.mul.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.normalize.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.highp_compute.mat3x2
dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.lowp_compute.mat2x3
dEQP-GLES31.functional.shaders.builtin_functions.precision.outerproduct.mediump_compute.mat2x4
dEQP-GLES31.functional.shaders.builtin_functions.precision.pow.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.radians.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.reflect.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.refract.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.round.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.roundeven.lowp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.sign.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.sin.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.highp_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.sinh.lowp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.smoothstep.lowp_compute.vec4
dEQP-GLES31.functional.shaders.builtin_functions.precision.sqrt.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.step.mediump_compute.vec2
dEQP-GLES31.functional.shaders.builtin_functions.precision.sub.highp_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.tan.mediump_compute.scalar
dEQP-GLES31.functional.shaders.builtin_functions.precision.tanh.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.highp_compute.mat4x2
dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.lowp_compute.mat3
dEQP-GLES31.functional.shaders.builtin_functions.precision.transpose.mediump_compute.mat3x4
dEQP-GLES31.functional.shaders.builtin_functions.precision.trunc.mediump_compute.vec3
dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_1_texture_2d_array
dEQP-GLES31.functional.shaders.builtin_functions.uniform.findLSBMinusOne.mediump_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.uniform.findMSBMinusOne.highp_tess_eval
dEQP-GLES31.functional.shaders.builtin_functions.uniform.findMSBZero.lowp_tess_eval
dEQP-GLES31.functional.shaders.builtin_var.compute.global_invocation_id
dEQP-GLES31.functional.shaders.linkage.es31.tessellation.uniform.types.int
dEQP-GLES31.functional.shaders.linkage.es31.tessellation.uniform.types.vec4
dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.rules.internal_superfluous_declaration
dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.types.ivec2
dEQP-GLES31.functional.shaders.linkage.es31.tessellation.varying.types.mat2
dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.const_literal_tessellation_evaluation
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.compute.samplercubeshadow
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.tessellation_control.isampler2d
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.tessellation_evaluation.isamplercube
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2darray
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_control.samplercube
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_control.usampler2d
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_evaluation.sampler2darray
dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.tessellation_evaluation.usamplercube
dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.const_expression_tessellation_evaluation
dEQP-GLES31.functional.ssbo.array_length.unsized_writeonly_array
dEQP-GLES31.functional.ssbo.atomic.add.mediump_uint
dEQP-GLES31.functional.ssbo.atomic.and.highp_uint
dEQP-GLES31.functional.ssbo.atomic.compswap.lowp_uint
dEQP-GLES31.functional.ssbo.atomic.max.lowp_uint
dEQP-GLES31.functional.ssbo.atomic.xor.mediump_uint
dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.column_major_mat2
dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.mat2x4
dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4x2
dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.uint
dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.column_major_mat3
dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.mat3x2
dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.row_major_mat4x3
dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.uvec4
dEQP-GLES31.functional.ssbo.layout.2_level_array.shared.vec2
dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.bvec4
dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.ivec2
dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.mat2x3
dEQP-GLES31.functional.ssbo.layout.2_level_array.std140.row_major_mat3x4
dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.bool
dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.column_major_mat4x3
dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.mat4
dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.row_major_mat3x2
dEQP-GLES31.functional.ssbo.layout.2_level_array.std430.vec3
dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.per_block_buffer.std140_instance_array
dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.column_major_mat3x4
dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.ivec3
dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.mat2
dEQP-GLES31.functional.ssbo.layout.3_level_array.packed.row_major_mat2x3
dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.column_major_mat4x2
dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.mat3
dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.row_major_mat2x4
dEQP-GLES31.functional.ssbo.layout.3_level_array.shared.uvec2
dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.bvec2
dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat3x2
dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.row_major_mat4
dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.vec4
dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.column_major_mat2x4
dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.float
dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.mat4x3
dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.row_major_mat3
dEQP-GLES31.functional.ssbo.layout.3_level_array.std430.uvec3
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.bvec3
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.column_major_mat4
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.int
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.packed.mat3x4
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.column_major_mat2x3
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.ivec4
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.mat4x2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.shared.row_major_mat2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.column_major_mat3
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.mat3x2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.row_major_mat4x3
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.uvec4
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std140.vec2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.column_major_mat2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat2x4
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.row_major_mat4x2
dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.uint
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.column_major_mat2x4
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.float
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.mat4x3
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.row_major_mat3
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec3
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.bvec2
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.column_major_mat3x2
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.row_major_mat4
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.shared.vec4
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.column_major_mat2x3
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.ivec4
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.mat4x2
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std140.row_major_mat2
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.bvec3
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.column_major_mat4
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.int
dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.std430.mat3x4
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.column_major_mat2
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.mat2x4
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.row_major_mat4x2
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.packed.uint
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.column_major_mat3
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.mat3x2
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.row_major_mat4x3
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.uvec4
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.shared.vec2
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.bvec4
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.ivec2
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.mat2x3
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std140.row_major_mat3x4
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.bool
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.column_major_mat4x3
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.mat4
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.row_major_mat3x2
dEQP-GLES31.functional.ssbo.layout.instance_array_basic_type.std430.vec3
dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer.shared_instance_array
dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.per_block_buffer.packed_instance_array
dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer.std140_instance_array
dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.12
dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.2
dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.22
dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.32
dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.42
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.12
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.2
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.22
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.32
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.42
dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.12
dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.2
dEQP-GLES31.functional.ssbo.layout.random.arrays_of_arrays.22
dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.12
dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.2
dEQP-GLES31.functional.ssbo.layout.random.basic_arrays.22
dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.17
dEQP-GLES31.functional.ssbo.layout.random.basic_instance_arrays.7
dEQP-GLES31.functional.ssbo.layout.random.basic_types.17
dEQP-GLES31.functional.ssbo.layout.random.basic_types.7
dEQP-GLES31.functional.ssbo.layout.random.nested_structs.12
dEQP-GLES31.functional.ssbo.layout.random.nested_structs.2
dEQP-GLES31.functional.ssbo.layout.random.nested_structs.22
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.17
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays.7
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.17
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.7
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.12
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.2
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_instance_arrays.22
dEQP-GLES31.functional.ssbo.layout.random.scalar_types.17
dEQP-GLES31.functional.ssbo.layout.random.scalar_types.7
dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.17
dEQP-GLES31.functional.ssbo.layout.random.unsized_arrays.7
dEQP-GLES31.functional.ssbo.layout.random.vector_types.12
dEQP-GLES31.functional.ssbo.layout.random.vector_types.2
dEQP-GLES31.functional.ssbo.layout.random.vector_types.22
dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bool
dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.column_major_mat4x3
dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.mat4
dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.row_major_mat3x2
dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.vec3
dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.bvec4
dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.ivec2
dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.mat2x3
dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3x4
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.column_major_mat4x2
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.mat3
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.row_major_mat2x4
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std140.uvec2
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.column_major_mat3x4
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.ivec3
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.mat2
dEQP-GLES31.functional.ssbo.layout.single_basic_array.std430.row_major_mat2x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.bvec3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_highp_mat2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.column_major_lowp_mat4x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_mat2x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.highp_vec3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_ivec3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.lowp_mat4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_mat2x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.mediump_uvec2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_highp_mat4x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_lowp_mat3x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.packed.row_major_mediump_mat3x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.bvec4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_lowp_mat4x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.column_major_mediump_mat4x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_mat2x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.highp_uvec2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_mat3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.lowp_vec4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_ivec3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.mediump_mat4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_highp_mat3x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_lowp_mat2x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.shared.row_major_mediump_mat3x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.bvec2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_highp_mat3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.column_major_mediump_mat2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_ivec2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.highp_mat3x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_mat2x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.lowp_uvec2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_mat2x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.mediump_vec3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_highp_mat4x3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_lowp_mat3x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std140.row_major_mediump_mat4x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.bool
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_highp_mat4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_lowp_mat2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.column_major_mediump_mat3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_mat3x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.highp_uint
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_mat2x4
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.lowp_vec3
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_ivec2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.mediump_mat3x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_lowp_mat4x2
dEQP-GLES31.functional.ssbo.layout.single_basic_type.std430.row_major_mediump_mat4x3
dEQP-GLES31.functional.ssbo.layout.single_nested_struct.per_block_buffer.shared_instance_array
dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer.std430_instance_array
dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer.packed_instance_array
dEQP-GLES31.functional.ssbo.layout.single_struct.per_block_buffer.std140_instance_array
dEQP-GLES31.functional.ssbo.layout.single_struct_array.per_block_buffer.packed_instance_array
dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.per_block_buffer.packed_instance_array
dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.per_block_buffer.std430_instance_array
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer
dEQP-GLES31.functional.synchronization.in_invocation.image_atomic_read_write
dEQP-GLES31.functional.synchronization.in_invocation.ssbo_atomic_read_write
dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.image_multiple_unrelated_write_read_non_ordered
dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_atomic_multiple_unrelated_write_read_ordered
dEQP-GLES31.functional.synchronization.inter_call.with_memory_barrier.ssbo_overwrite
dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_2_calls_32_invocations
dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_dispatch_5_calls_32_invocations
dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.ssbo_atomic_dispatch_100_calls_32k_invocations
dEQP-GLES31.functional.synchronization.inter_invocation.image_atomic_read_write
dEQP-GLES31.functional.synchronization.inter_invocation.ssbo_atomic_read_write
dEQP-GLES31.functional.tessellation.common_edge.quads_fractional_odd_spacing
dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component.isolines_fractional_odd_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component.quads_fractional_odd_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.one_minus_tess_coord_component.triangles_fractional_even_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence.quads_fractional_odd_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.outer_edge_index_independence.triangles_fractional_odd_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.isolines_fractional_even_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.quads_equal_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.quads_fractional_even_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.outer_edge_symmetry.triangles_equal_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.outer_triangle_set.triangles_equal_spacing
dEQP-GLES31.functional.tessellation.invariance.primitive_set.isolines_equal_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.primitive_set.isolines_fractional_even_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.primitive_set.quads_equal_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.primitive_set.triangles_fractional_odd_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.isolines_equal_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.isolines_fractional_even_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.quads_equal_spacing_cw
dEQP-GLES31.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_ccw
dEQP-GLES31.functional.tessellation.invariance.triangle_set.triangles_fractional_even_spacing
dEQP-GLES31.functional.tessellation.misc_draw.fill_overlap_quads_equal_spacing
dEQP-GLES31.functional.tessellation.primitive_discard.isolines_fractional_odd_spacing_cw
dEQP-GLES31.functional.tessellation.primitive_discard.quads_fractional_even_spacing_ccw
dEQP-GLES31.functional.tessellation.primitive_discard.triangles_equal_spacing_ccw
dEQP-GLES31.functional.tessellation.primitive_discard.triangles_fractional_even_spacing_cw
dEQP-GLES31.functional.tessellation.shader_input_output.barrier
dEQP-GLES31.functional.tessellation.shader_input_output.patch_vertices_in_tes
dEQP-GLES31.functional.tessellation.tesscoord.isolines_fractional_even_spacing
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch.vertex_io_array_size_implicit.isolines
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_array.vertex_io_array_size_shader_builtin.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block.vertex_io_array_size_shader_builtin.quads
dEQP-GLES31.functional.tessellation.user_defined_io.per_patch_block_array.vertex_io_array_size_shader_builtin.isolines
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_query.quads_explicit_tcs_out_size
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.triangles
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex_block.vertex_io_array_size_shader_builtin.isolines
dEQP-GLES31.functional.texture.border_clamp.range_clamp.nearest_float_depth

File diff suppressed because it is too large Load Diff

View File

@@ -1,126 +0,0 @@
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner
dEQP-GLES2.functional.clipping.point.wide_point_clip
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
dEQP-GLES2.functional.draw.random.10
dEQP-GLES2.functional.draw.random.42
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.depth.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
dEQP-GLES2.functional.polygon_offset.default_displacement_with_units
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units
dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide
dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide
dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_center
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner
dEQP-GLES3.functional.clipping.point.wide_point_clip
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
dEQP-GLES3.functional.draw.random.105
dEQP-GLES3.functional.draw.random.114
dEQP-GLES3.functional.draw.random.124
dEQP-GLES3.functional.draw.random.135
dEQP-GLES3.functional.draw.random.144
dEQP-GLES3.functional.draw.random.155
dEQP-GLES3.functional.draw.random.174
dEQP-GLES3.functional.draw.random.206
dEQP-GLES3.functional.draw.random.31
dEQP-GLES3.functional.draw.random.43
dEQP-GLES3.functional.draw.random.84
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y
dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f
dEQP-GLES3.functional.polygon_offset.default_displacement_with_units
dEQP-GLES3.functional.polygon_offset.default_render_with_units
dEQP-GLES3.functional.polygon_offset.fixed16_displacement_with_units
dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units
dEQP-GLES3.functional.polygon_offset.fixed24_displacement_with_units
dEQP-GLES3.functional.polygon_offset.fixed24_render_with_units
dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.points
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.points
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.8
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.4
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.9
dEQP-GLES31.functional.draw_indirect.random.20
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48
KHR-GL30.transform_feedback.api_errors_test
KHR-GL30.transform_feedback.capture_vertex_interleaved_test
KHR-GL30.transform_feedback.capture_vertex_separate_test
KHR-GL30.transform_feedback.discard_vertex_test
KHR-GL30.transform_feedback.draw_xfb_instanced_test
KHR-GL30.transform_feedback.draw_xfb_stream_instanced_test
KHR-GL30.transform_feedback.get_xfb_varying
KHR-GL30.transform_feedback.query_vertex_interleaved_test
KHR-GL30.transform_feedback.query_vertex_separate_test
KHR-GL31.CommonBugs.CommonBug_ParenthesisInLayoutQualifierIntegerValue
KHR-GL31.transform_feedback.capture_vertex_interleaved_test
KHR-GL31.transform_feedback.capture_vertex_separate_test
KHR-GL31.transform_feedback.discard_vertex_test
KHR-GL31.transform_feedback.draw_xfb_instanced_test
KHR-GL32.transform_feedback.draw_xfb_stream_test
KHR-GL31.transform_feedback.draw_xfb_stream_instanced_test
KHR-GL31.transform_feedback.query_vertex_interleaved_test
KHR-GL31.transform_feedback.query_vertex_separate_test
KHR-GL32.CommonBugs.CommonBug_ParenthesisInLayoutQualifierIntegerValue
KHR-GL32.transform_feedback.capture_vertex_interleaved_test
KHR-GL32.transform_feedback.capture_vertex_separate_test
KHR-GL32.transform_feedback.discard_vertex_test
KHR-GL32.transform_feedback.draw_xfb_instanced_test
KHR-GL32.transform_feedback.draw_xfb_stream_test
KHR-GL32.transform_feedback.draw_xfb_stream_instanced_test
KHR-GL32.transform_feedback_overflow_query_ARB.advanced-single-stream-interleaved-attribs
KHR-GL32.transform_feedback_overflow_query_ARB.advanced-single-stream-separate-attribs
KHR-GL32.transform_feedback_overflow_query_ARB.basic-single-stream-interleaved-attribs
KHR-GL32.transform_feedback_overflow_query_ARB.basic-single-stream-separate-attribs
KHR-GL32.transform_feedback_overflow_query_ARB.multiple-streams-multiple-buffers-per-stream
KHR-GL32.transform_feedback_overflow_query_ARB.multiple-streams-one-buffer-per-stream
KHR-GL32.transform_feedback.query_vertex_interleaved_test
KHR-GL32.transform_feedback.query_vertex_separate_test

View File

@@ -1 +0,0 @@
../docs/ci

View File

@@ -1,36 +0,0 @@
#!/bin/bash
set +e
set -o xtrace
# if we run this script outside of gitlab-ci for testing, ensure
# we got meaningful variables
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(mktemp -d)/mesa}
if [[ -e $CI_PROJECT_DIR/.git ]]
then
echo "Repository already present, skip cache download"
exit
fi
TMP_DIR=$(mktemp -d)
echo "Downloading archived master..."
/usr/bin/wget -O $TMP_DIR/mesa.tar.gz \
https://minio-packet.freedesktop.org/git-cache/mesa/mesa/mesa.tar.gz
# check wget error code
if [[ $? -ne 0 ]]
then
echo "Repository cache not available"
exit
fi
set -e
rm -rf "$CI_PROJECT_DIR"
echo "Extracting tarball into '$CI_PROJECT_DIR'..."
mkdir -p "$CI_PROJECT_DIR"
tar xzf "$TMP_DIR/mesa.tar.gz" -C "$CI_PROJECT_DIR"
rm -rf "$TMP_DIR"
chmod a+w "$CI_PROJECT_DIR"

View File

@@ -13,8 +13,4 @@ INSTALL=`pwd`/install
export LD_LIBRARY_PATH=`pwd`/install/lib/
export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.x86_64.json
# To store Fossilize logs on failure.
RESULTS=`pwd`/results
mkdir -p results
"$INSTALL/fossils/fossils.sh" "$INSTALL/fossils.yml" "$RESULTS"
"$INSTALL/fossils/fossils.sh" "$INSTALL/fossils.yml"

View File

@@ -1,10 +1,6 @@
fossils-db:
repo: "https://gitlab.freedesktop.org/hakzsam/fossils-db"
commit: "5626cedcb58bd95a7b79a9664651818aea92b21c"
commit: "59b11cd19e375c5871c512f73b1f8ecc33a5c417"
fossils:
- path: sascha-willems/database.foz
- path: parallel-rdp/small_subgroup.foz
- path: parallel-rdp/small_uber_subgroup.foz
- path: parallel-rdp/subgroup.foz
- path: parallel-rdp/uber_subgroup.foz

View File

@@ -2,7 +2,6 @@
FOSSILS_SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
FOSSILS_YAML="$(readlink -f "$1")"
FOSSILS_RESULTS="$2"
clone_fossils_db()
{
@@ -65,12 +64,7 @@ create_clean_git
for fossil in $(query_fossils_yaml fossils)
do
fetch_fossil "$fossil" || exit $?
fossilize-replay --num-threads 4 $fossil 1>&2 2> $FOSSILS_RESULTS/fossil_replay.txt
if [ $? != 0 ]; then
echo "Replay of $fossil failed"
grep "pipeline crashed or hung" $FOSSILS_RESULTS/fossil_replay.txt
exit 1
fi
fossilize-replay $fossil || exit $?
rm $fossil
done

View File

@@ -3,15 +3,12 @@
from jinja2 import Environment, FileSystemLoader
import argparse
import os
import datetime
parser = argparse.ArgumentParser()
parser.add_argument("--template")
parser.add_argument("--pipeline-info")
parser.add_argument("--base-artifacts-url")
parser.add_argument("--mesa-url")
parser.add_argument("--device-type")
parser.add_argument("--dtb", nargs='?', default="")
parser.add_argument("--kernel-image-name")
parser.add_argument("--kernel-image-type", nargs='?', default="")
parser.add_argument("--gpu-version")
@@ -19,9 +16,9 @@ parser.add_argument("--boot-method")
parser.add_argument("--lava-tags", nargs='?', default="")
parser.add_argument("--env-vars", nargs='?', default="")
parser.add_argument("--deqp-version")
parser.add_argument("--arch")
parser.add_argument("--ci-node-index")
parser.add_argument("--ci-node-total")
parser.add_argument("--job-type")
args = parser.parse_args()
env = Environment(loader = FileSystemLoader(os.path.dirname(args.template)), trim_blocks=True, lstrip_blocks=True)
@@ -32,9 +29,7 @@ env_vars = "%s CI_NODE_INDEX=%s CI_NODE_TOTAL=%s" % (args.env_vars, args.ci_node
values = {}
values['pipeline_info'] = args.pipeline_info
values['base_artifacts_url'] = args.base_artifacts_url
values['mesa_url'] = args.mesa_url
values['device_type'] = args.device_type
values['dtb'] = args.dtb
values['kernel_image_name'] = args.kernel_image_name
values['kernel_image_type'] = args.kernel_image_type
values['gpu_version'] = args.gpu_version
@@ -42,8 +37,9 @@ values['boot_method'] = args.boot_method
values['tags'] = args.lava_tags
values['env_vars'] = env_vars
values['deqp_version'] = args.deqp_version
values['arch'] = args.arch
f = open(os.path.splitext(os.path.basename(args.template))[0], "w")
f = open('lava-deqp.yml', "w")
f.write(template.render(values))
f.close()

View File

@@ -1,7 +1,5 @@
job_name: mesa-deqp-{{ deqp_version }}-{{ gpu_version }} {{ pipeline_info }}
device_type: {{ device_type }}
context:
extra_nfsroot_args: " init=/init rootwait"
timeouts:
job:
minutes: 40
@@ -23,18 +21,24 @@ actions:
- deploy:
timeout:
minutes: 10
{% if boot_method == "fastboot" %}
{# fastboot has just one boot image with the dtb and rootfs packed in #}
to: fastboot
images:
boot:
url: {{ base_artifacts_url }}/{{ kernel_image_name }}
{% else %}
to: tftp
kernel:
url: {{ base_artifacts_url }}/{{ kernel_image_name }}
{% if kernel_image_type %}
{{ kernel_image_type }}
{% endif %}
nfsrootfs:
url: {{ base_artifacts_url }}/lava-rootfs.tgz
ramdisk:
url: {{ base_artifacts_url }}/lava-rootfs-{{ arch }}.cpio.gz
compression: gz
{% if dtb %}
dtb:
url: {{ base_artifacts_url }}/{{ dtb }}.dtb
url: {{ base_artifacts_url }}/{{ device_type }}.dtb
{% endif %}
os: oe
- boot:
@@ -50,7 +54,7 @@ actions:
download_command: wget -S --progress=dot:giga
unpack_command: tar -C / -xzf
{% else %}
commands: nfs
commands: ramdisk
{% endif %}
prompts:
- 'lava-shell:'
@@ -74,9 +78,6 @@ actions:
- mount -t devtmpfs none /dev || echo possibly already mounted
- mkdir -p /dev/pts
- mount -t devpts devpts /dev/pts
- echo "nameserver 8.8.8.8" > /etc/resolv.conf
- for i in 1 2 3; do sntp -sS pool.ntp.org && break || sleep 2; done
{% if env_vars %}
- export {{ env_vars }}
@@ -85,8 +86,6 @@ actions:
# deqp-runner.sh assumes some stuff is in pwd
- cd /
- wget -S --progress=dot:giga -O- {{ mesa_url }} | tar -xz
- export DEQP_NO_SAVE_RESULTS=1
- 'export DEQP_RUNNER_OPTIONS="--shuffle false"'
- export DEQP_EXPECTED_FAILS=deqp-{{ gpu_version }}-fails.txt

View File

@@ -1,69 +1,26 @@
variables:
DISTRIBUTION_TAG: "2020-08-03-nfs-2"
.kernel+rootfs:
stage: container-2
extends:
- .ci-run-policy
variables:
GIT_STRATEGY: fetch
KERNEL_URL: "https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz"
UPLOAD_FOR_LAVA: 1
script:
- .gitlab-ci/container/lava_build.sh
kernel+rootfs_amd64:
extends:
- .use-x86_build-base
- .kernel+rootfs
image: "$CI_REGISTRY_IMAGE/debian/x86_build-base:$BASE_TAG"
variables:
DEBIAN_ARCH: "amd64"
kernel+rootfs_arm64:
extends:
- .use-arm_build
- .kernel+rootfs
tags:
- aarch64
variables:
DEBIAN_ARCH: "arm64"
kernel+rootfs_armhf:
extends:
- kernel+rootfs_arm64
variables:
DEBIAN_ARCH: "armhf"
.lava-test:
extends:
- .ci-run-policy
# Cancel job if a newer commit is pushed to the same branch
interruptible: true
variables:
GIT_STRATEGY: none # testing doesn't build anything from source
ENV_VARS: "DEQP_PARALLEL=6"
FIXED_ENV_VARS: "CI_PIPELINE_ID=${CI_PIPELINE_ID} CI_JOB_ID=${CI_JOB_ID} CI_PROJECT_PATH=${CI_PROJECT_PATH} CI_JOB_JWT=${CI_JOB_JWT} TRACIE_NO_UNIT_TESTS=1 TRACIE_UPLOAD_TO_MINIO=1"
DEQP_VERSION: gles2
ARTIFACTS_PREFIX: "https://minio-packet.freedesktop.org/mesa-lava/"
MESA_URL: "https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/mesa-${ARCH}.tar.gz"
script:
# Try to use the kernel and rootfs built in mainline first, to save cycles
- >
if wget -q --method=HEAD "${ARTIFACTS_PREFIX}/mesa/mesa/${DISTRIBUTION_TAG}/${ARCH}/done"; then
ARTIFACTS_URL="${ARTIFACTS_PREFIX}/mesa/mesa/${DISTRIBUTION_TAG}/${ARCH}"
else
ARTIFACTS_URL="${ARTIFACTS_PREFIX}/${CI_PROJECT_PATH}/${DISTRIBUTION_TAG}/${ARCH}"
fi
- mkdir -p /srv/${FILES_HOST_NAME}/$CI_JOB_ID/
- cp /lava-files/${KERNEL_IMAGE_NAME} /srv/${FILES_HOST_NAME}/$CI_JOB_ID/.
- cp /lava-files/${DEVICE_TYPE}.dtb /srv/${FILES_HOST_NAME}/$CI_JOB_ID/.
- tar -C /lava-files/rootfs-${ARCH} -xf artifacts/install.tar
- pushd /lava-files/rootfs-${ARCH}
- find -H | cpio -H newc -o | gzip -c - > /srv/${FILES_HOST_NAME}/$CI_JOB_ID/lava-rootfs-${ARCH}.cpio.gz
- popd
- >
artifacts/generate_lava.py \
--template artifacts/lava-${TEST_SUITE}.yml.jinja2 \
--template artifacts/lava-deqp.yml.jinja2 \
--pipeline-info "$CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
--base-artifacts-url ${ARTIFACTS_URL} \
--mesa-url ${MESA_URL} \
--base-artifacts-url ${FILES_HOST_URL}/$CI_JOB_ID \
--device-type ${DEVICE_TYPE} \
--dtb ${DTB} \
--env-vars "${ENV_VARS} ${FIXED_ENV_VARS}" \
--env-vars "${ENV_VARS}" \
--arch ${ARCH} \
--deqp-version ${DEQP_VERSION} \
--kernel-image-name ${KERNEL_IMAGE_NAME} \
--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
@@ -72,15 +29,17 @@ kernel+rootfs_armhf:
--lava-tags "${LAVA_TAGS}" \
--ci-node-index "${CI_NODE_INDEX}" \
--ci-node-total "${CI_NODE_TOTAL}"
- lava_job_id=`lavacli jobs submit lava-${TEST_SUITE}.yml` || lavacli jobs submit lava-${TEST_SUITE}.yml
- lava_job_id=`lavacli jobs submit lava-deqp.yml` || lavacli jobs submit lava-deqp.yml
- echo $lava_job_id
- rm -rf artifacts/*
- cp lava-${TEST_SUITE}.yml artifacts/.
- lavacli jobs logs $lava_job_id | tee artifacts/lava-${TEST_SUITE}-$lava_job_id.log
- cp lava-deqp.yml artifacts/.
- lavacli jobs logs $lava_job_id | tee artifacts/lava-deqp-$lava_job_id.log
- lavacli jobs show $lava_job_id
- result=`lavacli results $lava_job_id 0_${TEST_SUITE} ${TEST_SUITE} | head -1`
- result=`lavacli results $lava_job_id 0_deqp deqp | head -1`
- echo $result
- '[[ "$result" == "pass" ]]'
after_script:
- rm -rf /srv/${FILES_HOST_NAME}/$CI_JOB_ID/
artifacts:
name: "mesa_${CI_JOB_NAME}"
when: always
@@ -93,12 +52,13 @@ kernel+rootfs_armhf:
KERNEL_IMAGE_NAME: zImage
KERNEL_IMAGE_TYPE: "type:\ zimage"
BOOT_METHOD: u-boot
TEST_SUITE: "deqp"
extends:
- .lava-test
- .use-arm_build
dependencies:
- meson-armhf
needs:
- kernel+rootfs_armhf
- arm_build
- meson-armhf
.lava-test:arm64:
@@ -107,57 +67,25 @@ kernel+rootfs_armhf:
KERNEL_IMAGE_NAME: Image
KERNEL_IMAGE_TYPE: "type:\ image"
BOOT_METHOD: u-boot
TEST_SUITE: "deqp"
extends:
- .lava-test
- .use-arm_build
dependencies:
- meson-arm64
needs:
- kernel+rootfs_arm64
- arm_build
- meson-arm64
.lava-test:amd64:
variables:
ARCH: amd64
KERNEL_IMAGE_NAME: bzImage
KERNEL_IMAGE_TYPE: "type:\ zimage"
BOOT_METHOD: u-boot
TEST_SUITE: "deqp"
extends:
- .lava-test
- .use-arm_build
needs:
- kernel+rootfs_amd64
- meson-testing
.lava-traces:amd64:
variables:
TEST_SUITE: "tracie"
extends:
- .lava-test:amd64
.lava-traces:armhf:
variables:
TEST_SUITE: "tracie"
extends:
- .lava-test:armhf
.lava-traces:arm64:
variables:
TEST_SUITE: "tracie"
extends:
- .lava-test:arm64
panfrost-t720-gles2:arm64:
extends:
- .lava-test:arm64
- .panfrost-rules
variables:
DEVICE_TYPE: sun50i-h6-pine-h64
DTB: ${DEVICE_TYPE}
GPU_VERSION: panfrost-t720
ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T720"
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
tags:
- mesa-ci-aarch64-lava-collabora
@@ -167,62 +95,47 @@ panfrost-t760-gles2:armhf:
- .panfrost-rules
variables:
DEVICE_TYPE: rk3288-veyron-jaq
DTB: ${DEVICE_TYPE}
GPU_VERSION: panfrost-t760
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T760"
tags:
- mesa-ci-aarch64-lava-collabora
.panfrost-t760-traces:armhf:
extends:
- .lava-traces:armhf
- .panfrost-rules
variables:
DEVICE_TYPE: rk3288-veyron-jaq
DTB: ${DEVICE_TYPE}
GPU_VERSION: panfrost-t760
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
ENV_VARS: "PAN_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.1 MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330"
tags:
- mesa-ci-aarch64-lava-collabora
.lava-rk3399-gru-kevin:
extends:
- .panfrost-rules
variables:
DEVICE_TYPE: rk3399-gru-kevin
DTB: ${DEVICE_TYPE}
GPU_VERSION: panfrost-t860
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
tags:
- mesa-ci-aarch64-lava-collabora
panfrost-t860-gles2:arm64:
extends:
- .lava-test:arm64
- .lava-rk3399-gru-kevin
- .panfrost-rules
variables:
DEVICE_TYPE: rk3399-gru-kevin
GPU_VERSION: panfrost-t860
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860"
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
tags:
- mesa-ci-aarch64-lava-collabora
panfrost-t860-gles3:arm64:
parallel: 2
extends:
- .lava-test:arm64
- .lava-rk3399-gru-kevin
- .panfrost-rules
variables:
DEVICE_TYPE: rk3399-gru-kevin
GPU_VERSION: panfrost-t860
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
DEQP_VERSION: gles3
ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T860"
panfrost-t860-traces:arm64:
extends:
- .lava-traces:arm64
- .lava-rk3399-gru-kevin
variables:
ENV_VARS: "PAN_MESA_DEBUG=deqp MESA_GLES_VERSION_OVERRIDE=3.1 MESA_GL_VERSION_OVERRIDE=3.3 MESA_GLSL_VERSION_OVERRIDE=330"
CI_NODE_INDEX: 1
CI_NODE_TOTAL: 5
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
tags:
- mesa-ci-aarch64-lava-collabora
.panfrost-t820-gles2:arm64:
extends:
@@ -230,7 +143,6 @@ panfrost-t860-traces:arm64:
- .panfrost-rules
variables:
DEVICE_TYPE: meson-gxm-khadas-vim2
DTB: ${DEVICE_TYPE}
GPU_VERSION: panfrost-t820
LAVA_TAGS: panfrost
ENV_VARS: "PAN_MESA_DEBUG=gles3 DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=T820"
@@ -244,7 +156,6 @@ panfrost-t860-traces:arm64:
- .lima-rules
variables:
DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc
DTB: ${DEVICE_TYPE}
GPU_VERSION: lima
ENV_VARS: "DEQP_PARALLEL=3 DEQP_EXPECTED_RENDERER=Mali400"
tags:
@@ -256,45 +167,7 @@ panfrost-t860-traces:arm64:
- .lima-rules
variables:
DEVICE_TYPE: meson-gxl-s905x-libretech-cc
DTB: ${DEVICE_TYPE}
GPU_VERSION: lima
ENV_VARS: "DEQP_PARALLEL=6 DEQP_EXPECTED_RENDERER=Mali450"
tags:
- mesa-ci-aarch64-lava-baylibre
# Commented out while waiting for more DUTs to come online
.radeonsi-stoney-gles2:amd64:
extends:
- .lava-test:amd64
- .radeonsi-rules
variables:
DEVICE_TYPE: hp-11A-G6-EE-grunt
DTB: ""
GPU_VERSION: radeonsi-stoney
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
ENV_VARS: "DEQP_PARALLEL=4 DEQP_EXPECTED_RENDERER=STONEY NIR_VALIDATE=0"
tags:
- mesa-ci-aarch64-lava-collabora
# Commented out while waiting for more DUTs to come online
.radeonsi-stoney-gles3:amd64:
extends:
- .radeonsi-stoney-gles2:amd64
variables:
DEQP_VERSION: gles3
tags:
- mesa-ci-aarch64-lava-collabora
radeonsi-stoney-traces:amd64:
extends:
- .lava-traces:amd64
- .radeonsi-rules
variables:
DEVICE_TYPE: hp-11A-G6-EE-grunt
DTB: ""
GPU_VERSION: radeonsi-stoney
BOOT_METHOD: depthcharge
KERNEL_IMAGE_TYPE: ""
tags:
- mesa-ci-aarch64-lava-collabora

View File

@@ -1,104 +0,0 @@
job_name: mesa-tracie-{{ gpu_version }} {{ pipeline_info }}
device_type: {{ device_type }}
context:
extra_nfsroot_args: " init=/init rootwait"
timeouts:
job:
minutes: 40
action:
minutes: 10
actions:
power-off:
seconds: 30
priority: 75
visibility: public
{% if tags %}
{% set lavatags = tags.split(',') %}
tags:
{% for tag in lavatags %}
- {{ tag }}
{% endfor %}
{% endif %}
actions:
- deploy:
timeout:
minutes: 10
to: tftp
kernel:
url: {{ base_artifacts_url }}/{{ kernel_image_name }}
{% if kernel_image_type %}
{{ kernel_image_type }}
{% endif %}
nfsrootfs:
url: {{ base_artifacts_url }}/lava-rootfs.tgz
compression: gz
{% if dtb %}
dtb:
url: {{ base_artifacts_url }}/{{ dtb }}.dtb
{% endif %}
os: oe
- boot:
timeout:
minutes: 5
method: {{ boot_method }}
{% if boot_method == "fastboot" %}
{#
For fastboot, LAVA doesn't know how to unpack the rootfs/apply overlay/repack,
so we transfer the overlay over the network after boot.
#}
transfer_overlay:
download_command: wget -S --progress=dot:giga
unpack_command: tar -C / -xzf
{% else %}
commands: nfs
{% endif %}
prompts:
- 'lava-shell:'
- test:
timeout:
minutes: 60
definitions:
- repository:
metadata:
format: Lava-Test Test Definition 1.0
name: tracie
description: "Mesa tracie test plan"
os:
- oe
scope:
- functional
run:
steps:
- mount -t proc none /proc
- mount -t sysfs none /sys
- mount -t devtmpfs none /dev || echo possibly already mounted
- mkdir -p /dev/pts
- mount -t devpts devpts /dev/pts
- echo "nameserver 8.8.8.8" > /etc/resolv.conf
- for i in 1 2 3; do sntp -sS pool.ntp.org && break || sleep 2; done
# amdgpu failed to find its firmware during boot, rebind
- echo 0000:00:01.0 > /sys/bus/pci/drivers/amdgpu/bind || true
{% if env_vars %}
- export {{ env_vars }}
{% endif %}
# tracie-runner.sh assumes some stuff is in pwd
- cd /
- wget -S --progress=dot:giga -O- {{ mesa_url }} | tar -xz
- export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
- export LIBGL_DRIVERS_PATH=`pwd`/install/lib/dri
- export DEVICE_NAME="gl-{{ gpu_version }}"
- "if sh /install/tracie-runner-gl.sh; then
echo 'tracie: pass';
else
echo 'tracie: fail';
fi"
parse:
pattern: '(?P<test_case_id>\S*):\s+(?P<result>(pass|fail))'
from: inline
name: tracie
path: inline/mesa-tracie.yaml

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,16 +8,10 @@ VERSION=`cat install/VERSION`
cd /piglit
PIGLIT_OPTIONS=$(echo $PIGLIT_OPTIONS | head -n 1)
set +e
xvfb-run --server-args="-noreset" sh -c \
"export LD_LIBRARY_PATH=$OLDPWD/install/lib;
wflinfo --platform glx --api gl --profile core | tee /tmp/version.txt | grep \"Mesa $VERSION\\\$\" &&
./piglit run -j${FDO_CI_CONCURRENT:-4} $PIGLIT_OPTIONS $PIGLIT_PROFILES $OLDPWD/results"
retVal=$?
if [ $retVal -ne 0 ]; then
echo "Found $(cat /tmp/version.txt), expected $VERSION"
fi
set -e
wflinfo --platform glx --api gl --profile core | grep \"Mesa $VERSION\\\$\" &&
./piglit run -j4 $PIGLIT_OPTIONS $PIGLIT_PROFILES $OLDPWD/results"
PIGLIT_RESULTS=${PIGLIT_RESULTS:-$PIGLIT_PROFILES}
mkdir -p .gitlab-ci/piglit

View File

@@ -22,11 +22,9 @@ find install -name \*.so -exec $STRIP {} \;
# Test runs don't pull down the git tree, so put the dEQP helper
# script and associated bits there.
echo "$(cat VERSION) (git-$(git rev-parse HEAD | cut -b -10))" >> install/VERSION
cp -Rp .gitlab-ci/bare-metal install/
cp VERSION install/
cp -Rp .gitlab-ci/deqp* install/
cp -Rp .gitlab-ci/piglit install/
cp -Rp .gitlab-ci/traces-baremetal.yml install/
cp -Rp .gitlab-ci/traces.yml install/
cp -Rp .gitlab-ci/tracie install/
cp -Rp .gitlab-ci/tracie-runner-gl.sh install/
@@ -43,14 +41,9 @@ cp -Rp .gitlab-ci/deqp-*-skips.txt install/
mkdir -p artifacts/
tar -cf artifacts/install.tar install
if [ -n "$UPLOAD_FOR_LAVA" ]; then
# If the container has LAVA stuff, prepare the artifacts for LAVA jobs
if [ -d /lava-files ]; then
# Pass needed files to the test stage
cp $CI_PROJECT_DIR/.gitlab-ci/generate_lava.py artifacts/.
cp $CI_PROJECT_DIR/.gitlab-ci/lava-deqp.yml.jinja2 artifacts/.
cp $CI_PROJECT_DIR/.gitlab-ci/lava-tracie.yml.jinja2 artifacts/.
gzip -c artifacts/install.tar > mesa-${DEBIAN_ARCH}.tar.gz
MINIO_PATH=minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
ci-fairy minio login $CI_JOB_JWT
ci-fairy minio cp mesa-${DEBIAN_ARCH}.tar.gz minio://${MINIO_PATH}/mesa-${DEBIAN_ARCH}.tar.gz
fi

View File

@@ -10,9 +10,8 @@ export LD_LIBRARY_PATH=$LIBDIR
cd /usr/local/shader-db
for driver in freedreno intel v3d; do
echo "Running drm-shim for $driver"
for driver in freedreno v3d; do
env LD_PRELOAD=$LIBDIR/lib${driver}_noop_drm_shim.so \
./run -j${FDO_CI_CONCURRENT:-4} ./shaders \
./run -j 4 ./shaders \
> $ARTIFACTSDIR/${driver}-shader-db.txt
done

View File

@@ -39,17 +39,9 @@
- src/gallium/tests/**/*
- src/gallium/winsys/*
# Generic rule to not run the job during scheduled pipelines
# ----------------------------------------------------------
.scheduled_pipelines-rules:
rules: &ignore_scheduled_pipelines
if: '$CI_PIPELINE_SOURCE == "schedule"'
when: never
.softpipe-rules:
stage: softpipe
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
@@ -65,14 +57,13 @@
.llvmpipe-rules:
stage: llvmpipe
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
- changes:
*gallium_core_file_list
when: on_success
- changes: &llvmpipe_file_list
- changes:
- src/gallium/drivers/llvmpipe/**/*
- src/gallium/winsys/sw/**/*
when: on_success
@@ -81,7 +72,6 @@
.freedreno-rules:
stage: freedreno
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
@@ -89,18 +79,7 @@
*gallium_core_file_list
when: on_success
- changes:
# Note: when https://gitlab.com/gitlab-org/gitlab/-/issues/198688
# is supported, we can change the src/freedreno/ rule to explicitly
# exclude tools, rather than having to explicitly list everything
# else
- src/freedreno/common/**/*
- src/freedreno/drm/**/*
- src/freedreno/fdl/**/*
- src/freedreno/ir2/**/*
- src/freedreno/ir3/**/*
- src/freedreno/perfcntrs/**/*
- src/freedreno/registers/**/*
- src/freedreno/vulkan/**/*
- src/freedreno/**/*
- src/gallium/drivers/freedreno/**/*
- src/gallium/winsys/freedreno/**/*
when: on_success
@@ -109,7 +88,6 @@
.panfrost-rules:
stage: panfrost
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
@@ -126,7 +104,6 @@
.lima-rules:
stage: lima
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
@@ -142,7 +119,6 @@
.radv-rules:
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
@@ -155,7 +131,6 @@
.virgl-rules:
stage: virgl
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
@@ -163,27 +138,9 @@
*gallium_core_file_list
when: on_success
- changes:
*llvmpipe_file_list
when: on_success
- changes:
- src/gallium/drivers/llvmpipe/**/*
- src/gallium/drivers/virgl/**/*
- src/gallium/winsys/virgl/**/*
when: on_success
- when: never
.radeonsi-rules:
stage: radeonsi
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
- changes:
*gallium_core_file_list
when: on_success
- changes:
- src/gallium/drivers/radeonsi/**/*
- src/gallium/winsys/amdgpu/**/*
- src/amd/**/*
- src/gallium/winsys/sw/**/*
when: on_success
- when: never

View File

@@ -1,262 +0,0 @@
traces-db:
download-url: "https://minio-packet.freedesktop.org/mesa-tracie-public/"
traces:
# This trace takes an egregious amount of time in replay (5 minutes)
# on freedreno for some reason.
# - path: glxgears/glxgears.trace
# expectations:
# - device: freedreno-a630
# checksum: 5599d6e8e43384c59196b9c9b0161268
- path: gputest/furmark.trace
expectations:
- device: freedreno-a630
checksum: de674022e53fc9e0a9eb217f8bf0fe03
# Note: Requires GL3.3
- path: gputest/gimark.trace
expectations:
- device: freedreno-a630
checksum: 2cae8e2104356e2b3017cbd953cf7b4a
- path: gputest/pixmark-julia-fp32.trace
expectations:
- device: freedreno-a630
checksum: 4a02628395948c34d95d035a9c9735cb
# Note: Requires GL4 (fp64).
# - path: gputest/pixmark-julia-fp64.trace
# expectations:
# - device: freedreno-a630
# checksum: 0
# Intermittent GPU hangs on a630 result in test failures for this.
# - path: gputest/pixmark-piano.trace
# expectations:
# # One of the material textures appears brighter on freedreno than
# # i965 in a way that is probably wrong.
# - device: freedreno-a630
# checksum: 1aad6e1ffe23cae71acdb70695a6184b
- path: gputest/pixmark-volplosion.trace
expectations:
# Looks fine, but totally different shape from the rendering on i965.
- device: freedreno-a630
checksum: 86d678c70b8adf27095ace1a6bbfe2d2
- path: gputest/plot3d.trace
expectations:
- device: freedreno-a630
checksum: 67a9eb692e694b11107860bbcd47d493
# Note: Requires GL4 for tess.
- path: gputest/tessmark.trace
expectations:
- device: freedreno-a630
checksum: 985e231b58b7dc4b6da34ff32f8ebb82
- path: gputest/triangle.trace
expectations:
- device: freedreno-a630
checksum: 1dc6abfb1cfbc5b16adc6f4abf76eec8
- path: humus/AmbientAperture.trace
expectations:
- device: freedreno-a630
checksum: 894a9398f597258cb634bedfb8f2d31e
- path: humus/CelShading.trace
expectations:
- device: freedreno-a630
checksum: b0ac8fb4b2b2268cfb87944730125886
- path: humus/DynamicBranching3.trace
expectations:
- device: freedreno-a630
checksum: 238f06550db39c36e5b880d3b3d7440f
- path: humus/HDR.trace
expectations:
- device: freedreno-a630
checksum: 40387a4e89ef71c472a94413b175ff59
- path: humus/Portals.trace
expectations:
# Bad rendering -- some sort of gap in the upper right of the image.
- device: freedreno-a630
checksum: 38bcb0a348010c7591efe41b3cc0a9e6
- path: humus/RaytracedShadows.trace
expectations:
- device: freedreno-a630
checksum: fa2d20bf642cd413341d83c4ec5ef1d4
- path: humus/VolumetricFogging2.trace
expectations:
- device: freedreno-a630
checksum: 6027f10cbffa8c68ffe7d8208f84d32d
- path: pathfinder/canvas_moire.trace
expectations:
- device: freedreno-a630
checksum: 0e32ca8fc815a7250f38a07faeafb21b
- path: pathfinder/canvas_text.trace
expectations:
- device: freedreno-a630
checksum: 74129b650bd3ca806ff2dd46813ba6e6
- path: pathfinder/demo.trace
expectations:
- device: freedreno-a630
checksum: f6661ed4de9e0a444c6338ebd0cd3768
- path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
expectations:
- device: freedreno-a630
checksum: 1d04a606014f00663e0d078903d190c8
- path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata.rdc
expectations:
- device: freedreno-a630
checksum: 6c00e3f05fab4b0df449451803b2749a
- path: glmark2/buffer-columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
expectations:
- device: freedreno-a630
checksum: 5706da41ae1877086e7ac2dc9af66e81
- path: glmark2/bump-bump-render=height.rdc
expectations:
- device: freedreno-a630
checksum: 6d06bb78d918ef6376aee4d417c9e9c1
- path: glmark2/bump-bump-render=high-poly.rdc
expectations:
- device: freedreno-a630
checksum: 55312be6739a7142958bdef174e90269
- path: glmark2/bump-bump-render=normals.rdc
expectations:
- device: freedreno-a630
checksum: 9deea36f896b9aea01169839e1913e9b
- path: glmark2/conditionals-fragment-steps=0:vertex-steps=0.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: 4d654718f516adb891e6adef04924896
- path: glmark2/conditionals-fragment-steps=5:vertex-steps=0.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: 7937cc1cb07b980da11a7c892a97bcdc
- path: glmark2/conditionals-fragment-steps=0:vertex-steps=5.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: 2977a3bb963096a4ed421dff7001d498
- path: glmark2/desktop-blur-radius=5:effect=blur:passes=1:separable=true:windows=4.rdc
expectations:
- device: freedreno-a630
checksum: d750bb0972cf14a4c0bc35896d87da16
- path: glmark2/desktop-effect=shadow:windows=4.rdc
expectations:
- device: freedreno-a630
checksum: 5ff3fe9ab8ad3a53ce4b8bfe7a61900a
- path: glmark2/effect2d-kernel=0,1,0;1,-4,1;0,1,0.rdc
expectations:
- device: freedreno-a630
checksum: b38d1d3ebe30ea3df97713515dab3df0
- path: glmark2/effect2d-kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;.rdc
expectations:
- device: freedreno-a630
checksum: 2346a6597f4d1f20b493e8d6a8f7e592
- path: glmark2/function-fragment-complexity=low:fragment-steps=5.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: d479556facd21af43d526b3cc95bed8b
- path: glmark2/function-fragment-complexity=medium:fragment-steps=5.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: 17895715bdb496faa73bba89b06347f6
- path: glmark2/glmark2-build-use-vbo-false.rdc
expectations:
- device: freedreno-a630
checksum: ecb647d14dae3876eb2a4282633d84f5
- path: glmark2/glmark2-build-use-vbo-true.rdc
expectations:
- device: freedreno-a630
checksum: b2608bba0f80ef93809e42399fb77124
- path: glmark2/ideas-speed=duration.rdc
expectations:
- device: freedreno-a630
checksum: 4f51ce282835db86fd8dc42b81755ef8
- path: glmark2/jellyfish.rdc
expectations:
- device: freedreno-a630
checksum: b50568db464034da63a536a9fe89499b
- path: glmark2/loop-fragment-loop=false:fragment-steps=5:vertex-steps=5.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: 52397a2278680b28ccfac4d8ba7340dd
- path: glmark2/loop-fragment-steps=5:fragment-uniform=false:vertex-steps=5.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: 45ce9b6056ec0e0e4276e7738eaa7fa1
- path: glmark2/loop-fragment-steps=5:fragment-uniform=true:vertex-steps=5.rdc
expectations:
# Incorrect rendering, a bunch of the area is uniform gray when it should
# continue the pattern
- device: freedreno-a630
checksum: ec5ea3eab5b54524748a0c883cc929d6
- path: glmark2/pulsar-light=false:quads=5:texture=false.rdc
expectations:
- device: freedreno-a630
checksum: e482fd686d39decbec52ada682d93890
- path: glmark2/refract.rdc
expectations:
- device: freedreno-a630
checksum: a7b60492d31ca93f1506dfa59b462570
- path: glmark2/shading-shading=blinn-phong-inf.rdc
expectations:
- device: freedreno-a630
checksum: b9af27ae43986f6441235044a7f18e2a
- path: glmark2/shading-shading=cel.rdc
expectations:
- device: freedreno-a630
checksum: fc2c2a68a89ad2ee145819e2a6edcbc5
- path: glmark2/shading-shading=gouraud.rdc
expectations:
- device: freedreno-a630
checksum: fcc26fca31375b216382e69bc5f113fb
- path: glmark2/shading-shading=phong.rdc
# Some speckling on the main specular highlight that may just be
# mediump artifacts
expectations:
- device: freedreno-a630
checksum: ba29b12892f5cb9f9c506db9cc76f987
- path: glmark2/shadow.rdc
expectations:
- device: freedreno-a630
checksum: d8b5931669733240797f1acf5d98db25
# Very yellow terrain compared to i965, may just be mediump artifacts.
- path: glmark2/terrain.rdc
expectations:
- device: freedreno-a630
checksum: 2368b3132a8768bc3a98b3fda0a4830e
- path: glmark2/texture-texture-filter=linear.rdc
expectations:
- device: freedreno-a630
checksum: b4beeda82884d2e6de549b16cd9b90e8
- path: glmark2/texture-texture-filter=mipmap.rdc
expectations:
- device: freedreno-a630
checksum: 27e1cdb7e8f3f5bb6a61ebf02927d201
- path: glmark2/texture-texture-filter=nearest.rdc
expectations:
- device: freedreno-a630
checksum: 0b0114e48cf37efc43d8b27b926eaadf
# Throws errors on freedreno
# - path: supertuxkart/supertuxkart-antediluvian-abyss.rdc
# expectations:
# - device: freedreno-a630
# checksum: 0
# - path: supertuxkart/supertuxkart-menu.rdc
# expectations:
# - device: freedreno-a630
# checksum: 0
# - path: supertuxkart/supertuxkart-ravenbridge-mansion.rdc
# expectations:
# - device: freedreno-a630
# checksum: 0
# - path: godot/Material Testers.x86_64_2020.04.08_13.38_frame799.rdc
# expectations:
# - device: freedreno-a630
# checksum: 0

View File

@@ -1,5 +1,6 @@
traces-db:
download-url: "https://minio-packet.freedesktop.org/mesa-tracie-public/"
gitlab-project-url: "https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db"
commit: "d3b1efe0cd69ef6ae40a29a14ed733ee0ba0cb4c"
traces:
- path: glmark2/desktop-blur-radius=5:effect=blur:passes=1:separable=true:windows=4.rdc
@@ -8,321 +9,27 @@ traces:
checksum: 8867f3a41f180626d0d4b7661ff5c0f4
- device: gl-virgl
checksum: 8867f3a41f180626d0d4b7661ff5c0f4
- device: gl-panfrost-t860
checksum: 95df5e619a36e88fe408e45567a2d149
- device: gl-panfrost-t760
checksum: 30663eac9a4767d26fbf9b6db9712d9f
- device: gl-radeonsi-stoney
checksum: 316650141be869c8afe76b42d3573b49
- path: glmark2/jellyfish.rdc
expectations:
- device: gl-vmware-llvmpipe
checksum: e0fe979fee129c0ed42a3059d1a4e1c9
- device: gl-virgl
checksum: e0fe979fee129c0ed42a3059d1a4e1c9
- device: gl-panfrost-t860
checksum: 1d609b089732be5b6e3e78370abcb149
- device: gl-panfrost-t760
checksum: f98ef9118eeaba660c15065dac46e580
- device: gl-radeonsi-stoney
checksum: 2c57f9d33489dd43c8807bd0f06c3ed8
- path: glxgears/glxgears-2.trace
- path: glxgears/glxgears.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: f8eba0fec6e3e0af9cb09844bc73bdc8
checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd
- device: gl-virgl
checksum: f8eba0fec6e3e0af9cb09844bc73bdc8
- device: gl-panfrost-t860
checksum: bcc73608b6e2b5d92bf926d1c21889c7
- device: gl-panfrost-t760
checksum: bcc73608b6e2b5d92bf926d1c21889c7
- device: gl-radeonsi-stoney
checksum: eb9b3d497be567f02a6e039fa32f2b13
- path: KhronosGroup-Vulkan-Tools/amd/polaris10/vkcube.gfxr
checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd
- path: KhronosGroup-Vulkan-Tools/vkcube.gfxr
expectations:
- device: vk-amd-polaris10
checksum: 917cbbf4f09dd62ea26d247a1c70c16e
- device: vk-amd-raven
checksum: 45f9a89c7eabdaee5bc52ad4f45e598f
- path: LunarG-VulkanSamples/amd/polaris10/Hologram:-w:640:-h:480.gfxr
checksum: 29dc9e5e55c3de331407248737c23aa7
- path: LunarG-VulkanSamples/Hologram:-w:640:-h:480.gfxr
expectations:
- device: vk-amd-polaris10
checksum: cfde36cd7377068a739c30e3fd171d08
- device: vk-amd-raven
checksum: cfde36cd7377068a739c30e3fd171d08
checksum: 351710942ea93d511cef39ae2d7c68da
- path: Wicked-Engine/Tests:Cloth_Physics_Test.trace-dxgi
expectations:
- device: vk-amd-polaris10
checksum: 6b6d27df609b8d086cc3335e6d103581
- device: vk-amd-raven
checksum: f013465b97fd8ba0217bcde74c262384
- path: 0ad/0ad.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: d76d0f5b5b064bba3e6a2a122c0799cf
- device: gl-radeonsi-stoney
checksum: c6261e56f37cc5d73b83d493561df646
- path: pathfinder/demo.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: e624d76c70cc3c532f4f54439e13659a
- device: gl-panfrost-t860
checksum: c4f5e6bfe0cba230b1aef631c2fa4584
- device: gl-panfrost-t760
checksum: c4f5e6bfe0cba230b1aef631c2fa4584
- device: gl-radeonsi-stoney
checksum: c81c85f9b247dd1b06c3dd5b669cc283
- path: pathfinder/canvas_moire.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: c4ee0eef519f1a32ba24b7b392b31b28
- device: gl-panfrost-t860
checksum: 2fb2c8e83719526cb6c02b6c2e069d61
- device: gl-panfrost-t760
checksum: 2fb2c8e83719526cb6c02b6c2e069d61
- device: gl-radeonsi-stoney
checksum: 78dd2357ad6e5ffc049a75bfb11c5497
- path: pathfinder/canvas_text.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: f8c6d9a5c9248821ed9aaa376bef05c3
- device: gl-panfrost-t860
checksum: 939038749a5204ec2b1448d3b9208fb3
- device: gl-panfrost-t760
checksum: 939038749a5204ec2b1448d3b9208fb3
- device: gl-radeonsi-stoney
checksum: 56d1398206ceea45562f80f8ea9d3814
- path: gputest/furmark.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: 248ee9534a1f333b479e599646f56f63
- device: gl-virgl
checksum: 87ffd45be95f2d55f82325c86ce32f20
- device: gl-panfrost-t860
checksum: dc4ece101ed145228840d1f0654118c6
- device: gl-radeonsi-stoney
checksum: 1c569668d608c644f353caa177d577c6
- path: gputest/pixmark-piano.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: 022b43b7fff9e8623dcfcd91e6bbe7aa
- device: gl-virgl
checksum: 24eb95484e5b8288b3d5d65117c98641
- device: gl-radeonsi-stoney
checksum: a0e1d6358f76666603b08eab383af080
- path: gputest/triangle.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: c8848dec77ee0c55292417f54c0a1a49
- device: gl-virgl
checksum: 848436d1a2448bdc76fd6220382d8606
- device: gl-panfrost-t860
checksum: 6def0c34ade7d4ec930b45d0eef6e46a
- device: gl-panfrost-t760
checksum: 6def0c34ade7d4ec930b45d0eef6e46a
- device: gl-radeonsi-stoney
checksum: 2d0527e7288a0fc31099404546dadbfb
- path: humus/Portals.trace
expectations:
- device: gl-vmware-llvmpipe
checksum: d6eb6aee7a8a1c85d504a498cbf94659
- device: gl-virgl
checksum: 7caf9a1b50b7fc312a623be7c45553cb
- device: gl-panfrost-t860
checksum: 5415bbf2a69b605bb1052a0e0b0f7040
- device: gl-panfrost-t760
checksum: a41f53e9318cbd32c27b48d304df1ea6
- device: gl-radeonsi-stoney
checksum: b6f00f39566152c3c8462903b7a1f258
- path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: ee76b7ffb344d545ee22c1b83d61f893
- path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 8f90923d9b9daf7b3708f10b3b019af8
- path: glmark2/buffer-columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: db55995d943f1284c39637a116ceb645
- path: glmark2/bump-bump-render=height.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: da75c0dfbcb27b44fbaed15b2f29509c
- path: glmark2/bump-bump-render=high-poly.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: e2e83a59d4eb6763d2fe922932aa14b5
- path: glmark2/bump-bump-render=normals.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: b7beae443e41e229d34da46ab2047a98
- path: glmark2/conditionals-fragment-steps=0:vertex-steps=0.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: e95f9a5ce73727a92eeb4109d28caba4
- path: glmark2/conditionals-fragment-steps=0:vertex-steps=5.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: e9ff7521f88eebd8a6770ab5eb28fad4
- path: glmark2/conditionals-fragment-steps=5:vertex-steps=0.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 0381a3eb918cfecec03a64d06158d1a3
- path: glmark2/desktop-effect=shadow:windows=4.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: c21cf8fe26107351eaa97725e6f9883f
- path: glmark2/effect2d-kernel=0,1,0;1,-4,1;0,1,0.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 2958ae3442ed26b681b6978e278ba10d
- path: glmark2/effect2d-kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 2d4384b59505215932dc2f01ae174379
- path: glmark2/function-fragment-complexity=low:fragment-steps=5.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: f84fc1a1ff1a8342678bca081f8a5c0d
- path: glmark2/function-fragment-complexity=medium:fragment-steps=5.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 4097ffd5e97bd56589dfab374574d116
- path: glmark2/glmark2-build-use-vbo-false.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: e344777696ef13adc2bd943dfd4199a2
- path: glmark2/glmark2-build-use-vbo-true.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 51da69c3490816c93c130e63686d2483
- path: glmark2/ideas-speed=duration.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 966191b52dc4885cfc56c0e7c80856b2
- path: glmark2/loop-fragment-loop=false:fragment-steps=5:vertex-steps=5.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 65cfa43254eaa0ca09ceb8792b4e4ee7
- path: glmark2/loop-fragment-steps=5:fragment-uniform=false:vertex-steps=5.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 716f1ebf84d9ab30a8c4261ecbed492b
- path: glmark2/loop-fragment-steps=5:fragment-uniform=true:vertex-steps=5.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 45061884dc857a9e0c31d0b0c02d4cbe
- path: glmark2/pulsar-light=false:quads=5:texture=false.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 605881a1cb0d8d59e28e19663b6f5eb0
- path: glmark2/refract.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: db300d3a8afb6cecc19ae8e38c7b87c6
- path: glmark2/shading-shading=blinn-phong-inf.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 36b193b33127144f8080aa60d582e65e
- path: glmark2/shading-shading=cel.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: faac1e367720e1ccd9820f2b78808294
- path: glmark2/shading-shading=gouraud.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 22bd04eb9862eb4ecff525ac83b2826d
- path: glmark2/shading-shading=phong.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: fda002d281d57b3eacb5c2c8f619a62d
- path: glmark2/shadow.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 4bf5ca9ce641de1031eb8125d80a3005
- path: glmark2/terrain.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 52f19a65bd77ae03b5f51ee0038a2982
- path: glmark2/texture-texture-filter=linear.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 992eb4af603d68a3920014f64f0973b1
- path: glmark2/texture-texture-filter=mipmap.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: c635b1741e4103cf48cd554882e15a4c
- path: glmark2/texture-texture-filter=nearest.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: bd00656bf6683dae40bfa26a6416061d
- path: godot/Material Testers.x86_64_2020.04.08_13.38_frame799.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 2ddcda6b1c136ce1448714a3ff8432eb
- path: gputest/gimark.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 98e742377cef049e98014300a34d7bba
- path: gputest/pixmark-julia-fp32.trace
expectations:
- device: gl-radeonsi-stoney
checksum: ad472cdef2a68ffaabcbf2a694c4aefe
- path: gputest/pixmark-julia-fp64.trace
expectations:
- device: gl-radeonsi-stoney
checksum: b181b0a910f5ae5b161df70f834c3d5f
- path: gputest/pixmark-piano.trace
expectations:
- device: gl-radeonsi-stoney
checksum: a0e1d6358f76666603b08eab383af080
- path: gputest/pixmark-volplosion.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 2fba173643c014bcfa4b31eb55a514b9
- path: gputest/plot3d.trace
expectations:
- device: gl-radeonsi-stoney
checksum: fd367551aa74e2903e0590a893da01a6
- path: gputest/tessmark.trace
expectations:
- device: gl-radeonsi-stoney
checksum: d6597f93caa383c492d8290036c60919
- path: humus/AmbientAperture.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 56291d097c4be9c079fb771c849c6a2e
- path: humus/CelShading.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 7d30dbe3470873c327464ea7ebe6bcf0
- path: humus/DynamicBranching3.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 0f02743d054c66f04da404add87d67dc
- path: humus/HDR.trace
expectations:
- device: gl-radeonsi-stoney
checksum: b44ce4cb377321f6423a5a62a9083794
- path: humus/RaytracedShadows.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 4209605af96a1d7c20aa7324aa93839f
- path: humus/VolumetricFogging2.trace
expectations:
- device: gl-radeonsi-stoney
checksum: 12ad73ad05b01854da65eb0094612ebf
- path: supertuxkart/supertuxkart-antediluvian-abyss.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 17f4039392a65ad23133cb2cac82dba4
- path: supertuxkart/supertuxkart-menu.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: bc851bb8808b311c2df9c36a6c289e6e
- path: supertuxkart/supertuxkart-ravenbridge-mansion.rdc
expectations:
- device: gl-radeonsi-stoney
checksum: 46f08af5c49d711b41d4082f8a5cf6d6

View File

@@ -17,24 +17,16 @@ export LD_LIBRARY_PATH="/waffle/build/lib:$LD_LIBRARY_PATH"
# Set environment for apitrace executable.
export PATH="/apitrace/build:$PATH"
# Set environment for wflinfo executable.
export PATH="/waffle/build/bin:$PATH"
# Use the surfaceless EGL platform.
export EGL_PLATFORM="surfaceless"
export DISPLAY=
export WAFFLE_PLATFORM="surfaceless_egl"
# Our rootfs may not have "less", which apitrace uses during apitrace dump
export PAGER=cat
RESULTS=`pwd`/results
mkdir -p $RESULTS
# Perform a self-test to ensure tracie is working properly.
if [ -z "$TRACIE_NO_UNIT_TESTS" ]; then
TRACIE_UPLOAD_TO_MINIO=0 python3 -m pytest -v --pyargs $INSTALL/tracie/tests/test.py
fi
"$INSTALL/tracie/tests/test.sh"
if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
# tracie is to use virpipe, and virgl_test_server llvmpipe

View File

@@ -21,7 +21,7 @@ export DXVK_LOG_LEVEL="none"
export DXVK_STATE_CACHE=0
# Perform a self-test to ensure tracie is working properly.
python3 -m pytest -v --pyargs $INSTALL/tracie/tests/test.py
"$INSTALL/tracie/tests/test.sh"
# Sanity check to ensure that our environment is sufficient to make our tests
# run against the Mesa built by CI, rather than any installed distro version.

View File

@@ -5,13 +5,15 @@ Home of the Mesa trace testing effort.
### Traces definition file
The trace definition file contains information about the traces to run along
with their expected image checksums on each device, and optionally from where to
download them. An example:
The trace definition file contains information about the GitLab
project and git commit to get the traces from, and a list of the
traces to run along with their expected image checksums on each
device. An example:
```yaml
traces-db:
download-url: https://minio-packet.freedesktop.org/mesa-tracie-public/
gitlab-project-url: https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db
commit: master
traces:
- path: glmark2/jellyfish.rdc
@@ -38,10 +40,12 @@ with the [image_checksum.py](.gitlab-ci/tracie/image_checksum.py) script.
Alternatively, an arbitrary checksum can be used, and during replay (see below)
the scripts will report the mismatch and expected checksum.
### Trace-db download urls
### Trace-db GitLab projects
The trace-db:download-url property contains an HTTPS url from which traces can
be downloaded, by appending traces:path properties to it.
The trace-db GitLab projects are assumed to have git repositories
using LFS for their trace files. This is so that trace files can be
potentially checked out and replayed individually, thus reducing
storage requirements during CI runs.
### Enabling trace testing on a new device
@@ -90,10 +94,6 @@ applications. Traces for proprietary games and application are typically not
redistributable, unless specific redistribution rights have been granted by the
publisher.
Trace files in a given repository are expected to be immutable once committed
for the first time, so any changes need to be accompanied by a change in the
file name (eg. by appending a _v2 suffix to the file).
### Replaying traces
Mesa traces CI uses a set of scripts to replay traces and check the output

View File

@@ -58,13 +58,17 @@ def get_last_apitrace_frame_call(cmd_wrapper, trace_path):
return -1
def get_last_gfxreconstruct_frame_call(trace_path):
cmd = ["gfxrecon-info", str(trace_path)]
# FIXME: It would be great to have another way to get the amount of
# traces which wouldn't imply replaying the whole trace:
# https://github.com/LunarG/gfxreconstruct/issues/329
cmd = ["gfxrecon-replay", str(trace_path)]
ret = subprocess.run(cmd, stdout=subprocess.PIPE)
lines = ret.stdout.decode(errors='replace').splitlines()
if len(lines) >= 1:
c = lines[0].split(": ", 1)
if len(c) >= 2 and c[1].isnumeric():
return int(c[1])
for l in reversed(ret.stdout.decode(errors='replace').splitlines()):
s = l.split(", ", 2)
if len(s) >= 3:
c = s[2].split(None, 1)
if len(c) >= 1 and c[0].isnumeric():
return int(c[0])
return -1
def dump_with_apitrace(retrace_cmd, trace_path, calls, device_name):

View File

@@ -112,6 +112,7 @@ def renderdoc_dump_images(filename, eventIds, outputDir):
for eventId in eventIds:
dumpImage(controller, eventId, outputDir, tracefile)
controller.Shutdown()
cap.Shutdown()
rd.ShutdownReplay()

View File

@@ -1,214 +0,0 @@
import logging
import pytest
import re
import shutil
from os import environ, chdir
from os.path import dirname, exists, realpath
import tracie
RESULTS_YAML = "results/results.yml"
TRACE_LOG_TEST1 = "results/trace1/test/gl-test-device/magenta.testtrace.log"
TRACE_LOG_TEST2 = "results/trace2/test/vk-test-device/olive.testtrace.log"
TRACE_PNG_TEST1 = "results/trace1/test/gl-test-device/magenta.testtrace-0.png"
TRACE_PNG_TEST2 = "results/trace2/test/vk-test-device/olive.testtrace-0.png"
TRACIE_DIR = dirname(realpath(__file__)) + "/.."
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger()
def write_to(content, filename):
with open(filename, 'w') as f:
f.write(content)
def read_from(filename):
with open(filename) as f:
content = f.read()
return content
def run_tracie():
'''
Run tests for the .testtrace types, using the "gl-test-device" and
"vk-test-device" device names.
'''
result = tracie.main(["--device-name", "gl-test-device",
"--file", "./tests/traces.yml"])
if not result:
return False
result = tracie.main(["--device-name", "vk-test-device",
"--file", "./tests/traces.yml"])
return result
def prepare_for_run(tmp_path):
'''
Copy all the tracie scripts to the test dir for the unit tests.
This avoids polluting the normal working dir with test result artifacts.
'''
test_dir = str(tmp_path) + "/run"
shutil.copytree(TRACIE_DIR, test_dir)
# Change the working dir to the test_dir
chdir(test_dir)
# Set the traces-db
shutil.move("./tests/test-data", "./traces-db")
# Disable trace storing
environ["TRACIE_STORE_IMAGES"] = "0"
def cleanup(tmp_path):
'''
Performs the clean up of the test dir.
'''
if exists(tmp_path):
shutil.rmtree(tmp_path)
@pytest.fixture(autouse=True)
def run_test(tmp_path):
'''
Wraps the execution of each test as follows:
prepare_for_run()
test()
cleanup()
'''
logger.debug("Working dir: %s", tmp_path)
prepare_for_run(tmp_path)
yield
cleanup(tmp_path)
def check_results_yaml_content(filename, expectations):
'''
Checks the content of the filename with the list of expectations
passed as parameter.
Arguments:
filename (str): The path of the file to check
expectations (list): A list with the content to find in the file
Returns:
bool: The return value. True if the content of the filename satisfies
the expectations, False otherwise.
'''
content = read_from(filename)
for e in expectations:
ocurrencies = re.findall(e, content)
if not len(ocurrencies):
logger.error("Expectation not found in %s: %s", filename, e)
return False
return True
def test_tracie_succeeds_if_all_images_match():
assert run_tracie()
expectations = [
"actual: 5efda83854befe0155ff8517a58d5b51",
"expected: 5efda83854befe0155ff8517a58d5b51",
]
assert check_results_yaml_content(RESULTS_YAML, expectations)
def test_tracie_fails_on_image_mismatch():
filename = "./tests/traces.yml"
content = read_from(filename)
content = content.replace("5efda83854befe0155ff8517a58d5b51",
"8e0a801367e1714463475a824dab363b")
write_to(content, filename)
assert not run_tracie()
expectations = [
"actual: 5efda83854befe0155ff8517a58d5b51",
"expected: 8e0a801367e1714463475a824dab363b",
"trace2/test/vk-test-device/olive.testtrace-0.png"
]
assert check_results_yaml_content(RESULTS_YAML, expectations)
def test_tracie_traces_with_and_without_checksum():
filename = "./tests/traces.yml"
content = read_from(filename)
content += ''' - path: trace1/red.testtrace
expectations:
- device: bla
checksum: 000000000000000'''
write_to(content, filename)
# red.testtrace should be skipped, since it doesn't
# have any checksums for our device
filename = "./traces-db/trace1/red.testtrace"
content = "ff0000ff"
write_to(content, filename)
assert run_tracie()
def test_tracie_only_traces_without_checksum():
filename = "./tests/traces.yml"
content = '''traces:
- path: trace1/red.testtrace
expectations:
- device: bla
checksum: 000000000000000'''
write_to(content, filename)
# red.testtrace should be skipped, since it doesn't
# have any checksums for our device
filename = "./traces-db/trace1/red.testtrace"
content = "ff0000ff"
write_to(content, filename)
assert run_tracie()
def test_tracie_with_no_traces():
filename = "./tests/traces.yml"
content = 'traces:'
write_to(content, filename)
assert run_tracie()
expectations = [
"{}",
]
assert check_results_yaml_content(RESULTS_YAML, expectations)
def test_tracie_fails_on_dump_image_error():
# "invalid" should fail to parse as rgba and
# cause an error
filename = "./traces-db/trace1/magenta.testtrace"
write_to("invalid\n", filename)
run_tracie()
expectations = [
"actual: error",
"expected: 8e0a801367e1714463475a824dab363b",
"trace1/magenta.testtrace",
]
assert check_results_yaml_content(RESULTS_YAML, expectations)
def test_tracie_stores_only_logs_on_checksum_match():
assert run_tracie()
assert exists(TRACE_LOG_TEST1)
assert exists(TRACE_LOG_TEST2)
assert not exists(TRACE_PNG_TEST1)
assert not exists(TRACE_PNG_TEST2)
def test_tracie_stores_images_on_checksum_mismatch():
filename = "./tests/traces.yml"
content = read_from(filename)
content = content.replace("5efda83854befe0155ff8517a58d5b51",
"8e0a801367e1714463475a824dab363b")
write_to(content, filename)
assert not run_tracie()
assert not exists(TRACE_PNG_TEST1)
assert exists(TRACE_PNG_TEST2)
def test_tracie_stores_images_on_request():
environ["TRACIE_STORE_IMAGES"] = "1"
assert run_tracie()
assert exists(TRACE_PNG_TEST1)
assert exists(TRACE_PNG_TEST2)

152
.gitlab-ci/tracie/tests/test.sh Executable file
View File

@@ -0,0 +1,152 @@
#!/bin/sh
TRACIE_DIR="$(dirname "$(readlink -f "$0")")/.."
TEST_DIR=""
TEST_EXIT=0
assert() {
if ! $1; then
echo "Assertion failed: \"$1\""
exit 1
fi
}
run_tracie() {
# Run tests for the .testtrace types, using the "gl-test-device" and "vk-test-device" device names.
python3 $TEST_DIR/tracie.py --file $TEST_DIR/tests/traces.yml --device-name gl-test-device && \
python3 $TEST_DIR/tracie.py --file $TEST_DIR/tests/traces.yml --device-name vk-test-device
}
cleanup() {
[ "$TEST_DIR" = "/tmp/*" ] && rm -rf "$TEST_DIR"
}
prepare_for_run() {
TEST_DIR="$(mktemp -d -t tracie.test.XXXXXXXXXX)"
# Copy all the tracie scripts to the test dir for the run-tests.sh script.
# This avoids polluting the normal working dir with test result artifacts.
cp -R "$TRACIE_DIR"/. "$TEST_DIR"
cd "$TEST_DIR"
mkdir traces-db
mv tests/test-data/* traces-db/.
trap cleanup EXIT
# Ensure we have a clean environment.
unset TRACIE_STORE_IMAGES
}
run_test() {
prepare_for_run
log=$(mktemp)
if ($1 > "$log" 2>&1 ;); then
if [ -t 1 ]; then
echo "$1: \e[0;32mSuccess\e[0m"
else
echo "$1: Success"
fi
else
if [ -t 1 ]; then
echo "$1: \e[0;31mFail\e[0m"
else
echo "$1: Fail"
fi
cat "$log"
TEST_EXIT=1
fi
rm "$log"
cleanup
}
assert_results_yaml_contains() {
grep -q "actual: $1" $4
assert "[ $? = 0 ]"
grep -q "expected: $2" $4
assert "[ $? = 0 ]"
if [ $3 != "" ]; then
grep -q $3 $4
fi
assert "[ $? = 0 ]"
}
tracie_succeeds_if_all_images_match() {
run_tracie
assert "[ $? = 0 ]"
assert_results_yaml_contains 5efda83854befe0155ff8517a58d5b51 5efda83854befe0155ff8517a58d5b51 "" "$PWD/results/results.yml"
}
tracie_fails_on_image_mismatch() {
sed -i 's/5efda83854befe0155ff8517a58d5b51/8e0a801367e1714463475a824dab363b/g' \
"$TEST_DIR/tests/traces.yml"
run_tracie
assert "[ $? != 0 ]"
assert_results_yaml_contains 5efda83854befe0155ff8517a58d5b51 8e0a801367e1714463475a824dab363b "trace2/test/vk-test-device/olive.testtrace-0.png" "$PWD/results/results.yml"
}
tracie_skips_traces_without_checksum() {
echo " - path: trace1/red.testtrace" >> "$TEST_DIR/tests/traces.yml"
echo " expectations:" >> "$TEST_DIR/tests/traces.yml"
echo " - device: bla" >> "$TEST_DIR/tests/traces.yml"
echo " checksum: 000000000000000" >> "$TEST_DIR/tests/traces.yml"
# red.testtrace should be skipped, since it doesn't
# have any checksums for our device
echo "ff0000ff" > traces-db/trace1/red.testtrace
run_tracie
assert "[ $? = 0 ]"
}
tracie_fails_on_dump_image_error() {
# "invalid" should fail to parse as rgba and
# cause an error
echo "invalid" > traces-db/trace1/magenta.testtrace
run_tracie
assert "[ $? != 0 ]"
}
tracie_stores_only_logs_on_checksum_match() {
run_tracie
assert "[ $? = 0 ]"
assert "[ -f "$TEST_DIR/results/trace1/test/gl-test-device/magenta.testtrace.log" ]"
assert "[ -f "$TEST_DIR/results/trace2/test/vk-test-device/olive.testtrace.log" ]"
assert "[ ! -f "$TEST_DIR/results/trace1/test/gl-test-device/magenta.testtrace-0.png" ]"
assert "[ ! -f "$TEST_DIR/results/trace2/test/vk-test-device/olive.testtrace-0.png" ]"
ls -lR "$TEST_DIR"
}
tracie_stores_images_on_checksum_mismatch() {
sed -i 's/5efda83854befe0155ff8517a58d5b51/8e0a801367e1714463475a824dab363b/g' \
"$TEST_DIR/tests/traces.yml"
run_tracie
assert "[ $? != 0 ]"
assert "[ ! -f "$TEST_DIR/results/trace1/test/gl-test-device/magenta.testtrace-0.png" ]"
assert "[ -f "$TEST_DIR/results/trace2/test/vk-test-device/olive.testtrace-0.png" ]"
}
tracie_stores_images_on_request() {
(export TRACIE_STORE_IMAGES=1; run_tracie)
assert "[ $? = 0 ]"
assert "[ -f "$TEST_DIR/results/trace1/test/gl-test-device/magenta.testtrace-0.png" ]"
assert "[ -f "$TEST_DIR/results/trace2/test/vk-test-device/olive.testtrace-0.png" ]"
ls -lR "$TEST_DIR"
}
run_test tracie_succeeds_if_all_images_match
run_test tracie_fails_on_image_mismatch
run_test tracie_skips_traces_without_checksum
run_test tracie_fails_on_dump_image_error
run_test tracie_stores_only_logs_on_checksum_match
run_test tracie_stores_images_on_checksum_mismatch
run_test tracie_stores_images_on_request
exit $TEST_EXIT

View File

@@ -1,11 +1,7 @@
import argparse
import base64
import datetime
import enum
import glob
import hashlib
import hmac
import json
import os
import requests
import sys
@@ -13,21 +9,15 @@ import tempfile
import time
import yaml
import shutil
import xml.etree.ElementTree as ET
from email.utils import formatdate
from pathlib import Path
from PIL import Image
from urllib import parse
import dump_trace_images
TRACES_DB_PATH = "./traces-db/"
RESULTS_PATH = "./results/"
MINIO_HOST = "minio-packet.freedesktop.org"
DASHBOARD_URL = "https://tracie.freedesktop.org/dashboard"
minio_credentials = None
TRACES_DB_PATH = os.getcwd() + "/traces-db/"
RESULTS_PATH = os.getcwd() + "/results/"
def replay(trace_path, device_name):
success = dump_trace_images.dump_from_trace(trace_path, [], device_name)
@@ -46,110 +36,81 @@ def replay(trace_path, device_name):
log_file = files[0]
return hashlib.md5(Image.open(image_file).tobytes()).hexdigest(), image_file, log_file
def gitlab_ensure_trace(project_url, trace):
def gitlab_download_metadata(project_url, repo_commit, trace_path):
url = parse.urlparse(project_url)
url_path = url.path
if url_path.startswith("/"):
url_path = url_path[1:]
gitlab_api_url = url.scheme + "://" + url.netloc + "/api/v4/projects/" + parse.quote_plus(url_path)
r = requests.get(gitlab_api_url + "/repository/files/%s/raw?ref=%s" % (parse.quote_plus(trace_path), repo_commit))
metadata_raw = r.text.strip().split('\n')
metadata = dict(line.split(' ', 1) for line in metadata_raw[1:])
oid = metadata["oid"][7:] if metadata["oid"].startswith('sha256:') else metadata["oid"]
size = int(metadata['size'])
return oid, size
def gitlfs_download_trace(repo_url, repo_commit, trace_path, oid, size):
headers = {
"Accept": "application/vnd.git-lfs+json",
"Content-Type": "application/vnd.git-lfs+json"
}
json = {
"operation": "download",
"transfers": [ "basic" ],
"ref": { "name": "refs/heads/%s" % repo_commit },
"objects": [
{
"oid": oid,
"size": size
}
]
}
r = requests.post(repo_url + "/info/lfs/objects/batch", headers=headers, json=json)
url = r.json()["objects"][0]["actions"]["download"]["href"]
open(TRACES_DB_PATH + trace_path, "wb").write(requests.get(url).content)
def checksum(filename, hash_factory=hashlib.sha256, chunk_num_blocks=128):
h = hash_factory()
with open(filename,'rb') as f:
for chunk in iter(lambda: f.read(chunk_num_blocks*h.block_size), b''):
h.update(chunk)
return h.hexdigest()
def gitlab_ensure_trace(project_url, repo_commit, trace):
trace_path = TRACES_DB_PATH + trace['path']
if project_url is None:
if not os.path.exists(trace_path):
print("{} missing".format(trace_path))
sys.exit(1)
assert(repo_commit is None)
assert(os.path.exists(trace_path))
return
os.makedirs(os.path.dirname(trace_path), exist_ok=True)
if os.path.exists(trace_path):
return
local_oid = checksum(trace_path)
print("[check_image] Downloading trace %s" % (trace['path']), end=" ", flush=True)
download_time = time.time()
r = requests.get(project_url + trace['path'])
open(trace_path, "wb").write(r.content)
print("took %ds." % (time.time() - download_time), flush=True)
remote_oid, size = gitlab_download_metadata(project_url, repo_commit, trace['path'])
def sign_with_hmac(key, message):
key = key.encode("UTF-8")
message = message.encode("UTF-8")
if not os.path.exists(trace_path) or local_oid != remote_oid:
print("[check_image] Downloading trace %s" % (trace['path']), end=" ", flush=True)
download_time = time.time()
gitlfs_download_trace(project_url + ".git", repo_commit, trace['path'], remote_oid, size)
print("took %ds." % (time.time() - download_time), flush=True)
signature = hmac.new(key, message, hashlib.sha1).digest()
return base64.encodebytes(signature).strip().decode()
def ensure_minio_credentials():
global minio_credentials
if minio_credentials is None:
minio_credentials = {}
params = {'Action': 'AssumeRoleWithWebIdentity',
'Version': '2011-06-15',
'RoleArn': 'arn:aws:iam::123456789012:role/FederatedWebIdentityRole',
'RoleSessionName': '%s:%s' % (os.environ['CI_PROJECT_PATH'], os.environ['CI_JOB_ID']),
'DurationSeconds': 900,
'WebIdentityToken': os.environ['CI_JOB_JWT']}
r = requests.post('https://%s' % (MINIO_HOST), params=params)
if r.status_code >= 400:
print(r.text)
r.raise_for_status()
root = ET.fromstring(r.text)
for attr in root.iter():
if attr.tag == '{https://sts.amazonaws.com/doc/2011-06-15/}AccessKeyId':
minio_credentials['AccessKeyId'] = attr.text
elif attr.tag == '{https://sts.amazonaws.com/doc/2011-06-15/}SecretAccessKey':
minio_credentials['SecretAccessKey'] = attr.text
elif attr.tag == '{https://sts.amazonaws.com/doc/2011-06-15/}SessionToken':
minio_credentials['SessionToken'] = attr.text
def upload_to_minio(file_name, resource, content_type):
ensure_minio_credentials()
minio_key = minio_credentials['AccessKeyId']
minio_secret = minio_credentials['SecretAccessKey']
minio_token = minio_credentials['SessionToken']
date = formatdate(timeval=None, localtime=False, usegmt=True)
url = 'https://%s%s' % (MINIO_HOST, resource)
to_sign = "PUT\n\n%s\n%s\nx-amz-security-token:%s\n%s" % (content_type, date, minio_token, resource)
signature = sign_with_hmac(minio_secret, to_sign)
with open(file_name, 'rb') as data:
headers = {'Host': MINIO_HOST,
'Date': date,
'Content-Type': content_type,
'Authorization': 'AWS %s:%s' % (minio_key, signature),
'x-amz-security-token': minio_token}
print("Uploading artifact to %s" % url);
r = requests.put(url, headers=headers, data=data)
if r.status_code >= 400:
print(r.text)
r.raise_for_status()
def upload_artifact(file_name, key, content_type):
resource = '/artifacts/%s/%s/%s/%s' % (os.environ['CI_PROJECT_PATH'],
os.environ['CI_PIPELINE_ID'],
os.environ['CI_JOB_ID'],
key)
upload_to_minio(file_name, resource, content_type)
def ensure_reference_image(file_name, checksum):
resource = '/mesa-tracie-results/%s/%s.png' % (os.environ['CI_PROJECT_PATH'], checksum)
url = 'https://%s%s' % (MINIO_HOST, resource)
r = requests.head(url, allow_redirects=True)
if r.status_code == 200:
return
upload_to_minio(file_name, resource, 'image/png')
def gitlab_check_trace(project_url, device_name, trace, expectation):
gitlab_ensure_trace(project_url, trace)
def gitlab_check_trace(project_url, repo_commit, device_name, trace, expectation):
gitlab_ensure_trace(project_url, repo_commit, trace)
result = {}
result[trace['path']] = {}
result[trace['path']]['expected'] = expectation['checksum']
trace_path = Path(TRACES_DB_PATH + trace['path'])
checksum, image_file, log_file = replay(trace_path, device_name)
if checksum is None:
result[trace['path']]['actual'] = 'error'
return False, result
return False
elif checksum == expectation['checksum']:
print("[check_image] Images match for %s" % (trace['path']))
ok = True
@@ -158,13 +119,6 @@ def gitlab_check_trace(project_url, device_name, trace, expectation):
(trace['path'], expectation['checksum'], checksum))
print("[check_image] For more information see "
"https://gitlab.freedesktop.org/mesa/mesa/blob/master/.gitlab-ci/tracie/README.md")
image_diff_url = "%s/imagediff/%s/%s/%s/%s/%s" % (DASHBOARD_URL,
os.environ['CI_PROJECT_PATH'],
os.environ['CI_PIPELINE_ID'],
os.environ['CI_JOB_ID'],
expectation['checksum'],
checksum)
print("[check_image] %s" % image_diff_url)
ok = False
trace_dir = os.path.split(trace['path'])[0]
@@ -172,61 +126,50 @@ def gitlab_check_trace(project_url, device_name, trace, expectation):
results_path = os.path.join(RESULTS_PATH, dir_in_results)
os.makedirs(results_path, exist_ok=True)
shutil.move(log_file, os.path.join(results_path, os.path.split(log_file)[1]))
if os.environ.get('TRACIE_UPLOAD_TO_MINIO', '0') == '1':
if ok:
if os.environ['CI_PROJECT_PATH'] == 'mesa/mesa':
ensure_reference_image(image_file, checksum)
else:
upload_artifact(image_file, 'traces/%s.png' % checksum, 'image/png')
if not ok or os.environ.get('TRACIE_STORE_IMAGES', '0') == '1':
image_name = os.path.split(image_file)[1]
shutil.move(image_file, os.path.join(results_path, image_name))
result[trace['path']]['image'] = os.path.join(dir_in_results, image_name)
result[trace['path']]['expected'] = expectation['checksum']
result[trace['path']]['actual'] = checksum
return ok, result
def run(filename, device_name):
with open(filename, 'r') as f:
y = yaml.safe_load(f)
if "traces-db" in y:
project_url = y["traces-db"]["download-url"]
else:
project_url = None
traces = y['traces'] or []
all_ok = True
results = {}
for trace in traces:
for expectation in trace['expectations']:
if expectation['device'] == device_name:
ok, result = gitlab_check_trace(project_url,
device_name, trace,
expectation)
all_ok = all_ok and ok
results.update(result)
os.makedirs(RESULTS_PATH, exist_ok=True)
with open(os.path.join(RESULTS_PATH, 'results.yml'), 'w') as f:
yaml.safe_dump(results, f, default_flow_style=False)
if os.environ.get('TRACIE_UPLOAD_TO_MINIO', '0') == '1':
upload_artifact(os.path.join(RESULTS_PATH, 'results.yml'), 'traces/results.yml', 'text/yaml')
return all_ok
def main(args):
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--file', required=True,
help='the name of the traces.yml file listing traces and their checksums for each device')
parser.add_argument('--device-name', required=True,
help="the name of the graphics device used to replay traces")
args = parser.parse_args(args)
return run(args.file, args.device_name)
args = parser.parse_args()
with open(args.file, 'r') as f:
y = yaml.safe_load(f)
if "traces-db" in y:
project_url = y["traces-db"]["gitlab-project-url"]
commit_id = y["traces-db"]["commit"]
else:
project_url = None
commit_id = None
traces = y['traces']
all_ok = True
results = {}
for trace in traces:
for expectation in trace['expectations']:
if expectation['device'] == args.device_name:
ok, result = gitlab_check_trace(project_url, commit_id, args.device_name, trace, expectation)
all_ok = all_ok and ok
results.update(result)
with open(os.path.join(RESULTS_PATH, 'results.yml'), 'w') as f:
yaml.safe_dump(results, f, default_flow_style=False)
sys.exit(0 if all_ok else 1)
if __name__ == "__main__":
all_ok = main(sys.argv[1:])
sys.exit(0 if all_ok else 1)
main()

Some files were not shown because too many files have changed in this diff Show More