Clone of mesa.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

.gitlab-ci.yml 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. # This is the tag of the docker image used for the build jobs. If the
  2. # image doesn't exist yet, the containers stage generates it.
  3. #
  4. # In order to generate a new image, one should generally change the tag.
  5. # While removing the image from the registry would also work, that's not
  6. # recommended except for ephemeral images during development: Replacing
  7. # an image after a significant amount of time might pull in newer
  8. # versions of gcc/clang or other packages, which might break the build
  9. # with older commits using the same tag.
  10. #
  11. # After merging a change resulting in generating a new image to the
  12. # main repository, it's recommended to remove the image from the source
  13. # repository's container registry, so that the image from the main
  14. # repository's registry will be used there as well.
  15. variables:
  16. UPSTREAM_REPO: mesa/mesa
  17. DEBIAN_TAG: "2019-10-22"
  18. DEBIAN_ARM64_TAG: "arm64v8-2019-10-22"
  19. STRETCH_TAG: "2019-09-18"
  20. DEBIAN_VERSION: buster-slim
  21. STRETCH_VERSION: stretch-slim
  22. DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
  23. DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TAG"
  24. STRETCH_IMAGE: "$CI_REGISTRY_IMAGE/debian/$STRETCH_VERSION:$STRETCH_TAG"
  25. include:
  26. - project: 'wayland/ci-templates'
  27. ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c
  28. file: '/templates/debian.yml'
  29. include:
  30. - local: '/.gitlab-ci/lava-gitlab-ci.yml'
  31. stages:
  32. - container
  33. - build
  34. - test
  35. # When to automatically run the CI
  36. .ci-run-policy:
  37. only:
  38. - branches@mesa/mesa
  39. - merge_requests
  40. - /^ci([-/].*)?$/
  41. retry:
  42. max: 2
  43. when:
  44. - runner_system_failure
  45. .ci-deqp-artifacts:
  46. artifacts:
  47. when: always
  48. untracked: false
  49. paths:
  50. # Watch out! Artifacts are relative to the build dir.
  51. # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
  52. - artifacts
  53. # Build the normal CI native and cross-build docker images.
  54. .container:
  55. stage: container
  56. extends:
  57. - .ci-run-policy
  58. variables:
  59. # no need to pull the whole repo to build the container image
  60. GIT_STRATEGY: none
  61. debian-10:amd64:
  62. extends:
  63. - .debian@container-ifnot-exists
  64. - .container
  65. variables:
  66. DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
  67. .use-debian-10:amd64:
  68. image: $DEBIAN_IMAGE
  69. needs:
  70. - debian-10:amd64
  71. debian-9:amd64:
  72. extends: debian-10:amd64
  73. variables:
  74. DEBIAN_TAG: $STRETCH_TAG
  75. DEBIAN_VERSION: $STRETCH_VERSION
  76. DEBIAN_IMAGE: $STRETCH_IMAGE
  77. DEBIAN_EXEC: 'bash .gitlab-ci/debian-stretch-install.sh'
  78. .use-debian-9:amd64:
  79. image: $STRETCH_IMAGE
  80. needs:
  81. - debian-9:amd64
  82. debian-10:arm64:
  83. extends:
  84. - .debian@container-ifnot-exists@arm64v8
  85. - .container
  86. variables:
  87. DEBIAN_TAG: "$DEBIAN_ARM64_TAG"
  88. DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-install.sh'
  89. # BUILD
  90. # Shared between windows and Linux
  91. .build-common:
  92. extends: .ci-run-policy
  93. stage: build
  94. artifacts:
  95. when: always
  96. paths:
  97. - _build/meson-logs/*.txt
  98. # scons:
  99. - build/*/config.log
  100. - shader-db
  101. # Just Linux
  102. .build-linux:
  103. extends: .build-common
  104. cache:
  105. key: ${CI_JOB_NAME}
  106. paths:
  107. - ccache
  108. variables:
  109. CCACHE_COMPILERCHECK: "content"
  110. # Use ccache transparently, and print stats before/after
  111. before_script:
  112. - export PATH="/usr/lib/ccache:$PATH"
  113. - export CCACHE_BASEDIR="$PWD"
  114. - export CCACHE_DIR="$PWD/ccache"
  115. - ccache --max-size=1500M
  116. - ccache --zero-stats || true
  117. - ccache --show-stats || true
  118. after_script:
  119. # In case the install dir is being saved as artifacts, tar it up
  120. # so that symlinks and hardlinks aren't each packed separately in
  121. # the zip file.
  122. - if [ -d install ]; then
  123. tar -cf artifacts/install.tar install;
  124. fi
  125. - export CCACHE_DIR="$PWD/ccache"
  126. - ccache --show-stats
  127. .meson-build:
  128. extends:
  129. - .build-linux
  130. - .use-debian-10:amd64
  131. script:
  132. - .gitlab-ci/meson-build.sh
  133. .scons-build:
  134. extends:
  135. - .build-linux
  136. - .use-debian-10:amd64
  137. variables:
  138. SCONSFLAGS: "-j4"
  139. script:
  140. - .gitlab-ci/scons-build.sh
  141. meson-main:
  142. extends:
  143. - .meson-build
  144. - .ci-deqp-artifacts
  145. variables:
  146. UNWIND: "true"
  147. DRI_LOADERS: >
  148. -D glx=dri
  149. -D gbm=true
  150. -D egl=true
  151. -D platforms=x11,wayland,drm,surfaceless
  152. DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
  153. GALLIUM_ST: >
  154. -D dri3=true
  155. -D gallium-extra-hud=true
  156. -D gallium-vdpau=true
  157. -D gallium-xvmc=true
  158. -D gallium-omx=bellagio
  159. -D gallium-va=true
  160. -D gallium-xa=true
  161. -D gallium-nine=true
  162. -D gallium-opencl=disabled
  163. GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima"
  164. LLVM_VERSION: "7"
  165. EXTRA_OPTION: >
  166. -D osmesa=gallium
  167. -D tools=all
  168. MESON_SHADERDB: "true"
  169. BUILDTYPE: "debugoptimized"
  170. .meson-cross:
  171. extends:
  172. - .meson-build
  173. variables:
  174. UNWIND: "false"
  175. DRI_LOADERS: >
  176. -D glx=disabled
  177. -D gbm=false
  178. -D egl=true
  179. -D platforms=surfaceless
  180. -D osmesa=none
  181. GALLIUM_ST: >
  182. -D dri3=false
  183. -D gallium-vdpau=false
  184. -D gallium-xvmc=false
  185. -D gallium-omx=disabled
  186. -D gallium-va=false
  187. -D gallium-xa=false
  188. -D gallium-nine=false
  189. .meson-arm:
  190. extends: .meson-cross
  191. image: $DEBIAN_ARM64_IMAGE
  192. variables:
  193. VULKAN_DRIVERS: freedreno
  194. GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
  195. EXTRA_OPTION: >
  196. -D I-love-half-baked-turnips=true
  197. needs:
  198. - debian-10:arm64
  199. tags:
  200. - aarch64
  201. meson-armhf:
  202. extends: .meson-arm
  203. variables:
  204. CROSS: armhf
  205. LLVM_VERSION: "7"
  206. meson-arm64:
  207. extends:
  208. - .meson-arm
  209. - .ci-deqp-artifacts
  210. variables:
  211. BUILDTYPE: "debugoptimized"
  212. # NOTE: Building SWR is 2x (yes two) times slower than all the other
  213. # gallium drivers combined.
  214. # Start this early so that it doesn't limit the total run time.
  215. #
  216. # We also stick the glvnd build here, since we want non-glvnd in
  217. # meson-main for actual driver CI.
  218. meson-swr-glvnd:
  219. extends: .meson-build
  220. variables:
  221. UNWIND: "true"
  222. DRI_LOADERS: >
  223. -D glvnd=true
  224. -D egl=true
  225. GALLIUM_ST: >
  226. -D dri3=true
  227. -D gallium-vdpau=false
  228. -D gallium-xvmc=false
  229. -D gallium-omx=disabled
  230. -D gallium-va=false
  231. -D gallium-xa=false
  232. -D gallium-nine=false
  233. -D gallium-opencl=disabled
  234. GALLIUM_DRIVERS: "swr,iris"
  235. LLVM_VERSION: "6.0"
  236. meson-clang:
  237. extends: .meson-build
  238. variables:
  239. UNWIND: "true"
  240. DRI_DRIVERS: "auto"
  241. GALLIUM_DRIVERS: "auto"
  242. VULKAN_DRIVERS: intel,amd,freedreno
  243. CC: "ccache clang-8"
  244. CXX: "ccache clang++-8"
  245. scons-swr:
  246. extends: .scons-build
  247. variables:
  248. SCONS_TARGET: "swr=1"
  249. SCONS_CHECK_COMMAND: "true"
  250. LLVM_VERSION: "6.0"
  251. scons-win64:
  252. extends: .scons-build
  253. variables:
  254. SCONS_TARGET: platform=windows machine=x86_64
  255. SCONS_CHECK_COMMAND: "true"
  256. meson-clover:
  257. extends: .meson-build
  258. variables:
  259. UNWIND: "true"
  260. DRI_LOADERS: >
  261. -D glx=disabled
  262. -D egl=false
  263. -D gbm=false
  264. GALLIUM_ST: >
  265. -D dri3=false
  266. -D gallium-vdpau=false
  267. -D gallium-xvmc=false
  268. -D gallium-omx=disabled
  269. -D gallium-va=false
  270. -D gallium-xa=false
  271. -D gallium-nine=false
  272. -D gallium-opencl=icd
  273. script:
  274. - export GALLIUM_DRIVERS="r600,radeonsi"
  275. - .gitlab-ci/meson-build.sh
  276. - LLVM_VERSION=8 .gitlab-ci/meson-build.sh
  277. - export GALLIUM_DRIVERS="i915,r600"
  278. - LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh
  279. - LLVM_VERSION=7 .gitlab-ci/meson-build.sh
  280. meson-clover-old-llvm:
  281. extends:
  282. - meson-clover
  283. - .use-debian-9:amd64
  284. variables:
  285. UNWIND: "false"
  286. DRI_LOADERS: >
  287. -D glx=disabled
  288. -D egl=false
  289. -D gbm=false
  290. -D platforms=drm,surfaceless
  291. GALLIUM_DRIVERS: "i915,r600"
  292. script:
  293. - LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh
  294. - LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh
  295. - LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh
  296. meson-vulkan:
  297. extends: .meson-build
  298. variables:
  299. UNWIND: "false"
  300. DRI_LOADERS: >
  301. -D glx=disabled
  302. -D gbm=false
  303. -D egl=false
  304. -D platforms=x11,wayland,drm
  305. -D osmesa=none
  306. GALLIUM_ST: >
  307. -D dri3=true
  308. -D gallium-vdpau=false
  309. -D gallium-xvmc=false
  310. -D gallium-omx=disabled
  311. -D gallium-va=false
  312. -D gallium-xa=false
  313. -D gallium-nine=false
  314. -D gallium-opencl=disabled
  315. -D b_sanitize=undefined
  316. -D c_args=-fno-sanitize-recover=all
  317. -D cpp_args=-fno-sanitize-recover=all
  318. UBSAN_OPTIONS: "print_stacktrace=1"
  319. VULKAN_DRIVERS: intel,amd,freedreno
  320. LLVM_VERSION: "8"
  321. EXTRA_OPTION: >
  322. -D vulkan-overlay-layer=true
  323. # While the main point of this build is testing the i386 cross build,
  324. # we also use this one to test some other options that are exclusive
  325. # with meson-main's choices (classic swrast and osmesa)
  326. meson-i386:
  327. extends: .meson-cross
  328. variables:
  329. CROSS: i386
  330. VULKAN_DRIVERS: intel
  331. DRI_DRIVERS: "swrast"
  332. GALLIUM_DRIVERS: "iris"
  333. EXTRA_OPTION: >
  334. -D vulkan-overlay-layer=true
  335. -D llvm=false
  336. -D osmesa=classic
  337. meson-mingw32-x86_64:
  338. extends: .meson-build
  339. variables:
  340. UNWIND: "false"
  341. DRI_DRIVERS: ""
  342. GALLIUM_DRIVERS: "swrast"
  343. EXTRA_OPTION: >
  344. -Dllvm=false
  345. -Dosmesa=gallium
  346. --cross-file=.gitlab-ci/x86_64-w64-mingw32
  347. scons:
  348. extends: .scons-build
  349. variables:
  350. SCONS_TARGET: "llvm=1"
  351. SCONS_CHECK_COMMAND: "scons llvm=1 force_scons=1 check"
  352. script:
  353. - SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check force_scons=1" .gitlab-ci/scons-build.sh
  354. - LLVM_VERSION=6.0 .gitlab-ci/scons-build.sh
  355. - LLVM_VERSION=7 .gitlab-ci/scons-build.sh
  356. - LLVM_VERSION=8 .gitlab-ci/scons-build.sh
  357. scons-old-llvm:
  358. extends:
  359. - scons
  360. - .use-debian-9:amd64
  361. script:
  362. - LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh
  363. - LLVM_VERSION=4.0 .gitlab-ci/scons-build.sh
  364. - LLVM_VERSION=5.0 .gitlab-ci/scons-build.sh
  365. .test:
  366. extends: .ci-run-policy
  367. stage: test
  368. variables:
  369. GIT_STRATEGY: none # testing doesn't build anything from source
  370. .deqp-test:
  371. extends:
  372. - .test
  373. - .use-debian-10:amd64
  374. variables:
  375. DEQP_SKIPS: deqp-default-skips.txt
  376. script:
  377. # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
  378. - rm -rf install
  379. - tar -xf artifacts/install.tar
  380. - ./artifacts/deqp-runner.sh
  381. artifacts:
  382. when: on_failure
  383. name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
  384. paths:
  385. - results/
  386. dependencies:
  387. - meson-main
  388. needs:
  389. - meson-main
  390. - debian-10:amd64
  391. test-llvmpipe-gles2:
  392. parallel: 4
  393. variables:
  394. DEQP_VER: gles2
  395. DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
  396. LIBGL_ALWAYS_SOFTWARE: "true"
  397. DEQP_RENDERER_MATCH: "llvmpipe"
  398. extends: .deqp-test
  399. test-softpipe-gles2:
  400. extends: test-llvmpipe-gles2
  401. variables:
  402. DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
  403. DEQP_RENDERER_MATCH: "softpipe"
  404. GALLIUM_DRIVER: "softpipe"
  405. # The GLES2 CTS run takes about 8 minutes of CPU time, while GLES3 is
  406. # 25 minutes. Until we can get its runtime down, just do a partial
  407. # (every 10 tests) run.
  408. test-softpipe-gles3-limited:
  409. variables:
  410. DEQP_VER: gles3
  411. DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
  412. LIBGL_ALWAYS_SOFTWARE: "true"
  413. DEQP_RENDERER_MATCH: "softpipe"
  414. GALLIUM_DRIVER: "softpipe"
  415. CI_NODE_INDEX: 1
  416. CI_NODE_TOTAL: 10
  417. extends: .deqp-test
  418. arm64_a630_gles2:
  419. extends: .deqp-test
  420. image: $DEBIAN_ARM64_IMAGE
  421. variables:
  422. DEQP_VER: gles2
  423. DEQP_RENDERER_MATCH: "FD630"
  424. DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
  425. DEQP_SKIPS: deqp-freedreno-a630-skips.txt
  426. NIR_VALIDATE: 0
  427. tags:
  428. - mesa-cheza
  429. dependencies:
  430. - meson-arm64
  431. needs:
  432. - meson-arm64
  433. - debian-10:arm64
  434. arm64_a630_gles31:
  435. extends: arm64_a630_gles2
  436. parallel: 4
  437. variables:
  438. DEQP_VER: gles31
  439. arm64_a630_gles3:
  440. parallel: 6
  441. extends: arm64_a630_gles2
  442. variables:
  443. DEQP_VER: gles3
  444. arm64_a306_gles2:
  445. parallel: 4
  446. extends: arm64_a630_gles2
  447. variables:
  448. DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
  449. DEQP_SKIPS: deqp-default-skips.txt
  450. DEQP_RENDERER_MATCH: "FD307"
  451. tags:
  452. - db410c