Compare commits
39 Commits
mesa-20.2.
...
mesa-20.1.
Author | SHA1 | Date | |
---|---|---|---|
|
e658e900bb | ||
|
f7d67c99a6 | ||
|
b896c506b8 | ||
|
fa1739113b | ||
|
d4c1cb59c2 | ||
|
1ed51096ac | ||
|
a36b7d8c97 | ||
|
ebb656bfb3 | ||
|
b4e46da708 | ||
|
f2a012f987 | ||
|
a25234047f | ||
|
ae44a916ec | ||
|
6486ac1a4c | ||
|
ad9b00ee4e | ||
|
de3a2b29bc | ||
|
12d23b4a08 | ||
|
33a086f44e | ||
|
00001525f5 | ||
|
86629193f5 | ||
|
e1e22e38e7 | ||
|
4af564cb92 | ||
|
7a93e75a41 | ||
|
4e07d00fa5 | ||
|
ec918aa04c | ||
|
afa6e8cc0b | ||
|
a63ca1776f | ||
|
263451f9c9 | ||
|
3668e27ec3 | ||
|
5a7b5ea470 | ||
|
e2037aea0c | ||
|
725f45bc63 | ||
|
16c3eca327 | ||
|
c98e895185 | ||
|
8c0ad1d2db | ||
|
4e710b3c37 | ||
|
8229d22234 | ||
|
6236c97699 | ||
|
1b0e98c295 | ||
|
0865c5107f |
@@ -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
|
||||
)
|
||||
|
735
.gitlab-ci.yml
735
.gitlab-ci.yml
File diff suppressed because it is too large
Load Diff
212
.gitlab-ci/README.md
Normal file
212
.gitlab-ci/README.md
Normal 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.
|
@@ -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
|
||||
|
@@ -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
|
||||
|
80
.gitlab-ci/bare-metal/README.md
Normal file
80
.gitlab-ci/bare-metal/README.md
Normal 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`
|
@@ -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
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
43
.gitlab-ci/bare-metal/init.sh
Executable file → Normal 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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
|
@@ -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()
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
arch=arm64
|
||||
|
||||
. .gitlab-ci/container/baremetal_build.sh
|
@@ -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
|
||||
|
@@ -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
|
72
.gitlab-ci/container/arm_test.sh
Normal file
72
.gitlab-ci/container/arm_test.sh
Normal 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
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
arch=i386
|
||||
|
||||
. .gitlab-ci/container/cross_build.sh
|
98
.gitlab-ci/container/lava_arm.sh
Normal file
98
.gitlab-ci/container/lava_arm.sh
Normal 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
|
@@ -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
|
||||
|
20
.gitlab-ci/container/obs-emulators-wine-debian.gpg.key
Normal file
20
.gitlab-ci/container/obs-emulators-wine-debian.gpg.key
Normal 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-----
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
arch=ppc64el
|
||||
|
||||
. .gitlab-ci/container/cross_build.sh
|
||||
|
||||
apt-get install -y --no-remove \
|
||||
libvulkan-dev:$arch
|
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
arch=s390x
|
||||
|
||||
. .gitlab-ci/container/cross_build.sh
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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
@@ -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
|
||||
|
@@ -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
|
||||
|
18
.gitlab-ci/deqp-freedreno-a630-noubo-fails.txt
Normal file
18
.gitlab-ci/deqp-freedreno-a630-noubo-fails.txt
Normal 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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
@@ -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.*
|
||||
|
||||
|
@@ -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.*
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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.*
|
@@ -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
|
||||
|
@@ -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
|
||||
|
720
.gitlab-ci/deqp-virgl-fails.txt
Normal file
720
.gitlab-ci/deqp-virgl-fails.txt
Normal 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
@@ -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
|
@@ -1 +0,0 @@
|
||||
../docs/ci
|
@@ -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"
|
@@ -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"
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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()
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
@@ -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):
|
||||
|
@@ -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()
|
||||
|
@@ -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
152
.gitlab-ci/tracie/tests/test.sh
Executable 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
|
@@ -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
Reference in New Issue
Block a user