mesa/.gitlab-ci/windows
Daniel Stone ccc6442d6f u_format: Rewrite format table to use YAML
u_format has always had its format table in CSV. This is kind of nice
for some things, but is a serious pain to extend, especially with
optional fields.

In going through our many (many, many) duplicated tables of format
mappings, it would've been nice to add some descriptions to our central
u_format table, such as mapping to DRM FourCC, to EGLImage mappings, and
to GL internalformats for EGLImage imports. Unfortunately, doing so with
more additional fields would just make the CSV totally unreadable.

Move the CSV table to a YAML-based table and adjust the Python parsers
to suit. The resulting generated files are identical before and after
the transition.

The new parser also has a significant amount of format validation to
make it easier to catch common errors.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29649>
2024-07-19 13:50:42 +00:00
..
deqp_runner_run.ps1 ci: use the new VK_DRIVER_FILES env var 2024-04-02 18:08:52 +00:00
Dockerfile_build d3d12/ci: Add vainfo with appverifier CI check 2024-04-09 15:37:23 +00:00
Dockerfile_msvc ci/msvc: Improve msvc init 2023-12-24 11:46:43 +00:00
Dockerfile_test d3d12/ci: Add vainfo with appverifier CI check 2024-04-09 15:37:23 +00:00
mesa_build.ps1 d3d12/ci: Add vainfo with appverifier CI check 2024-04-09 15:37:23 +00:00
mesa_container.ps1 ci/windows: Use 2 container stages 2022-01-21 22:38:16 +00:00
mesa_deps_build.ps1 ci/windows: Disable zlib in LLVM 2024-07-19 13:50:41 +00:00
mesa_deps_choco.ps1 u_format: Rewrite format table to use YAML 2024-07-19 13:50:42 +00:00
mesa_deps_d3d.ps1 ci/windows: Bump Agility SDK to 1.613.2 for ExecuteIndirect validation fix 2024-04-05 00:25:41 +00:00
mesa_deps_libva.ps1 d3d12/ci: Add vainfo with appverifier CI check 2024-04-09 15:37:23 +00:00
mesa_deps_msvc.ps1 ci/msvc: Install both msvc2019 and msvc2022 2023-12-24 11:46:43 +00:00
mesa_deps_rust.ps1 ci/msvc: Split the install of rust and d3d out of mesa_deps_test.ps1 2023-12-24 11:46:43 +00:00
mesa_deps_test_deqp.ps1 ci/msvc: Split the install of rust and d3d out of mesa_deps_test.ps1 2023-12-24 11:46:43 +00:00
mesa_deps_test_piglit.ps1 ci/windows: Rev Vulkan SDK and piglit 2024-01-19 05:16:23 +00:00
mesa_deps_test.ps1 ci/msvc: Split the install of rust and d3d out of mesa_deps_test.ps1 2023-12-24 11:46:43 +00:00
mesa_deps_vulkan_sdk.ps1 ci/windows: Rev Vulkan SDK and piglit 2024-01-19 05:16:23 +00:00
mesa_init_msvc.ps1 ci/msvc: Install both msvc2019 and msvc2022 2023-12-24 11:46:43 +00:00
piglit_run.ps1 d3d12: Set up spirv-as and fix expectations 2024-01-19 05:16:23 +00:00
README.md ci/vs2019: switch to powershell 7 2022-06-14 21:14:33 +00:00
spirv2dxil_check.ps1 ci/windows: Get DXIL.dll (and DXCompiler.dll) from GitHub and put it in System32 2022-11-03 23:54:45 +00:00
spirv2dxil_run.ps1 ci/windows: normalize line endings 2022-01-19 15:17:17 +00:00
vainfo_run.ps1 d3d12/ci: Add vainfo with appverifier CI check 2024-04-09 15:37:23 +00:00

Native Windows GitLab CI builds

Unlike Linux, Windows cannot reuse the freedesktop ci-templates as they exist as we do not have Podman, Skopeo, or even Docker-in-Docker builds available under Windows.

We still reuse the same model: build a base container with the core operating system and infrequently-changed build dependencies, then execute Mesa builds only inside that base container. This is open-coded in PowerShell scripts.

Base container build

The base container build job executes the mesa_container.ps1 script which reproduces the ci-templates behaviour. It looks for the registry image in the user's namespace, and exits if found. If not found, it tries to copy the same image tag from the upstream Mesa repository. If that is not found, the image is rebuilt inside the user's namespace.

The rebuild executes docker build which calls mesa_deps.ps1 inside the container to fetch and install all build dependencies. This includes Visual Studio Community Edition (downloaded from Microsoft, under the license which allows use by open-source projects), other build tools from Chocolatey, and finally Meson and Python dependencies from PyPI.

This job is executed inside a Windows shell environment directly inside the host, without Docker.

Mesa build

The Mesa build runs inside the base container, executing mesa_build.ps1. This simply compiles Mesa using Meson and Ninja, executing the build and unit tests. Currently, no build artifacts are captured.

Using build scripts locally

*.ps1 scripts for building dockers are using PowerShell 7 to run