Mesa (main): ci: Run tests inside Crosvm

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 9 19:45:40 UTC 2021


Module: Mesa
Branch: main
Commit: f1b952fa739998f87cec16d09799a65ea7c631be
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1b952fa739998f87cec16d09799a65ea7c631be

Author: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Date:   Thu Feb  4 15:14:26 2021 +0100

ci: Run tests inside Crosvm

Allow running tests within Crosvm for testing the virtio-gpu winsys in
Virgl, tested with Piglit only for now.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10862>

---

 .gitlab-ci/crosvm-init.sh                     |  25 +++
 .gitlab-ci/crosvm-runner.sh                   |  43 +++++
 .gitlab-ci/prepare-artifacts.sh               |   2 +
 src/gallium/drivers/virgl/ci/gitlab-ci.yml    |   6 +
 src/gallium/drivers/virgl/ci/traces-virgl.yml | 259 +++++++++++++++++++++++++-
 5 files changed, 331 insertions(+), 4 deletions(-)

diff --git a/.gitlab-ci/crosvm-init.sh b/.gitlab-ci/crosvm-init.sh
new file mode 100755
index 00000000000..d0fd3426cc4
--- /dev/null
+++ b/.gitlab-ci/crosvm-init.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+set -ex
+
+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
+mount -t tmpfs tmpfs /tmp
+
+. /crosvm-env.sh
+
+# / is ro
+export PIGLIT_REPLAY_EXTRA_ARGS="$PIGLIT_REPLAY_EXTRA_ARGS --db-path /tmp/replayer-db"
+
+if sh $CROSVM_TEST_SCRIPT; then
+    touch /results/success
+fi
+
+poweroff -d -n -f || true
+
+sleep 10   # Just in case init would exit before the kernel shuts down the VM
+
+exit 1
diff --git a/.gitlab-ci/crosvm-runner.sh b/.gitlab-ci/crosvm-runner.sh
new file mode 100755
index 00000000000..25009b80e1f
--- /dev/null
+++ b/.gitlab-ci/crosvm-runner.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+set -x
+
+ln -sf $CI_PROJECT_DIR/install /install
+
+export LD_LIBRARY_PATH=$CI_PROJECT_DIR/install/lib/
+export EGL_PLATFORM=surfaceless
+
+export -p > /crosvm-env.sh
+
+CROSVM_KERNEL_ARGS="root=my_root rw rootfstype=virtiofs loglevel=3 init=$CI_PROJECT_DIR/install/crosvm-init.sh ip=192.168.30.2::192.168.30.1:255.255.255.0:crosvm:eth0"
+
+# Temporary results dir because from the guest we cannot write to /
+mkdir -p /results
+mount -t tmpfs tmpfs /results
+
+mkdir -p /piglit/.gitlab-ci/piglit
+mount -t tmpfs tmpfs /piglit/.gitlab-ci/piglit
+
+unset DISPLAY
+unset XDG_RUNTIME_DIR
+
+/usr/sbin/iptables-legacy  -t nat -A POSTROUTING -o eth0 -j MASQUERADE
+echo 1 > /proc/sys/net/ipv4/ip_forward
+
+# Crosvm wants this
+syslogd > /dev/null
+
+crosvm run \
+  --gpu gles=false,backend=3d,egl=true,surfaceless=true \
+  -m 4096 \
+  -c 4 \
+  --disable-sandbox \
+  --shared-dir /:my_root:type=fs:writeback=true:timeout=60:cache=always \
+  --host_ip=192.168.30.1 --netmask=255.255.255.0 --mac "AA:BB:CC:00:00:12" \
+  -p "$CROSVM_KERNEL_ARGS" \
+  /lava-files/bzImage
+
+mkdir -p $CI_PROJECT_DIR/results
+mv /results/* $CI_PROJECT_DIR/results/.
+
+test -f $CI_PROJECT_DIR/results/success
diff --git a/.gitlab-ci/prepare-artifacts.sh b/.gitlab-ci/prepare-artifacts.sh
index 005cfe590bd..d311ed59e75 100755
--- a/.gitlab-ci/prepare-artifacts.sh
+++ b/.gitlab-ci/prepare-artifacts.sh
@@ -32,6 +32,8 @@ cp -Rp .gitlab-ci/fossils.yml install/
 cp -Rp .gitlab-ci/fossils install/
 cp -Rp .gitlab-ci/fossilize-runner.sh install/
 cp -Rp .gitlab-ci/deqp-runner.sh install/
+cp -Rp .gitlab-ci/crosvm-runner.sh install/
+cp -Rp .gitlab-ci/crosvm-init.sh install/
 cp -Rp .gitlab-ci/deqp-*.txt install/
 cp -Rp .gitlab-ci/report-flakes.py install/
 cp -Rp .gitlab-ci/vkd3d-proton install/
diff --git a/src/gallium/drivers/virgl/ci/gitlab-ci.yml b/src/gallium/drivers/virgl/ci/gitlab-ci.yml
index 79a2d3f14ff..cc95bbcb810 100644
--- a/src/gallium/drivers/virgl/ci/gitlab-ci.yml
+++ b/src/gallium/drivers/virgl/ci/gitlab-ci.yml
@@ -83,4 +83,10 @@ virgl-traces:
     PIGLIT_RESULTS: "virgl-replay"
     MESA_GLES_VERSION_OVERRIDE: "3.1"
     MESA_GLSL_VERSION_OVERRIDE: "310"
+    GALLIUM_DRIVER: "llvmpipe"
+    CROSVM_TEST_SCRIPT: "/install/piglit/run.sh"
+  tags:
+    - kvm
+  script:
+    - install/crosvm-runner.sh
 
diff --git a/src/gallium/drivers/virgl/ci/traces-virgl.yml b/src/gallium/drivers/virgl/ci/traces-virgl.yml
index eccfd77e8b6..f497d696539 100644
--- a/src/gallium/drivers/virgl/ci/traces-virgl.yml
+++ b/src/gallium/drivers/virgl/ci/traces-virgl.yml
@@ -17,16 +17,267 @@ traces:
   - path: gputest/furmark.trace
     expectations:
       - device: gl-virgl
-        checksum: 87ffd45be95f2d55f82325c86ce32f20
+        checksum: 248ee9534a1f333b479e599646f56f63
   - path: gputest/pixmark-piano.trace
     expectations:
       - device: gl-virgl
-        checksum: 8293e59b818715ddf1c23e9f60b17851
+        checksum: 3bb42312c7d7d694f7e186b480e16314
   - path: gputest/triangle.trace
     expectations:
       - device: gl-virgl
-        checksum: 848436d1a2448bdc76fd6220382d8606
+        checksum: c8848dec77ee0c55292417f54c0a1a49
   - path: humus/Portals.trace
     expectations:
       - device: gl-virgl
-        checksum: 6d78eed6749f01cc5625dec0ad129c66
+        checksum: 80e88e6be47138c18370d84c6426544f
+  - path: 0ad/0ad.trace
+    expectations:
+      - device: gl-virgl
+        checksum: b244fb65c77f5cca2c49bb256874e132
+  - path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 7194a135b454ab0a44da54b1b4318573
+  - path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: b28fafe3844e83854ac66526ec3c6f7b
+  - path: glmark2/buffer-columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: be20e9586750d29d8e24f418a2ddd6b3
+  - path: glmark2/bump-bump-render=height.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 44b19dbaeb169b37957ad7e36655c82b
+  - path: glmark2/bump-bump-render=high-poly.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: b8fbdcf5b27b6f0a80a483f97aa8f95b
+  - path: glmark2/bump-bump-render=normals.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 3217bb7c1ab99631d6c8079c39900cd8
+  - path: glmark2/conditionals-fragment-steps=0:vertex-steps=0.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 37076f5d551f1650457d6200c148a6d5
+  - path: glmark2/conditionals-fragment-steps=5:vertex-steps=0.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 74d437bbeaea401d9f3c91d03090150a
+  - path: glmark2/conditionals-fragment-steps=0:vertex-steps=5.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: a0054a7c565400d41a581e43ad2725fa
+  - path: glmark2/desktop-effect=shadow:windows=4.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 4a954ef5ff1405a92ff73532de063667
+  - path: glmark2/effect2d-kernel=0,1,0;1,-4,1;0,1,0.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 78c21e2eb2487ac1765b80134d0030d5
+  - path: glmark2/effect2d-kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: cf71e5d389dfdae7472382c53b49eaef
+  - path: glmark2/function-fragment-complexity=low:fragment-steps=5.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 60edf075423cda8bd5ccbec780a7f779
+  - path: glmark2/function-fragment-complexity=medium:fragment-steps=5.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 09589fc148b17961d52036aa6c958cfb
+  - path: glmark2/glmark2-build-use-vbo-false.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: c49a46075f148048f56c31189ee8ca96
+  - path: glmark2/glmark2-build-use-vbo-true.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: e6006b74fb1de84037a352546a9074d9
+  - path: glmark2/ideas-speed=duration.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 978804553ca90e629b4772e8c3ba6c15
+  - path: glmark2/loop-fragment-loop=false:fragment-steps=5:vertex-steps=5.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 69553b77c1bfd05b686fc6de4c9d73b9
+  - path: glmark2/loop-fragment-steps=5:fragment-uniform=false:vertex-steps=5.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 6ccbe24948193e4a375ad97cad3a1b91
+  - path: glmark2/loop-fragment-steps=5:fragment-uniform=true:vertex-steps=5.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: b01a0e5d01184b689738f50a89d932e6
+  - path: glmark2/pulsar-light=false:quads=5:texture=false.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 9b794af6415f6983b8748e63a1026d23
+  - path: glmark2/refract.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 8ffd396d27f55fdfa7b730741f2f3013
+  - path: glmark2/shading-shading=blinn-phong-inf.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: a5b3b5224cb036266ebc2a94bb74d730
+  - path: glmark2/shading-shading=cel.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: f9476eb0aa80026b7baa364b3ecc7c1c
+  - path: glmark2/shading-shading=gouraud.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 9a17b566c63683eb20753752f1b8c226
+  - path: glmark2/shading-shading=phong.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 7495d0ca6d9866e4a61ea1187e7db6cd
+  - path: glmark2/shadow.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: c3b1a34d324c2c1fb03dbfa78a447d9f
+# Crash
+#  - path: glmark2/texture-texture-filter=linear.rdc
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 7705bcf747ce1431db32f299fb81df63
+  - path: glmark2/texture-texture-filter=mipmap.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: afedbd8f7ad8d379bcd392406d95ff30
+  - path: glmark2/texture-texture-filter=nearest.rdc
+    expectations:
+      - device: gl-virgl
+        checksum: 769d6bdceb598e216ac39951f6881b67
+  - path: glxgears/glxgears.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 02aca9b4b4ad6fd60331df6e4f87f2cd
+# Crash
+#  - path: gputest/gimark.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 2cf40180a1315795389d0dfc18aad988
+  - path: gputest/pixmark-julia-fp32.trace
+    expectations:
+      - device: gl-virgl
+        checksum: dcf806be38c0b4c42ff85c98564177f9
+# Crash
+# - path: gputest/pixmark-julia-fp64.trace
+#   expectations:
+#     - device: gl-virgl
+#       checksum: 0
+  - path: gputest/pixmark-volplosion.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 922842c426150dc19a69c95181fda8b2
+  - path: gputest/plot3d.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 09e49ca9a988fe86c8b26f2a73d5bc08
+# Crash
+#  - path: gputest/tessmark.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 5d04b8d71517238b9bc8a527574e884b
+  - path: humus/AmbientAperture.trace
+    expectations:
+      - device: gl-virgl
+        checksum: ff490e36a763608e1ed3fa041216a378
+  - path: humus/CelShading.trace
+    expectations:
+      - device: gl-virgl
+        checksum: da817304110f4fb7fdbcdf3f83fe184d
+  - path: humus/DynamicBranching3.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 82c6b38f49b6a5d26d00ee64cf6e3fa6
+  - path: humus/HDR.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 40cae3617b7fe872939125ee574b50f0
+  - path: humus/RaytracedShadows.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 0e1096159db72b650d43f134c3ccaf79
+  - path: humus/VolumetricFogging2.trace
+    expectations:
+      - device: gl-virgl
+        checksum: a596785521a96162204ac266d5496c23
+# Crash
+#  - path: itoral-gl-terrain-demo/demo.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 9571117bf4eab6fe29b12f6c3d42d865
+  - path: neverball/neverball.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 6936cde5edab2b3fd02115ef36015cde
+# Crash
+#  - path: pathfinder/canvas_moire.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 0e32ca8fc815a7250f38a07faeafb21b
+# Crash
+#  - path: pathfinder/canvas_text.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 74129b650bd3ca806ff2dd46813ba6e6
+# Crash
+#  - path: pathfinder/demo.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: f6661ed4de9e0a444c6338ebd0cd3768
+  - path: supertuxkart/supertuxkart-mansion-egl-gles.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 7e478a9cca2686531370e91ece6b3afc
+# Sometimes crashes
+#  - path: xonotic/xonotic-keybench-high.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: e8a52c8f558a0085eb45fcba0f6c59e2
+  - path: valve/counterstrike.trace
+    expectations:
+      - device: gl-virgl
+        checksum: c63da1fbaec101dba5224ca1f52ec429
+  - path: valve/counterstrike-source.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 4c19f6060ff0fe0055678c48e1e77282
+# Piglit times-out when trying to run this one
+#  - path: valve/half-life-2.trace
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 323887eedf59fa9282d6c3a4c82c3192
+  - path: valve/portal-2.trace
+    expectations:
+      - device: gl-virgl
+        checksum: 41ab89c4174004360d63c2fd7dd81ff4
+# Piglit crashes when trying to run this one
+#  - path: supertuxkart/supertuxkart-antediluvian-abyss.rdc
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 0
+# Piglit crashes when trying to run this one
+#  - path: supertuxkart/supertuxkart-menu.rdc
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 0
+# Piglit crashes when trying to run this one
+#  - path: supertuxkart/supertuxkart-ravenbridge-mansion.rdc
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 0
+# Piglit crashes when trying to run this one
+#  - path: godot/Material Testers.x86_64_2020.04.08_13.38_frame799.rdc
+#    expectations:
+#      - device: gl-virgl
+#        checksum: 0
+



More information about the mesa-commit mailing list