panfrost: ci: Add tests to flip-flop list
[mesa.git] / src / gallium / drivers / panfrost / ci / gitlab-ci.yml
1 variables:
2 DOCKER_DRIVER: overlay2
3
4 stages:
5 - build-container
6 - build
7 - test
8
9 # Build Docker image with deqp, the rootfs and the build deps for Mesa
10 .build-container:
11 stage: build-container
12 when: always
13 services:
14 - docker:dind
15 image: docker:latest
16 script:
17 - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
18 - time docker pull $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest || true
19 - time docker build
20 -t $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}
21 --cache-from $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest
22 --build-arg DEBIAN_ARCH=${DEBIAN_ARCH}
23 --build-arg GCC_ARCH=${GCC_ARCH}
24 --build-arg KERNEL_ARCH=${KERNEL_ARCH}
25 --build-arg DEFCONFIG=${DEFCONFIG}
26 --build-arg DEVICE_TREES=${DEVICE_TREES}
27 --build-arg KERNEL_IMAGE_NAME=${KERNEL_IMAGE_NAME}
28 src/gallium/drivers/panfrost/ci
29 - time docker push $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest
30 - docker history $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest
31
32 build-container-armhf:
33 extends: .build-container
34 variables:
35 DEBIAN_ARCH: "armhf"
36 GCC_ARCH: "arm-linux-gnueabihf"
37 KERNEL_ARCH: "arm"
38 DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
39 DEVICE_TREES: "arch/arm/boot/dts/rk3288-veyron-jaq.dtb"
40 KERNEL_IMAGE_NAME: "zImage"
41
42 build-container-arm64:
43 extends: .build-container
44 variables:
45 DEBIAN_ARCH: "arm64"
46 GCC_ARCH: "aarch64-linux-gnu"
47 KERNEL_ARCH: "arm64"
48 DEFCONFIG: "arch/arm64/configs/defconfig"
49 DEVICE_TREES: "arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb"
50 KERNEL_IMAGE_NAME: "Image"
51
52 .build:
53 stage: build
54 image: $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest
55 cache:
56 paths:
57 - ccache
58 before_script:
59 - mkdir -p results mesa-build
60 - mkdir -p ccache
61 script:
62 - export CCACHE_BASEDIR=$CI_PROJECT_DIR
63 - export CCACHE_DIR=$CI_PROJECT_DIR/ccache
64 - export PATH="/usr/lib/ccache:$PATH"
65 - ccache -s
66
67 # Build Mesa
68 - /usr/share/meson/debcrossgen --arch ${DEBIAN_ARCH} -o /tmp/cross_file.txt
69 - meson . mesa-build
70 --cross-file /tmp/cross_file.txt
71 --libdir /artifacts/rootfs/mesa/lib/
72 --buildtype release
73 -Dgallium-drivers=kmsro,panfrost
74 -Ddri-drivers=
75 -Dprefix=/artifacts/rootfs/mesa
76 - ninja -C mesa-build install
77 - du -sh /artifacts/rootfs/mesa/*
78 - rm -rf /artifacts/rootfs/mesa/include
79
80 # Pack rootfs
81 - cp src/gallium/drivers/panfrost/ci/deqp-runner.sh /artifacts/rootfs/deqp/.
82 - du -sh /artifacts/rootfs/deqp/*
83 - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n
84 - cd /artifacts/rootfs/ ; find -H | cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/panfrost-rootfs-${DEBIAN_ARCH}.cpio.gz
85
86 # Copy kernel and DT
87 - cp /artifacts/${KERNEL_IMAGE_NAME} /artifacts/*.dtb $CI_PROJECT_DIR/results/.
88
89 # Generate LAVA job
90 - cd $CI_PROJECT_DIR
91 - src/gallium/drivers/panfrost/ci/generate_lava.py
92 --template src/gallium/drivers/panfrost/ci/lava-deqp.yml.jinja2
93 --arch ${DEBIAN_ARCH}
94 --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results
95 --device-type ${DEVICE_TYPE}
96 --kernel-image-name ${KERNEL_IMAGE_NAME}
97 > results/lava-deqp.yml
98 artifacts:
99 when: always
100 paths:
101 - results/
102
103 build-armhf:
104 extends: .build
105 variables:
106 DEBIAN_ARCH: "armhf"
107 GCC_ARCH: "arm-linux-gnueabihf"
108 DEVICE_TYPE: "rk3288-veyron-jaq"
109 KERNEL_IMAGE_NAME: "zImage"
110
111 build-arm64:
112 extends: .build
113 variables:
114 DEBIAN_ARCH: "arm64"
115 GCC_ARCH: "aarch64-linux-gnu"
116 DEVICE_TYPE: "rk3399-gru-kevin"
117 KERNEL_IMAGE_NAME: "Image"
118
119 .test:
120 stage: test
121 tags:
122 - idle-jobs
123 image: $CI_REGISTRY_IMAGE:latest
124 script:
125 - mkdir -p ~/.config/
126 - |
127 echo "default:
128 uri: https://lava.collabora.co.uk/RPC2
129 timeout: 120
130 username: jenkins-fdo
131 token: $LAVA_TOKEN
132 " > ~/.config/lavacli.yaml
133 - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp.yml` || echo $lava_job_id
134 - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log
135 - lavacli jobs show $lava_job_id
136 - curl "https://lava.collabora.co.uk/results/$lava_job_id/csv?user=jenkins-fdo&token=$LAVA_TOKEN" > raw_results.csv
137 - cat raw_results.csv | csvcut -c 12,3 | grep dEQP-GLES2 | sort > results/results-$lava_job_id.csv
138
139 # FIXME: Remove flip-flops from comparison files
140 - |
141 FLIP_FLOPS="
142 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
143 dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_y_pos_z_and_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
144 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1
145 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1_depth_component16
146 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4
147 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4_depth_component16
148 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1
149 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1_depth_component16
150 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4
151 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4_depth_component16
152 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1
153 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16
154 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8
155 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16
156 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8
157 dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.
158 dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.
159 dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgb5_a1
160 dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgba4
161 dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1
162 dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4
163 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
164 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
165 dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8
166 dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8
167 dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8
168 dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8
169 dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8
170 dEQP-GLES2.functional.lifetime.attach.deleted_input.renderbuffer_framebuffer
171 dEQP-GLES2.functional.lifetime.attach.deleted_output.renderbuffer_framebuffer
172 dEQP-GLES2.functional.polygon_offset.fixed16_factor_0_slope
173 dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope
174 dEQP-GLES2.functional.shaders.invariance.highp.loop_4
175 dEQP-GLES2.functional.shaders.operator.common_functions.smoothstep.mediump_vec3_vertex
176 dEQP-GLES2.functional.shaders.random.all_features.fragment.12
177 dEQP-GLES2.functional.shaders.random.all_features.fragment.37
178 dEQP-GLES2.functional.texture.units.2_units.mixed.1
179 dEQP-GLES2.functional.texture.units.2_units.mixed.3
180 dEQP-GLES2.functional.texture.units.2_units.only_2d.2
181 dEQP-GLES2.functional.texture.units.4_units.mixed.5
182 dEQP-GLES2.functional.texture.units.4_units.only_2d.0
183 dEQP-GLES2.functional.texture.units.all_units.only_cube.4
184 dEQP-GLES2.functional.texture.units.all_units.only_cube.7
185 dEQP-GLES2.functional.texture.units.all_units.only_cube.8
186 "
187 - for test in $FLIP_FLOPS; do sed -i "/$test/d" src/gallium/drivers/panfrost/ci/expected-failures.txt results/results-$lava_job_id.csv; done
188
189 - PASSED=$(grep pass$ results/results-$lava_job_id.csv | wc -l)
190 - FAILED=$(grep fail$ results/results-$lava_job_id.csv | wc -l)
191 - TOTAL=$(wc -l < results/results-$lava_job_id.csv)
192 - 'echo "Passed: $PASSED ($(expr $PASSED \* 100 / $TOTAL)%)"'
193 - 'echo "Failed: $FAILED ($(expr $FAILED \* 100 / $TOTAL)%)"'
194 - 'echo "Total: $TOTAL"'
195
196 - sed '/,pass/d' results/results-$lava_job_id.csv | sed 's/,fail//' > results/failures-$lava_job_id.txt
197 - diff -u src/gallium/drivers/panfrost/ci/expected-failures.txt results/failures-$lava_job_id.txt
198 artifacts:
199 when: always
200 paths:
201 - results/
202
203 test-armhf:
204 extends: .test
205 dependencies:
206 - build-armhf
207
208 test-arm64:
209 extends: .test
210 dependencies:
211 - build-arm64
212