2023-08-30 13:09:39 -07:00
|
|
|
=====================
|
|
|
|
vkd3d testing scripts
|
|
|
|
=====================
|
|
|
|
|
|
|
|
These scripts are used by the GitLab CI feature to automatically run
|
|
|
|
the vkd3d tests on each merge request.
|
|
|
|
|
2024-01-04 02:31:47 -08:00
|
|
|
The CI target image-linux, in the file image.yml, builds a Docker
|
2023-08-30 13:09:39 -07:00
|
|
|
image based on Debian bookworm with all the packages required for
|
|
|
|
testing, and uploads it to the GitLab container registry. The Docker
|
|
|
|
script is in the file image.docker.
|
|
|
|
|
|
|
|
The file build.yml contains the actual testing targets. Currently
|
2023-08-31 13:37:53 -07:00
|
|
|
vkd3d is tested on Linux, on x86-64 and i386, each architecture with
|
|
|
|
two different Vulkan drivers (both from Mesa): llvmpipe (a software
|
|
|
|
implementation) and RADV (a hardware implementation backed by an AMD
|
2023-10-02 02:41:29 -07:00
|
|
|
GPU). vkd3d is also tested on macOS, with an Intel processor, using
|
|
|
|
MoltenVK as the Vulkan driver. The llvmpipe and macOS jobs are
|
|
|
|
currently allowed to fail.
|
|
|
|
|
|
|
|
Additionally, MinGW is used to build PE binaries for both vkd3d and
|
2023-09-26 02:20:39 -07:00
|
|
|
its crosstests, for both 32 and 64 bit. The PE crosstests are executed
|
|
|
|
on Windows 10 to check that behavior imposed by the tests corresponds
|
|
|
|
to Microsoft's D3D12 implementation. The rendering backend is
|
|
|
|
currently Window's WARP software implementation.
|
2023-10-02 02:41:29 -07:00
|
|
|
|
|
|
|
The testing logs are available as CI artifacts, as well as the PE
|
|
|
|
modules built by the crosstest and MinGW jobs.
|
2023-08-30 13:09:39 -07:00
|
|
|
|
|
|
|
Some custom runner configuration is required in order to run the tests
|
|
|
|
on an AMD GPU. Specifically, a runner tagged with `amd-gpu' must be
|
|
|
|
available with the following features:
|
|
|
|
|
|
|
|
* of course a sufficiently recent AMD GPU must be available to the
|
|
|
|
host;
|
|
|
|
|
|
|
|
* the host kernel must have the appropriate driver and firmware
|
|
|
|
installed;
|
|
|
|
|
|
|
|
* the runner must forward the DRI nodes to the guest; this can be
|
|
|
|
configured by adding the line
|
|
|
|
|
|
|
|
devices = ["/dev/dri"]
|
|
|
|
|
|
|
|
to the relevant [runners.docker] section in the config.toml file;
|
|
|
|
|
|
|
|
* the DRI render nodes must be readable and writable by GID 800,
|
|
|
|
either because they belong to that group (e.g. because the group
|
|
|
|
`render', which typically owns those files, has GID 800) or via a
|
|
|
|
FS ACL; such stipulation is needed because in Debian group `render'
|
|
|
|
is created dynamically, therefore has no predictable GID: the use
|
|
|
|
of a fixed GID enables the guest system to be set up so that the
|
|
|
|
user running the tests can access the render nodes.
|
2023-08-31 13:55:46 -07:00
|
|
|
|
|
|
|
A runner on an Intel macOS system tagged with `mac' must also be
|
|
|
|
available to run the macOS tests. Unfortunately a system like Docker
|
|
|
|
is not available in this case to provide an isolated standard
|
|
|
|
environment for running the tests. All the software required to
|
|
|
|
compile and run the tests will therefore have to be installed directly
|
|
|
|
on the host system. Complete instructions to setup the macOS are
|
|
|
|
currently not available.
|
2023-09-26 02:20:39 -07:00
|
|
|
|
|
|
|
Finally, a runner tagged with `win10-21h2' must be available and
|
|
|
|
submit jobs to a Windows 10 virtual machine.
|