2 DOCKER_DRIVER: overlay2
9 # Build Docker image with deqp, the rootfs and the build deps for Mesa
11 stage: build-container
17 - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
18 - time docker pull $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest || true
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
32 build-container-armhf:
33 extends: .build-container
36 GCC_ARCH: "arm-linux-gnueabihf"
38 DEFCONFIG: "arch/arm/configs/multi_v7_defconfig"
39 DEVICE_TREES: "arch/arm/boot/dts/rk3288-veyron-jaq.dtb"
40 KERNEL_IMAGE_NAME: "zImage"
42 build-container-arm64:
43 extends: .build-container
46 GCC_ARCH: "aarch64-linux-gnu"
48 DEFCONFIG: "arch/arm64/configs/defconfig"
49 DEVICE_TREES: "arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb"
50 KERNEL_IMAGE_NAME: "Image"
54 image: $CI_REGISTRY_IMAGE/${DEBIAN_ARCH}:latest
59 - mkdir -p results mesa-build
62 - export CCACHE_BASEDIR=$CI_PROJECT_DIR
63 - export CCACHE_DIR=$CI_PROJECT_DIR/ccache
64 - export PATH="/usr/lib/ccache:$PATH"
68 - /usr/share/meson/debcrossgen --arch ${DEBIAN_ARCH} -o /tmp/cross_file.txt
70 --cross-file /tmp/cross_file.txt
71 --libdir /artifacts/rootfs/mesa/lib/
73 -Dgallium-drivers=kmsro,panfrost
75 -Dprefix=/artifacts/rootfs/mesa
76 - ninja -C mesa-build install
77 - du -sh /artifacts/rootfs/mesa/*
78 - rm -rf /artifacts/rootfs/mesa/include
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
87 - cp /artifacts/${KERNEL_IMAGE_NAME} /artifacts/*.dtb $CI_PROJECT_DIR/results/.
91 - src/gallium/drivers/panfrost/ci/generate_lava.py
92 --template src/gallium/drivers/panfrost/ci/lava-deqp.yml.jinja2
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
107 GCC_ARCH: "arm-linux-gnueabihf"
108 DEVICE_TYPE: "rk3288-veyron-jaq"
109 KERNEL_IMAGE_NAME: "zImage"
115 GCC_ARCH: "aarch64-linux-gnu"
116 DEVICE_TYPE: "rk3399-gru-kevin"
117 KERNEL_IMAGE_NAME: "Image"
123 image: $CI_REGISTRY_IMAGE:latest
125 - mkdir -p ~/.config/
128 uri: https://lava.collabora.co.uk/RPC2
130 username: jenkins-fdo
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
139 # FIXME: Remove flip-flops from comparison files
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
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
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"'
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