2 DOCKER_DRIVER: overlay2
9 # Build Docker image with deqp, the rootfs and the build deps for Mesa
15 - src/gallium/drivers/panfrost/ci/gitlab-ci.yml
16 - src/gallium/drivers/panfrost/ci/Dockerfile
17 - src/gallium/drivers/panfrost/ci/create-rootfs.sh
18 - src/gallium/drivers/panfrost/ci/${KERNEL_ARCH}.config
22 DOCKER_HOST: tcp://docker:2375
23 DOCKER_DRIVER: overlay2
25 - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
27 -t $CI_REGISTRY/$CI_PROJECT_PATH/${DEBIAN_ARCH}
28 --build-arg DEBIAN_ARCH=${DEBIAN_ARCH}
29 --build-arg GCC_ARCH=${GCC_ARCH}
30 --build-arg KERNEL_ARCH=${KERNEL_ARCH}
31 --build-arg DEFCONFIG=${DEFCONFIG}
32 --build-arg DEVICE_TREES=${DEVICE_TREES}
33 --build-arg KERNEL_IMAGE_NAME=${KERNEL_IMAGE_NAME}
34 src/gallium/drivers/panfrost/ci
35 - time docker push $CI_REGISTRY/$CI_PROJECT_PATH/${DEBIAN_ARCH}
36 - docker history $CI_REGISTRY/$CI_PROJECT_PATH/${DEBIAN_ARCH}
42 GCC_ARCH: "arm-linux-gnueabihf"
44 DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
45 DEVICE_TREES: "arch/arm/boot/dts/rk3288-veyron-jaq.dtb"
46 KERNEL_IMAGE_NAME: "zImage"
52 GCC_ARCH: "aarch64-linux-gnu"
54 DEFCONFIG: "arch/arm64/configs/defconfig"
55 DEVICE_TREES: "arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb"
56 KERNEL_IMAGE_NAME: "Image"
60 image: $CI_REGISTRY/$CI_PROJECT_PATH/${DEBIAN_ARCH}:latest
65 - mkdir -p results mesa-build
68 - export CCACHE_BASEDIR=$CI_PROJECT_DIR
69 - export CCACHE_DIR=$CI_PROJECT_DIR/ccache
70 - export PATH="/usr/lib/ccache:$PATH"
74 - /usr/share/meson/debcrossgen --arch ${DEBIAN_ARCH} -o /tmp/cross_file.txt
76 --cross-file /tmp/cross_file.txt
77 --libdir /artifacts/rootfs/mesa/lib/
79 -Dgallium-drivers=kmsro,panfrost
81 -Dprefix=/artifacts/rootfs/mesa
82 - ninja -C mesa-build install
83 - du -sh /artifacts/rootfs/mesa/*
84 - rm -rf /artifacts/rootfs/mesa/include
87 - cp src/gallium/drivers/panfrost/ci/deqp-runner.sh /artifacts/rootfs/deqp/.
88 - du -sh /artifacts/rootfs/deqp/*
89 - find /artifacts/rootfs/ -type f -printf "%s\t%p\n" | sort -n
90 - cd /artifacts/rootfs/ ; find -H | cpio -H newc -v -o | gzip -c - > $CI_PROJECT_DIR/results/panfrost-rootfs-${DEBIAN_ARCH}.cpio.gz
93 - cp /artifacts/${KERNEL_IMAGE_NAME} /artifacts/*.dtb $CI_PROJECT_DIR/results/.
97 - src/gallium/drivers/panfrost/ci/generate_lava.py
98 --template src/gallium/drivers/panfrost/ci/lava-deqp.yml.jinja2
100 --base-artifacts-url $CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/raw/results
101 --device-type ${DEVICE_TYPE}
102 --kernel-image-name ${KERNEL_IMAGE_NAME}
103 > results/lava-deqp.yml
113 GCC_ARCH: "arm-linux-gnueabihf"
114 DEVICE_TYPE: "rk3288-veyron-jaq"
115 KERNEL_IMAGE_NAME: "zImage"
121 GCC_ARCH: "aarch64-linux-gnu"
122 DEVICE_TYPE: "rk3399-gru-kevin"
123 KERNEL_IMAGE_NAME: "Image"
129 image: $CI_REGISTRY/$CI_PROJECT_PATH/arm64:latest # Any of the images will be fine
131 - mkdir -p ~/.config/
134 uri: https://lava.collabora.co.uk/RPC2
136 username: jenkins-fdo
138 " > ~/.config/lavacli.yaml
139 - lava_job_id=`lavacli jobs submit $CI_PROJECT_DIR/results/lava-deqp.yml` || echo $lava_job_id
140 - lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee results/lava-deqp-$lava_job_id.log
141 - lavacli jobs show $lava_job_id
142 - curl "https://lava.collabora.co.uk/results/$lava_job_id/csv?user=jenkins-fdo&token=$LAVA_TOKEN" > raw_results.csv
143 - cat raw_results.csv | csvcut -c 12,3 | grep dEQP-GLES2 | sort > results/results-$lava_job_id.csv
145 # FIXME: Remove flip-flops from comparison files
148 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
149 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
150 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1
151 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgb5_a1_depth_component16
152 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4
153 dEQP-GLES2.functional.fbo.render.color.blend_rbo_rgba4_depth_component16
154 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1
155 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgb5_a1_depth_component16
156 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4
157 dEQP-GLES2.functional.fbo.render.color.blend_npot_rbo_rgba4_depth_component16
158 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1
159 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_depth_component16
160 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgb5_a1_stencil_index8
161 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16
162 dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8
163 dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.
164 dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.
165 dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgb5_a1
166 dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear.rbo_rgba4
167 dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1
168 dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4
169 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
170 dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
171 dEQP-GLES2.functional.fbo.render.stencil_clear.rbo_rgb5_a1_stencil_index8
172 dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgb5_a1_stencil_index8
173 dEQP-GLES2.functional.fbo.render.stencil.npot_rbo_rgba4_stencil_index8
174 dEQP-GLES2.functional.fbo.render.stencil.rbo_rgb5_a1_stencil_index8
175 dEQP-GLES2.functional.fbo.render.stencil.rbo_rgba4_stencil_index8
176 dEQP-GLES2.functional.lifetime.attach.deleted_input.renderbuffer_framebuffer
177 dEQP-GLES2.functional.lifetime.attach.deleted_output.renderbuffer_framebuffer
178 dEQP-GLES2.functional.polygon_offset.fixed16_factor_0_slope
179 dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope
180 dEQP-GLES2.functional.shaders.invariance.highp.loop_4
181 dEQP-GLES2.functional.shaders.operator.common_functions.smoothstep.mediump_vec3_vertex
182 dEQP-GLES2.functional.shaders.random.all_features.fragment.12
183 dEQP-GLES2.functional.shaders.random.all_features.fragment.37
184 dEQP-GLES2.functional.texture.units.2_units.mixed.1
185 dEQP-GLES2.functional.texture.units.2_units.mixed.3
186 dEQP-GLES2.functional.texture.units.2_units.only_2d.2
187 dEQP-GLES2.functional.texture.units.4_units.mixed.5
188 dEQP-GLES2.functional.texture.units.4_units.only_2d.0
189 dEQP-GLES2.functional.texture.units.all_units.only_cube.4
190 dEQP-GLES2.functional.texture.units.all_units.only_cube.7
191 dEQP-GLES2.functional.texture.units.all_units.only_cube.8
193 - 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
195 - PASSED=$(grep pass$ results/results-$lava_job_id.csv | wc -l)
196 - FAILED=$(grep fail$ results/results-$lava_job_id.csv | wc -l)
197 - TOTAL=$(wc -l < results/results-$lava_job_id.csv)
198 - 'echo "Passed: $PASSED ($(expr $PASSED \* 100 / $TOTAL)%)"'
199 - 'echo "Failed: $FAILED ($(expr $FAILED \* 100 / $TOTAL)%)"'
200 - 'echo "Total: $TOTAL"'
201 - 'if [ $TOTAL != 17439 ]; then echo "WARNING: Unexpected count of results. Incomplete run?"; fi'
203 - sed '/,pass/d' results/results-$lava_job_id.csv | sed 's/,fail//' > results/failures-$lava_job_id.txt
204 - diff -u src/gallium/drivers/panfrost/ci/expected-failures.txt results/failures-$lava_job_id.txt