ci: Build kernels and rootfs for x86 devices

For testing Mesa on LAVA devices with the amd64 architecture, build
kernels and rootfs in the same way as we do for arm64 and armhf.

Also add a few trivial jobs for a specific AMD Chromebook.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Rohan Garg <rohan.garg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5903>
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0943b5d..e63539f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,6 +30,7 @@
   - radv
   - lima
   - virgl
+  - radeonsi
   - success
 
 # Generic rule to not run the job during scheduled pipelines
@@ -203,7 +204,7 @@
     - .fdo.container-build@debian
     - .container
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_build-base "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &x86_build-base "2020-07-28-x86-2"
 
 .use-x86_build-base:
   extends:
@@ -221,7 +222,7 @@
   extends:
     - .use-x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_build "2020-07-28-libdrm-2"
+    FDO_DISTRIBUTION_TAG: &x86_build "2020-07-28-x86-2"
 
 .use-x86_build:
   variables:
@@ -235,7 +236,7 @@
   extends:
     - .use-x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &i386_build "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &i386_build "2020-07-28-x86-2"
 
 .use-i386_build:
   variables:
@@ -249,7 +250,7 @@
   extends:
     - .use-x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-07-28-x86-2"
 
 .use-ppc64el_build:
   variables:
@@ -263,7 +264,7 @@
   extends:
     - .use-x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &s390x_build "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &s390x_build "2020-07-28-x86-2"
 
 .use-s390x_build:
   variables:
@@ -276,7 +277,7 @@
 x86_test-base:
   extends: x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_test-base "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &x86_test-base "2020-07-28-x86-2"
 
 .use-x86_test-base:
   extends:
@@ -293,19 +294,19 @@
 x86_test-gl:
   extends: .use-x86_test-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-07-28-x86-2"
 
 # Debian 10 based x86 test image for VK
 x86_test-vk:
   extends: .use-x86_test-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-07-28-x86-2"
 
 # Debian 9 based x86 build image (old LLVM)
 x86_build_old:
   extends: x86_build-base
   variables:
-    FDO_DISTRIBUTION_TAG: &x86_build_old "2020-07-28-libdrm"
+    FDO_DISTRIBUTION_TAG: &x86_build_old "2020-07-28-x86-2"
     FDO_DISTRIBUTION_VERSION: stretch-slim
 
 .use-x86_build_old:
@@ -518,11 +519,13 @@
       -D platforms=x11
     GALLIUM_ST: >
       -D dri3=enabled
-    GALLIUM_DRIVERS: "swrast,virgl"
+    GALLIUM_DRIVERS: "swrast,virgl,radeonsi"
     VULKAN_DRIVERS: amd
     BUILDTYPE: "debugoptimized"
     EXTRA_OPTION: >
       -D werror=true
+    UPLOAD_FOR_LAVA: 1
+    DEBIAN_ARCH: amd64
   script:
     - .gitlab-ci/meson-build.sh
     - .gitlab-ci/prepare-artifacts.sh
diff --git a/.gitlab-ci/container/baremetal_build.sh b/.gitlab-ci/container/baremetal_build.sh
index e7e92ba..edfd4f9 100644
--- a/.gitlab-ci/container/baremetal_build.sh
+++ b/.gitlab-ci/container/baremetal_build.sh
@@ -51,7 +51,7 @@
 ############### 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_arm.sh
+DEBIAN_ARCH=$arch INCLUDE_VK_CTS=1 . .gitlab-ci/container/lava_build.sh
 
 ############### Store traces
 # Clone the traces-db at container build time so we don't have to pull traces
diff --git a/.gitlab-ci/container/lava_arm.sh b/.gitlab-ci/container/lava_build.sh
similarity index 87%
rename from .gitlab-ci/container/lava_arm.sh
rename to .gitlab-ci/container/lava_build.sh
index baee8d8..7a7e997 100755
--- a/.gitlab-ci/container/lava_arm.sh
+++ b/.gitlab-ci/container/lava_build.sh
@@ -23,13 +23,19 @@
     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
+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.
@@ -117,16 +123,27 @@
 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} dtbs
+make ${KERNEL_IMAGE_NAME}
 for image in ${KERNEL_IMAGE_NAME}; do
     cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/.
 done
-cp ${DEVICE_TREES} /lava-files/.
+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
@@ -157,8 +174,11 @@
 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}
   find -H  |  cpio -H newc -o | gzip -c - > /lava-files/lava-rootfs.cpio.gz
 popd
@@ -203,8 +223,11 @@
 if [ -n "$UPLOAD_FOR_LAVA" ]; then
     ci-fairy minio login $CI_JOB_JWT
     FILES_TO_UPLOAD="lava-rootfs.cpio.gz \
-                     $KERNEL_IMAGE_NAME \
-                     $(basename -a $DEVICE_TREES)"
+                     $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 \
diff --git a/.gitlab-ci/container/x86_build-base.sh b/.gitlab-ci/container/x86_build-base.sh
index a833dcd..e6a1db2 100644
--- a/.gitlab-ci/container/x86_build-base.sh
+++ b/.gitlab-ci/container/x86_build-base.sh
@@ -61,7 +61,9 @@
         python-mako \
         python3-mako \
         python3-pil \
+        python3-pip \
         python3-requests \
+        python3-setuptools \
         qemu-user \
         scons \
         wine64-development \
@@ -90,7 +92,6 @@
 
 apt-get purge -y \
         gnupg \
-        unzip \
-        wget
+        unzip
 
 . .gitlab-ci/container/container_post_build.sh
diff --git a/.gitlab-ci/create-rootfs.sh b/.gitlab-ci/create-rootfs.sh
index 8422bab..4f4609e 100644
--- a/.gitlab-ci/create-rootfs.sh
+++ b/.gitlab-ci/create-rootfs.sh
@@ -2,6 +2,27 @@
 
 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 \
@@ -12,7 +33,7 @@
     libexpat1 \
     libx11-6 \
     libx11-xcb1 \
-    firmware-qcom-media \
+    $ARCH_PACKAGES \
     netcat-openbsd \
     python3 \
     libpython3.7 \
@@ -57,7 +78,8 @@
 
 UNNEEDED_PACKAGES="libfdisk1
                    tzdata
-                   diffutils"
+                   diffutils
+                   gnupg"
 
 export DEBIAN_FRONTEND=noninteractive
 
diff --git a/.gitlab-ci/deqp-radeonsi-stoney-fails.txt b/.gitlab-ci/deqp-radeonsi-stoney-fails.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.gitlab-ci/deqp-radeonsi-stoney-fails.txt
diff --git a/.gitlab-ci/deqp-radeonsi-stoney-skips.txt b/.gitlab-ci/deqp-radeonsi-stoney-skips.txt
new file mode 100644
index 0000000..69d0087
--- /dev/null
+++ b/.gitlab-ci/deqp-radeonsi-stoney-skips.txt
@@ -0,0 +1,11 @@
+# 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.*
+
diff --git a/.gitlab-ci/generate_lava.py b/.gitlab-ci/generate_lava.py
index 61da428..6f887c5 100755
--- a/.gitlab-ci/generate_lava.py
+++ b/.gitlab-ci/generate_lava.py
@@ -11,6 +11,7 @@
 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")
@@ -33,6 +34,7 @@
 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
diff --git a/.gitlab-ci/lava-deqp.yml.jinja2 b/.gitlab-ci/lava-deqp.yml.jinja2
index 92a48ed..639f1d1 100644
--- a/.gitlab-ci/lava-deqp.yml.jinja2
+++ b/.gitlab-ci/lava-deqp.yml.jinja2
@@ -30,8 +30,10 @@
     ramdisk:
       url: {{ base_artifacts_url }}/lava-rootfs.cpio.gz
       compression: gz
+{% if dtb %}
     dtb:
-      url: {{ base_artifacts_url }}/{{ device_type }}.dtb
+      url: {{ base_artifacts_url }}/{{ dtb }}.dtb
+{% endif %}
     os: oe
 - boot:
     timeout:
diff --git a/.gitlab-ci/lava-gitlab-ci.yml b/.gitlab-ci/lava-gitlab-ci.yml
index 1be28ef..0055ef5 100644
--- a/.gitlab-ci/lava-gitlab-ci.yml
+++ b/.gitlab-ci/lava-gitlab-ci.yml
@@ -1,5 +1,5 @@
 variables:
-  DISTRIBUTION_TAG: "2020-07-28"
+  DISTRIBUTION_TAG: "2020-07-28-x86"
 
 .kernel+rootfs:
   stage: container-2
@@ -10,7 +10,15 @@
     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_arm.sh
+    - .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:
@@ -54,6 +62,7 @@
         --base-artifacts-url ${ARTIFACTS_URL} \
         --mesa-url ${MESA_URL} \
         --device-type ${DEVICE_TYPE} \
+        --dtb ${DTB} \
         --env-vars "${ENV_VARS} ${FIXED_ENV_VARS}" \
         --deqp-version ${DEQP_VERSION} \
         --kernel-image-name ${KERNEL_IMAGE_NAME} \
@@ -108,6 +117,26 @@
     - kernel+rootfs_arm64
     - 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"
@@ -126,6 +155,7 @@
     - .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"
   tags:
@@ -137,6 +167,7 @@
     - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3288-veyron-jaq
+    DTB: ${DEVICE_TYPE}
     GPU_VERSION: panfrost-t760
     BOOT_METHOD: depthcharge
     KERNEL_IMAGE_TYPE: ""
@@ -150,6 +181,7 @@
     - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3288-veyron-jaq
+    DTB: ${DEVICE_TYPE}
     GPU_VERSION: panfrost-t760
     BOOT_METHOD: depthcharge
     KERNEL_IMAGE_TYPE: ""
@@ -162,6 +194,7 @@
     - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3399-gru-kevin
+    DTB: ${DEVICE_TYPE}
     GPU_VERSION: panfrost-t860
     BOOT_METHOD: depthcharge
     KERNEL_IMAGE_TYPE: ""
@@ -197,6 +230,7 @@
     - .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"
@@ -210,6 +244,7 @@
     - .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:
@@ -221,7 +256,45 @@
     - .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
diff --git a/.gitlab-ci/lava-tracie.yml.jinja2 b/.gitlab-ci/lava-tracie.yml.jinja2
index f8b6bcb..0811c67 100644
--- a/.gitlab-ci/lava-tracie.yml.jinja2
+++ b/.gitlab-ci/lava-tracie.yml.jinja2
@@ -30,8 +30,10 @@
     ramdisk:
       url: {{ base_artifacts_url }}/lava-rootfs.cpio.gz
       compression: gz
+{% if dtb %}
     dtb:
-      url: {{ base_artifacts_url }}/{{ device_type }}.dtb
+      url: {{ base_artifacts_url }}/{{ dtb }}.dtb
+{% endif %}
     os: oe
 - boot:
     timeout:
diff --git a/.gitlab-ci/test-source-dep.yml b/.gitlab-ci/test-source-dep.yml
index 6a006b8..fc65153 100644
--- a/.gitlab-ci/test-source-dep.yml
+++ b/.gitlab-ci/test-source-dep.yml
@@ -170,3 +170,19 @@
       - src/gallium/winsys/virgl/**/*
       when: on_success
     - when: never
+
+.radeonsi-rules:
+  stage: radeonsi
+  rules:
+    - 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/**/*
+      when: on_success
+    - when: never
diff --git a/.gitlab-ci/traces.yml b/.gitlab-ci/traces.yml
index 19949e9..5f0e259 100644
--- a/.gitlab-ci/traces.yml
+++ b/.gitlab-ci/traces.yml
@@ -12,6 +12,8 @@
         checksum: 95df5e619a36e88fe408e45567a2d149
       - device: gl-panfrost-t760
         checksum: 30663eac9a4767d26fbf9b6db9712d9f
+      - device: gl-radeonsi-stoney
+        checksum: 316650141be869c8afe76b42d3573b49
   - path: glmark2/jellyfish.rdc
     expectations:
       - device: gl-vmware-llvmpipe
@@ -22,6 +24,8 @@
         checksum: 1d609b089732be5b6e3e78370abcb149
       - device: gl-panfrost-t760
         checksum: f98ef9118eeaba660c15065dac46e580
+      - device: gl-radeonsi-stoney
+        checksum: 2c57f9d33489dd43c8807bd0f06c3ed8
   - path: glxgears/glxgears-2.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -32,6 +36,8 @@
         checksum: bcc73608b6e2b5d92bf926d1c21889c7
       - device: gl-panfrost-t760
         checksum: bcc73608b6e2b5d92bf926d1c21889c7
+      - device: gl-radeonsi-stoney
+        checksum: eb9b3d497be567f02a6e039fa32f2b13
   - path: KhronosGroup-Vulkan-Tools/amd/polaris10/vkcube.gfxr
     expectations:
       - device: vk-amd-polaris10
@@ -54,6 +60,8 @@
     expectations:
       - device: gl-vmware-llvmpipe
         checksum: d76d0f5b5b064bba3e6a2a122c0799cf
+      - device: gl-radeonsi-stoney
+        checksum: bfd97a7190f2b9de24ddfd446fcc4850
   - path: pathfinder/demo.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -62,6 +70,8 @@
         checksum: c4f5e6bfe0cba230b1aef631c2fa4584
       - device: gl-panfrost-t760
         checksum: c4f5e6bfe0cba230b1aef631c2fa4584
+      - device: gl-radeonsi-stoney
+        checksum: c81c85f9b247dd1b06c3dd5b669cc283
   - path: pathfinder/canvas_moire.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -70,6 +80,8 @@
         checksum: 2fb2c8e83719526cb6c02b6c2e069d61
       - device: gl-panfrost-t760
         checksum: 2fb2c8e83719526cb6c02b6c2e069d61
+      - device: gl-radeonsi-stoney
+        checksum: 78dd2357ad6e5ffc049a75bfb11c5497
   - path: pathfinder/canvas_text.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -78,6 +90,8 @@
         checksum: 939038749a5204ec2b1448d3b9208fb3
       - device: gl-panfrost-t760
         checksum: 939038749a5204ec2b1448d3b9208fb3
+      - device: gl-radeonsi-stoney
+        checksum: 56d1398206ceea45562f80f8ea9d3814
   - path: gputest/furmark.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -86,12 +100,16 @@
         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: 061226c3fd179c611b8d60acaa44474f
   - path: gputest/triangle.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -102,6 +120,8 @@
         checksum: 6def0c34ade7d4ec930b45d0eef6e46a
       - device: gl-panfrost-t760
         checksum: 6def0c34ade7d4ec930b45d0eef6e46a
+      - device: gl-radeonsi-stoney
+        checksum: 2d0527e7288a0fc31099404546dadbfb
   - path: humus/Portals.trace
     expectations:
       - device: gl-vmware-llvmpipe
@@ -112,3 +132,197 @@
         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: 061226c3fd179c611b8d60acaa44474f
+  - path: gputest/pixmark-volplosion.trace
+    expectations:
+      - device: gl-radeonsi-stoney
+        checksum: 2fba173643c014bcfa4b31eb55a514b9
+  - path: gputest/plot3d.trace
+    expectations:
+      - device: gl-radeonsi-stoney
+        checksum: 799ce7b2d8050d6ba2e3ae595cf8729e
+  - 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
diff --git a/.gitlab-ci/x86_64.config b/.gitlab-ci/x86_64.config
new file mode 100644
index 0000000..2a28645
--- /dev/null
+++ b/.gitlab-ci/x86_64.config
@@ -0,0 +1,65 @@
+CONFIG_LOCALVERSION="ccu"
+
+CONFIG_DEBUG_KERNEL=y
+
+CONFIG_DEVFREQ_GOV_PERFORMANCE=y
+CONFIG_DEVFREQ_GOV_POWERSAVE=y
+CONFIG_DEVFREQ_GOV_USERSPACE=y
+CONFIG_DEVFREQ_GOV_PASSIVE=y
+
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_PWM_CROS_EC=y
+CONFIG_BACKLIGHT_PWM=y
+
+# Strip out some stuff we don't need for graphics testing, to reduce
+# the build.
+CONFIG_CAN=n
+CONFIG_WIRELESS=n
+CONFIG_RFKILL=n
+CONFIG_WLAN=n
+
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR=y
+
+CONFIG_REGULATOR_VCTRL=y
+
+CONFIG_KASAN=n
+CONFIG_KASAN_INLINE=n
+CONFIG_STACKTRACE=n
+
+CONFIG_TMPFS=y
+
+CONFIG_PROVE_LOCKING=n
+CONFIG_DEBUG_LOCKDEP=n
+CONFIG_SOFTLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
+
+CONFIG_DETECT_HUNG_TASK=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
+
+CONFIG_FW_LOADER_COMPRESS=y
+
+# options for AMD devices
+CONFIG_X86_AMD_PLATFORM_DEVICE=y
+CONFIG_ACPI_VIDEO=y
+CONFIG_X86_AMD_FREQ_SENSITIVITY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_AMD=y
+CONFIG_DRM_AMDGPU=y
+CONFIG_DRM_AMDGPU_SI=y
+CONFIG_DRM_AMD_ACP=y
+CONFIG_ACPI_WMI=y
+CONFIG_MXM_WMI=y
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+CONFIG_PARPORT_SERIAL=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_CHROME_PLATFORMS=y
+