Compare commits
524 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
60df95c6bd | ||
|
834d6c60db | ||
|
a883f756e4 | ||
|
6dc71ce3cc | ||
|
b92a4dff92 | ||
|
2a000ed782 | ||
|
0ec2f628d1 | ||
|
96f815aeab | ||
|
f46c17bb97 | ||
|
8ae081a57e | ||
|
4e10705200 | ||
|
f6469ac143 | ||
|
727a6a8cdd | ||
|
700099df4f | ||
|
136c3c79b3 | ||
|
ea5b52b100 | ||
|
0cf7c0c0ca | ||
|
ccd74e4ada | ||
|
38f5a2204c | ||
|
b55385ac60 | ||
|
d6a5e80e8a | ||
|
f9a5844445 | ||
|
1fb09613fc | ||
|
a13241d28b | ||
|
634f70ddbf | ||
|
b181a5bb8a | ||
|
367c38d1d3 | ||
|
bb3aa93e71 | ||
|
f348cd1430 | ||
|
09cce2b046 | ||
|
a4ee736861 | ||
|
b0f779acff | ||
|
f875097523 | ||
|
3a92f04d0e | ||
|
e0fcfe6ce1 | ||
|
832c111461 | ||
|
0bc268fc07 | ||
|
572848e361 | ||
|
6fa40b1643 | ||
|
2c47bbb08a | ||
|
5c22ee7220 | ||
|
eae6798a91 | ||
|
e09bd9fa6a | ||
|
aad527c3c3 | ||
|
aef6ffabf9 | ||
|
ab57f92ad0 | ||
|
5bc4e65532 | ||
|
7cbc780d9a | ||
|
69f86c43cf | ||
|
a5b82d2691 | ||
|
066969aa35 | ||
|
ba3f439505 | ||
|
80dcb7d4fd | ||
|
eb5eb5b26d | ||
|
864a8113e5 | ||
|
ded9b0a168 | ||
|
d3300c42b2 | ||
|
e529fd4e11 | ||
|
a1bdc43dd2 | ||
|
f4266d73b5 | ||
|
018e602dc6 | ||
|
82061efd48 | ||
|
5b4678c3bc | ||
|
618c883b8e | ||
|
52e70819b4 | ||
|
edbb6d405c | ||
|
47b22fdf7f | ||
|
72a90be2c8 | ||
|
ba87ab0543 | ||
|
371d75334c | ||
|
70f7f60f0c | ||
|
c62dc8e61e | ||
|
44e008e85e | ||
|
e644f9996b | ||
|
187f6a4c8e | ||
|
62c7e9a6ee | ||
|
43a76ec1bb | ||
|
456f07b845 | ||
|
25793cfe0e | ||
|
3f3e925d40 | ||
|
81a1ecda15 | ||
|
52b0ad8666 | ||
|
54bb87c25a | ||
|
b85502603f | ||
|
4fce4ce271 | ||
|
996cd238b8 | ||
|
b31ccc62ab | ||
|
e3e4477fed | ||
|
dfd6753058 | ||
|
aa0f85ee86 | ||
|
c2d9f33f2c | ||
|
a3dc1060dd | ||
|
6100cd7170 | ||
|
bdee70d473 | ||
|
c86696577e | ||
|
b0f793ccc4 | ||
|
a1e6128565 | ||
|
00d96f51e1 | ||
|
58afecdbba | ||
|
81a12778f5 | ||
|
35e9910c20 | ||
|
98d54d0c95 | ||
|
3ba481ba48 | ||
|
75ce282ee2 | ||
|
37e61310e3 | ||
|
baf8c7b1c4 | ||
|
313fc5331d | ||
|
e4db525e82 | ||
|
ed594f19d7 | ||
|
4e993fc542 | ||
|
e05ea17c50 | ||
|
774e77ab64 | ||
|
c968de1989 | ||
|
8aa358bd69 | ||
|
9f8925702d | ||
|
ad07debbd9 | ||
|
0cfd8879b1 | ||
|
1c3dcd3aa4 | ||
|
894953dae6 | ||
|
9e164c6aa9 | ||
|
7056362f8d | ||
|
2766ed0d45 | ||
|
3d48433078 | ||
|
b15f1cb4df | ||
|
7ba75506cc | ||
|
b84abbfff7 | ||
|
4d27d9cb26 | ||
|
eb880dfba7 | ||
|
4e4f8479a8 | ||
|
4cb6acb623 | ||
|
2ac59aa824 | ||
|
58e9060fb0 | ||
|
18a1b73ce2 | ||
|
1b0beffb62 | ||
|
bfaf401d6b | ||
|
3668a143a4 | ||
|
06d163509d | ||
|
7294493335 | ||
|
3b6096d560 | ||
|
270e7476c8 | ||
|
d7066ec442 | ||
|
1b55deeacd | ||
|
5ae901ee87 | ||
|
84e6e92236 | ||
|
231e8ab401 | ||
|
f6731bdf5d | ||
|
5b22824adb | ||
|
42eeba9153 | ||
|
135feefc5c | ||
|
0d5975a0e4 | ||
|
90d4e71bad | ||
|
14fe6b1da2 | ||
|
d0f26ad05e | ||
|
d0e3c153a9 | ||
|
a50cb9a094 | ||
|
28ae1aac86 | ||
|
ce731e1146 | ||
|
4bfe327622 | ||
|
8628d73caf | ||
|
c3cc395f7b | ||
|
f28a9b2bf9 | ||
|
3a9c5afe13 | ||
|
4a6822864b | ||
|
e96b03037c | ||
|
1bc70bcc75 | ||
|
a488340bd1 | ||
|
57bf8e1cd8 | ||
|
e0951c67f4 | ||
|
9c8ffdad91 | ||
|
891d1f8fea | ||
|
ca17d32544 | ||
|
29e816b9f2 | ||
|
6e41999f94 | ||
|
2bd9d289c0 | ||
|
0a0289d73d | ||
|
dd241abbe0 | ||
|
31b10d2883 | ||
|
53f0946e9e | ||
|
2bef62d6b7 | ||
|
4b21754073 | ||
|
68ebae30df | ||
|
fc41e3b74a | ||
|
a1cb12b0a3 | ||
|
ff04dfc28a | ||
|
5835f4f4c6 | ||
|
6f99597591 | ||
|
a41812c1e3 | ||
|
2542ddd4dc | ||
|
3a8cc82fef | ||
|
8164345b77 | ||
|
8d0fa95bf2 | ||
|
82aff6ad18 | ||
|
729b999e35 | ||
|
759d84177e | ||
|
c36c8ec528 | ||
|
7bcb63457b | ||
|
7fc94625cc | ||
|
9e0ef93691 | ||
|
914a26d549 | ||
|
c6e841667f | ||
|
49b5da785f | ||
|
401c37f500 | ||
|
d856e97d92 | ||
|
7bd9eccbfe | ||
|
e1842e8acb | ||
|
e9f0179221 | ||
|
1d4d3f88c6 | ||
|
1a972ddd94 | ||
|
056681e5a1 | ||
|
2711a13a4f | ||
|
9b4970b035 | ||
|
fb5fc8d7ee | ||
|
387e0e12a9 | ||
|
8db6b83267 | ||
|
c50ed4cade | ||
|
b5b4ef577b | ||
|
5c91fcfad8 | ||
|
ea3f94b555 | ||
|
cc2a62991a | ||
|
5b8b891a45 | ||
|
70d5ca0363 | ||
|
cfba0e166a | ||
|
1492237b74 | ||
|
b17bd63229 | ||
|
5a24aa8c55 | ||
|
e60d010ef4 | ||
|
9bb0350752 | ||
|
03a0fdbdea | ||
|
02b5d52bc3 | ||
|
0069a613ac | ||
|
b7ad1fc50b | ||
|
2cce0c2971 | ||
|
065643fe67 | ||
|
f47380a530 | ||
|
8943444b03 | ||
|
8d5debbcc6 | ||
|
c2ed693501 | ||
|
f9c7c9f48a | ||
|
3700dc5f97 | ||
|
e8eb5e80f1 | ||
|
62cbd6d1dd | ||
|
84f756994f | ||
|
940e50f754 | ||
|
8b7ba85705 | ||
|
ccf9de7a59 | ||
|
4c2da8e40d | ||
|
352263385b | ||
|
9eadeb7964 | ||
|
c56792f758 | ||
|
bf425b48ea | ||
|
83c15002fb | ||
|
a49cad4896 | ||
|
0d8ed99411 | ||
|
6e9b965e4e | ||
|
f174362ce7 | ||
|
365c326861 | ||
|
6af4b0fdf3 | ||
|
b53e528e18 | ||
|
527cbf088e | ||
|
6227edd978 | ||
|
fae8aeae44 | ||
|
604304d528 | ||
|
7872aae4b7 | ||
|
acd0a0a926 | ||
|
1ef236050c | ||
|
f1d6d6bb1b | ||
|
e8368dbd6b | ||
|
c0f7d34247 | ||
|
e3a2ff07e7 | ||
|
0889282a7d | ||
|
d0201078d5 | ||
|
3ec9e03501 | ||
|
175b0442df | ||
|
7d4dcbcad9 | ||
|
ea294dd259 | ||
|
1161debb60 | ||
|
6e7d5532f3 | ||
|
3427a2e52e | ||
|
8714f8da9d | ||
|
decd6b4c34 | ||
|
f60875e211 | ||
|
5ab872d64a | ||
|
9bc4ee1c8e | ||
|
b708c2961e | ||
|
538975fdf8 | ||
|
3734a7de6c | ||
|
423dab9d32 | ||
|
18fd7249c5 | ||
|
f66de22af4 | ||
|
8bd7d8c042 | ||
|
ffb46c8826 | ||
|
c8226d3782 | ||
|
6f062ba893 | ||
|
891dafc8e7 | ||
|
2a7279fa8f | ||
|
ae960d7dee | ||
|
3a193c009b | ||
|
4889bb6af3 | ||
|
845c238ce2 | ||
|
67acca073a | ||
|
7b10ed6a12 | ||
|
5a8d7ef65a | ||
|
98564569d0 | ||
|
6348a02e27 | ||
|
c24bdf046e | ||
|
15b5e5996a | ||
|
8cfaa8ad66 | ||
|
4908b1e909 | ||
|
97f6404e50 | ||
|
eada8963c1 | ||
|
ae55ab84b5 | ||
|
57cdaa3dcc | ||
|
2c23389922 | ||
|
f967ae7b3f | ||
|
de8ebbcf1e | ||
|
2562b3252b | ||
|
86a8854b11 | ||
|
0f042901e3 | ||
|
15bc6d4d21 | ||
|
0aa1e6acde | ||
|
b7b3c0fce7 | ||
|
eab4a503a0 | ||
|
c31e814a85 | ||
|
7a636d8ff1 | ||
|
b3e48a07c0 | ||
|
e391144853 | ||
|
dbadd06632 | ||
|
07867f72cf | ||
|
9299466b83 | ||
|
103ec6e231 | ||
|
f1d487f4f0 | ||
|
57b38cc077 | ||
|
ca8481c41c | ||
|
5b81c0524b | ||
|
ed38bcedfb | ||
|
012c198bb7 | ||
|
1534330eba | ||
|
580a2e6c15 | ||
|
ce2b96dd8b | ||
|
e4c4b86f70 | ||
|
da7bde9d9a | ||
|
7e9129f487 | ||
|
d6d334c5fb | ||
|
4af9c15052 | ||
|
007611b3c0 | ||
|
39c70f902c | ||
|
af08c1672e | ||
|
2f8ede04d9 | ||
|
e064f7d826 | ||
|
deecf2a49a | ||
|
fafa17bd19 | ||
|
667ec77634 | ||
|
207dd2e9e6 | ||
|
c5b1b05e1c | ||
|
cfa6a8bb50 | ||
|
22ba39352d | ||
|
f7b6b34aae | ||
|
112e732867 | ||
|
637a5d58b0 | ||
|
1f88c3c0cb | ||
|
3bcbf4d1d5 | ||
|
114a4a99bd | ||
|
9b44f3fa95 | ||
|
1e8e12e09c | ||
|
023b1da8c0 | ||
|
15fc135cda | ||
|
60297c97cd | ||
|
4c0010e93c | ||
|
5e2a985a54 | ||
|
a0f311a588 | ||
|
1d89787a19 | ||
|
29dc0b2d8c | ||
|
76362188cc | ||
|
817f9982d5 | ||
|
2ebf5e5aa5 | ||
|
013433b3d9 | ||
|
0dbab1e0f7 | ||
|
7cd7f0bfe4 | ||
|
260dac8447 | ||
|
36dd525569 | ||
|
092c485b8e | ||
|
ca0a148a4d | ||
|
0eaf422957 | ||
|
4da22e2b68 | ||
|
88309a985a | ||
|
3922a43bf2 | ||
|
832f6b4543 | ||
|
b6f92084bd | ||
|
50cd4e37d9 | ||
|
6e977a358f | ||
|
e0df523795 | ||
|
6199b3d485 | ||
|
6c5bcc6473 | ||
|
15338b0d19 | ||
|
700dcb9ab4 | ||
|
81bdf59610 | ||
|
68e64d92bc | ||
|
364048cf42 | ||
|
72a8fd8d50 | ||
|
5cace16ac6 | ||
|
d6439cb297 | ||
|
0e4c34b347 | ||
|
f56fff79e7 | ||
|
70cbcb2d39 | ||
|
5755f40874 | ||
|
085efa0261 | ||
|
2401051b16 | ||
|
4b14ad64d0 | ||
|
bcd09ef32e | ||
|
6123a076d0 | ||
|
691d42700b | ||
|
f36cd7fc57 | ||
|
c006ced2c9 | ||
|
5c9b59de8b | ||
|
b7d7458b9a | ||
|
e39c07dbdf | ||
|
3b9b7a1342 | ||
|
054a27c508 | ||
|
1b3704c22d | ||
|
ad3b5b7f5f | ||
|
35ec26bb00 | ||
|
424bf46f27 | ||
|
806f802e7b | ||
|
15a38605fc | ||
|
0831cc7c2f | ||
|
43678114c7 | ||
|
072b1f5270 | ||
|
bd79ce4356 | ||
|
0640bae86c | ||
|
9b808c5748 | ||
|
9105e36765 | ||
|
e1678159b1 | ||
|
da13cc7e4b | ||
|
3db01cd4e7 | ||
|
396f9ae52f | ||
|
0eaab97f21 | ||
|
b0394dfe2f | ||
|
639481e340 | ||
|
ee0254a12f | ||
|
5b7cc779d2 | ||
|
ae9a2c1fc4 | ||
|
64b98a1e72 | ||
|
7bbece985e | ||
|
929ae9581c | ||
|
d4c08bc8c1 | ||
|
cd284ce928 | ||
|
e972294b8e | ||
|
5ef17d6854 | ||
|
1a23aff6b7 | ||
|
9a226fa669 | ||
|
41dfe1f275 | ||
|
ba6cb5d97a | ||
|
7e4b3aec9f | ||
|
124e7b3bc8 | ||
|
5c43c3fc73 | ||
|
0bd957be11 | ||
|
4ad2c57c26 | ||
|
14bbc51e6d | ||
|
caa6baa688 | ||
|
56922e8f33 | ||
|
6c96e750f1 | ||
|
ca357be5aa | ||
|
e702379663 | ||
|
ff27a47807 | ||
|
63d75fbfe3 | ||
|
cabca7185b | ||
|
8020ce02fc | ||
|
7b4b055a24 | ||
|
72e52fa7c8 | ||
|
6ca6d53e1c | ||
|
5f88ebaf5c | ||
|
f068a360cd | ||
|
e7cafd09ba | ||
|
f76068b879 | ||
|
ef6da453f0 | ||
|
5b4bff2ddb | ||
|
667cb4bc9e | ||
|
3f0b544745 | ||
|
27d4beb2e1 | ||
|
5e8e015db3 | ||
|
135615caa0 | ||
|
2acd78cfab | ||
|
642228ceaf | ||
|
12e7ec2c05 | ||
|
f2d91f2065 | ||
|
9a97d9081d | ||
|
a720963140 | ||
|
3f0740e87c | ||
|
2609ac2b5a | ||
|
3597829605 | ||
|
505e7cd232 | ||
|
791f0fb429 | ||
|
f1fe2b30b1 | ||
|
ee36cbe219 | ||
|
2cd07c39cc | ||
|
76f046add3 | ||
|
328afc7e86 | ||
|
77345993ec | ||
|
f2673a0f40 | ||
|
b38423210e | ||
|
ba6fd491a1 | ||
|
36f6fc59cb | ||
|
2bf79cb2f1 | ||
|
fb6379697b | ||
|
0948e113d2 | ||
|
f61c453cfc | ||
|
612fc14aab | ||
|
8aa9aa6a5f | ||
|
10ff4b49dc | ||
|
3d40db7892 | ||
|
99da9dfd95 | ||
|
fcbb263f8c | ||
|
29fa5b6e1c | ||
|
4e7e903bb3 | ||
|
26949e872b | ||
|
2cc119c35a | ||
|
6abdbd8b10 | ||
|
24c05c57e4 | ||
|
7ae90b4f65 | ||
|
0f2ac6ded8 | ||
|
bea2c4b88f | ||
|
ed846b4c78 | ||
|
8c69adf9a9 | ||
|
47dd2544e1 |
@@ -1,66 +0,0 @@
|
|||||||
goto %1
|
|
||||||
|
|
||||||
:install
|
|
||||||
rem Check pip
|
|
||||||
if "%buildsystem%" == "scons" (
|
|
||||||
python --version
|
|
||||||
python -m pip --version
|
|
||||||
rem Install Mako
|
|
||||||
python -m pip install Mako==1.0.7
|
|
||||||
rem Install pywin32 extensions, needed by SCons
|
|
||||||
python -m pip install pypiwin32
|
|
||||||
rem Install python wheels, necessary to install SCons via pip
|
|
||||||
python -m pip install wheel
|
|
||||||
rem Install SCons
|
|
||||||
python -m pip install scons==3.0.1
|
|
||||||
call scons --version
|
|
||||||
) else (
|
|
||||||
python --version
|
|
||||||
python -m pip install Mako meson
|
|
||||||
meson --version
|
|
||||||
|
|
||||||
rem Install pkg-config, which meson requires even on windows
|
|
||||||
cinst -y pkgconfiglite
|
|
||||||
)
|
|
||||||
|
|
||||||
rem Install flex/bison
|
|
||||||
set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip
|
|
||||||
if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%"
|
|
||||||
7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
|
|
||||||
set Path=%CD%\winflexbison;%Path%
|
|
||||||
win_flex --version
|
|
||||||
win_bison --version
|
|
||||||
rem Download and extract LLVM
|
|
||||||
if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%"
|
|
||||||
7z x -y "%LLVM_ARCHIVE%" > nul
|
|
||||||
if "%buildsystem%" == "scons" (
|
|
||||||
mkdir llvm\bin
|
|
||||||
set LLVM=%CD%\llvm
|
|
||||||
) else (
|
|
||||||
move llvm subprojects\
|
|
||||||
copy .appveyor\llvm-wrap.meson subprojects\llvm\meson.build
|
|
||||||
)
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:build_script
|
|
||||||
if "%buildsystem%" == "scons" (
|
|
||||||
call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1
|
|
||||||
) else (
|
|
||||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=x86
|
|
||||||
rem We use default-library as static to affect any wraps (such as expat and zlib)
|
|
||||||
rem it would be better if we could set subprojects buildtype independently,
|
|
||||||
rem but I haven't written that patch yet :)
|
|
||||||
call meson builddir --backend=vs2017 --default-library=static -Dbuild-tests=true -Db_vscrt=mtd --buildtype=release -Dllvm=true -Dgallium-drivers=swrast -Dosmesa=gallium
|
|
||||||
pushd builddir
|
|
||||||
call msbuild mesa.sln /m
|
|
||||||
popd
|
|
||||||
)
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:test_script
|
|
||||||
if "%buildsystem%" == "scons" (
|
|
||||||
call scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check
|
|
||||||
) else (
|
|
||||||
call meson test -C builddir
|
|
||||||
)
|
|
||||||
goto :eof
|
|
@@ -1,36 +0,0 @@
|
|||||||
# A meson.build file for binary wrapping the LLVM used in the appvyeor CI
|
|
||||||
project('llvm', ['cpp'])
|
|
||||||
|
|
||||||
cpp = meson.get_compiler('cpp')
|
|
||||||
|
|
||||||
_deps = []
|
|
||||||
_search = join_paths(meson.current_source_dir(), 'lib')
|
|
||||||
foreach d : ['LLVMAnalysis', 'LLVMAsmParser', 'LLVMAsmPrinter',
|
|
||||||
'LLVMBinaryFormat', 'LLVMBitReader', 'LLVMBitWriter',
|
|
||||||
'LLVMCodeGen', 'LLVMCore', 'LLVMCoroutines', 'LLVMCoverage',
|
|
||||||
'LLVMDebugInfoCodeView', 'LLVMDebugInfoDWARF',
|
|
||||||
'LLVMDebugInfoMSF', 'LLVMDebugInfoPDB', 'LLVMDemangle',
|
|
||||||
'LLVMDlltoolDriver', 'LLVMExecutionEngine', 'LLVMGlobalISel',
|
|
||||||
'LLVMInstCombine', 'LLVMInstrumentation', 'LLVMInterpreter',
|
|
||||||
'LLVMipo', 'LLVMIRReader', 'LLVMLibDriver', 'LLVMLineEditor',
|
|
||||||
'LLVMLinker', 'LLVMLTO', 'LLVMMCDisassembler', 'LLVMMCJIT',
|
|
||||||
'LLVMMC', 'LLVMMCParser', 'LLVMMIRParser', 'LLVMObjCARCOpts',
|
|
||||||
'LLVMObject', 'LLVMObjectYAML', 'LLVMOption', 'LLVMOrcJIT',
|
|
||||||
'LLVMPasses', 'LLVMProfileData', 'LLVMRuntimeDyld',
|
|
||||||
'LLVMScalarOpts', 'LLVMSelectionDAG', 'LLVMSupport',
|
|
||||||
'LLVMSymbolize', 'LLVMTableGen', 'LLVMTarget',
|
|
||||||
'LLVMTransformUtils', 'LLVMVectorize', 'LLVMX86AsmParser',
|
|
||||||
'LLVMX86AsmPrinter', 'LLVMX86CodeGen', 'LLVMX86Desc',
|
|
||||||
'LLVMX86Disassembler', 'LLVMX86Info', 'LLVMX86Utils',
|
|
||||||
'LLVMXRay']
|
|
||||||
_deps += cpp.find_library(d, dirs : _search)
|
|
||||||
endforeach
|
|
||||||
|
|
||||||
dep_llvm = declare_dependency(
|
|
||||||
include_directories : include_directories('include'),
|
|
||||||
dependencies : _deps,
|
|
||||||
version : '5.0.1',
|
|
||||||
)
|
|
||||||
|
|
||||||
has_rtti = false
|
|
||||||
irbuilder_h = files('include/llvm/IR/IRBuilder.h')
|
|
@@ -11,7 +11,6 @@ tab_width = 8
|
|||||||
[*.{c,h,cpp,hpp,cc,hh}]
|
[*.{c,h,cpp,hpp,cc,hh}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 3
|
indent_size = 3
|
||||||
max_line_length = 78
|
|
||||||
|
|
||||||
[{Makefile*,*.mk}]
|
[{Makefile*,*.mk}]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
@@ -32,13 +31,5 @@ indent_size = 2
|
|||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
[*.html]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[*.patch]
|
[*.patch]
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
[{meson.build,meson_options.txt}]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
|
4
.gitattributes
vendored
Normal file
4
.gitattributes
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
*.dsp -crlf
|
||||||
|
*.dsw -crlf
|
||||||
|
*.sln -crlf
|
||||||
|
*.vcproj -crlf
|
50
.gitignore
vendored
50
.gitignore
vendored
@@ -1,4 +1,52 @@
|
|||||||
|
*.a
|
||||||
|
*.dll
|
||||||
|
*.exe
|
||||||
|
*.ilk
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
*.log
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.os
|
||||||
|
*.pc
|
||||||
|
*.pdb
|
||||||
*.pyc
|
*.pyc
|
||||||
*.pyo
|
*.pyo
|
||||||
*.out
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.sw[a-z]
|
||||||
|
*.tar
|
||||||
|
*.tar.bz2
|
||||||
|
*.tar.gz
|
||||||
|
*.tar.xz
|
||||||
|
*.trs
|
||||||
|
*.zip
|
||||||
|
*~
|
||||||
|
depend
|
||||||
|
depend.bak
|
||||||
|
bin/ltmain.sh
|
||||||
|
lib
|
||||||
|
lib64
|
||||||
|
configure
|
||||||
|
configure.lineno
|
||||||
|
autom4te.cache
|
||||||
|
aclocal.m4
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
cscope*
|
||||||
|
tags
|
||||||
|
.scon*
|
||||||
|
config.py
|
||||||
build
|
build
|
||||||
|
libtool
|
||||||
|
manifest.txt
|
||||||
|
.dir-locals.el
|
||||||
|
.deps/
|
||||||
|
.dirstamp
|
||||||
|
.libs/
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
.install-mesa-links
|
||||||
|
.install-gallium-links
|
||||||
|
/src/git_sha1.h
|
||||||
|
TAGS
|
||||||
|
704
.gitlab-ci.yml
704
.gitlab-ci.yml
@@ -1,704 +0,0 @@
|
|||||||
variables:
|
|
||||||
UPSTREAM_REPO: mesa/mesa
|
|
||||||
|
|
||||||
include:
|
|
||||||
- project: 'wayland/ci-templates'
|
|
||||||
# Must be the same as in .gitlab-ci/lava-gitlab-ci.yml
|
|
||||||
ref: 0a9bdd33a98f05af6761ab118b5074952242aab0
|
|
||||||
file: '/templates/debian.yml'
|
|
||||||
- local: '.gitlab-ci/lava-gitlab-ci.yml'
|
|
||||||
|
|
||||||
stages:
|
|
||||||
- container
|
|
||||||
- build
|
|
||||||
- test
|
|
||||||
- success
|
|
||||||
|
|
||||||
|
|
||||||
# When to automatically run the CI
|
|
||||||
.ci-run-policy:
|
|
||||||
rules:
|
|
||||||
# Run pipeline by default for merge requests changing files affecting it
|
|
||||||
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
|
|
||||||
changes: &paths
|
|
||||||
- VERSION
|
|
||||||
- bin/**/*
|
|
||||||
# GitLab CI
|
|
||||||
- .gitlab-ci.yml
|
|
||||||
- .gitlab-ci/**/*
|
|
||||||
# Meson
|
|
||||||
- meson*
|
|
||||||
- build-support/**/*
|
|
||||||
- subprojects/**/*
|
|
||||||
# SCons
|
|
||||||
- SConstruct
|
|
||||||
- scons/**/*
|
|
||||||
- common.py
|
|
||||||
# Source code
|
|
||||||
- include/**/*
|
|
||||||
- src/**/*
|
|
||||||
when: on_success
|
|
||||||
# Run pipeline by default in the main project if files affecting it were
|
|
||||||
# changed
|
|
||||||
- if: '$CI_PROJECT_PATH == "mesa/mesa"'
|
|
||||||
changes:
|
|
||||||
*paths
|
|
||||||
when: on_success
|
|
||||||
# Allow triggering jobs manually on branches of forked projects
|
|
||||||
- if: '$CI_PROJECT_PATH != "mesa/mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
|
|
||||||
when: manual
|
|
||||||
# Otherwise, most jobs won't run
|
|
||||||
- when: never
|
|
||||||
retry:
|
|
||||||
max: 2
|
|
||||||
when:
|
|
||||||
- runner_system_failure
|
|
||||||
# Cancel CI run if a newer commit is pushed to the same branch
|
|
||||||
interruptible: true
|
|
||||||
|
|
||||||
success:
|
|
||||||
stage: success
|
|
||||||
image: debian:stable-slim
|
|
||||||
only:
|
|
||||||
- merge_requests
|
|
||||||
except:
|
|
||||||
changes:
|
|
||||||
*paths
|
|
||||||
variables:
|
|
||||||
GIT_STRATEGY: none
|
|
||||||
script:
|
|
||||||
- echo "Dummy job to make sure every merge request pipeline runs at least one job"
|
|
||||||
|
|
||||||
|
|
||||||
.ci-deqp-artifacts:
|
|
||||||
artifacts:
|
|
||||||
when: always
|
|
||||||
untracked: false
|
|
||||||
paths:
|
|
||||||
# Watch out! Artifacts are relative to the build dir.
|
|
||||||
# https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
|
|
||||||
- artifacts
|
|
||||||
|
|
||||||
# Build the CI docker images.
|
|
||||||
#
|
|
||||||
# DEBIAN_TAG is the tag of the docker image used by later stage jobs. If the
|
|
||||||
# image doesn't exist yet, the container stage job generates it.
|
|
||||||
#
|
|
||||||
# In order to generate a new image, one should generally change the tag.
|
|
||||||
# While removing the image from the registry would also work, that's not
|
|
||||||
# recommended except for ephemeral images during development: Replacing
|
|
||||||
# an image after a significant amount of time might pull in newer
|
|
||||||
# versions of gcc/clang or other packages, which might break the build
|
|
||||||
# with older commits using the same tag.
|
|
||||||
#
|
|
||||||
# After merging a change resulting in generating a new image to the
|
|
||||||
# main repository, it's recommended to remove the image from the source
|
|
||||||
# repository's container registry, so that the image from the main
|
|
||||||
# repository's registry will be used there as well.
|
|
||||||
|
|
||||||
.container:
|
|
||||||
stage: container
|
|
||||||
extends:
|
|
||||||
- .ci-run-policy
|
|
||||||
variables:
|
|
||||||
DEBIAN_VERSION: buster-slim
|
|
||||||
REPO_SUFFIX: $CI_JOB_NAME
|
|
||||||
DEBIAN_EXEC: 'bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
|
|
||||||
# no need to pull the whole repo to build the container image
|
|
||||||
GIT_STRATEGY: none
|
|
||||||
|
|
||||||
# Debian 10 based x86 build image
|
|
||||||
x86_build:
|
|
||||||
extends:
|
|
||||||
- .debian@container-ifnot-exists
|
|
||||||
- .container
|
|
||||||
variables:
|
|
||||||
DEBIAN_TAG: &x86_build "2020-01-14"
|
|
||||||
|
|
||||||
.use-x86_build:
|
|
||||||
variables:
|
|
||||||
TAG: *x86_build
|
|
||||||
image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
|
|
||||||
needs:
|
|
||||||
- x86_build
|
|
||||||
|
|
||||||
# Debian 10 based x86 test image for GL
|
|
||||||
x86_test-gl:
|
|
||||||
extends: x86_build
|
|
||||||
variables:
|
|
||||||
DEBIAN_TAG: &x86_test-gl "2020-01-14"
|
|
||||||
|
|
||||||
# Debian 10 based x86 test image for VK
|
|
||||||
x86_test-vk:
|
|
||||||
extends: x86_build
|
|
||||||
variables:
|
|
||||||
DEBIAN_TAG: &x86_test-vk "2020-01-14"
|
|
||||||
# Can only be triggered manually on personal branches because RADV is the only
|
|
||||||
# driver that does Vulkan testing at the moment.
|
|
||||||
rules:
|
|
||||||
# Never build the test image for VK by default in the main project.
|
|
||||||
- if: '$CI_PROJECT_PATH == "mesa/mesa"'
|
|
||||||
when: never
|
|
||||||
# Never build the test image for VK by default for merge requests.
|
|
||||||
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
|
|
||||||
when: never
|
|
||||||
# Otherwise, allow building it manually for personal branches.
|
|
||||||
- when: manual
|
|
||||||
|
|
||||||
|
|
||||||
# Debian 9 based x86 build image (old LLVM)
|
|
||||||
x86_build_old:
|
|
||||||
extends: x86_build
|
|
||||||
variables:
|
|
||||||
DEBIAN_TAG: &x86_build_old "2019-09-18"
|
|
||||||
DEBIAN_VERSION: stretch-slim
|
|
||||||
|
|
||||||
.use-x86_build_old:
|
|
||||||
variables:
|
|
||||||
TAG: *x86_build_old
|
|
||||||
image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:$TAG"
|
|
||||||
needs:
|
|
||||||
- x86_build_old
|
|
||||||
|
|
||||||
# Debian 10 based ARM build image
|
|
||||||
arm_build:
|
|
||||||
extends:
|
|
||||||
- .debian@container-ifnot-exists@arm64v8
|
|
||||||
- .container
|
|
||||||
variables:
|
|
||||||
DEBIAN_TAG: &arm_build "2020-04-06"
|
|
||||||
|
|
||||||
.use-arm_build:
|
|
||||||
variables:
|
|
||||||
TAG: *arm_build
|
|
||||||
image: "$CI_REGISTRY_IMAGE/debian/arm_build:$TAG"
|
|
||||||
needs:
|
|
||||||
- arm_build
|
|
||||||
|
|
||||||
# Debian 10 based ARM test image
|
|
||||||
arm_test:
|
|
||||||
extends: arm_build
|
|
||||||
variables:
|
|
||||||
DEBIAN_TAG: &arm_test "2019-12-18"
|
|
||||||
|
|
||||||
.use-arm_test:
|
|
||||||
variables:
|
|
||||||
TAG: *arm_test
|
|
||||||
image: "$CI_REGISTRY_IMAGE/debian/arm_test:$TAG"
|
|
||||||
needs:
|
|
||||||
- meson-arm64
|
|
||||||
- arm_test
|
|
||||||
|
|
||||||
|
|
||||||
# BUILD
|
|
||||||
|
|
||||||
# Shared between windows and Linux
|
|
||||||
.build-common:
|
|
||||||
extends: .ci-run-policy
|
|
||||||
stage: build
|
|
||||||
artifacts:
|
|
||||||
when: always
|
|
||||||
paths:
|
|
||||||
- _build/meson-logs/*.txt
|
|
||||||
# scons:
|
|
||||||
- build/*/config.log
|
|
||||||
- shader-db
|
|
||||||
|
|
||||||
# Just Linux
|
|
||||||
.build-linux:
|
|
||||||
extends: .build-common
|
|
||||||
variables:
|
|
||||||
CCACHE_COMPILERCHECK: "content"
|
|
||||||
CCACHE_COMPRESS: "true"
|
|
||||||
CCACHE_DIR: /cache/mesa/ccache
|
|
||||||
# Use ccache transparently, and print stats before/after
|
|
||||||
before_script:
|
|
||||||
- export PATH="/usr/lib/ccache:$PATH"
|
|
||||||
- export CCACHE_BASEDIR="$PWD"
|
|
||||||
- ccache --show-stats
|
|
||||||
after_script:
|
|
||||||
- ccache --show-stats
|
|
||||||
|
|
||||||
.build-windows:
|
|
||||||
extends: .build-common
|
|
||||||
tags:
|
|
||||||
- mesa-windows
|
|
||||||
cache:
|
|
||||||
key: ${CI_JOB_NAME}
|
|
||||||
paths:
|
|
||||||
- subprojects/packagecache
|
|
||||||
|
|
||||||
.meson-build:
|
|
||||||
extends:
|
|
||||||
- .build-linux
|
|
||||||
- .use-x86_build
|
|
||||||
variables:
|
|
||||||
LLVM_VERSION: 9
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
|
|
||||||
.scons-build:
|
|
||||||
extends:
|
|
||||||
- .build-linux
|
|
||||||
- .use-x86_build
|
|
||||||
variables:
|
|
||||||
SCONSFLAGS: "-j4"
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/scons-build.sh
|
|
||||||
|
|
||||||
meson-testing:
|
|
||||||
extends:
|
|
||||||
- .meson-build
|
|
||||||
- .ci-deqp-artifacts
|
|
||||||
variables:
|
|
||||||
UNWIND: "true"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glx=dri
|
|
||||||
-D gbm=true
|
|
||||||
-D egl=true
|
|
||||||
-D platforms=x11,drm,surfaceless
|
|
||||||
GALLIUM_ST: >
|
|
||||||
-D dri3=true
|
|
||||||
GALLIUM_DRIVERS: "swrast"
|
|
||||||
VULKAN_DRIVERS: amd
|
|
||||||
BUILDTYPE: "debugoptimized"
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
- .gitlab-ci/prepare-artifacts.sh
|
|
||||||
|
|
||||||
meson-main:
|
|
||||||
extends: .meson-build
|
|
||||||
variables:
|
|
||||||
UNWIND: "true"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glx=dri
|
|
||||||
-D gbm=true
|
|
||||||
-D egl=true
|
|
||||||
-D platforms=x11,wayland,drm,surfaceless
|
|
||||||
DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
|
|
||||||
GALLIUM_ST: >
|
|
||||||
-D dri3=true
|
|
||||||
-D gallium-extra-hud=true
|
|
||||||
-D gallium-vdpau=true
|
|
||||||
-D gallium-xvmc=true
|
|
||||||
-D gallium-omx=bellagio
|
|
||||||
-D gallium-va=true
|
|
||||||
-D gallium-xa=true
|
|
||||||
-D gallium-nine=true
|
|
||||||
-D gallium-opencl=disabled
|
|
||||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-D osmesa=gallium
|
|
||||||
-D tools=all
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
- .gitlab-ci/run-shader-db.sh
|
|
||||||
|
|
||||||
.meson-cross:
|
|
||||||
extends:
|
|
||||||
- .meson-build
|
|
||||||
variables:
|
|
||||||
UNWIND: "false"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glx=disabled
|
|
||||||
-D gbm=false
|
|
||||||
-D egl=true
|
|
||||||
-D platforms=surfaceless
|
|
||||||
-D osmesa=none
|
|
||||||
GALLIUM_ST: >
|
|
||||||
-D dri3=false
|
|
||||||
-D gallium-vdpau=false
|
|
||||||
-D gallium-xvmc=false
|
|
||||||
-D gallium-omx=disabled
|
|
||||||
-D gallium-va=false
|
|
||||||
-D gallium-xa=false
|
|
||||||
-D gallium-nine=false
|
|
||||||
|
|
||||||
.meson-arm:
|
|
||||||
extends:
|
|
||||||
- .meson-cross
|
|
||||||
- .use-arm_build
|
|
||||||
variables:
|
|
||||||
VULKAN_DRIVERS: freedreno
|
|
||||||
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
|
|
||||||
BUILDTYPE: "debugoptimized"
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-D I-love-half-baked-turnips=true
|
|
||||||
tags:
|
|
||||||
- aarch64
|
|
||||||
|
|
||||||
meson-armhf:
|
|
||||||
extends:
|
|
||||||
- .meson-arm
|
|
||||||
- .ci-deqp-artifacts
|
|
||||||
variables:
|
|
||||||
CROSS: armhf
|
|
||||||
LLVM_VERSION: "7"
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-D llvm=false
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
- .gitlab-ci/prepare-artifacts.sh
|
|
||||||
|
|
||||||
meson-arm64:
|
|
||||||
extends:
|
|
||||||
- .meson-arm
|
|
||||||
- .ci-deqp-artifacts
|
|
||||||
variables:
|
|
||||||
LLVM_VERSION: "8"
|
|
||||||
VULKAN_DRIVERS: "freedreno"
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-D llvm=false
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
- .gitlab-ci/prepare-artifacts.sh
|
|
||||||
|
|
||||||
meson-arm64-build-test:
|
|
||||||
extends:
|
|
||||||
- .meson-arm
|
|
||||||
- .ci-deqp-artifacts
|
|
||||||
variables:
|
|
||||||
LLVM_VERSION: "8"
|
|
||||||
VULKAN_DRIVERS: "amd"
|
|
||||||
script:
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
|
|
||||||
meson-clang:
|
|
||||||
extends: .meson-build
|
|
||||||
variables:
|
|
||||||
UNWIND: "true"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glvnd=true
|
|
||||||
DRI_DRIVERS: "auto"
|
|
||||||
GALLIUM_DRIVERS: "auto"
|
|
||||||
VULKAN_DRIVERS: intel,amd,freedreno
|
|
||||||
CC: "ccache clang-9"
|
|
||||||
CXX: "ccache clang++-9"
|
|
||||||
|
|
||||||
.meson-windows:
|
|
||||||
extends:
|
|
||||||
- .build-windows
|
|
||||||
before_script:
|
|
||||||
- $ENV:ARCH = "x86"
|
|
||||||
- $ENV:VERSION = "2019\Community"
|
|
||||||
script:
|
|
||||||
- cmd /C .gitlab-ci\meson-build.bat
|
|
||||||
|
|
||||||
scons-swr:
|
|
||||||
extends: .scons-build
|
|
||||||
variables:
|
|
||||||
SCONS_TARGET: "swr=1"
|
|
||||||
SCONS_CHECK_COMMAND: "true"
|
|
||||||
LLVM_VERSION: "6.0"
|
|
||||||
|
|
||||||
scons-win64:
|
|
||||||
extends: .scons-build
|
|
||||||
variables:
|
|
||||||
SCONS_TARGET: platform=windows machine=x86_64
|
|
||||||
SCONS_CHECK_COMMAND: "true"
|
|
||||||
|
|
||||||
meson-clover:
|
|
||||||
extends: .meson-build
|
|
||||||
variables:
|
|
||||||
UNWIND: "true"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glx=disabled
|
|
||||||
-D egl=false
|
|
||||||
-D gbm=false
|
|
||||||
GALLIUM_ST: >
|
|
||||||
-D dri3=false
|
|
||||||
-D gallium-vdpau=false
|
|
||||||
-D gallium-xvmc=false
|
|
||||||
-D gallium-omx=disabled
|
|
||||||
-D gallium-va=false
|
|
||||||
-D gallium-xa=false
|
|
||||||
-D gallium-nine=false
|
|
||||||
-D gallium-opencl=icd
|
|
||||||
script:
|
|
||||||
- export GALLIUM_DRIVERS="r600,radeonsi"
|
|
||||||
- .gitlab-ci/meson-build.sh
|
|
||||||
- LLVM_VERSION=8 .gitlab-ci/meson-build.sh
|
|
||||||
- export GALLIUM_DRIVERS="i915,r600"
|
|
||||||
- LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh
|
|
||||||
- LLVM_VERSION=7 .gitlab-ci/meson-build.sh
|
|
||||||
|
|
||||||
meson-clover-old-llvm:
|
|
||||||
extends:
|
|
||||||
- meson-clover
|
|
||||||
- .use-x86_build_old
|
|
||||||
variables:
|
|
||||||
UNWIND: "false"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glx=disabled
|
|
||||||
-D egl=false
|
|
||||||
-D gbm=false
|
|
||||||
-D platforms=drm,surfaceless
|
|
||||||
GALLIUM_DRIVERS: "i915,r600"
|
|
||||||
script:
|
|
||||||
- LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh
|
|
||||||
- LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh
|
|
||||||
- LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh
|
|
||||||
|
|
||||||
meson-vulkan:
|
|
||||||
extends: .meson-build
|
|
||||||
variables:
|
|
||||||
UNWIND: "false"
|
|
||||||
DRI_LOADERS: >
|
|
||||||
-D glx=disabled
|
|
||||||
-D gbm=false
|
|
||||||
-D egl=false
|
|
||||||
-D platforms=x11,wayland,drm
|
|
||||||
-D osmesa=none
|
|
||||||
GALLIUM_ST: >
|
|
||||||
-D dri3=true
|
|
||||||
-D gallium-vdpau=false
|
|
||||||
-D gallium-xvmc=false
|
|
||||||
-D gallium-omx=disabled
|
|
||||||
-D gallium-va=false
|
|
||||||
-D gallium-xa=false
|
|
||||||
-D gallium-nine=false
|
|
||||||
-D gallium-opencl=disabled
|
|
||||||
-D b_sanitize=undefined
|
|
||||||
-D c_args=-fno-sanitize-recover=all
|
|
||||||
-D cpp_args=-fno-sanitize-recover=all
|
|
||||||
UBSAN_OPTIONS: "print_stacktrace=1"
|
|
||||||
VULKAN_DRIVERS: intel,amd,freedreno
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-D vulkan-overlay-layer=true
|
|
||||||
|
|
||||||
# While the main point of this build is testing the i386 cross build,
|
|
||||||
# we also use this one to test some other options that are exclusive
|
|
||||||
# with meson-main's choices (classic swrast and osmesa)
|
|
||||||
meson-i386:
|
|
||||||
extends: .meson-cross
|
|
||||||
variables:
|
|
||||||
CROSS: i386
|
|
||||||
VULKAN_DRIVERS: intel
|
|
||||||
DRI_DRIVERS: "swrast"
|
|
||||||
GALLIUM_DRIVERS: "iris"
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-D vulkan-overlay-layer=true
|
|
||||||
-D llvm=false
|
|
||||||
-D osmesa=classic
|
|
||||||
-D werror=true
|
|
||||||
|
|
||||||
meson-mingw32-x86_64:
|
|
||||||
extends: .meson-build
|
|
||||||
variables:
|
|
||||||
UNWIND: "false"
|
|
||||||
DRI_DRIVERS: ""
|
|
||||||
GALLIUM_DRIVERS: "swrast"
|
|
||||||
EXTRA_OPTION: >
|
|
||||||
-Dllvm=false
|
|
||||||
-Dosmesa=gallium
|
|
||||||
--cross-file=.gitlab-ci/x86_64-w64-mingw32
|
|
||||||
|
|
||||||
scons:
|
|
||||||
extends: .scons-build
|
|
||||||
variables:
|
|
||||||
SCONS_TARGET: "llvm=1"
|
|
||||||
SCONS_CHECK_COMMAND: "scons llvm=1 force_scons=1 check"
|
|
||||||
script:
|
|
||||||
- SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check force_scons=1" .gitlab-ci/scons-build.sh
|
|
||||||
- LLVM_VERSION=9 .gitlab-ci/scons-build.sh
|
|
||||||
|
|
||||||
scons-old-llvm:
|
|
||||||
extends:
|
|
||||||
- scons
|
|
||||||
- .use-x86_build_old
|
|
||||||
script:
|
|
||||||
- LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh
|
|
||||||
|
|
||||||
.test:
|
|
||||||
extends:
|
|
||||||
- .ci-run-policy
|
|
||||||
stage: test
|
|
||||||
variables:
|
|
||||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
|
||||||
before_script:
|
|
||||||
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
|
|
||||||
- rm -rf install
|
|
||||||
- tar -xf artifacts/install.tar
|
|
||||||
- LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
|
|
||||||
artifacts:
|
|
||||||
when: always
|
|
||||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
|
|
||||||
paths:
|
|
||||||
- results/
|
|
||||||
dependencies:
|
|
||||||
- meson-testing
|
|
||||||
|
|
||||||
.test-gl:
|
|
||||||
extends:
|
|
||||||
- .test
|
|
||||||
variables:
|
|
||||||
TAG: *x86_test-gl
|
|
||||||
image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG"
|
|
||||||
needs:
|
|
||||||
- meson-testing
|
|
||||||
- x86_test-gl
|
|
||||||
|
|
||||||
.test-vk:
|
|
||||||
extends:
|
|
||||||
- .test
|
|
||||||
variables:
|
|
||||||
TAG: *x86_test-vk
|
|
||||||
image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:$TAG"
|
|
||||||
needs:
|
|
||||||
- meson-testing
|
|
||||||
- x86_test-vk
|
|
||||||
|
|
||||||
.piglit-test:
|
|
||||||
extends: .test-gl
|
|
||||||
artifacts:
|
|
||||||
when: on_failure
|
|
||||||
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
|
|
||||||
paths:
|
|
||||||
- summary/
|
|
||||||
variables:
|
|
||||||
LIBGL_ALWAYS_SOFTWARE: 1
|
|
||||||
PIGLIT_NO_WINDOW: 1
|
|
||||||
script:
|
|
||||||
- install/piglit/run.sh
|
|
||||||
|
|
||||||
piglit-quick_gl:
|
|
||||||
extends: .piglit-test
|
|
||||||
variables:
|
|
||||||
LP_NUM_THREADS: 0
|
|
||||||
NIR_VALIDATE: 0
|
|
||||||
PIGLIT_OPTIONS: >
|
|
||||||
--process-isolation false
|
|
||||||
-x arb_gpu_shader5
|
|
||||||
-x egl_ext_device_
|
|
||||||
-x egl_ext_platform_device
|
|
||||||
-x ext_timer_query@time-elapsed
|
|
||||||
-x glx-multithread-clearbuffer
|
|
||||||
-x glx-multithread-shader-compile
|
|
||||||
-x max-texture-size
|
|
||||||
-x maxsize
|
|
||||||
PIGLIT_PROFILES: quick_gl
|
|
||||||
|
|
||||||
piglit-glslparser:
|
|
||||||
extends: .piglit-test
|
|
||||||
variables:
|
|
||||||
LP_NUM_THREADS: 0
|
|
||||||
NIR_VALIDATE: 0
|
|
||||||
PIGLIT_PROFILES: glslparser
|
|
||||||
|
|
||||||
piglit-quick_shader:
|
|
||||||
extends: .piglit-test
|
|
||||||
variables:
|
|
||||||
LP_NUM_THREADS: 1
|
|
||||||
NIR_VALIDATE: 0
|
|
||||||
PIGLIT_PROFILES: quick_shader
|
|
||||||
|
|
||||||
.deqp-test:
|
|
||||||
variables:
|
|
||||||
DEQP_SKIPS: deqp-default-skips.txt
|
|
||||||
script:
|
|
||||||
- ./install/deqp-runner.sh
|
|
||||||
|
|
||||||
.deqp-test-gl:
|
|
||||||
extends:
|
|
||||||
- .test-gl
|
|
||||||
- .deqp-test
|
|
||||||
|
|
||||||
.deqp-test-vk:
|
|
||||||
extends:
|
|
||||||
- .test-vk
|
|
||||||
- .deqp-test
|
|
||||||
variables:
|
|
||||||
DEQP_VER: vk
|
|
||||||
|
|
||||||
test-llvmpipe-gles2:
|
|
||||||
variables:
|
|
||||||
DEQP_VER: gles2
|
|
||||||
DEQP_PARALLEL: 4
|
|
||||||
NIR_VALIDATE: 0
|
|
||||||
# Don't use threads inside llvmpipe, we've already got all 4 cores
|
|
||||||
# busy with DEQP_PARALLEL.
|
|
||||||
LP_NUM_THREADS: 0
|
|
||||||
DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
|
|
||||||
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
||||||
extends: .deqp-test-gl
|
|
||||||
|
|
||||||
test-softpipe-gles2:
|
|
||||||
extends: test-llvmpipe-gles2
|
|
||||||
variables:
|
|
||||||
DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
|
|
||||||
DEQP_SKIPS: deqp-softpipe-skips.txt
|
|
||||||
GALLIUM_DRIVER: "softpipe"
|
|
||||||
|
|
||||||
test-softpipe-gles3:
|
|
||||||
parallel: 2
|
|
||||||
variables:
|
|
||||||
DEQP_VER: gles3
|
|
||||||
extends: test-softpipe-gles2
|
|
||||||
|
|
||||||
test-softpipe-gles31:
|
|
||||||
parallel: 4
|
|
||||||
variables:
|
|
||||||
DEQP_VER: gles31
|
|
||||||
extends: test-softpipe-gles2
|
|
||||||
|
|
||||||
arm64_a630_gles2:
|
|
||||||
extends:
|
|
||||||
- .deqp-test-gl
|
|
||||||
- .use-arm_test
|
|
||||||
variables:
|
|
||||||
DEQP_VER: gles2
|
|
||||||
DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
|
|
||||||
DEQP_SKIPS: deqp-freedreno-a630-skips.txt
|
|
||||||
NIR_VALIDATE: 0
|
|
||||||
DEQP_PARALLEL: 4
|
|
||||||
FLAKES_CHANNEL: "#freedreno-ci"
|
|
||||||
tags:
|
|
||||||
- mesa-cheza
|
|
||||||
dependencies:
|
|
||||||
- meson-arm64
|
|
||||||
|
|
||||||
arm64_a630_gles31:
|
|
||||||
extends: arm64_a630_gles2
|
|
||||||
variables:
|
|
||||||
DEQP_VER: gles31
|
|
||||||
|
|
||||||
arm64_a630_gles3:
|
|
||||||
extends: arm64_a630_gles2
|
|
||||||
variables:
|
|
||||||
DEQP_VER: gles3
|
|
||||||
|
|
||||||
arm64_a306_gles2:
|
|
||||||
extends: arm64_a630_gles2
|
|
||||||
variables:
|
|
||||||
DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
|
|
||||||
DEQP_SKIPS: deqp-default-skips.txt
|
|
||||||
tags:
|
|
||||||
- db410c
|
|
||||||
|
|
||||||
# RADV CI
|
|
||||||
.test-radv:
|
|
||||||
variables:
|
|
||||||
VK_DRIVER: radeon
|
|
||||||
RADV_DEBUG: checkir
|
|
||||||
# Can only be triggered manually on personal branches because RADV is the only
|
|
||||||
# driver that does Vulkan testing at the moment.
|
|
||||||
rules:
|
|
||||||
# Never test RADV by default in the main project.
|
|
||||||
- if: '$CI_PROJECT_PATH == "mesa/mesa"'
|
|
||||||
when: never
|
|
||||||
# Never test RADV by default for merge requests.
|
|
||||||
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
|
|
||||||
when: never
|
|
||||||
# Otherwise, allow testing RADV if the test image for VK has been manually
|
|
||||||
# started.
|
|
||||||
- when: on_success
|
|
||||||
|
|
||||||
radv_polaris10_vkcts:
|
|
||||||
extends:
|
|
||||||
- .deqp-test-vk
|
|
||||||
- .test-radv
|
|
||||||
variables:
|
|
||||||
DEQP_PARALLEL: 4
|
|
||||||
DEQP_SKIPS: deqp-radv-polaris10-skips.txt
|
|
||||||
tags:
|
|
||||||
- polaris10
|
|
@@ -1,122 +0,0 @@
|
|||||||
## Mesa testing using gitlab-runner
|
|
||||||
|
|
||||||
The goal of the "test" stage of the .gitlab-ci.yml is to do pre-merge
|
|
||||||
testing of Mesa drivers on various platforms, so that we can ensure no
|
|
||||||
regressions are merged, as long as developers are merging code using
|
|
||||||
the "Merge when pipeline completes" button.
|
|
||||||
|
|
||||||
This document only covers the CI from .gitlab-ci.yml and this
|
|
||||||
directory. For other CI systems, see Intel's [Mesa
|
|
||||||
CI](https://gitlab.freedesktop.org/Mesa_CI) or panfrost's LAVA-based
|
|
||||||
CI (`src/gallium/drivers/panfrost/ci/`)
|
|
||||||
|
|
||||||
### Software architecture
|
|
||||||
|
|
||||||
For freedreno and llvmpipe CI, we're using gitlab-runner on the test
|
|
||||||
devices (DUTs), cached docker containers with VK-GL-CTS, and the
|
|
||||||
normal shared x86_64 runners to build the Mesa drivers to be run
|
|
||||||
inside of those containers on the DUTs.
|
|
||||||
|
|
||||||
The docker containers are rebuilt from the debian-install.sh script
|
|
||||||
when DEBIAN\_TAG is changed in .gitlab-ci.yml, and
|
|
||||||
debian-test-install.sh when DEBIAN\_ARM64\_TAG is changed in
|
|
||||||
.gitlab-ci.yml. The resulting images are around 500MB, and are
|
|
||||||
expected to change approximately weekly (though an individual
|
|
||||||
developer working on them may produce many more images while trying to
|
|
||||||
come up with a working MR!).
|
|
||||||
|
|
||||||
gitlab-runner is a client that polls gitlab.freedesktop.org for
|
|
||||||
available jobs, with no inbound networking requirements. Jobs can
|
|
||||||
have tags, so we can have DUT-specific jobs that only run on runners
|
|
||||||
with that tag marked in the gitlab UI.
|
|
||||||
|
|
||||||
Since dEQP takes a long time to run, we mark the job as "parallel" at
|
|
||||||
some level, which spawns multiple jobs from one definition, and then
|
|
||||||
deqp-runner.sh takes the corresponding fraction of the test list for
|
|
||||||
that job.
|
|
||||||
|
|
||||||
To reduce dEQP runtime (or avoid tests with unreliable results), a
|
|
||||||
deqp-runner.sh invocation can provide a list of tests to skip. If
|
|
||||||
your driver is not yet conformant, you can pass a list of expected
|
|
||||||
failures, and the job will only fail on tests that aren't listed (look
|
|
||||||
at the job's log for which specific tests failed).
|
|
||||||
|
|
||||||
### DUT requirements
|
|
||||||
|
|
||||||
#### DUTs must have a stable kernel and GPU reset.
|
|
||||||
|
|
||||||
If the system goes down during a test run, that job will eventually
|
|
||||||
time out and fail (default 1 hour). However, if the kernel can't
|
|
||||||
reliably reset the GPU on failure, bugs in one MR may leak into
|
|
||||||
spurious failures in another MR. This would be an unacceptable impact
|
|
||||||
on Mesa developers working on other drivers.
|
|
||||||
|
|
||||||
#### DUTs must be able to run docker
|
|
||||||
|
|
||||||
The Mesa gitlab-runner based test architecture is built around docker,
|
|
||||||
so that we can cache the debian package installation and CTS build
|
|
||||||
step across multiple test runs. Since the images are large and change
|
|
||||||
approximately weekly, the DUTs also need to be running some script to
|
|
||||||
prune stale docker images periodically in order to not run out of disk
|
|
||||||
space as we rev those containers (perhaps [this
|
|
||||||
script](https://gitlab.com/gitlab-org/gitlab-runner/issues/2980#note_169233611)).
|
|
||||||
|
|
||||||
Note that docker doesn't allow containers to be stored on NFS, and
|
|
||||||
doesn't allow multiple docker daemons to interact with the same
|
|
||||||
network block device, so you will probably need some sort of physical
|
|
||||||
storage on your DUTs.
|
|
||||||
|
|
||||||
#### DUTs must be public
|
|
||||||
|
|
||||||
By including your device in .gitlab-ci.yml, you're effectively letting
|
|
||||||
anyone on the internet run code on your device. docker containers may
|
|
||||||
provide some limited protection, but how much you trust that and what
|
|
||||||
you do to mitigate hostile access is up to you.
|
|
||||||
|
|
||||||
#### DUTs must expose the dri device nodes to the containers.
|
|
||||||
|
|
||||||
Obviously, to get access to the HW, we need to pass the render node
|
|
||||||
through. This is done by adding `devices = ["/dev/dri"]` to the
|
|
||||||
`runners.docker` section of /etc/gitlab-runner/config.toml.
|
|
||||||
|
|
||||||
### HW CI farm expectations
|
|
||||||
|
|
||||||
To make sure that testing of one vendor's drivers doesn't block
|
|
||||||
unrelated work by other vendors, we require that a given driver's test
|
|
||||||
farm produces a spurious failure no more than once a week. If every
|
|
||||||
driver had CI and failed once a week, we would be seeing someone's
|
|
||||||
code getting blocked on a spurious failure daily, which is an
|
|
||||||
unacceptable cost to the project.
|
|
||||||
|
|
||||||
Additionally, the test farm needs to be able to provide a short enough
|
|
||||||
turnaround time that people can regularly use the "Merge when pipeline
|
|
||||||
succeeds" button successfully (until we get
|
|
||||||
[marge-bot](https://github.com/smarkets/marge-bot) in place on
|
|
||||||
freedesktop.org). As a result, we require that the test farm be able
|
|
||||||
to handle a whole pipeline's worth of jobs in less than 5 minutes (to
|
|
||||||
compare, the build stage is about 10 minutes, if you could get all
|
|
||||||
your jobs scheduled on the shared runners in time.).
|
|
||||||
|
|
||||||
If a test farm is short the HW to provide these guarantees, consider
|
|
||||||
dropping tests to reduce runtime.
|
|
||||||
`VK-GL-CTS/scripts/log/bottleneck_report.py` can help you find what
|
|
||||||
tests were slow in a `results.qpa` file. Or, you can have a job with
|
|
||||||
no `parallel` field set and:
|
|
||||||
|
|
||||||
```
|
|
||||||
variables:
|
|
||||||
CI_NODE_INDEX: 1
|
|
||||||
CI_NODE_TOTAL: 10
|
|
||||||
```
|
|
||||||
|
|
||||||
to just run 1/10th of the test list.
|
|
||||||
|
|
||||||
If a HW CI farm goes offline (network dies and all CI pipelines end up
|
|
||||||
stalled) or its runners are consistenly spuriously failing (disk
|
|
||||||
full?), and the maintainer is not immediately available to fix the
|
|
||||||
issue, please push through an MR disabling that farm's jobs by adding
|
|
||||||
'.' to the front of the jobs names until the maintainer can bring
|
|
||||||
things back up. If this happens, the farm maintainer should provide a
|
|
||||||
report to mesa-dev@lists.freedesktop.org after the fact explaining
|
|
||||||
what happened and what the mitigation plan is for that failure next
|
|
||||||
time.
|
|
@@ -1,46 +0,0 @@
|
|||||||
CONFIG_LOCALVERSION="ccu"
|
|
||||||
|
|
||||||
CONFIG_DEBUG_KERNEL=y
|
|
||||||
|
|
||||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_PASSIVE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
|
||||||
|
|
||||||
CONFIG_DRM=y
|
|
||||||
CONFIG_DRM_ROCKCHIP=y
|
|
||||||
CONFIG_DRM_PANFROST=y
|
|
||||||
CONFIG_DRM_LIMA=y
|
|
||||||
CONFIG_DRM_PANEL_SIMPLE=y
|
|
||||||
CONFIG_PWM_CROS_EC=y
|
|
||||||
CONFIG_BACKLIGHT_PWM=y
|
|
||||||
|
|
||||||
CONFIG_ROCKCHIP_CDN_DP=n
|
|
||||||
|
|
||||||
CONFIG_SPI_ROCKCHIP=y
|
|
||||||
CONFIG_PWM_ROCKCHIP=y
|
|
||||||
CONFIG_PHY_ROCKCHIP_DP=y
|
|
||||||
CONFIG_DWMAC_ROCKCHIP=y
|
|
||||||
|
|
||||||
CONFIG_MFD_RK808=y
|
|
||||||
CONFIG_REGULATOR_RK808=y
|
|
||||||
CONFIG_RTC_DRV_RK808=y
|
|
||||||
CONFIG_COMMON_CLK_RK808=y
|
|
||||||
|
|
||||||
CONFIG_REGULATOR_FAN53555=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
|
|
||||||
CONFIG_REGULATOR_VCTRL=y
|
|
||||||
|
|
||||||
CONFIG_KASAN=n
|
|
||||||
CONFIG_KASAN_INLINE=n
|
|
||||||
CONFIG_STACKTRACE=n
|
|
||||||
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
|
|
||||||
CONFIG_PROVE_LOCKING=n
|
|
||||||
CONFIG_DEBUG_LOCKDEP=n
|
|
||||||
CONFIG_SOFTLOCKUP_DETECTOR=n
|
|
||||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=n
|
|
||||||
|
|
@@ -1,83 +0,0 @@
|
|||||||
CONFIG_LOCALVERSION="ccu"
|
|
||||||
|
|
||||||
CONFIG_DEBUG_KERNEL=y
|
|
||||||
|
|
||||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
|
||||||
CONFIG_DEVFREQ_GOV_PASSIVE=y
|
|
||||||
|
|
||||||
CONFIG_DRM=y
|
|
||||||
CONFIG_DRM_ROCKCHIP=y
|
|
||||||
CONFIG_DRM_PANFROST=y
|
|
||||||
CONFIG_DRM_LIMA=y
|
|
||||||
CONFIG_DRM_PANEL_SIMPLE=y
|
|
||||||
CONFIG_PWM_CROS_EC=y
|
|
||||||
CONFIG_BACKLIGHT_PWM=y
|
|
||||||
|
|
||||||
CONFIG_ROCKCHIP_CDN_DP=n
|
|
||||||
|
|
||||||
CONFIG_SPI_ROCKCHIP=y
|
|
||||||
CONFIG_PWM_ROCKCHIP=y
|
|
||||||
CONFIG_PHY_ROCKCHIP_DP=y
|
|
||||||
CONFIG_DWMAC_ROCKCHIP=y
|
|
||||||
CONFIG_STMMAC_ETH=y
|
|
||||||
CONFIG_TYPEC_FUSB302=y
|
|
||||||
CONFIG_TYPEC=y
|
|
||||||
CONFIG_TYPEC_TCPM=y
|
|
||||||
|
|
||||||
CONFIG_ARCH_ALPINE=n
|
|
||||||
CONFIG_ARCH_BCM2835=n
|
|
||||||
CONFIG_ARCH_BCM_IPROC=n
|
|
||||||
CONFIG_ARCH_BERLIN=n
|
|
||||||
CONFIG_ARCH_BRCMSTB=n
|
|
||||||
CONFIG_ARCH_EXYNOS=n
|
|
||||||
CONFIG_ARCH_K3=n
|
|
||||||
CONFIG_ARCH_LAYERSCAPE=n
|
|
||||||
CONFIG_ARCH_LG1K=n
|
|
||||||
CONFIG_ARCH_HISI=n
|
|
||||||
CONFIG_ARCH_MEDIATEK=n
|
|
||||||
CONFIG_ARCH_MVEBU=n
|
|
||||||
CONFIG_ARCH_QCOM=n
|
|
||||||
CONFIG_ARCH_SEATTLE=n
|
|
||||||
CONFIG_ARCH_SYNQUACER=n
|
|
||||||
CONFIG_ARCH_RENESAS=n
|
|
||||||
CONFIG_ARCH_R8A774A1=n
|
|
||||||
CONFIG_ARCH_R8A774C0=n
|
|
||||||
CONFIG_ARCH_R8A7795=n
|
|
||||||
CONFIG_ARCH_R8A7796=n
|
|
||||||
CONFIG_ARCH_R8A77965=n
|
|
||||||
CONFIG_ARCH_R8A77970=n
|
|
||||||
CONFIG_ARCH_R8A77980=n
|
|
||||||
CONFIG_ARCH_R8A77990=n
|
|
||||||
CONFIG_ARCH_R8A77995=n
|
|
||||||
CONFIG_ARCH_STRATIX10=n
|
|
||||||
CONFIG_ARCH_TEGRA=n
|
|
||||||
CONFIG_ARCH_SPRD=n
|
|
||||||
CONFIG_ARCH_THUNDER=n
|
|
||||||
CONFIG_ARCH_THUNDER2=n
|
|
||||||
CONFIG_ARCH_UNIPHIER=n
|
|
||||||
CONFIG_ARCH_VEXPRESS=n
|
|
||||||
CONFIG_ARCH_XGENE=n
|
|
||||||
CONFIG_ARCH_ZX=n
|
|
||||||
CONFIG_ARCH_ZYNQMP=n
|
|
||||||
|
|
||||||
CONFIG_ACPI=n
|
|
||||||
|
|
||||||
CONFIG_REGULATOR_FAN53555=y
|
|
||||||
CONFIG_REGULATOR=y
|
|
||||||
|
|
||||||
CONFIG_REGULATOR_VCTRL=y
|
|
||||||
|
|
||||||
CONFIG_KASAN=n
|
|
||||||
CONFIG_KASAN_INLINE=n
|
|
||||||
CONFIG_STACKTRACE=n
|
|
||||||
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
|
|
||||||
CONFIG_PROVE_LOCKING=n
|
|
||||||
CONFIG_DEBUG_LOCKDEP=n
|
|
||||||
CONFIG_SOFTLOCKUP_DETECTOR=y
|
|
||||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
|
|
||||||
|
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
|
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
git clone https://gitlab.freedesktop.org/mesa/parallel-deqp-runner.git --depth 1 -b mesa-ci-2019-12-17
|
|
||||||
cd parallel-deqp-runner
|
|
||||||
meson build/ $EXTRA_MESON_ARGS
|
|
||||||
ninja -C build -j4 install
|
|
||||||
cd ..
|
|
||||||
rm -rf parallel-deqp-runner
|
|
@@ -1,61 +0,0 @@
|
|||||||
git config --global user.email "mesa@example.com"
|
|
||||||
git config --global user.name "Mesa CI"
|
|
||||||
# XXX: Use --depth 1 once we can drop the cherry-picks.
|
|
||||||
git clone \
|
|
||||||
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
|
||||||
-b opengl-es-cts-3.2.5.1 \
|
|
||||||
/VK-GL-CTS
|
|
||||||
pushd /VK-GL-CTS
|
|
||||||
# Fix surfaceless build
|
|
||||||
git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670
|
|
||||||
git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648
|
|
||||||
|
|
||||||
# surfaceless links against libkms and such despite not using it.
|
|
||||||
sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake
|
|
||||||
sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake
|
|
||||||
sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake
|
|
||||||
|
|
||||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
|
||||||
# libpng (sigh). The archives get their checksums checked anyway, and git
|
|
||||||
# always goes through ssh or https.
|
|
||||||
python3 external/fetch_sources.py --insecure
|
|
||||||
|
|
||||||
mkdir -p /deqp
|
|
||||||
|
|
||||||
# Save the testlog stylesheets:
|
|
||||||
cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp
|
|
||||||
popd
|
|
||||||
|
|
||||||
pushd /deqp
|
|
||||||
cmake -G Ninja \
|
|
||||||
-DDEQP_TARGET=surfaceless \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
$EXTRA_CMAKE_ARGS \
|
|
||||||
/VK-GL-CTS
|
|
||||||
ninja
|
|
||||||
|
|
||||||
# Copy out the mustpass lists we want from a bunch of other junk.
|
|
||||||
mkdir /deqp/mustpass
|
|
||||||
for gles in gles2 gles3 gles31; do
|
|
||||||
cp \
|
|
||||||
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \
|
|
||||||
/deqp/mustpass/$gles-master.txt
|
|
||||||
done
|
|
||||||
|
|
||||||
# Save *some* executor utils, but otherwise strip things down
|
|
||||||
# to reduct deqp build size:
|
|
||||||
mkdir /deqp/executor.save
|
|
||||||
cp /deqp/executor/testlog-to-* /deqp/executor.save
|
|
||||||
rm -rf /deqp/executor
|
|
||||||
mv /deqp/executor.save /deqp/executor
|
|
||||||
|
|
||||||
rm -rf /deqp/external
|
|
||||||
rm -rf /deqp/modules/internal
|
|
||||||
rm -rf /deqp/execserver
|
|
||||||
rm -rf /deqp/modules/egl
|
|
||||||
rm -rf /deqp/framework
|
|
||||||
find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf
|
|
||||||
${STRIP_CMD:-strip} modules/*/deqp-*
|
|
||||||
du -sh *
|
|
||||||
rm -rf /VK-GL-CTS
|
|
||||||
popd
|
|
@@ -1,33 +0,0 @@
|
|||||||
git clone --depth 1 \
|
|
||||||
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
|
||||||
-b vulkan-cts-1.1.6.0 \
|
|
||||||
/VK-GL-CTS
|
|
||||||
cd /VK-GL-CTS
|
|
||||||
|
|
||||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
|
||||||
# libpng (sigh). The archives get their checksums checked anyway, and git
|
|
||||||
# always goes through ssh or https.
|
|
||||||
python3 external/fetch_sources.py --insecure
|
|
||||||
|
|
||||||
mkdir -p /deqp
|
|
||||||
cd /deqp
|
|
||||||
cmake -G Ninja \
|
|
||||||
-DDEQP_TARGET=x11_glx \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
/VK-GL-CTS
|
|
||||||
ninja -j4
|
|
||||||
|
|
||||||
# Copy out the mustpass list we want.
|
|
||||||
mkdir /deqp/mustpass
|
|
||||||
cp /VK-GL-CTS/external/vulkancts/mustpass/master/vk-default.txt \
|
|
||||||
/deqp/mustpass/vk-master.txt
|
|
||||||
|
|
||||||
rm -rf /deqp/modules/internal
|
|
||||||
rm -rf /deqp/executor
|
|
||||||
rm -rf /deqp/execserver
|
|
||||||
rm -rf /deqp/modules/egl
|
|
||||||
rm -rf /deqp/framework
|
|
||||||
find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf
|
|
||||||
strip external/vulkancts/modules/vulkan/deqp-vk
|
|
||||||
du -sh *
|
|
||||||
rm -rf /VK-GL-CTS
|
|
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
|
||||||
pushd /piglit
|
|
||||||
git checkout 8771c3860505db2bcf4877216221d774bf90af6b
|
|
||||||
patch -p1 <$OLDPWD/.gitlab-ci/piglit/disable-vs_in.diff
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release
|
|
||||||
ninja -j4
|
|
||||||
find -name .git -o -name '*ninja*' -o -iname '*cmake*' -o -name '*.[chao]' | xargs rm -rf
|
|
||||||
rm -rf target_api
|
|
||||||
popd
|
|
@@ -1,74 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
############### Install packages for building
|
|
||||||
apt-get -y install ca-certificates
|
|
||||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
|
|
||||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
|
|
||||||
dpkg --add-architecture armhf
|
|
||||||
apt-get update
|
|
||||||
apt-get -y install \
|
|
||||||
bc \
|
|
||||||
bison \
|
|
||||||
ccache \
|
|
||||||
cmake \
|
|
||||||
cpio \
|
|
||||||
crossbuild-essential-armhf \
|
|
||||||
debootstrap \
|
|
||||||
flex \
|
|
||||||
g++ \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
lavacli \
|
|
||||||
libdrm-dev:armhf \
|
|
||||||
libegl1-mesa-dev \
|
|
||||||
libegl1-mesa-dev:armhf \
|
|
||||||
libelf-dev \
|
|
||||||
libelf-dev:armhf \
|
|
||||||
libexpat1-dev \
|
|
||||||
libexpat1-dev:armhf \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libgles2-mesa-dev:armhf \
|
|
||||||
libpng-dev \
|
|
||||||
libpng-dev:armhf \
|
|
||||||
libssl-dev \
|
|
||||||
libvulkan-dev \
|
|
||||||
libvulkan-dev:armhf \
|
|
||||||
llvm-7-dev:armhf \
|
|
||||||
llvm-8-dev \
|
|
||||||
meson \
|
|
||||||
pkg-config \
|
|
||||||
python \
|
|
||||||
python3-mako \
|
|
||||||
unzip \
|
|
||||||
wget \
|
|
||||||
zlib1g-dev
|
|
||||||
|
|
||||||
# dependencies where we want a specific version
|
|
||||||
export LIBDRM_VERSION=libdrm-2.4.100
|
|
||||||
|
|
||||||
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
|
|
||||||
tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
|
|
||||||
cd $LIBDRM_VERSION; meson build -D vc4=true -D freedreno=true -D etnaviv=true; ninja -j4 -C build install; cd ..
|
|
||||||
rm -rf $LIBDRM_VERSION
|
|
||||||
|
|
||||||
############### Generate cross build file for Meson
|
|
||||||
|
|
||||||
cross_file="/cross_file-armhf.txt"
|
|
||||||
/usr/share/meson/debcrossgen --arch armhf -o "$cross_file"
|
|
||||||
# Explicitly set ccache path for cross compilers
|
|
||||||
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
|
|
||||||
# Don't need wrapper for armhf executables
|
|
||||||
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
|
|
||||||
|
|
||||||
############### Generate kernel, ramdisk, test suites, etc for LAVA jobs
|
|
||||||
|
|
||||||
DEBIAN_ARCH=arm64 . .gitlab-ci/container/lava_arm.sh
|
|
||||||
DEBIAN_ARCH=armhf . .gitlab-ci/container/lava_arm.sh
|
|
||||||
|
|
||||||
apt-get purge -y \
|
|
||||||
wget
|
|
||||||
|
|
||||||
apt-get autoremove -y --purge
|
|
@@ -1,64 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
############### Install packages for building
|
|
||||||
apt-get -y install ca-certificates
|
|
||||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
|
|
||||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
|
|
||||||
apt-get update
|
|
||||||
apt-get -y install \
|
|
||||||
bzip2 \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
libc6-dev \
|
|
||||||
libdrm-nouveau2 \
|
|
||||||
libexpat1 \
|
|
||||||
libgbm-dev \
|
|
||||||
libgbm-dev \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libllvm8 \
|
|
||||||
libpng16-16 \
|
|
||||||
libpng-dev \
|
|
||||||
libvulkan-dev \
|
|
||||||
libvulkan1 \
|
|
||||||
meson \
|
|
||||||
netcat \
|
|
||||||
pkg-config \
|
|
||||||
procps \
|
|
||||||
python \
|
|
||||||
waffle-utils \
|
|
||||||
wget \
|
|
||||||
zlib1g
|
|
||||||
|
|
||||||
############### Build dEQP runner
|
|
||||||
|
|
||||||
. .gitlab-ci/build-cts-runner.sh
|
|
||||||
|
|
||||||
############### Build dEQP GL
|
|
||||||
|
|
||||||
. .gitlab-ci/build-deqp-gl.sh
|
|
||||||
|
|
||||||
|
|
||||||
############### Uninstall the build software
|
|
||||||
|
|
||||||
apt-get purge -y \
|
|
||||||
bzip2 \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
libc6-dev \
|
|
||||||
libgbm-dev \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libpng-dev \
|
|
||||||
libvulkan-dev \
|
|
||||||
meson \
|
|
||||||
pkg-config \
|
|
||||||
python \
|
|
||||||
wget
|
|
||||||
|
|
||||||
apt-get autoremove -y --purge
|
|
@@ -1,63 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
if [[ "$DEBIAN_ARCH" = "arm64" ]]; then
|
|
||||||
GCC_ARCH="aarch64-linux-gnu"
|
|
||||||
KERNEL_ARCH="arm64"
|
|
||||||
DEFCONFIG="arch/arm64/configs/defconfig"
|
|
||||||
DEVICE_TREES="arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dtb arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dtb"
|
|
||||||
KERNEL_IMAGE_NAME="Image"
|
|
||||||
else
|
|
||||||
GCC_ARCH="arm-linux-gnueabihf"
|
|
||||||
KERNEL_ARCH="arm"
|
|
||||||
DEFCONFIG="arch/arm/configs/multi_v7_defconfig"
|
|
||||||
DEVICE_TREES="arch/arm/boot/dts/rk3288-veyron-jaq.dtb arch/arm/boot/dts/sun8i-h3-libretech-all-h3-cc.dtb"
|
|
||||||
KERNEL_IMAGE_NAME="zImage"
|
|
||||||
fi
|
|
||||||
|
|
||||||
############### Build dEQP runner
|
|
||||||
if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
|
||||||
EXTRA_MESON_ARGS="--cross-file /cross_file-armhf.txt"
|
|
||||||
fi
|
|
||||||
. .gitlab-ci/build-cts-runner.sh
|
|
||||||
mkdir -p /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin
|
|
||||||
mv /usr/local/bin/deqp-runner /lava-files/rootfs-${DEBIAN_ARCH}/usr/bin/.
|
|
||||||
|
|
||||||
|
|
||||||
############### Build dEQP
|
|
||||||
EXTRA_CMAKE_ARGS="-DCMAKE_C_COMPILER=${GCC_ARCH}-gcc -DCMAKE_CXX_COMPILER=${GCC_ARCH}-g++"
|
|
||||||
STRIP_CMD="${GCC_ARCH}-strip"
|
|
||||||
. .gitlab-ci/build-deqp-gl.sh
|
|
||||||
mv /deqp /lava-files/rootfs-${DEBIAN_ARCH}/.
|
|
||||||
|
|
||||||
|
|
||||||
############### Cross-build kernel
|
|
||||||
KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-rc5-panfrost-fixes/linux-v5.5-rc5-panfrost-fixes.tar.gz"
|
|
||||||
|
|
||||||
if [[ "$DEBIAN_ARCH" = "armhf" ]]; then
|
|
||||||
export ARCH=${KERNEL_ARCH}
|
|
||||||
export CROSS_COMPILE="${GCC_ARCH}-"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p kernel
|
|
||||||
wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel
|
|
||||||
pushd kernel
|
|
||||||
./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.gitlab-ci/${KERNEL_ARCH}.config
|
|
||||||
make -j12 ${KERNEL_IMAGE_NAME} dtbs
|
|
||||||
cp arch/${KERNEL_ARCH}/boot/${KERNEL_IMAGE_NAME} /lava-files/.
|
|
||||||
cp ${DEVICE_TREES} /lava-files/.
|
|
||||||
popd
|
|
||||||
rm -rf kernel
|
|
||||||
|
|
||||||
|
|
||||||
############### Create rootfs
|
|
||||||
set +e
|
|
||||||
debootstrap --variant=minbase --arch=${DEBIAN_ARCH} testing /lava-files/rootfs-${DEBIAN_ARCH}/ http://deb.debian.org/debian
|
|
||||||
cat /lava-files/rootfs-${DEBIAN_ARCH}/debootstrap/debootstrap.log
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cp .gitlab-ci/create-rootfs.sh /lava-files/rootfs-${DEBIAN_ARCH}/.
|
|
||||||
chroot /lava-files/rootfs-${DEBIAN_ARCH} sh /create-rootfs.sh
|
|
||||||
rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh
|
|
@@ -1,52 +0,0 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Version: GnuPG v1.4.12 (GNU/Linux)
|
|
||||||
|
|
||||||
mQINBFE9lCwBEADi0WUAApM/mgHJRU8lVkkw0CHsZNpqaQDNaHefD6Rw3S4LxNmM
|
|
||||||
EZaOTkhP200XZM8lVdbfUW9xSjA3oPldc1HG26NjbqqCmWpdo2fb+r7VmU2dq3NM
|
|
||||||
R18ZlKixiLDE6OUfaXWKamZsXb6ITTYmgTO6orQWYrnW6ckYHSeaAkW0wkDAryl2
|
|
||||||
B5v8aoFnQ1rFiVEMo4NGzw4UX+MelF7rxaaregmKVTPiqCOSPJ1McC1dHFN533FY
|
|
||||||
Wh/RVLKWo6npu+owtwYFQW+zyQhKzSIMvNujFRzhIxzxR9Gn87MoLAyfgKEzrbbT
|
|
||||||
DhqqNXTxS4UMUKCQaO93TzetX/EBrRpJj+vP640yio80h4Dr5pAd7+LnKwgpTDk1
|
|
||||||
G88bBXJAcPZnTSKu9I2c6KY4iRNbvRz4i+ZdwwZtdW4nSdl2792L7Sl7Nc44uLL/
|
|
||||||
ZqkKDXEBF6lsX5XpABwyK89S/SbHOytXv9o4puv+65Ac5/UShspQTMSKGZgvDauU
|
|
||||||
cs8kE1U9dPOqVNCYq9Nfwinkf6RxV1k1+gwtclxQuY7UpKXP0hNAXjAiA5KS5Crq
|
|
||||||
7aaJg9q2F4bub0mNU6n7UI6vXguF2n4SEtzPRk6RP+4TiT3bZUsmr+1ktogyOJCc
|
|
||||||
Ha8G5VdL+NBIYQthOcieYCBnTeIH7D3Sp6FYQTYtVbKFzmMK+36ERreL/wARAQAB
|
|
||||||
tD1TeWx2ZXN0cmUgTGVkcnUgLSBEZWJpYW4gTExWTSBwYWNrYWdlcyA8c3lsdmVz
|
|
||||||
dHJlQGRlYmlhbi5vcmc+iQI4BBMBAgAiBQJRPZQsAhsDBgsJCAcDAgYVCAIJCgsE
|
|
||||||
FgIDAQIeAQIXgAAKCRAVz00Yr090Ibx+EADArS/hvkDF8juWMXxh17CgR0WZlHCC
|
|
||||||
9CTBWkg5a0bNN/3bb97cPQt/vIKWjQtkQpav6/5JTVCSx2riL4FHYhH0iuo4iAPR
|
|
||||||
udC7Cvg8g7bSPrKO6tenQZNvQm+tUmBHgFiMBJi92AjZ/Qn1Shg7p9ITivFxpLyX
|
|
||||||
wpmnF1OKyI2Kof2rm4BFwfSWuf8Fvh7kDMRLHv+MlnK/7j/BNpKdozXxLcwoFBmn
|
|
||||||
l0WjpAH3OFF7Pvm1LJdf1DjWKH0Dc3sc6zxtmBR/KHHg6kK4BGQNnFKujcP7TVdv
|
|
||||||
gMYv84kun14pnwjZcqOtN3UJtcx22880DOQzinoMs3Q4w4o05oIF+sSgHViFpc3W
|
|
||||||
R0v+RllnH05vKZo+LDzc83DQVrdwliV12eHxrMQ8UYg88zCbF/cHHnlzZWAJgftg
|
|
||||||
hB08v1BKPgYRUzwJ6VdVqXYcZWEaUJmQAPuAALyZESw94hSo28FAn0/gzEc5uOYx
|
|
||||||
K+xG/lFwgAGYNb3uGM5m0P6LVTfdg6vDwwOeTNIExVk3KVFXeSQef2ZMkhwA7wya
|
|
||||||
KJptkb62wBHFE+o9TUdtMCY6qONxMMdwioRE5BYNwAsS1PnRD2+jtlI0DzvKHt7B
|
|
||||||
MWd8hnoUKhMeZ9TNmo+8CpsAtXZcBho0zPGz/R8NlJhAWpdAZ1CmcPo83EW86Yq7
|
|
||||||
BxQUKnNHcwj2ebkCDQRRPZQsARAA4jxYmbTHwmMjqSizlMJYNuGOpIidEdx9zQ5g
|
|
||||||
zOr431/VfWq4S+VhMDhs15j9lyml0y4ok215VRFwrAREDg6UPMr7ajLmBQGau0Fc
|
|
||||||
bvZJ90l4NjXp5p0NEE/qOb9UEHT7EGkEhaZ1ekkWFTWCgsy7rRXfZLxB6sk7pzLC
|
|
||||||
DshyW3zjIakWAnpQ5j5obiDy708pReAuGB94NSyb1HoW/xGsGgvvCw4r0w3xPStw
|
|
||||||
F1PhmScE6NTBIfLliea3pl8vhKPlCh54Hk7I8QGjo1ETlRP4Qll1ZxHJ8u25f/ta
|
|
||||||
RES2Aw8Hi7j0EVcZ6MT9JWTI83yUcnUlZPZS2HyeWcUj+8nUC8W4N8An+aNps9l/
|
|
||||||
21inIl2TbGo3Yn1JQLnA1YCoGwC34g8QZTJhElEQBN0X29ayWW6OdFx8MDvllbBV
|
|
||||||
ymmKq2lK1U55mQTfDli7S3vfGz9Gp/oQwZ8bQpOeUkc5hbZszYwP4RX+68xDPfn+
|
|
||||||
M9udl+qW9wu+LyePbW6HX90LmkhNkkY2ZzUPRPDHZANU5btaPXc2H7edX4y4maQa
|
|
||||||
xenqD0lGh9LGz/mps4HEZtCI5CY8o0uCMF3lT0XfXhuLksr7Pxv57yue8LLTItOJ
|
|
||||||
d9Hmzp9G97SRYYeqU+8lyNXtU2PdrLLq7QHkzrsloG78lCpQcalHGACJzrlUWVP/
|
|
||||||
fN3Ht3kAEQEAAYkCHwQYAQIACQUCUT2ULAIbDAAKCRAVz00Yr090IbhWEADbr50X
|
|
||||||
OEXMIMGRLe+YMjeMX9NG4jxs0jZaWHc/WrGR+CCSUb9r6aPXeLo+45949uEfdSsB
|
|
||||||
pbaEdNWxF5Vr1CSjuO5siIlgDjmT655voXo67xVpEN4HhMrxugDJfCa6z97P0+ML
|
|
||||||
PdDxim57uNqkam9XIq9hKQaurxMAECDPmlEXI4QT3eu5qw5/knMzDMZj4Vi6hovL
|
|
||||||
wvvAeLHO/jsyfIdNmhBGU2RWCEZ9uo/MeerPHtRPfg74g+9PPfP6nyHD2Wes6yGd
|
|
||||||
oVQwtPNAQD6Cj7EaA2xdZYLJ7/jW6yiPu98FFWP74FN2dlyEA2uVziLsfBrgpS4l
|
|
||||||
tVOlrO2YzkkqUGrybzbLpj6eeHx+Cd7wcjI8CalsqtL6cG8cUEjtWQUHyTbQWAgG
|
|
||||||
5VPEgIAVhJ6RTZ26i/G+4J8neKyRs4vz+57UGwY6zI4AB1ZcWGEE3Bf+CDEDgmnP
|
|
||||||
LSwbnHefK9IljT9XU98PelSryUO/5UPw7leE0akXKB4DtekToO226px1VnGp3Bov
|
|
||||||
1GBGvpHvL2WizEwdk+nfk8LtrLzej+9FtIcq3uIrYnsac47Pf7p0otcFeTJTjSq3
|
|
||||||
krCaoG4Hx0zGQG2ZFpHrSrZTVy6lxvIdfi0beMgY6h78p6M9eYZHQHc02DjFkQXN
|
|
||||||
bXb5c6gCHESH5PXwPU4jQEE7Ib9J6sbk7ZT2Mw==
|
|
||||||
=j+4q
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@@ -1,220 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
CROSS_ARCHITECTURES="i386"
|
|
||||||
for arch in $CROSS_ARCHITECTURES; do
|
|
||||||
dpkg --add-architecture $arch
|
|
||||||
done
|
|
||||||
|
|
||||||
apt-get install -y \
|
|
||||||
ca-certificates \
|
|
||||||
gnupg \
|
|
||||||
unzip \
|
|
||||||
wget
|
|
||||||
|
|
||||||
# Upstream LLVM package repository
|
|
||||||
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
|
|
||||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
|
|
||||||
|
|
||||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
|
|
||||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
|
|
||||||
|
|
||||||
apt-get update
|
|
||||||
|
|
||||||
# Use newer packages from backports by default
|
|
||||||
cat >/etc/apt/preferences <<EOF
|
|
||||||
Package: *
|
|
||||||
Pin: release a=buster-backports
|
|
||||||
Pin-Priority: 500
|
|
||||||
EOF
|
|
||||||
|
|
||||||
apt-get dist-upgrade -y
|
|
||||||
|
|
||||||
apt-get install -y --no-remove \
|
|
||||||
autoconf \
|
|
||||||
automake \
|
|
||||||
autotools-dev \
|
|
||||||
bison \
|
|
||||||
clang-9 \
|
|
||||||
cmake \
|
|
||||||
flex \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
gettext \
|
|
||||||
git \
|
|
||||||
libclang-6.0-dev \
|
|
||||||
libclang-7-dev \
|
|
||||||
libclang-8-dev \
|
|
||||||
libclang-9-dev \
|
|
||||||
libclc-dev \
|
|
||||||
libelf-dev \
|
|
||||||
libepoxy-dev \
|
|
||||||
libexpat1-dev \
|
|
||||||
libgbm-dev \
|
|
||||||
libgtk-3-dev \
|
|
||||||
libomxil-bellagio-dev \
|
|
||||||
libpciaccess-dev \
|
|
||||||
libtool \
|
|
||||||
libunwind-dev \
|
|
||||||
libva-dev \
|
|
||||||
libvdpau-dev \
|
|
||||||
libvulkan-dev \
|
|
||||||
libx11-dev \
|
|
||||||
libx11-xcb-dev \
|
|
||||||
libxdamage-dev \
|
|
||||||
libxext-dev \
|
|
||||||
libxrandr-dev \
|
|
||||||
libxrender-dev \
|
|
||||||
libxshmfence-dev \
|
|
||||||
libxvmc-dev \
|
|
||||||
libxxf86vm-dev \
|
|
||||||
llvm-6.0-dev \
|
|
||||||
llvm-7-dev \
|
|
||||||
llvm-8-dev \
|
|
||||||
llvm-9-dev \
|
|
||||||
meson \
|
|
||||||
pkg-config \
|
|
||||||
python-mako \
|
|
||||||
python3-mako \
|
|
||||||
scons \
|
|
||||||
x11proto-dri2-dev \
|
|
||||||
x11proto-gl-dev \
|
|
||||||
x11proto-randr-dev \
|
|
||||||
xz-utils \
|
|
||||||
zlib1g-dev
|
|
||||||
|
|
||||||
# Cross-build Mesa deps
|
|
||||||
for arch in $CROSS_ARCHITECTURES; do
|
|
||||||
apt-get install -y --no-remove \
|
|
||||||
crossbuild-essential-${arch} \
|
|
||||||
libdrm-dev:${arch} \
|
|
||||||
libelf-dev:${arch} \
|
|
||||||
libexpat1-dev:${arch}
|
|
||||||
done
|
|
||||||
|
|
||||||
# for 64bit windows cross-builds
|
|
||||||
apt-get install -y --no-remove \
|
|
||||||
libz-mingw-w64-dev \
|
|
||||||
mingw-w64 \
|
|
||||||
wine \
|
|
||||||
wine32 \
|
|
||||||
wine64
|
|
||||||
|
|
||||||
# Debian's pkg-config wrapers for mingw are broken, and there's no sign that
|
|
||||||
# they're going to be fixed, so we'll just have to fix it ourselves
|
|
||||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
|
|
||||||
cat >/usr/local/bin/x86_64-w64-mingw32-pkg-config <<EOF
|
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
PKG_CONFIG_LIBDIR=/usr/x86_64-w64-mingw32/lib/pkgconfig pkg-config \$@
|
|
||||||
EOF
|
|
||||||
chmod +x /usr/local/bin/x86_64-w64-mingw32-pkg-config
|
|
||||||
|
|
||||||
# for the vulkan overlay layer
|
|
||||||
wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip
|
|
||||||
unzip glslang-master-linux-Release.zip bin/glslangValidator
|
|
||||||
install -m755 bin/glslangValidator /usr/local/bin/
|
|
||||||
rm bin/glslangValidator glslang-master-linux-Release.zip
|
|
||||||
|
|
||||||
|
|
||||||
# dependencies where we want a specific version
|
|
||||||
export XORG_RELEASES=https://xorg.freedesktop.org/releases/individual
|
|
||||||
export XCB_RELEASES=https://xcb.freedesktop.org/dist
|
|
||||||
export WAYLAND_RELEASES=https://wayland.freedesktop.org/releases
|
|
||||||
|
|
||||||
export XORGMACROS_VERSION=util-macros-1.19.0
|
|
||||||
export LIBDRM_VERSION=libdrm-2.4.100
|
|
||||||
export XCBPROTO_VERSION=xcb-proto-1.13
|
|
||||||
export LIBXCB_VERSION=libxcb-1.13
|
|
||||||
export LIBWAYLAND_VERSION=wayland-1.15.0
|
|
||||||
export WAYLAND_PROTOCOLS_VERSION=wayland-protocols-1.12
|
|
||||||
|
|
||||||
wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
|
|
||||||
tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
|
|
||||||
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
|
||||||
rm -rf $XORGMACROS_VERSION
|
|
||||||
|
|
||||||
wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
|
|
||||||
tar -xvf $XCBPROTO_VERSION.tar.bz2 && rm $XCBPROTO_VERSION.tar.bz2
|
|
||||||
cd $XCBPROTO_VERSION; ./configure; make install; cd ..
|
|
||||||
rm -rf $XCBPROTO_VERSION
|
|
||||||
|
|
||||||
wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
|
|
||||||
tar -xvf $LIBXCB_VERSION.tar.bz2 && rm $LIBXCB_VERSION.tar.bz2
|
|
||||||
cd $LIBXCB_VERSION; ./configure; make install; cd ..
|
|
||||||
rm -rf $LIBXCB_VERSION
|
|
||||||
|
|
||||||
wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
|
|
||||||
tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
|
|
||||||
cd $LIBDRM_VERSION; meson build -D vc4=true -D freedreno=true -D etnaviv=true; ninja -j4 -C build install; cd ..
|
|
||||||
rm -rf $LIBDRM_VERSION
|
|
||||||
|
|
||||||
wget $WAYLAND_RELEASES/$LIBWAYLAND_VERSION.tar.xz
|
|
||||||
tar -xvf $LIBWAYLAND_VERSION.tar.xz && rm $LIBWAYLAND_VERSION.tar.xz
|
|
||||||
cd $LIBWAYLAND_VERSION; ./configure --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation; make install; cd ..
|
|
||||||
rm -rf $LIBWAYLAND_VERSION
|
|
||||||
|
|
||||||
wget $WAYLAND_RELEASES/$WAYLAND_PROTOCOLS_VERSION.tar.xz
|
|
||||||
tar -xvf $WAYLAND_PROTOCOLS_VERSION.tar.xz && rm $WAYLAND_PROTOCOLS_VERSION.tar.xz
|
|
||||||
cd $WAYLAND_PROTOCOLS_VERSION; ./configure; make install; cd ..
|
|
||||||
rm -rf $WAYLAND_PROTOCOLS_VERSION
|
|
||||||
|
|
||||||
|
|
||||||
# The version of libglvnd-dev in debian is too old
|
|
||||||
# Check this page to see when this local compilation can be dropped in favour of the package:
|
|
||||||
# https://packages.debian.org/libglvnd-dev
|
|
||||||
GLVND_VERSION=1.2.0
|
|
||||||
wget https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v$GLVND_VERSION/libglvnd-v$GLVND_VERSION.tar.gz
|
|
||||||
tar -xvf libglvnd-v$GLVND_VERSION.tar.gz && rm libglvnd-v$GLVND_VERSION.tar.gz
|
|
||||||
pushd libglvnd-v$GLVND_VERSION; ./autogen.sh; ./configure; make install; popd
|
|
||||||
rm -rf libglvnd-v$GLVND_VERSION
|
|
||||||
|
|
||||||
|
|
||||||
pushd /usr/local
|
|
||||||
git clone https://gitlab.freedesktop.org/mesa/shader-db.git --depth 1
|
|
||||||
rm -rf shader-db/.git
|
|
||||||
cd shader-db
|
|
||||||
make
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Use ccache to speed up builds
|
|
||||||
apt-get install -y --no-remove ccache
|
|
||||||
|
|
||||||
# We need xmllint to validate the XML files in Mesa
|
|
||||||
apt-get install -y --no-remove libxml2-utils
|
|
||||||
|
|
||||||
|
|
||||||
# Generate cross build files for Meson
|
|
||||||
for arch in $CROSS_ARCHITECTURES; do
|
|
||||||
cross_file="/cross_file-$arch.txt"
|
|
||||||
/usr/share/meson/debcrossgen --arch "$arch" -o "$cross_file"
|
|
||||||
# Explicitly set ccache path for cross compilers
|
|
||||||
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
|
|
||||||
if [ "$arch" = "i386" ]; then
|
|
||||||
# Work around a bug in debcrossgen that should be fixed in the next release
|
|
||||||
sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
|
|
||||||
# Don't need wrapper for i386 executables
|
|
||||||
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
############### Uninstall the build software
|
|
||||||
|
|
||||||
apt-get purge -y \
|
|
||||||
autoconf \
|
|
||||||
automake \
|
|
||||||
autotools-dev \
|
|
||||||
cmake \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
libgbm-dev \
|
|
||||||
libtool \
|
|
||||||
unzip \
|
|
||||||
wget
|
|
||||||
|
|
||||||
apt-get autoremove -y --purge
|
|
@@ -1,59 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
apt-get install -y \
|
|
||||||
apt-transport-https \
|
|
||||||
ca-certificates
|
|
||||||
|
|
||||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
|
|
||||||
echo 'deb https://deb.debian.org/debian stretch-backports main' >/etc/apt/sources.list.d/backports.list
|
|
||||||
|
|
||||||
apt-get update
|
|
||||||
|
|
||||||
# Use newer packages from backports by default
|
|
||||||
cat >/etc/apt/preferences <<EOF
|
|
||||||
Package: *
|
|
||||||
Pin: release a=stretch-backports
|
|
||||||
Pin-Priority: 500
|
|
||||||
EOF
|
|
||||||
|
|
||||||
apt-get dist-upgrade -y
|
|
||||||
|
|
||||||
apt-get install -y --no-remove \
|
|
||||||
llvm-3.9-dev \
|
|
||||||
libclang-3.9-dev \
|
|
||||||
llvm-4.0-dev \
|
|
||||||
libclang-4.0-dev \
|
|
||||||
llvm-5.0-dev \
|
|
||||||
libclang-5.0-dev \
|
|
||||||
g++ \
|
|
||||||
bzip2 \
|
|
||||||
ccache \
|
|
||||||
zlib1g-dev \
|
|
||||||
pkg-config \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
libepoxy-dev \
|
|
||||||
libclc-dev \
|
|
||||||
xz-utils \
|
|
||||||
libdrm-dev \
|
|
||||||
libexpat1-dev \
|
|
||||||
libelf-dev \
|
|
||||||
libunwind-dev \
|
|
||||||
libpng-dev \
|
|
||||||
python-mako \
|
|
||||||
python3-mako \
|
|
||||||
bison \
|
|
||||||
flex \
|
|
||||||
gettext \
|
|
||||||
scons \
|
|
||||||
meson
|
|
||||||
|
|
||||||
|
|
||||||
############### Uninstall unused packages
|
|
||||||
|
|
||||||
apt-get autoremove -y --purge
|
|
@@ -1,96 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
apt-get install -y \
|
|
||||||
ca-certificates \
|
|
||||||
gnupg \
|
|
||||||
|
|
||||||
# Upstream LLVM package repository
|
|
||||||
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
|
|
||||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
|
|
||||||
|
|
||||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
|
|
||||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
|
|
||||||
|
|
||||||
apt-get update
|
|
||||||
|
|
||||||
# Use newer packages from backports by default
|
|
||||||
cat >/etc/apt/preferences <<EOF
|
|
||||||
Package: *
|
|
||||||
Pin: release a=buster-backports
|
|
||||||
Pin-Priority: 500
|
|
||||||
EOF
|
|
||||||
|
|
||||||
apt-get dist-upgrade -y
|
|
||||||
|
|
||||||
apt-get install -y --no-remove \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
git \
|
|
||||||
gcc \
|
|
||||||
libexpat1 \
|
|
||||||
libgbm-dev \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libpng16-16 \
|
|
||||||
libpng-dev \
|
|
||||||
libvulkan1 \
|
|
||||||
libvulkan-dev \
|
|
||||||
libwaffle-dev \
|
|
||||||
libwayland-server0 \
|
|
||||||
libxcb-xfixes0 \
|
|
||||||
libxkbcommon0 \
|
|
||||||
libxkbcommon-dev \
|
|
||||||
libxrender1 \
|
|
||||||
libxrender-dev \
|
|
||||||
libllvm9 \
|
|
||||||
meson \
|
|
||||||
patch \
|
|
||||||
pkg-config \
|
|
||||||
python3-mako \
|
|
||||||
python3-numpy \
|
|
||||||
python3-six \
|
|
||||||
python \
|
|
||||||
waffle-utils \
|
|
||||||
xauth \
|
|
||||||
xvfb \
|
|
||||||
zlib1g
|
|
||||||
|
|
||||||
|
|
||||||
############### Build piglit
|
|
||||||
|
|
||||||
. .gitlab-ci/build-piglit.sh
|
|
||||||
|
|
||||||
############### Build dEQP runner
|
|
||||||
|
|
||||||
. .gitlab-ci/build-cts-runner.sh
|
|
||||||
|
|
||||||
############### Build dEQP GL
|
|
||||||
|
|
||||||
. .gitlab-ci/build-deqp-gl.sh
|
|
||||||
|
|
||||||
|
|
||||||
############### Uninstall the build software
|
|
||||||
|
|
||||||
apt-get purge -y \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
libc6-dev \
|
|
||||||
libgbm-dev \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libpng-dev \
|
|
||||||
libwaffle-dev \
|
|
||||||
libxkbcommon-dev \
|
|
||||||
libxrender-dev \
|
|
||||||
meson \
|
|
||||||
patch \
|
|
||||||
pkg-config \
|
|
||||||
python
|
|
||||||
|
|
||||||
apt-get autoremove -y --purge
|
|
@@ -1,87 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
apt-get install -y \
|
|
||||||
ca-certificates \
|
|
||||||
gnupg \
|
|
||||||
|
|
||||||
# Upstream LLVM package repository
|
|
||||||
apt-key add .gitlab-ci/container/llvm-snapshot.gpg.key
|
|
||||||
echo "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >/etc/apt/sources.list.d/llvm9.list
|
|
||||||
|
|
||||||
sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
|
|
||||||
echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
|
|
||||||
|
|
||||||
apt-get update
|
|
||||||
|
|
||||||
# Use newer packages from backports by default
|
|
||||||
cat >/etc/apt/preferences <<EOF
|
|
||||||
Package: *
|
|
||||||
Pin: release a=buster-backports
|
|
||||||
Pin-Priority: 500
|
|
||||||
EOF
|
|
||||||
|
|
||||||
apt-get dist-upgrade -y
|
|
||||||
|
|
||||||
apt-get install -y --no-remove \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
git \
|
|
||||||
gcc \
|
|
||||||
libexpat1 \
|
|
||||||
libgbm-dev \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libpng16-16 \
|
|
||||||
libpng-dev \
|
|
||||||
libvulkan1 \
|
|
||||||
libvulkan-dev \
|
|
||||||
libwayland-server0 \
|
|
||||||
libxcb-randr0 \
|
|
||||||
libxcb-xfixes0 \
|
|
||||||
libxkbcommon0 \
|
|
||||||
libxkbcommon-dev \
|
|
||||||
libxrender1 \
|
|
||||||
libxrender-dev \
|
|
||||||
libllvm9 \
|
|
||||||
meson \
|
|
||||||
patch \
|
|
||||||
pkg-config \
|
|
||||||
python3-distutils \
|
|
||||||
python \
|
|
||||||
xauth \
|
|
||||||
xvfb
|
|
||||||
|
|
||||||
|
|
||||||
############### Build dEQP runner
|
|
||||||
|
|
||||||
. .gitlab-ci/build-cts-runner.sh
|
|
||||||
|
|
||||||
############### Build dEQP VK
|
|
||||||
|
|
||||||
. .gitlab-ci/build-deqp-vk.sh
|
|
||||||
|
|
||||||
|
|
||||||
############### Uninstall the build software
|
|
||||||
|
|
||||||
apt-get purge -y \
|
|
||||||
cmake \
|
|
||||||
g++ \
|
|
||||||
gcc \
|
|
||||||
git \
|
|
||||||
gnupg \
|
|
||||||
libgbm-dev \
|
|
||||||
libgles2-mesa-dev \
|
|
||||||
libpng-dev \
|
|
||||||
libvulkan-dev \
|
|
||||||
libxkbcommon-dev \
|
|
||||||
libxrender-dev \
|
|
||||||
meson \
|
|
||||||
patch \
|
|
||||||
pkg-config \
|
|
||||||
python
|
|
||||||
|
|
||||||
apt-get autoremove -y --purge
|
|
@@ -1,187 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
apt-get -y install --no-install-recommends \
|
|
||||||
initramfs-tools \
|
|
||||||
libpng16-16 \
|
|
||||||
strace \
|
|
||||||
libsensors5 \
|
|
||||||
libexpat1 \
|
|
||||||
libdrm2 \
|
|
||||||
libdrm-nouveau2
|
|
||||||
passwd root -d
|
|
||||||
chsh -s /bin/sh
|
|
||||||
ln -s /bin/sh /init
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Strip the image to a small minimal system without removing the debian
|
|
||||||
# toolchain.
|
|
||||||
|
|
||||||
# Copy timezone file and remove tzdata package
|
|
||||||
rm -rf /etc/localtime
|
|
||||||
cp /usr/share/zoneinfo/Etc/UTC /etc/localtime
|
|
||||||
|
|
||||||
UNNEEDED_PACKAGES="libfdisk1
|
|
||||||
tzdata
|
|
||||||
diffutils"
|
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
# Removing unused packages
|
|
||||||
for PACKAGE in ${UNNEEDED_PACKAGES}
|
|
||||||
do
|
|
||||||
echo ${PACKAGE}
|
|
||||||
if ! apt-get remove --purge --yes "${PACKAGE}"
|
|
||||||
then
|
|
||||||
echo "WARNING: ${PACKAGE} isn't installed"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
apt-get autoremove --yes || true
|
|
||||||
|
|
||||||
# Dropping logs
|
|
||||||
rm -rf /var/log/*
|
|
||||||
|
|
||||||
# Dropping documentation, localization, i18n files, etc
|
|
||||||
rm -rf /usr/share/doc/*
|
|
||||||
rm -rf /usr/share/locale/*
|
|
||||||
rm -rf /usr/share/man
|
|
||||||
rm -rf /usr/share/i18n/*
|
|
||||||
rm -rf /usr/share/info/*
|
|
||||||
rm -rf /usr/share/lintian/*
|
|
||||||
rm -rf /usr/share/common-licenses/*
|
|
||||||
rm -rf /usr/share/mime/*
|
|
||||||
|
|
||||||
# Dropping reportbug scripts
|
|
||||||
rm -rf /usr/share/bug
|
|
||||||
|
|
||||||
# Drop udev hwdb not required on a stripped system
|
|
||||||
rm -rf /lib/udev/hwdb.bin /lib/udev/hwdb.d/*
|
|
||||||
|
|
||||||
# Drop all gconv conversions && binaries
|
|
||||||
rm -rf usr/bin/iconv
|
|
||||||
rm -rf usr/sbin/iconvconfig
|
|
||||||
rm -rf usr/lib/*/gconv/
|
|
||||||
|
|
||||||
# Remove libusb database
|
|
||||||
rm -rf usr/sbin/update-usbids
|
|
||||||
rm -rf var/lib/usbutils/usb.ids
|
|
||||||
rm -rf usr/share/misc/usb.ids
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Crush into a minimal production image to be deployed via some type of image
|
|
||||||
# updating system.
|
|
||||||
# IMPORTANT: The Debian system is not longer functional at this point,
|
|
||||||
# for example, apt and dpkg will stop working
|
|
||||||
|
|
||||||
UNNEEDED_PACKAGES="apt libapt-pkg5.0 "\
|
|
||||||
"ncurses-bin ncurses-base libncursesw5 libncurses5 "\
|
|
||||||
"perl-base "\
|
|
||||||
"debconf libdebconfclient0 "\
|
|
||||||
"e2fsprogs e2fslibs libfdisk1 "\
|
|
||||||
"insserv "\
|
|
||||||
"udev "\
|
|
||||||
"init-system-helpers "\
|
|
||||||
"bash "\
|
|
||||||
"cpio "\
|
|
||||||
"passwd "\
|
|
||||||
"libsemanage1 libsemanage-common "\
|
|
||||||
"libsepol1 "\
|
|
||||||
"gzip "\
|
|
||||||
"gpgv "\
|
|
||||||
"hostname "\
|
|
||||||
"adduser "\
|
|
||||||
"debian-archive-keyring "\
|
|
||||||
|
|
||||||
# Removing unneeded packages
|
|
||||||
for PACKAGE in ${UNNEEDED_PACKAGES}
|
|
||||||
do
|
|
||||||
echo "Forcing removal of ${PACKAGE}"
|
|
||||||
if ! dpkg --purge --force-remove-essential --force-depends "${PACKAGE}"
|
|
||||||
then
|
|
||||||
echo "WARNING: ${PACKAGE} isn't installed"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Show what's left package-wise before dropping dpkg itself
|
|
||||||
COLUMNS=300 dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n
|
|
||||||
|
|
||||||
# Drop dpkg
|
|
||||||
dpkg --purge --force-remove-essential --force-depends dpkg
|
|
||||||
|
|
||||||
# No apt or dpkg, no need for its configuration archives
|
|
||||||
rm -rf etc/apt
|
|
||||||
rm -rf etc/dpkg
|
|
||||||
|
|
||||||
# Drop directories not part of ostree
|
|
||||||
# Note that /var needs to exist as ostree bind mounts the deployment /var over
|
|
||||||
# it
|
|
||||||
rm -rf var/* opt srv share
|
|
||||||
|
|
||||||
# ca-certificates are in /etc drop the source
|
|
||||||
rm -rf usr/share/ca-certificates
|
|
||||||
|
|
||||||
# No bash, no need for completions
|
|
||||||
rm -rf usr/share/bash-completion
|
|
||||||
|
|
||||||
# No zsh, no need for comletions
|
|
||||||
rm -rf usr/share/zsh/vendor-completions
|
|
||||||
|
|
||||||
# drop gcc-6 python helpers
|
|
||||||
rm -rf usr/share/gcc-6
|
|
||||||
|
|
||||||
# Drop sysvinit leftovers
|
|
||||||
rm -rf etc/init.d
|
|
||||||
rm -rf etc/rc[0-6S].d
|
|
||||||
|
|
||||||
# Drop upstart helpers
|
|
||||||
rm -rf etc/init
|
|
||||||
|
|
||||||
# Various xtables helpers
|
|
||||||
rm -rf usr/lib/xtables
|
|
||||||
|
|
||||||
# Drop all locales
|
|
||||||
# TODO: only remaining locale is actually "C". Should we really remove it?
|
|
||||||
rm -rf usr/lib/locale/*
|
|
||||||
|
|
||||||
# partition helpers
|
|
||||||
rm usr/sbin/*fdisk
|
|
||||||
|
|
||||||
# local compiler
|
|
||||||
rm usr/bin/localedef
|
|
||||||
|
|
||||||
# Systemd dns resolver
|
|
||||||
find usr etc -name '*systemd-resolve*' -prune -exec rm -r {} \;
|
|
||||||
|
|
||||||
# Systemd network configuration
|
|
||||||
find usr etc -name '*networkd*' -prune -exec rm -r {} \;
|
|
||||||
|
|
||||||
# systemd ntp client
|
|
||||||
find usr etc -name '*timesyncd*' -prune -exec rm -r {} \;
|
|
||||||
|
|
||||||
# systemd hw database manager
|
|
||||||
find usr etc -name '*systemd-hwdb*' -prune -exec rm -r {} \;
|
|
||||||
|
|
||||||
# No need for fuse
|
|
||||||
find usr etc -name '*fuse*' -prune -exec rm -r {} \;
|
|
||||||
|
|
||||||
# lsb init function leftovers
|
|
||||||
rm -rf usr/lib/lsb
|
|
||||||
|
|
||||||
# Only needed when adding libraries
|
|
||||||
rm usr/sbin/ldconfig*
|
|
||||||
|
|
||||||
# Games, unused
|
|
||||||
rmdir usr/games
|
|
||||||
|
|
||||||
# Remove pam module to authenticate against a DB
|
|
||||||
# plus libdb-5.3.so that is only used by this pam module
|
|
||||||
rm usr/lib/*/security/pam_userdb.so
|
|
||||||
rm usr/lib/*/libdb-5.3.so
|
|
||||||
|
|
||||||
# remove NSS support for nis, nisplus and hesiod
|
|
||||||
rm usr/lib/*/libnss_hesiod*
|
|
||||||
rm usr/lib/*/libnss_nis*
|
|
||||||
|
|
||||||
rm bin/tar
|
|
@@ -1 +0,0 @@
|
|||||||
u_format_test
|
|
@@ -1,10 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
@@ -1,33 +0,0 @@
|
|||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner
|
|
||||||
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
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_l8_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgb888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba4444_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba8888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_l8_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgb888_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba4444_npot
|
|
||||||
dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba8888_npot
|
|
@@ -1,3 +0,0 @@
|
|||||||
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
|
|
||||||
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_clear
|
|
||||||
dEQP-GLES31.functional.stencil_texturing.render.depth24_stencil8_draw
|
|
@@ -1,21 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
||||||
|
|
||||||
# Unstable test results
|
|
||||||
#dEQP-GLES3.functional.fragment_out.random.*
|
|
||||||
dEQP-GLES3.functional.transform_feedback.*points.*
|
|
||||||
dEQP-GLES3.functional.transform_feedback.*lines.*
|
|
||||||
dEQP-GLES31.functional.primitive_bounding_box.*
|
|
||||||
#dEQP-GLES31.functional.layout_binding.ssbo.fragment_binding_array.*
|
|
||||||
|
|
||||||
# Intermittent timeout
|
|
||||||
dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.23
|
|
||||||
|
|
@@ -1,203 +0,0 @@
|
|||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_x_neg_y_pos_z_and_pos_x_pos_y_neg_z
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_x_pos_y_pos_z_and_pos_x_neg_y_neg_z
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_x_neg_y_pos_z_and_neg_x_pos_y_neg_z
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_x_pos_y_pos_z_and_neg_x_neg_y_neg_z
|
|
||||||
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.0
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.1
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.10
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.11
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.12
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.13
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.14
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.15
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.16
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.17
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.18
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.19
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.2
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.20
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.21
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.22
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.23
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.24
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.3
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.4
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.5
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.6
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.7
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.8
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.random.9
|
|
||||||
dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.stencil
|
|
||||||
dEQP-GLES2.functional.shaders.algorithm.hsl_to_rgb_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.array_arguments.global_in_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.array_arguments.local_in_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.datatypes.int_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.overloading.builtin_sin_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.overloading.builtin_step_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.overloading.user_func_arg_int_types_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.qualifiers.inout_highp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.qualifiers.inout_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.qualifiers.inout_lowp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.qualifiers.out_highp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.qualifiers.out_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.functions.qualifiers.out_lowp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat3_dynamic_loop_write_static_loop_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat3_dynamic_loop_write_static_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat3_dynamic_write_dynamic_loop_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.conditional_body_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.vector_counter_fragment
|
|
||||||
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.conditional_body_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.nested_tricky_dataflow_2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.vector_counter_fragment
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.compound_statement_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.sequence_statement_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.nested_sequence_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.vector_counter_fragment
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.nested_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.highp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.lowp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_effect.mediump_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.highp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.lowp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub_assign_result.mediump_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_int_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_int_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_int_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.highp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_int_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_int_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_int_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.lowp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_int_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_int_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_int_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_ivec2_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_ivec3_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_ivec4_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.binary_operator.sub.mediump_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.highp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.highp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.highp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.highp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.lowp_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.lowp_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.lowp_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.lowp_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.mediump_int_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.mediump_ivec2_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.mediump_ivec3_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.operator.unary_operator.minus.mediump_ivec4_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.random.all_features.fragment.37
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.11
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.12
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.14
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.37
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.5
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.74
|
|
||||||
dEQP-GLES2.functional.shaders.random.texture.fragment.28
|
|
||||||
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.65
|
|
||||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias
|
|
||||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias
|
|
||||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texturecube_bias
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest
|
|
||||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgb
|
|
||||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.2d_rgba
|
|
||||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgb
|
|
||||||
dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgba
|
|
@@ -1,50 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance
|
|
||||||
dEQP-GLES[0-9]*.stress
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish
|
|
||||||
|
|
||||||
# Crashes
|
|
||||||
dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_1
|
|
||||||
dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_1
|
|
||||||
dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_1
|
|
||||||
|
|
||||||
# Flaky
|
|
||||||
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
|
|
||||||
dEQP-GLES2.functional.default_vertex_attrib.*
|
|
||||||
dEQP-GLES2.functional.fbo.completeness.size.distinct
|
|
||||||
dEQP-GLES2.functional.negative_api.shader.uniform_matrixfv_invalid_transpose
|
|
||||||
dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed
|
|
||||||
dEQP-GLES2.functional.shaders.builtin_variable.frontfacing
|
|
||||||
dEQP-GLES2.functional.shaders.random.exponential.fragment.94
|
|
||||||
dEQP-GLES2.functional.shaders.random.all_features.fragment.55
|
|
||||||
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.1
|
|
||||||
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.69
|
|
||||||
|
|
||||||
# Driver bugs causing GPU errors
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.nested_sequence_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.conditional_body_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.conditional_continue_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.double_continue_vertex
|
|
||||||
|
|
||||||
# Hangs / OOM
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_static_read
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_dynamic_read
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_static_loop_read
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_dynamic_loop_write_dynamic_loop_read
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_dynamic_loop_write_dynamic_read_vertex
|
|
||||||
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_loop_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_loop_read_vertex
|
|
||||||
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_dynamic_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_static_loop_read_vertex
|
|
||||||
dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_loop_write_dynamic_loop_read_vertex
|
|
@@ -1,124 +0,0 @@
|
|||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
|
|
||||||
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4
|
|
||||||
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.color_clear.rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.depth.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_stencilbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.polygon_offset.default_displacement_with_units
|
|
||||||
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.limits.points
|
|
||||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2d_bias
|
|
||||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec3_bias
|
|
||||||
dEQP-GLES2.functional.shaders.texture_functions.fragment.texture2dproj_vec4_bias
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_clamp_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_mirror_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_linear_repeat_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_clamp_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_mirror_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_l8
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgb888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba4444
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.linear_mipmap_linear_nearest_repeat_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_clamp_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_mirror_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_linear_repeat_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_clamp_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_mirror_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_etc1
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_l8
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgb888
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba4444
|
|
||||||
dEQP-GLES2.functional.texture.filtering.2d.nearest_mipmap_linear_nearest_repeat_rgba8888
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.affine.nearest_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.linear_linear_repeat_non_square
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_clamp_non_square
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_mirror_non_square
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.basic.nearest_linear_repeat_non_square
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.2d.projected.nearest_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear
|
|
||||||
dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_nearest_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_nearest_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.clamp_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.mirror_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.2d.wrap.repeat_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror
|
|
||||||
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat
|
|
@@ -1,31 +0,0 @@
|
|||||||
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16
|
|
@@ -1,14 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
||||||
|
|
||||||
# XXX: Why does this flake?
|
|
||||||
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
|
|
||||||
|
|
@@ -1,31 +0,0 @@
|
|||||||
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16
|
|
@@ -1,10 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
@@ -1,31 +0,0 @@
|
|||||||
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16
|
|
@@ -1,13 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
||||||
|
|
||||||
# XXX: Why does this flake?
|
|
||||||
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
|
|
@@ -1,31 +0,0 @@
|
|||||||
dEQP-GLES2.functional.depth_stencil_clear.depth_stencil_masked
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb565_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgb5_a1_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_rbo_rgba4_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgb_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.rebind_tex2d_rgba_stencil_index8
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_colorbuffer.tex2d_rgba_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb565_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgb5_a1_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.rbo_rgba4_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgb_depth_component16
|
|
||||||
dEQP-GLES2.functional.fbo.render.shared_depthbuffer.tex2d_rgba_depth_component16
|
|
@@ -1,13 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
||||||
|
|
||||||
# XXX: Why does this flake?
|
|
||||||
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
|
|
@@ -1,31 +0,0 @@
|
|||||||
# Disable a TON of tests to keep the run around 5-10 minutes because my runner is
|
|
||||||
# slow.
|
|
||||||
dEQP-VK.api.*
|
|
||||||
dEQP-VK.binding_model.*
|
|
||||||
dEQP-VK.clipping.*
|
|
||||||
dEQP-VK.compute.*
|
|
||||||
dEQP-VK.conditional_rendering.*
|
|
||||||
dEQP-VK.descriptor_indexing.*
|
|
||||||
dEQP-VK.device_group.*
|
|
||||||
dEQP-VK.fragment_operations.*
|
|
||||||
dEQP-VK.fragment_shader_interlock.*
|
|
||||||
dEQP-VK.graphicsfuzz.*
|
|
||||||
dEQP-VK.image.*
|
|
||||||
dEQP-VK.imageless_framebuffer.*
|
|
||||||
dEQP-VK.info.*
|
|
||||||
dEQP-VK.memory.*
|
|
||||||
dEQP-VK.memory_model.*
|
|
||||||
dEQP-VK.multiview.*
|
|
||||||
dEQP-VK.pipeline.*
|
|
||||||
dEQP-VK.protected_memory.*
|
|
||||||
dEQP-VK.query_pool.*
|
|
||||||
dEQP-VK.robustness.*
|
|
||||||
dEQP-VK.sparse_resources.*
|
|
||||||
dEQP-VK.spirv_assembly.*
|
|
||||||
dEQP-VK.subgroups.*
|
|
||||||
dEQP-VK.synchronization.*
|
|
||||||
dEQP-VK.texture.*
|
|
||||||
dEQP-VK.transform_feedback.*
|
|
||||||
dEQP-VK.ubo.*
|
|
||||||
dEQP-VK.wsi.*
|
|
||||||
dEQP-VK.ycbcr.*
|
|
@@ -1,237 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
DEQP_OPTIONS="--deqp-surface-width=256 --deqp-surface-height=256"
|
|
||||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer"
|
|
||||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-gl-config-name=rgba8888d24s8ms0"
|
|
||||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden"
|
|
||||||
|
|
||||||
# It would be nice to be able to enable the watchdog, so that hangs in a test
|
|
||||||
# don't need to wait the full hour for the run to time out. However, some
|
|
||||||
# shaders end up taking long enough to compile
|
|
||||||
# (dEQP-GLES31.functional.ubo.random.all_per_block_buffers.20 for example)
|
|
||||||
# that they'll sporadically trigger the watchdog.
|
|
||||||
#DEQP_OPTIONS="$DEQP_OPTIONS --deqp-watchdog=enable"
|
|
||||||
|
|
||||||
if [ -z "$DEQP_VER" ]; then
|
|
||||||
echo 'DEQP_VER must be set to something like "gles2", "gles31" or "vk" for the test run'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$DEQP_VER" = "vk" ]; then
|
|
||||||
if [ -z "$VK_DRIVER" ]; then
|
|
||||||
echo 'VK_DRIVER must be to something like "radeon" or "intel" for the test run'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$DEQP_SKIPS" ]; then
|
|
||||||
echo 'DEQP_SKIPS must be set to something like "deqp-default-skips.txt"'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
INSTALL=`pwd`/install
|
|
||||||
|
|
||||||
# Set up the driver environment.
|
|
||||||
export LD_LIBRARY_PATH=`pwd`/install/lib/
|
|
||||||
export EGL_PLATFORM=surfaceless
|
|
||||||
export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.x86_64.json
|
|
||||||
|
|
||||||
# the runner was failing to look for libkms in /usr/local/lib for some reason
|
|
||||||
# I never figured out.
|
|
||||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
|
|
||||||
|
|
||||||
RESULTS=`pwd`/results
|
|
||||||
mkdir -p $RESULTS
|
|
||||||
|
|
||||||
# Generate test case list file.
|
|
||||||
if [ "$DEQP_VER" = "vk" ]; then
|
|
||||||
cp /deqp/mustpass/vk-master.txt /tmp/case-list.txt
|
|
||||||
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
|
|
||||||
else
|
|
||||||
cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt
|
|
||||||
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If the job is parallel, take the corresponding fraction of the caselist.
|
|
||||||
# Note: N~M is a gnu sed extension to match every nth line (first line is #1).
|
|
||||||
if [ -n "$CI_NODE_INDEX" ]; then
|
|
||||||
sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -s /tmp/case-list.txt ]; then
|
|
||||||
echo "Caselist generation failed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$DEQP_EXPECTED_FAILS" ]; then
|
|
||||||
XFAIL="--xfail-list $INSTALL/$DEQP_EXPECTED_FAILS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set +e
|
|
||||||
|
|
||||||
run_cts() {
|
|
||||||
deqp=$1
|
|
||||||
caselist=$2
|
|
||||||
output=$3
|
|
||||||
deqp-runner \
|
|
||||||
--deqp $deqp \
|
|
||||||
--output $output \
|
|
||||||
--caselist $caselist \
|
|
||||||
--exclude-list $INSTALL/$DEQP_SKIPS \
|
|
||||||
$XFAIL \
|
|
||||||
--job ${DEQP_PARALLEL:-1} \
|
|
||||||
--allow-flakes true \
|
|
||||||
$DEQP_RUNNER_OPTIONS \
|
|
||||||
-- \
|
|
||||||
$DEQP_OPTIONS
|
|
||||||
}
|
|
||||||
|
|
||||||
report_flakes() {
|
|
||||||
if [ -z "$FLAKES_CHANNEL" ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
flakes=$1
|
|
||||||
bot="$CI_RUNNER_DESCRIPTION-$CI_PIPELINE_ID"
|
|
||||||
channel="$FLAKES_CHANNEL"
|
|
||||||
(
|
|
||||||
echo NICK $bot
|
|
||||||
echo USER $bot unused unused :Gitlab CI Notifier
|
|
||||||
sleep 10
|
|
||||||
echo "JOIN $channel"
|
|
||||||
sleep 1
|
|
||||||
desc="Flakes detected in job: $CI_JOB_URL on $CI_RUNNER_DESCRIPTION"
|
|
||||||
if [ -n "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then
|
|
||||||
desc="$desc on branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_MERGE_REQUEST_TITLE)"
|
|
||||||
fi
|
|
||||||
echo "PRIVMSG $channel :$desc"
|
|
||||||
for flake in `cat $flakes`; do
|
|
||||||
echo "PRIVMSG $channel :$flake"
|
|
||||||
done
|
|
||||||
echo "PRIVMSG $channel :See $CI_JOB_URL/artifacts/browse/results/"
|
|
||||||
echo "QUIT"
|
|
||||||
) | nc irc.freenode.net 6667 > /dev/null
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
extract_xml_result() {
|
|
||||||
testcase=$1
|
|
||||||
shift 1
|
|
||||||
qpas=$*
|
|
||||||
start="#beginTestCaseResult $testcase"
|
|
||||||
for qpa in $qpas; do
|
|
||||||
while IFS= read -r line; do
|
|
||||||
if [ "$line" = "$start" ]; then
|
|
||||||
dst="$testcase.qpa"
|
|
||||||
echo "#beginSession" > $dst
|
|
||||||
echo $line >> $dst
|
|
||||||
while IFS= read -r line; do
|
|
||||||
if [ "$line" = "#endTestCaseResult" ]; then
|
|
||||||
echo $line >> $dst
|
|
||||||
echo "#endSession" >> $dst
|
|
||||||
/deqp/executor/testlog-to-xml $dst "$RESULTS/$testcase.xml"
|
|
||||||
# copy the stylesheets here so they only end up in artifacts
|
|
||||||
# if we have one or more result xml in artifacts
|
|
||||||
cp /deqp/testlog.css "$RESULTS/"
|
|
||||||
cp /deqp/testlog.xsl "$RESULTS/"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
echo $line >> $dst
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done < $qpa
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
extract_xml_results() {
|
|
||||||
qpas=$*
|
|
||||||
while IFS= read -r testcase; do
|
|
||||||
testcase=${testcase%,*}
|
|
||||||
extract_xml_result $testcase $qpas
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Generate junit results
|
|
||||||
generate_junit() {
|
|
||||||
results=$1
|
|
||||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
|
||||||
echo "<testsuites>"
|
|
||||||
echo "<testsuite name=\"$DEQP_VER-$CI_NODE_INDEX\">"
|
|
||||||
while read line; do
|
|
||||||
testcase=${line%,*}
|
|
||||||
result=${line#*,}
|
|
||||||
# avoid counting Skip's in the # of tests:
|
|
||||||
if [ "$result" = "Skip" ]; then
|
|
||||||
continue;
|
|
||||||
fi
|
|
||||||
echo "<testcase name=\"$testcase\">"
|
|
||||||
if [ "$result" != "Pass" ]; then
|
|
||||||
echo "<failure type=\"$result\">"
|
|
||||||
echo "$result: See $CI_JOB_URL/artifacts/results/$testcase.xml"
|
|
||||||
echo "</failure>"
|
|
||||||
fi
|
|
||||||
echo "</testcase>"
|
|
||||||
done < $results
|
|
||||||
echo "</testsuite>"
|
|
||||||
echo "</testsuites>"
|
|
||||||
}
|
|
||||||
|
|
||||||
# wrapper to supress +x to avoid spamming the log
|
|
||||||
quiet() {
|
|
||||||
set +x
|
|
||||||
"$@"
|
|
||||||
set -x
|
|
||||||
}
|
|
||||||
|
|
||||||
run_cts $DEQP /tmp/case-list.txt $RESULTS/cts-runner-results.txt
|
|
||||||
DEQP_EXITCODE=$?
|
|
||||||
|
|
||||||
quiet generate_junit $RESULTS/cts-runner-results.txt > $RESULTS/results.xml
|
|
||||||
|
|
||||||
if [ $DEQP_EXITCODE -ne 0 ]; then
|
|
||||||
# preserve caselist files in case of failures:
|
|
||||||
cp /tmp/deqp_runner.*.txt $RESULTS/
|
|
||||||
echo "Some unexpected results found (see cts-runner-results.txt in artifacts for full results):"
|
|
||||||
cat $RESULTS/cts-runner-results.txt | \
|
|
||||||
grep -v ",Pass" | \
|
|
||||||
grep -v ",Skip" | \
|
|
||||||
grep -v ",ExpectedFail" > \
|
|
||||||
$RESULTS/cts-runner-unexpected-results.txt
|
|
||||||
head -n 50 $RESULTS/cts-runner-unexpected-results.txt
|
|
||||||
|
|
||||||
if [ -z "$DEQP_NO_SAVE_RESULTS" ]; then
|
|
||||||
# Save the logs for up to the first 50 unexpected results:
|
|
||||||
head -n 50 $RESULTS/cts-runner-unexpected-results.txt | quiet extract_xml_results /tmp/*.qpa
|
|
||||||
fi
|
|
||||||
|
|
||||||
count=`cat $RESULTS/cts-runner-unexpected-results.txt | wc -l`
|
|
||||||
|
|
||||||
# Re-run fails to detect flakes. But use a small threshold, if
|
|
||||||
# something was fundamentally broken, we don't want to re-run
|
|
||||||
# the entire caselist
|
|
||||||
else
|
|
||||||
cat $RESULTS/cts-runner-results.txt | \
|
|
||||||
grep ",Flake" > \
|
|
||||||
$RESULTS/cts-runner-flakes.txt
|
|
||||||
|
|
||||||
count=`cat $RESULTS/cts-runner-flakes.txt | wc -l`
|
|
||||||
if [ $count -gt 0 ]; then
|
|
||||||
echo "Some flakes found (see cts-runner-flakes.txt in artifacts for full results):"
|
|
||||||
head -n 50 $RESULTS/cts-runner-flakes.txt
|
|
||||||
|
|
||||||
if [ -z "$DEQP_NO_SAVE_RESULTS" ]; then
|
|
||||||
# Save the logs for up to the first 50 flakes:
|
|
||||||
head -n 50 $RESULTS/cts-runner-flakes.txt | quiet extract_xml_results /tmp/*.qpa
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Report the flakes to IRC channel for monitoring (if configured):
|
|
||||||
quiet report_flakes $RESULTS/cts-runner-flakes.txt
|
|
||||||
else
|
|
||||||
# no flakes, so clean-up:
|
|
||||||
rm $RESULTS/cts-runner-flakes.txt
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit $DEQP_EXITCODE
|
|
@@ -1,844 +0,0 @@
|
|||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center
|
|
||||||
dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
|
|
||||||
dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
|
|
||||||
dEQP-GLES2.functional.polygon_offset.default_displacement_with_units
|
|
||||||
dEQP-GLES2.functional.polygon_offset.fixed16_displacement_with_units
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide
|
|
||||||
dEQP-GLES2.functional.rasterization.limits.points
|
|
||||||
dEQP-GLES2.functional.rasterization.primitives.points
|
|
||||||
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_center
|
|
||||||
dEQP-GLES3.functional.clipping.line.wide_line_clip_viewport_corner
|
|
||||||
dEQP-GLES3.functional.clipping.point.wide_point_clip
|
|
||||||
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center
|
|
||||||
dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner
|
|
||||||
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z
|
|
||||||
dEQP-GLES3.functional.clipping.triangle_vertex.clip_two.clip_pos_y_pos_z_and_neg_x_neg_y_neg_z
|
|
||||||
dEQP-GLES3.functional.draw.random.124
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component16
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_color
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_depth_stencil
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_msaa_stencil
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_color
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_depth_stencil
|
|
||||||
dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_msaa_stencil
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth24_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth32f_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component16
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component24
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.depth_component32f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r11f_g11f_b10f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r16f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.r8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg16f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rg8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb10_a2
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb565
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb5_a1
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgb8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba4
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.rgba8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.srgb8_alpha8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.2_samples.stencil_index8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth24_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth32f_stencil8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component16
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component24
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.depth_component32f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r11f_g11f_b10f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r16f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.r8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg16f
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rg8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb10_a2
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb565
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb5_a1
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgb8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba4
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.rgba8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.srgb8_alpha8
|
|
||||||
dEQP-GLES3.functional.fbo.msaa.4_samples.stencil_index8
|
|
||||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_alpha_to_coverage
|
|
||||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage
|
|
||||||
dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage_inverted
|
|
||||||
dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert
|
|
||||||
dEQP-GLES3.functional.negative_api.buffer.blit_framebuffer_multisample
|
|
||||||
dEQP-GLES3.functional.negative_api.buffer.read_pixels_fbo_format_mismatch
|
|
||||||
dEQP-GLES3.functional.polygon_offset.default_displacement_with_units
|
|
||||||
dEQP-GLES3.functional.polygon_offset.fixed16_displacement_with_units
|
|
||||||
dEQP-GLES3.functional.polygon_offset.fixed24_displacement_with_units
|
|
||||||
dEQP-GLES3.functional.polygon_offset.float32_displacement_with_units
|
|
||||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.points
|
|
||||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.points
|
|
||||||
dEQP-GLES3.functional.rasterization.interpolation.basic.line_loop_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.interpolation.basic.line_strip_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.interpolation.basic.lines_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.interpolation.projected.line_loop_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.interpolation.projected.line_strip_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.interpolation.projected.lines_wide
|
|
||||||
dEQP-GLES3.functional.rasterization.primitives.points
|
|
||||||
dEQP-GLES3.functional.rasterizer_discard.basic.write_depth_points
|
|
||||||
dEQP-GLES3.functional.rasterizer_discard.basic.write_stencil_points
|
|
||||||
dEQP-GLES3.functional.rasterizer_discard.fbo.write_depth_points
|
|
||||||
dEQP-GLES3.functional.rasterizer_discard.fbo.write_stencil_points
|
|
||||||
dEQP-GLES3.functional.rasterizer_discard.scissor.write_depth_points
|
|
||||||
dEQP-GLES3.functional.rasterizer_discard.scissor.write_stencil_points
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdx.texture.msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.dfdy.texture.msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.float_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec2_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec3_mediump
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_highp
|
|
||||||
dEQP-GLES3.functional.shaders.derivate.fwidth.texture.msaa4.vec4_mediump
|
|
||||||
dEQP-GLES3.functional.state_query.integers.max_samples_getfloat
|
|
||||||
dEQP-GLES3.functional.state_query.integers.max_samples_getinteger64
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_linear_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.r11f_g11f_b10f_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb10_a2_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb565_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb5_a1_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgb9_e5_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba16f_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba4_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.rgba8_snorm_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb8_alpha8_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.formats.srgb_r8_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.128x32x64_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_linear
|
|
||||||
dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_linear_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_linear_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_linear_nearest_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_mipmap_nearest_linear_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_linear_linear_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_mipmap_nearest_linear_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.clamp_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.mirror_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_clamp_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_mirror_repeat
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_clamp
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_mirror
|
|
||||||
dEQP-GLES3.functional.texture.vertex.3d.wrap.repeat_repeat_repeat
|
|
||||||
dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_divisible
|
|
||||||
dEQP-GLES3.functional.texture.wrap.astc_8x8.repeat_repeat_linear_not_divisible
|
|
||||||
dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_divisible
|
|
||||||
dEQP-GLES3.functional.texture.wrap.astc_8x8_srgb.repeat_repeat_linear_not_divisible
|
|
||||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads1
|
|
||||||
dEQP-GLES3.functional.vertex_arrays.single_attribute.normalize.int2_10_10_10.components4_quads256
|
|
||||||
dEQP-GLES31.functional.debug.error_filters.case_29
|
|
||||||
dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer.read_pixels_fbo_format_mismatch
|
|
||||||
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer_multisample
|
|
||||||
dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch
|
|
||||||
dEQP-GLES31.functional.debug.negative_coverage.log.buffer.read_pixels_fbo_format_mismatch
|
|
||||||
dEQP-GLES31.functional.draw_base_vertex.draw_elements_instanced_base_vertex.line_loop.instanced_attributes
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_color_mask_buffer_color_mask
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.0
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.1
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.10
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.12
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.14
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.16
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.19
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.2
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.4
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.5
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.6
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.8
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.9
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.0
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.1
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.14
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.15
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.16
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.17
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.19
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.2
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.4
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.5
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.7
|
|
||||||
dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.9
|
|
||||||
dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect.line_strip.multiple_attributes
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.17x512ms4_default_16x16ms2
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.1x1ms0_default_2048x2048ms4
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.2048x2048ms4_default_1x1ms0
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms0_default_512x512ms2
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.interaction.256x256ms2_default_128x512ms0
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples2
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples3
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.multisample.samples4
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.random.1
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.random.11
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.random.14
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.random.15
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.random.4
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.random.9
|
|
||||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_amplification
|
|
||||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_instanced
|
|
||||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_no_amplification
|
|
||||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_no_geometry
|
|
||||||
dEQP-GLES31.functional.geometry_shading.query.primitives_generated_partial_primitives
|
|
||||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil
|
|
||||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil_fbo
|
|
||||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth
|
|
||||||
dEQP-GLES31.functional.image_load_store.early_fragment_tests.no_early_fragment_tests_depth_fbo
|
|
||||||
dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.dynamically_uniform_geometry
|
|
||||||
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getfloat
|
|
||||||
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger
|
|
||||||
dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_float
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_integer
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_int
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_float
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_integer
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_pure_int
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_levels_pure_uint
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_float
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_integer
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_pure_int
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_format_pure_uint
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_float
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_pure_int
|
|
||||||
dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_pure_uint
|
|
||||||
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_npot
|
|
||||||
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_pot
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_clamp_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_mirror_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_clamp
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_mirror
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_repeat_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_clamp_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_mirror_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_repeat_clamp
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_linear_repeat_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_clamp_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_mirror_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_repeat_clamp
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_linear_nearest_repeat_mirror
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_clamp_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_mirror_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_repeat_clamp
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_repeat_mirror
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_clamp
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_mirror
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_nearest_repeat_repeat
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_nearest_repeat_mirror
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_linear_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb565_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb565_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb9_e5_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb9_e5_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba4_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba4_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_snorm_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_snorm_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.sr8_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.srgb8_alpha8_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.formats.srgb8_alpha8_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_linear_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.63x63x18_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.64x64x12_nearest_mipmap_linear
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.64x64x12_nearest_mipmap_nearest
|
|
||||||
dEQP-GLES31.functional.texture.filtering.cube_array.sizes.8x8x6_nearest
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.no_corners.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.no_corners.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.green_blue_alpha_zero
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.red_green_blue_alpha
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.green_blue_alpha_zero
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.red_green_blue_alpha
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.red_green_blue_alpha
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_linear_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.filter_mode.min_nearest_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_linear_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_linear_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.min_nearest_mipmap_nearest_mag_linear
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.green_blue_alpha_zero
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.red_green_blue_alpha
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.green_blue_alpha_zero
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.red_green_blue_alpha
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode.min_nearest_mipmap_nearest_mag_nearest
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.green_blue_alpha_zero
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.red_green_blue_alpha
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_greater.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_npot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.mirrored_repeat_clamp_to_edge
|
|
||||||
dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8i.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.alpha_zero_one_red
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.one_red_green_blue
|
|
||||||
dEQP-GLES31.functional.texture.gather.offsets.implementation_offset.2d_array.rgba8ui.texture_swizzle.zero_one_red_green
|
|
||||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_alpha_to_coverage
|
|
||||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage
|
|
||||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_and_sample_coverage_and_alpha_to_coverage
|
|
||||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_non_effective_bits
|
|
||||||
dEQP-GLES31.functional.texture.multisample.samples_1.sample_mask_only
|
|
@@ -1,16 +0,0 @@
|
|||||||
# Note: skips lists for CI are just a list of lines that, when
|
|
||||||
# non-zero-length and not starting with '#', will regex match to
|
|
||||||
# delete lines from the test list. Be careful.
|
|
||||||
|
|
||||||
# Skip the perf/stress tests to keep runtime manageable
|
|
||||||
dEQP-GLES[0-9]*.performance.*
|
|
||||||
dEQP-GLES[0-9]*.stress.*
|
|
||||||
|
|
||||||
# These are really slow on tiling architectures (including llvmpipe).
|
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
|
||||||
|
|
||||||
# Random failures
|
|
||||||
dEQP-GLES31.functional.shaders.builtin_functions.*geometry
|
|
||||||
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.maximums.all
|
|
||||||
dEQP-GLES31.functional.fbo.no_attachments.maximums.size
|
|
@@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
from jinja2 import Environment, FileSystemLoader
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("--template")
|
|
||||||
parser.add_argument("--pipeline-info")
|
|
||||||
parser.add_argument("--base-artifacts-url")
|
|
||||||
parser.add_argument("--device-type")
|
|
||||||
parser.add_argument("--kernel-image-name")
|
|
||||||
parser.add_argument("--kernel-image-type", nargs='?', default="")
|
|
||||||
parser.add_argument("--gpu-version")
|
|
||||||
parser.add_argument("--boot-method")
|
|
||||||
parser.add_argument("--lava-tags", nargs='?', default="")
|
|
||||||
parser.add_argument("--env-vars", nargs='?', default="")
|
|
||||||
parser.add_argument("--deqp-version")
|
|
||||||
parser.add_argument("--arch")
|
|
||||||
parser.add_argument("--ci-node-index")
|
|
||||||
parser.add_argument("--ci-node-total")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
env = Environment(loader = FileSystemLoader(os.path.dirname(args.template)), trim_blocks=True, lstrip_blocks=True)
|
|
||||||
template = env.get_template(os.path.basename(args.template))
|
|
||||||
|
|
||||||
values = {}
|
|
||||||
values['pipeline_info'] = args.pipeline_info
|
|
||||||
values['base_artifacts_url'] = args.base_artifacts_url
|
|
||||||
values['device_type'] = args.device_type
|
|
||||||
values['kernel_image_name'] = args.kernel_image_name
|
|
||||||
values['kernel_image_type'] = args.kernel_image_type
|
|
||||||
values['gpu_version'] = args.gpu_version
|
|
||||||
values['boot_method'] = args.boot_method
|
|
||||||
values['tags'] = args.lava_tags
|
|
||||||
values['env_vars'] = args.env_vars
|
|
||||||
values['deqp_version'] = args.deqp_version
|
|
||||||
values['arch'] = args.arch
|
|
||||||
values['ci_node_index'] = args.ci_node_index
|
|
||||||
values['ci_node_total'] = args.ci_node_total
|
|
||||||
|
|
||||||
f = open('lava-deqp.yml', "w")
|
|
||||||
f.write(template.render(values))
|
|
||||||
f.close()
|
|
||||||
|
|
@@ -1,89 +0,0 @@
|
|||||||
job_name: mesa-deqp-{{ gpu_version }} {{ pipeline_info }}
|
|
||||||
device_type: {{ device_type }}
|
|
||||||
timeouts:
|
|
||||||
job:
|
|
||||||
minutes: 40
|
|
||||||
action:
|
|
||||||
minutes: 10
|
|
||||||
actions:
|
|
||||||
power-off:
|
|
||||||
seconds: 30
|
|
||||||
priority: 75
|
|
||||||
visibility: public
|
|
||||||
{% if tags %}
|
|
||||||
{% set lavatags = tags.split(',') %}
|
|
||||||
tags:
|
|
||||||
{% for tag in lavatags %}
|
|
||||||
- {{ tag }}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
actions:
|
|
||||||
- deploy:
|
|
||||||
timeout:
|
|
||||||
minutes: 10
|
|
||||||
to: tftp
|
|
||||||
kernel:
|
|
||||||
url: {{ base_artifacts_url }}/{{ kernel_image_name }}
|
|
||||||
{% if kernel_image_type %}
|
|
||||||
{{ kernel_image_type }}
|
|
||||||
{% endif %}
|
|
||||||
ramdisk:
|
|
||||||
url: {{ base_artifacts_url }}/lava-rootfs-{{ arch }}.cpio.gz
|
|
||||||
compression: gz
|
|
||||||
dtb:
|
|
||||||
url: {{ base_artifacts_url }}/{{ device_type }}.dtb
|
|
||||||
os: oe
|
|
||||||
- boot:
|
|
||||||
timeout:
|
|
||||||
minutes: 5
|
|
||||||
method: {{ boot_method }}
|
|
||||||
commands: ramdisk
|
|
||||||
prompts:
|
|
||||||
- '#'
|
|
||||||
- test:
|
|
||||||
timeout:
|
|
||||||
minutes: 60
|
|
||||||
definitions:
|
|
||||||
- repository:
|
|
||||||
metadata:
|
|
||||||
format: Lava-Test Test Definition 1.0
|
|
||||||
name: deqp
|
|
||||||
description: "Mesa dEQP test plan"
|
|
||||||
os:
|
|
||||||
- oe
|
|
||||||
scope:
|
|
||||||
- functional
|
|
||||||
run:
|
|
||||||
steps:
|
|
||||||
- mount -t proc none /proc
|
|
||||||
- mount -t sysfs none /sys
|
|
||||||
- mount -t devtmpfs none /dev
|
|
||||||
- mkdir -p /dev/pts
|
|
||||||
- mount -t devpts devpts /dev/pts
|
|
||||||
|
|
||||||
{% if env_vars %}
|
|
||||||
- export {{ env_vars }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# deqp-runner.sh assumes some stuff is in pwd
|
|
||||||
- cd /
|
|
||||||
|
|
||||||
- export DEQP_NO_SAVE_RESULTS=1
|
|
||||||
- 'export DEQP_RUNNER_OPTIONS="--compact-display false --shuffle false"'
|
|
||||||
- export DEQP_EXPECTED_FAILS=deqp-{{ gpu_version }}-fails.txt
|
|
||||||
- export DEQP_SKIPS=deqp-{{ gpu_version }}-skips.txt
|
|
||||||
- export DEQP_VER={{ deqp_version }}
|
|
||||||
- export LIBGL_DRIVERS_PATH=`pwd`/install/lib/dri
|
|
||||||
- export CI_NODE_INDEX={{ ci_node_index }}
|
|
||||||
- export CI_NODE_TOTAL={{ ci_node_total }}
|
|
||||||
|
|
||||||
- "if sh /install/deqp-runner.sh; then
|
|
||||||
echo 'deqp: pass';
|
|
||||||
else
|
|
||||||
echo 'deqp: fail';
|
|
||||||
fi"
|
|
||||||
parse:
|
|
||||||
pattern: '(?P<test_case_id>\S*):\s+(?P<result>(pass|fail))'
|
|
||||||
from: inline
|
|
||||||
name: deqp
|
|
||||||
path: inline/mesa-deqp.yaml
|
|
@@ -1,136 +0,0 @@
|
|||||||
.lava-test:
|
|
||||||
extends:
|
|
||||||
- .ci-run-policy
|
|
||||||
stage: test
|
|
||||||
variables:
|
|
||||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
|
||||||
ENV_VARS: "MESA_GLES_VERSION_OVERRIDE=3.0 DEQP_PARALLEL=6"
|
|
||||||
script:
|
|
||||||
- mkdir -p /srv/${FILES_HOST_NAME}/$CI_JOB_ID/
|
|
||||||
- cp /lava-files/${KERNEL_IMAGE_NAME} /srv/${FILES_HOST_NAME}/$CI_JOB_ID/.
|
|
||||||
- cp /lava-files/${DEVICE_TYPE}.dtb /srv/${FILES_HOST_NAME}/$CI_JOB_ID/.
|
|
||||||
- tar -C /lava-files/rootfs-${ARCH} -xf artifacts/install.tar
|
|
||||||
- pushd /lava-files/rootfs-${ARCH}
|
|
||||||
- find -H | cpio -H newc -o | gzip -c - > /srv/${FILES_HOST_NAME}/$CI_JOB_ID/lava-rootfs-${ARCH}.cpio.gz
|
|
||||||
- popd
|
|
||||||
- >
|
|
||||||
artifacts/generate_lava.py \
|
|
||||||
--template artifacts/lava-deqp.yml.jinja2 \
|
|
||||||
--pipeline-info "$CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \
|
|
||||||
--base-artifacts-url ${FILES_HOST_URL}/$CI_JOB_ID \
|
|
||||||
--device-type ${DEVICE_TYPE} \
|
|
||||||
--env-vars "${ENV_VARS}" \
|
|
||||||
--arch ${ARCH} \
|
|
||||||
--deqp-version gles2 \
|
|
||||||
--kernel-image-name ${KERNEL_IMAGE_NAME} \
|
|
||||||
--kernel-image-type "${KERNEL_IMAGE_TYPE}" \
|
|
||||||
--gpu-version ${GPU_VERSION} \
|
|
||||||
--boot-method ${BOOT_METHOD} \
|
|
||||||
--lava-tags "${LAVA_TAGS}" \
|
|
||||||
--ci-node-index "${CI_NODE_INDEX}" \
|
|
||||||
--ci-node-total "${CI_NODE_TOTAL}"
|
|
||||||
- lava_job_id=`lavacli jobs submit lava-deqp.yml` || lavacli jobs submit lava-deqp.yml
|
|
||||||
- echo $lava_job_id
|
|
||||||
- rm -rf artifacts/*
|
|
||||||
- cp lava-deqp.yml artifacts/.
|
|
||||||
- lavacli jobs logs $lava_job_id | grep -a -v "{'case':" | tee artifacts/lava-deqp-$lava_job_id.log
|
|
||||||
- lavacli jobs show $lava_job_id
|
|
||||||
- result=`lavacli results $lava_job_id 0_deqp deqp | head -1`
|
|
||||||
- echo $result
|
|
||||||
- '[[ "$result" == "pass" ]]'
|
|
||||||
after_script:
|
|
||||||
- rm -rf /srv/${FILES_HOST_NAME}/$CI_JOB_ID/
|
|
||||||
artifacts:
|
|
||||||
when: always
|
|
||||||
paths:
|
|
||||||
- artifacts/
|
|
||||||
|
|
||||||
.lava-test:armhf:
|
|
||||||
variables:
|
|
||||||
ARCH: armhf
|
|
||||||
KERNEL_IMAGE_NAME: zImage
|
|
||||||
KERNEL_IMAGE_TYPE: "type:\ zimage"
|
|
||||||
BOOT_METHOD: u-boot
|
|
||||||
extends:
|
|
||||||
- .lava-test
|
|
||||||
- .use-arm_build
|
|
||||||
dependencies:
|
|
||||||
- meson-armhf
|
|
||||||
needs:
|
|
||||||
- meson-armhf
|
|
||||||
|
|
||||||
.lava-test:arm64:
|
|
||||||
variables:
|
|
||||||
ARCH: arm64
|
|
||||||
KERNEL_IMAGE_NAME: Image
|
|
||||||
KERNEL_IMAGE_TYPE: "type:\ image"
|
|
||||||
BOOT_METHOD: u-boot
|
|
||||||
extends:
|
|
||||||
- .lava-test
|
|
||||||
- .use-arm_build
|
|
||||||
dependencies:
|
|
||||||
- meson-arm64
|
|
||||||
needs:
|
|
||||||
- meson-arm64
|
|
||||||
|
|
||||||
panfrost-t720-test:arm64:
|
|
||||||
extends: .lava-test:arm64
|
|
||||||
variables:
|
|
||||||
DEVICE_TYPE: sun50i-h6-pine-h64
|
|
||||||
GPU_VERSION: panfrost-t720
|
|
||||||
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
|
|
||||||
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
|
|
||||||
tags:
|
|
||||||
- mesa-ci-aarch64-lava-collabora
|
|
||||||
|
|
||||||
panfrost-t760-test:armhf:
|
|
||||||
extends: .lava-test:armhf
|
|
||||||
variables:
|
|
||||||
DEVICE_TYPE: rk3288-veyron-jaq
|
|
||||||
GPU_VERSION: panfrost-t760
|
|
||||||
BOOT_METHOD: depthcharge
|
|
||||||
KERNEL_IMAGE_TYPE: ""
|
|
||||||
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
|
|
||||||
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
|
|
||||||
tags:
|
|
||||||
- mesa-ci-aarch64-lava-collabora
|
|
||||||
|
|
||||||
panfrost-t860-test:arm64:
|
|
||||||
extends: .lava-test:arm64
|
|
||||||
variables:
|
|
||||||
DEVICE_TYPE: rk3399-gru-kevin
|
|
||||||
GPU_VERSION: panfrost-t860
|
|
||||||
BOOT_METHOD: depthcharge
|
|
||||||
KERNEL_IMAGE_TYPE: ""
|
|
||||||
FILES_HOST_NAME: "mesa-ci-lava-files.freedesktop.org"
|
|
||||||
FILES_HOST_URL: "https://mesa-ci-lava-files.freedesktop.org"
|
|
||||||
tags:
|
|
||||||
- mesa-ci-aarch64-lava-collabora
|
|
||||||
|
|
||||||
.panfrost-t820-gles2:arm64:
|
|
||||||
extends: .lava-test:arm64
|
|
||||||
variables:
|
|
||||||
DEVICE_TYPE: meson-gxm-khadas-vim2
|
|
||||||
GPU_VERSION: panfrost-t820
|
|
||||||
LAVA_TAGS: panfrost
|
|
||||||
tags:
|
|
||||||
- mesa-ci-aarch64-lava-baylibre
|
|
||||||
|
|
||||||
.lima-mali400-test:armhf:
|
|
||||||
parallel: 2
|
|
||||||
extends: .lava-test:armhf
|
|
||||||
variables:
|
|
||||||
DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc
|
|
||||||
GPU_VERSION: lima
|
|
||||||
ENV_VARS: "DEQP_PARALLEL=3"
|
|
||||||
tags:
|
|
||||||
- mesa-ci-aarch64-lava-baylibre
|
|
||||||
|
|
||||||
.lima-mali450-test:arm64:
|
|
||||||
extends: .lava-test:arm64
|
|
||||||
variables:
|
|
||||||
DEVICE_TYPE: meson-gxl-s905x-libretech-cc
|
|
||||||
GPU_VERSION: lima
|
|
||||||
ENV_VARS: "DEQP_PARALLEL=6"
|
|
||||||
tags:
|
|
||||||
- mesa-ci-aarch64-lava-baylibre
|
|
@@ -1,13 +0,0 @@
|
|||||||
call "C:\Program Files (x86)\Microsoft Visual Studio\%VERSION%\Common7\Tools\VsDevCmd.bat" -arch=%ARCH%
|
|
||||||
|
|
||||||
del /Q /S _build
|
|
||||||
meson _build ^
|
|
||||||
-Dbuild-tests=true ^
|
|
||||||
-Db_vscrt=mtd ^
|
|
||||||
-Dbuildtype=release ^
|
|
||||||
-Dllvm=false ^
|
|
||||||
-Dgallium-drivers=swrast ^
|
|
||||||
-Dosmesa=gallium
|
|
||||||
meson configure _build
|
|
||||||
ninja -C _build
|
|
||||||
ninja -C _build test
|
|
@@ -1,64 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
CROSS_FILE=/cross_file-"$CROSS".txt
|
|
||||||
|
|
||||||
# We need to control the version of llvm-config we're using, so we'll
|
|
||||||
# tweak the cross file or generate a native file to do so.
|
|
||||||
if test -n "$LLVM_VERSION"; then
|
|
||||||
LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
|
||||||
echo -e "[binaries]\nllvm-config = '`which $LLVM_CONFIG`'" > native.file
|
|
||||||
if [ -n "$CROSS" ]; then
|
|
||||||
sed -i -e '/\[binaries\]/a\' -e "llvm-config = '`which $LLVM_CONFIG`'" $CROSS_FILE
|
|
||||||
fi
|
|
||||||
$LLVM_CONFIG --version
|
|
||||||
else
|
|
||||||
rm -f native.file
|
|
||||||
touch native.file
|
|
||||||
fi
|
|
||||||
|
|
||||||
# cross-xfail-$CROSS, if it exists, contains a list of tests that are expected
|
|
||||||
# to fail for the $CROSS configuration, one per line. you can then mark those
|
|
||||||
# tests in their meson.build with:
|
|
||||||
#
|
|
||||||
# test(...,
|
|
||||||
# should_fail: meson.get_cross_property('xfail', '').contains(t),
|
|
||||||
# )
|
|
||||||
#
|
|
||||||
# where t is the name of the test, and the '' is the string to search when
|
|
||||||
# not cross-compiling (which is empty, because for amd64 everything is
|
|
||||||
# expected to pass).
|
|
||||||
if [ -n "$CROSS" ]; then
|
|
||||||
CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS"
|
|
||||||
if [ -s "$CROSS_XFAIL" ]; then
|
|
||||||
sed -i \
|
|
||||||
-e '/\[properties\]/a\' \
|
|
||||||
-e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \
|
|
||||||
"$CROSS_FILE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf _build
|
|
||||||
meson _build --native-file=native.file \
|
|
||||||
--wrap-mode=nofallback \
|
|
||||||
${CROSS+--cross "$CROSS_FILE"} \
|
|
||||||
-D prefix=`pwd`/install \
|
|
||||||
-D libdir=lib \
|
|
||||||
-D buildtype=${BUILDTYPE:-debug} \
|
|
||||||
-D build-tests=true \
|
|
||||||
-D libunwind=${UNWIND} \
|
|
||||||
${DRI_LOADERS} \
|
|
||||||
-D dri-drivers=${DRI_DRIVERS:-[]} \
|
|
||||||
${GALLIUM_ST} \
|
|
||||||
-D gallium-drivers=${GALLIUM_DRIVERS:-[]} \
|
|
||||||
-D vulkan-drivers=${VULKAN_DRIVERS:-[]} \
|
|
||||||
-D I-love-half-baked-turnips=true \
|
|
||||||
${EXTRA_OPTION}
|
|
||||||
cd _build
|
|
||||||
meson configure
|
|
||||||
ninja -j4
|
|
||||||
LC_ALL=C.UTF-8 ninja test
|
|
||||||
ninja install
|
|
||||||
cd ..
|
|
@@ -1,36 +0,0 @@
|
|||||||
diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt
|
|
||||||
index 738526546..6f89048cd 100644
|
|
||||||
--- a/generated_tests/CMakeLists.txt
|
|
||||||
+++ b/generated_tests/CMakeLists.txt
|
|
||||||
@@ -206,11 +206,6 @@ piglit_make_generated_tests(
|
|
||||||
templates/gen_variable_index_write_tests/vs.shader_test.mako
|
|
||||||
templates/gen_variable_index_write_tests/fs.shader_test.mako
|
|
||||||
templates/gen_variable_index_write_tests/helpers.mako)
|
|
||||||
-piglit_make_generated_tests(
|
|
||||||
- vs_in_fp64.list
|
|
||||||
- gen_vs_in_fp64.py
|
|
||||||
- templates/gen_vs_in_fp64/columns.shader_test.mako
|
|
||||||
- templates/gen_vs_in_fp64/regular.shader_test.mako)
|
|
||||||
piglit_make_generated_tests(
|
|
||||||
shader_framebuffer_fetch_tests.list
|
|
||||||
gen_shader_framebuffer_fetch_tests.py)
|
|
||||||
@@ -279,7 +274,6 @@ add_custom_target(gen-gl-tests
|
|
||||||
gen_extensions_defined.list
|
|
||||||
vp-tex.list
|
|
||||||
variable_index_write_tests.list
|
|
||||||
- vs_in_fp64.list
|
|
||||||
gpu_shader4_tests.list
|
|
||||||
)
|
|
||||||
|
|
||||||
diff --git a/tests/sanity.py b/tests/sanity.py
|
|
||||||
index 12f1614c9..9019087e2 100644
|
|
||||||
--- a/tests/sanity.py
|
|
||||||
+++ b/tests/sanity.py
|
|
||||||
@@ -100,7 +100,6 @@ shader_tests = (
|
|
||||||
'spec/arb_tessellation_shader/execution/barrier-patch.shader_test',
|
|
||||||
'spec/arb_tessellation_shader/execution/built-in-functions/tcs-any-bvec4-using-if.shader_test',
|
|
||||||
'spec/arb_tessellation_shader/execution/sanity.shader_test',
|
|
||||||
- 'spec/arb_vertex_attrib_64bit/execution/vs_in/vs-input-uint_uvec4-double_dmat3x4_array2-position.shader_test',
|
|
||||||
'spec/glsl-1.50/execution/geometry-basic.shader_test',
|
|
||||||
'spec/oes_viewport_array/viewport-gs-write-simple.shader_test',
|
|
||||||
)
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,29 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
VERSION=`cat install/VERSION`
|
|
||||||
|
|
||||||
cd /piglit
|
|
||||||
|
|
||||||
PIGLIT_OPTIONS=$(echo $PIGLIT_OPTIONS | head -n 1)
|
|
||||||
xvfb-run --server-args="-noreset" sh -c \
|
|
||||||
"export LD_LIBRARY_PATH=$OLDPWD/install/lib;
|
|
||||||
wflinfo --platform glx --api gl --profile core | grep \"Mesa $VERSION\\\$\" &&
|
|
||||||
./piglit run -j4 $PIGLIT_OPTIONS $PIGLIT_PROFILES $OLDPWD/results"
|
|
||||||
|
|
||||||
PIGLIT_RESULTS=${PIGLIT_RESULTS:-$PIGLIT_PROFILES}
|
|
||||||
mkdir -p .gitlab-ci/piglit
|
|
||||||
cp $OLDPWD/install/piglit/$PIGLIT_RESULTS.txt .gitlab-ci/piglit/$PIGLIT_RESULTS.txt.baseline
|
|
||||||
./piglit summary console $OLDPWD/results | head -n -1 | grep -v ": pass" >.gitlab-ci/piglit/$PIGLIT_RESULTS.txt
|
|
||||||
|
|
||||||
if diff -q .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
./piglit summary html --exclude-details=pass $OLDPWD/summary $OLDPWD/results
|
|
||||||
|
|
||||||
echo Unexpected change in results:
|
|
||||||
diff -u .gitlab-ci/piglit/$PIGLIT_RESULTS.txt{.baseline,}
|
|
||||||
exit 1
|
|
@@ -1,39 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
CROSS_FILE=/cross_file-"$CROSS".txt
|
|
||||||
|
|
||||||
# Delete unused bin and includes from artifacts to save space.
|
|
||||||
rm -rf install/bin install/include
|
|
||||||
|
|
||||||
# Strip the drivers in the artifacts to cut 80% of the artifacts size.
|
|
||||||
if [ -n "$CROSS" ]; then
|
|
||||||
STRIP=`sed -n -E "s/strip\s*=\s*'(.*)'/\1/p" "$CROSS_FILE"`
|
|
||||||
if [ -z "$STRIP" ]; then
|
|
||||||
echo "Failed to find strip command in cross file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
STRIP="strip"
|
|
||||||
fi
|
|
||||||
find install -name \*.so -exec $STRIP {} \;
|
|
||||||
|
|
||||||
# Test runs don't pull down the git tree, so put the dEQP helper
|
|
||||||
# script and associated bits there.
|
|
||||||
cp VERSION install/
|
|
||||||
cp -Rp .gitlab-ci/deqp* install/
|
|
||||||
cp -Rp .gitlab-ci/piglit install/
|
|
||||||
|
|
||||||
# Tar up the install dir so that symlinks and hardlinks aren't each
|
|
||||||
# packed separately in the zip file.
|
|
||||||
mkdir -p artifacts/
|
|
||||||
tar -cf artifacts/install.tar install
|
|
||||||
|
|
||||||
# If the container has LAVA stuff, prepare the artifacts for LAVA jobs
|
|
||||||
if [ -d /lava-files ]; then
|
|
||||||
# Pass needed files to the test stage
|
|
||||||
cp $CI_PROJECT_DIR/.gitlab-ci/generate_lava.py artifacts/.
|
|
||||||
cp $CI_PROJECT_DIR/.gitlab-ci/lava-deqp.yml.jinja2 artifacts/.
|
|
||||||
fi
|
|
@@ -1,17 +0,0 @@
|
|||||||
set -e
|
|
||||||
set -v
|
|
||||||
|
|
||||||
ARTIFACTSDIR=`pwd`/shader-db
|
|
||||||
mkdir -p $ARTIFACTSDIR
|
|
||||||
export DRM_SHIM_DEBUG=true
|
|
||||||
|
|
||||||
LIBDIR=`pwd`/install/lib
|
|
||||||
export LD_LIBRARY_PATH=$LIBDIR
|
|
||||||
|
|
||||||
cd /usr/local/shader-db
|
|
||||||
|
|
||||||
for driver in freedreno v3d; do
|
|
||||||
env LD_PRELOAD=$LIBDIR/lib${driver}_noop_drm_shim.so \
|
|
||||||
./run -j 4 ./shaders \
|
|
||||||
> $ARTIFACTSDIR/${driver}-shader-db.txt
|
|
||||||
done
|
|
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
if test -n "$LLVM_VERSION"; then
|
|
||||||
export LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf build
|
|
||||||
scons $SCONS_TARGET force_scons=on
|
|
||||||
eval $SCONS_CHECK_COMMAND
|
|
@@ -1,20 +0,0 @@
|
|||||||
[binaries]
|
|
||||||
c = ['ccache', 'x86_64-w64-mingw32-gcc']
|
|
||||||
cpp = ['ccache', 'x86_64-w64-mingw32-g++']
|
|
||||||
ar = 'x86_64-w64-mingw32-ar'
|
|
||||||
strip = 'x86_64-w64-mingw32-strip'
|
|
||||||
pkgconfig = '/usr/local/bin/x86_64-w64-mingw32-pkg-config'
|
|
||||||
windres = 'x86_64-w64-mingw32-windres'
|
|
||||||
exe_wrapper = ['wine64']
|
|
||||||
|
|
||||||
[properties]
|
|
||||||
needs_exe_wrapper = True
|
|
||||||
sys_root = '/usr/x86_64-w64-mingw32/'
|
|
||||||
|
|
||||||
[host_machine]
|
|
||||||
system = 'windows'
|
|
||||||
cpu_family = 'x86_64'
|
|
||||||
cpu = 'x86_64'
|
|
||||||
endian = 'little'
|
|
||||||
|
|
||||||
; vim: ft=dosini
|
|
30
.mailmap
30
.mailmap
@@ -26,8 +26,6 @@ Alexander Monakov <amonakov@gmail.com> <amonakov@ispras.ru>
|
|||||||
|
|
||||||
Alexander von Gluck IV <kallisti5@unixzen.com> Alexander von Gluck <kallisti5@unixzen.com>
|
Alexander von Gluck IV <kallisti5@unixzen.com> Alexander von Gluck <kallisti5@unixzen.com>
|
||||||
|
|
||||||
Alexandros Frantzis <alexandros.frantzis@collabora.com> <Alexandros.Frantzis@canonical.com>
|
|
||||||
|
|
||||||
Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.prom.eng.vmware.com>
|
Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.prom.eng.vmware.com>
|
||||||
Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.vmware.com>
|
Alex Corscadden <alexc@vmware.com> <alexc@alexc-dev1.vmware.com>
|
||||||
|
|
||||||
@@ -52,8 +50,6 @@ Andrew Randrianasulu <randrianasulu@gmail.com> <randrik@mail.ru>
|
|||||||
|
|
||||||
Arthur Huillet <arthur.huillet@free.fr> Arthur HUILLET <arthur.huillet@free.fr>
|
Arthur Huillet <arthur.huillet@free.fr> Arthur HUILLET <arthur.huillet@free.fr>
|
||||||
|
|
||||||
Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> <basni@chromium.org>
|
|
||||||
|
|
||||||
Benjamin Franzke <benjaminfranzke@googlemail.com> ben <benjaminfranzke@googlemail.com>
|
Benjamin Franzke <benjaminfranzke@googlemail.com> ben <benjaminfranzke@googlemail.com>
|
||||||
|
|
||||||
Ben Skeggs <bskeggs@redhat.com> <darktama@beleth.(none)>
|
Ben Skeggs <bskeggs@redhat.com> <darktama@beleth.(none)>
|
||||||
@@ -133,8 +129,8 @@ David Miller <davem@davemloft.net> David S. Miller <davem@davemloft.net>
|
|||||||
David Miller <davem@davemloft.net> Dave Miller <davem@davemloft.net>
|
David Miller <davem@davemloft.net> Dave Miller <davem@davemloft.net>
|
||||||
David Miller <davem@davemloft.net> davem69 <davem69>
|
David Miller <davem@davemloft.net> davem69 <davem69>
|
||||||
|
|
||||||
David Heidelberg <david@ixit.cz> David Heidelberger <david.heidelberger@ixit.cz>
|
David Heidelberger <david.heidelberger@ixit.cz> David Heidelberg <david@ixit.cz>
|
||||||
David Heidelberg <david@ixit.cz> <d.okias@gmail.com>
|
David Heidelberger <david.heidelberger@ixit.cz> <d.okias@gmail.com>
|
||||||
|
|
||||||
David Reveman <reveman@chromium.org> <c99drn@cs.umu.se>
|
David Reveman <reveman@chromium.org> <c99drn@cs.umu.se>
|
||||||
|
|
||||||
@@ -146,22 +142,12 @@ Dylan Baker <dylanx.c.baker@intel.com> <baker.dylan.c@gmail.com>
|
|||||||
|
|
||||||
Edward O'Callaghan <funfunctor@folklore1984.net> <eocallaghan@alterapraxis.com>
|
Edward O'Callaghan <funfunctor@folklore1984.net> <eocallaghan@alterapraxis.com>
|
||||||
|
|
||||||
Elie Tournier <tournier.elie@gmail.com>
|
|
||||||
|
|
||||||
Emeric Grange <emeric.grange@gmail.com> Emeric <emeric.grange@gmail.com>
|
Emeric Grange <emeric.grange@gmail.com> Emeric <emeric.grange@gmail.com>
|
||||||
|
|
||||||
Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.com>
|
Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.com>
|
||||||
Emil Velikov <emil.l.velikov@gmail.com> <emil.veliko@collabora.com>
|
|
||||||
Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@collabora.co.uk>
|
|
||||||
Emil Velikov <emil.l.velikov@gmail.com> <emil.veliikov@collabora.com>
|
|
||||||
Emil Velikov <emil.l.velikov@gmail.com> <emil.velikov@gmail.com>
|
|
||||||
Emil Velikov <emil.l.velikov@gmail.com> <emmil.velikov@collabora.com>
|
|
||||||
|
|
||||||
Eric Anholt <eric@anholt.net> Eric Anholt <anholt@FreeBSD.org>
|
Eric Anholt <eric@anholt.net> Eric Anholt <anholt@FreeBSD.org>
|
||||||
|
|
||||||
Eric Engestrom <eric@engestrom.ch> <eric.engestrom@imgtec.com>
|
|
||||||
Eric Engestrom <eric@engestrom.ch> <eric.engestrom@intel.com>
|
|
||||||
|
|
||||||
Eugeni Dodonov <eugeni.dodonov@intel.com> <eugeni@mandriva.com>
|
Eugeni Dodonov <eugeni.dodonov@intel.com> <eugeni@mandriva.com>
|
||||||
|
|
||||||
Fabian Bieler <der.fabe@gmx.net> <fabianbieler@fastmail.fm>
|
Fabian Bieler <der.fabe@gmx.net> <fabianbieler@fastmail.fm>
|
||||||
@@ -169,14 +155,10 @@ Fabian Bieler <der.fabe@gmx.net> <<der.fabe@gmx.net>>
|
|||||||
|
|
||||||
Feng, Haitao <haitao.feng@intel.com> Haitao Feng <haitao.feng@intel.com>
|
Feng, Haitao <haitao.feng@intel.com> Haitao Feng <haitao.feng@intel.com>
|
||||||
|
|
||||||
Frank Binns <frank.binns@imgtec.com> <francisbinns@gmail.com>
|
|
||||||
|
|
||||||
Frank Henigman <fjhenigman@google.com> <fjhenigman@chromium.org>
|
Frank Henigman <fjhenigman@google.com> <fjhenigman@chromium.org>
|
||||||
|
|
||||||
George Sapountzis <gsapountzis@gmail.com> George Sapountzis <gsap7@yahoo.gr>
|
George Sapountzis <gsapountzis@gmail.com> George Sapountzis <gsap7@yahoo.gr>
|
||||||
|
|
||||||
Gert Wollny <gert.wollny@collabora.com> <gw.fossdev@gmail.com>
|
|
||||||
|
|
||||||
Gwenole Beauchesne <gwenole.beauchesne@intel.com> <gb.devel@gmail.com>
|
Gwenole Beauchesne <gwenole.beauchesne@intel.com> <gb.devel@gmail.com>
|
||||||
|
|
||||||
Hamish Marson <hmarson@users.sourceforge.net> hmarson <hmarson>
|
Hamish Marson <hmarson@users.sourceforge.net> hmarson <hmarson>
|
||||||
@@ -195,8 +177,6 @@ Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.(none)>
|
|||||||
Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.walkyrie.se>
|
Jakob Bornecrantz <wallbraker@gmail.com> <jakob@aurora.walkyrie.se>
|
||||||
Jakob Bornecrantz <wallbraker@gmail.com> <jakob@tungstengraphics.com>
|
Jakob Bornecrantz <wallbraker@gmail.com> <jakob@tungstengraphics.com>
|
||||||
Jakob Bornecrantz <wallbraker@gmail.com> <wallbraker 'at' gmail 'dot' com>
|
Jakob Bornecrantz <wallbraker@gmail.com> <wallbraker 'at' gmail 'dot' com>
|
||||||
Jakob Bornecrantz <wallbraker@gmail.com> <jakob.bornecrantz@collabora.com>
|
|
||||||
Jakob Bornecrantz <wallbraker@gmail.com> <jakob@collabora.com>
|
|
||||||
|
|
||||||
Jakub Bogusz <qboosh@pld-linux.org> <gboosh@pld-linux.org>
|
Jakub Bogusz <qboosh@pld-linux.org> <gboosh@pld-linux.org>
|
||||||
|
|
||||||
@@ -278,9 +258,6 @@ Kristian Høgsberg <krh@bitplanet.net> <krh@hinata.boston.redhat.com>
|
|||||||
Kristian Høgsberg <krh@bitplanet.net> <krh@sasori.boston.redhat.com>
|
Kristian Høgsberg <krh@bitplanet.net> <krh@sasori.boston.redhat.com>
|
||||||
Kristian Høgsberg <krh@bitplanet.net> <krh@temari.boston.redhat.com>
|
Kristian Høgsberg <krh@bitplanet.net> <krh@temari.boston.redhat.com>
|
||||||
Kristian Høgsberg <krh@bitplanet.net> <kristian.h.kristensen@intel.com>
|
Kristian Høgsberg <krh@bitplanet.net> <kristian.h.kristensen@intel.com>
|
||||||
Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@chromium.org>
|
|
||||||
Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@google.com>
|
|
||||||
Kristian Høgsberg <krh@bitplanet.net> <hoegsberg@gmail.com>
|
|
||||||
|
|
||||||
Krzesimir Nowak <qdlacz@gmail.com> <krzesimir@kinvolk.io>
|
Krzesimir Nowak <qdlacz@gmail.com> <krzesimir@kinvolk.io>
|
||||||
|
|
||||||
@@ -341,7 +318,6 @@ Michel Dänzer <michel@daenzer.net> <daenzer@vmware.com>
|
|||||||
Michel Dänzer <michel@daenzer.net> <michel@tungstengraphics.com>
|
Michel Dänzer <michel@daenzer.net> <michel@tungstengraphics.com>
|
||||||
Michel Dänzer <michel@daenzer.net> Michel Daenzer <michel.daenzer@amd.com>
|
Michel Dänzer <michel@daenzer.net> Michel Daenzer <michel.daenzer@amd.com>
|
||||||
Michel Dänzer <michel@daenzer.net> Michel Daenzer <daenzer@localhost.(none)>
|
Michel Dänzer <michel@daenzer.net> Michel Daenzer <daenzer@localhost.(none)>
|
||||||
Michel Dänzer <michel@daenzer.net> <mdaenzer@redhat.com>
|
|
||||||
|
|
||||||
Mike Kaplinskiy <mike.kaplinskiy@gmail.com> Mike Kaplinksiy <mike.kaplinskiy@gmail.com>
|
Mike Kaplinskiy <mike.kaplinskiy@gmail.com> Mike Kaplinksiy <mike.kaplinskiy@gmail.com>
|
||||||
Mike Kaplinskiy <mike.kaplinskiy@gmail.com> <mike.kaplinskiy@gmai.com>
|
Mike Kaplinskiy <mike.kaplinskiy@gmail.com> <mike.kaplinskiy@gmai.com>
|
||||||
@@ -467,8 +443,6 @@ Tom Fogal <tfogal@alumni.unh.edu> <tfogal@sci.utah.edu>
|
|||||||
Tom Stellard <thomas.stellard@amd.com> <tstellar@gmail.com>
|
Tom Stellard <thomas.stellard@amd.com> <tstellar@gmail.com>
|
||||||
Tom Stellard <thomas.stellard@amd.com> Thomas Stellard <tom.stellard@amd.com>
|
Tom Stellard <thomas.stellard@amd.com> Thomas Stellard <tom.stellard@amd.com>
|
||||||
|
|
||||||
Tomeu Vizoso <tomeu.vizoso@collabora.com> <tomeu@tomeuvizoso.net>
|
|
||||||
|
|
||||||
Tormod Volden <debian.tormod@gmail.com> <lists.tormod@gmail.com>
|
Tormod Volden <debian.tormod@gmail.com> <lists.tormod@gmail.com>
|
||||||
|
|
||||||
Török Edwin <edwin+mesa@etorok.net> Török Edvin <edwintorok@gmail.com>
|
Török Edwin <edwin+mesa@etorok.net> Török Edvin <edwintorok@gmail.com>
|
||||||
|
44300
.pick_status.json
44300
.pick_status.json
File diff suppressed because it is too large
Load Diff
413
.travis.yml
413
.travis.yml
@@ -1,64 +1,391 @@
|
|||||||
language: c
|
language: c
|
||||||
|
|
||||||
os: osx
|
sudo: false
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
|
apt: true
|
||||||
ccache: true
|
ccache: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- PKG_CONFIG_PATH=""
|
- XORG_RELEASES=http://xorg.freedesktop.org/releases/individual
|
||||||
|
- XCB_RELEASES=http://xcb.freedesktop.org/dist
|
||||||
|
- XORGMACROS_VERSION=util-macros-1.19.0
|
||||||
|
- GLPROTO_VERSION=glproto-1.4.17
|
||||||
|
- DRI2PROTO_VERSION=dri2proto-2.8
|
||||||
|
- LIBPCIACCESS_VERSION=libpciaccess-0.13.4
|
||||||
|
- LIBDRM_VERSION=libdrm-2.4.74
|
||||||
|
- XCBPROTO_VERSION=xcb-proto-1.11
|
||||||
|
- LIBXCB_VERSION=libxcb-1.11
|
||||||
|
- LIBXSHMFENCE_VERSION=libxshmfence-1.2
|
||||||
|
- LIBTXC_DXTN_VERSION=libtxc_dxtn-1.0.1
|
||||||
|
- LIBVDPAU_VERSION=libvdpau-1.1
|
||||||
|
- LIBVA_VERSION=libva-1.6.2
|
||||||
|
- LIBWAYLAND_VERSION=wayland-1.11.1
|
||||||
|
- PKG_CONFIG_PATH=$HOME/prefix/lib/pkgconfig
|
||||||
|
- LD_LIBRARY_PATH="$HOME/prefix/lib:$LD_LIBRARY_PATH"
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- env:
|
- env:
|
||||||
- BUILD=meson
|
- LABEL="make loaders/classic DRI"
|
||||||
|
- BUILD=make
|
||||||
|
- MAKEFLAGS="-j4"
|
||||||
|
- MAKE_CHECK_COMMAND="make check"
|
||||||
|
- DRI_LOADERS="--enable-glx --enable-gbm --enable-egl --with-platforms=x11,drm,surfaceless,wayland --enable-osmesa"
|
||||||
|
- DRI_DRIVERS="i915,i965,radeon,r200,swrast,nouveau"
|
||||||
|
- GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
|
||||||
|
- GALLIUM_DRIVERS=""
|
||||||
|
- VULKAN_DRIVERS=""
|
||||||
|
- LIBUNWIND_FLAGS="--disable-libunwind"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
- env:
|
- env:
|
||||||
- BUILD=scons
|
# NOTE: Building SWR is 2x (yes two) times slower than all the other
|
||||||
|
# gallium drivers combined.
|
||||||
before_install:
|
# Start this early so that it doesn't hunder the run time.
|
||||||
- HOMEBREW_NO_AUTO_UPDATE=1 brew install expat gettext
|
- LABEL="make Gallium Drivers SWR"
|
||||||
- if test "x$BUILD" = xmeson; then
|
- BUILD=make
|
||||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja;
|
- MAKEFLAGS="-j4"
|
||||||
fi
|
- MAKE_CHECK_COMMAND="true"
|
||||||
- if test "x$BUILD" = xscons; then
|
- LLVM_VERSION=3.9
|
||||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install scons;
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
fi
|
- OVERRIDE_CC="gcc-4.8"
|
||||||
|
- OVERRIDE_CXX="g++-4.8"
|
||||||
# Set PATH for homebrew pip3 installs
|
- DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
|
||||||
- PYTHON_VERSION=$(python3 -V | awk '{print $2}' | cut -d. -f1-2)
|
- DRI_DRIVERS=""
|
||||||
- PATH="$HOME/Library/Python/$PYTHON_VERSION/bin:${PATH}"
|
- GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
|
||||||
# Set PKG_CONFIG_PATH for keg-only expat
|
- GALLIUM_DRIVERS="swr"
|
||||||
- PKG_CONFIG_PATH="/usr/local/opt/expat/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
- VULKAN_DRIVERS=""
|
||||||
# Set PATH for keg-only gettext
|
- LIBUNWIND_FLAGS="--enable-libunwind"
|
||||||
- PATH="/usr/local/opt/gettext/bin:${PATH}"
|
addons:
|
||||||
|
apt:
|
||||||
# Install xquartz for prereqs ...
|
sources:
|
||||||
- XQUARTZ_VERSION="2.7.11"
|
- llvm-toolchain-trusty-3.9
|
||||||
- wget -nv https://dl.bintray.com/xquartz/downloads/XQuartz-${XQUARTZ_VERSION}.dmg
|
packages:
|
||||||
- hdiutil attach XQuartz-${XQUARTZ_VERSION}.dmg
|
# LLVM packaging is broken and misses these dependencies
|
||||||
- sudo installer -pkg /Volumes/XQuartz-${XQUARTZ_VERSION}/XQuartz.pkg -target /
|
- libedit-dev
|
||||||
- hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION}
|
# From sources above
|
||||||
# ... and set paths
|
- llvm-3.9-dev
|
||||||
- PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- libunwind8-dev
|
||||||
|
- env:
|
||||||
|
- LABEL="make Gallium Drivers Other"
|
||||||
|
- BUILD=make
|
||||||
|
- MAKEFLAGS="-j4"
|
||||||
|
- MAKE_CHECK_COMMAND="true"
|
||||||
|
- LLVM_VERSION=3.9
|
||||||
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
|
- DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
|
||||||
|
- DRI_DRIVERS=""
|
||||||
|
- GALLIUM_ST="--enable-dri --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
|
||||||
|
- GALLIUM_DRIVERS="i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx"
|
||||||
|
- VULKAN_DRIVERS=""
|
||||||
|
- LIBUNWIND_FLAGS="--enable-libunwind"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- llvm-toolchain-trusty-3.9
|
||||||
|
packages:
|
||||||
|
# LLVM packaging is broken and misses these dependencies
|
||||||
|
- libedit-dev
|
||||||
|
# From sources above
|
||||||
|
- llvm-3.9-dev
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- libunwind8-dev
|
||||||
|
- env:
|
||||||
|
# NOTE: Analogous to SWR above, building Clover is quite slow.
|
||||||
|
- LABEL="make Gallium ST Clover"
|
||||||
|
- BUILD=make
|
||||||
|
- MAKEFLAGS="-j4"
|
||||||
|
- MAKE_CHECK_COMMAND="true"
|
||||||
|
- LLVM_VERSION=3.6
|
||||||
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
|
- OVERRIDE_CC=gcc-4.7
|
||||||
|
- OVERRIDE_CXX=g++-4.7
|
||||||
|
- DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
|
||||||
|
- DRI_DRIVERS=""
|
||||||
|
- GALLIUM_ST="--disable-dri --enable-opencl --enable-opencl-icd --enable-llvm --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
|
||||||
|
# i915 most likely doesn't work with OpenCL.
|
||||||
|
# Regardless - we're doing a quick build test here.
|
||||||
|
- GALLIUM_DRIVERS="i915"
|
||||||
|
- VULKAN_DRIVERS=""
|
||||||
|
- LIBUNWIND_FLAGS="--enable-libunwind"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- llvm-toolchain-trusty-3.6
|
||||||
|
packages:
|
||||||
|
- libclc-dev
|
||||||
|
# LLVM packaging is broken and misses these dependencies
|
||||||
|
- libedit-dev
|
||||||
|
- g++-4.7
|
||||||
|
# From sources above
|
||||||
|
- llvm-3.6-dev
|
||||||
|
- clang-3.6
|
||||||
|
- libclang-3.6-dev
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- libunwind8-dev
|
||||||
|
- env:
|
||||||
|
- LABEL="make Gallium ST Other"
|
||||||
|
- BUILD=make
|
||||||
|
- MAKEFLAGS="-j4"
|
||||||
|
- MAKE_CHECK_COMMAND="true"
|
||||||
|
- LLVM_VERSION=3.3
|
||||||
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
|
- DRI_LOADERS="--disable-glx --disable-gbm --disable-egl"
|
||||||
|
- DRI_DRIVERS=""
|
||||||
|
- GALLIUM_ST="--enable-dri --disable-opencl --enable-xa --enable-nine --enable-xvmc --enable-vdpau --enable-va --enable-omx --enable-gallium-osmesa"
|
||||||
|
# We need swrast for osmesa and nine.
|
||||||
|
# i915 most likely doesn't work with most ST.
|
||||||
|
# Regardless - we're doing a quick build test here.
|
||||||
|
- GALLIUM_DRIVERS="i915,swrast"
|
||||||
|
- VULKAN_DRIVERS=""
|
||||||
|
- LIBUNWIND_FLAGS="--enable-libunwind"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
# We actually want to test against llvm-3.3
|
||||||
|
- llvm-3.3-dev
|
||||||
|
# Nine requires gcc 4.6... which is the one we have right ?
|
||||||
|
- libxvmc-dev
|
||||||
|
# Build locally, for now.
|
||||||
|
#- libvdpau-dev
|
||||||
|
#- libva-dev
|
||||||
|
- libomxil-bellagio-dev
|
||||||
|
# LLVM packaging is broken and misses these dependencies
|
||||||
|
- libedit-dev
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- libunwind8-dev
|
||||||
|
- env:
|
||||||
|
- LABEL="make Vulkan"
|
||||||
|
- BUILD=make
|
||||||
|
- MAKEFLAGS="-j4"
|
||||||
|
- MAKE_CHECK_COMMAND="make -C src/gtest check && make -C src/intel check"
|
||||||
|
- LLVM_VERSION=3.9
|
||||||
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
|
- DRI_LOADERS="--disable-glx --disable-gbm --disable-egl --with-platforms=x11,wayland"
|
||||||
|
- DRI_DRIVERS=""
|
||||||
|
- GALLIUM_ST="--enable-dri --enable-dri3 --disable-opencl --disable-xa --disable-nine --disable-xvmc --disable-vdpau --disable-va --disable-omx --disable-gallium-osmesa"
|
||||||
|
- GALLIUM_DRIVERS=""
|
||||||
|
- VULKAN_DRIVERS="intel,radeon"
|
||||||
|
- LIBUNWIND_FLAGS="--disable-libunwind"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- llvm-toolchain-trusty-3.9
|
||||||
|
packages:
|
||||||
|
# LLVM packaging is broken and misses these dependencies
|
||||||
|
- libedit-dev
|
||||||
|
# From sources above
|
||||||
|
- llvm-3.9-dev
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- env:
|
||||||
|
- LABEL="scons"
|
||||||
|
- BUILD=scons
|
||||||
|
- SCONSFLAGS="-j4"
|
||||||
|
# Explicitly disable.
|
||||||
|
- SCONS_TARGET="llvm=0"
|
||||||
|
# Keep it symmetrical to the make build.
|
||||||
|
- SCONS_CHECK_COMMAND="scons llvm=0 check"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- scons
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- env:
|
||||||
|
- LABEL="scons LLVM"
|
||||||
|
- BUILD=scons
|
||||||
|
- SCONSFLAGS="-j4"
|
||||||
|
- SCONS_TARGET="llvm=1"
|
||||||
|
# Keep it symmetrical to the make build.
|
||||||
|
- SCONS_CHECK_COMMAND="scons llvm=1 check"
|
||||||
|
- LLVM_VERSION=3.3
|
||||||
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- scons
|
||||||
|
# LLVM packaging is broken and misses these dependencies
|
||||||
|
- libedit-dev
|
||||||
|
- llvm-3.3-dev
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
- env:
|
||||||
|
- LABEL="scons SWR"
|
||||||
|
- BUILD=scons
|
||||||
|
- SCONSFLAGS="-j4"
|
||||||
|
- SCONS_TARGET="swr=1"
|
||||||
|
- LLVM_VERSION=3.9
|
||||||
|
- LLVM_CONFIG="llvm-config-${LLVM_VERSION}"
|
||||||
|
# Keep it symmetrical to the make build. There's no actual SWR, yet.
|
||||||
|
- SCONS_CHECK_COMMAND="true"
|
||||||
|
- OVERRIDE_CC="gcc-4.8"
|
||||||
|
- OVERRIDE_CXX="g++-4.8"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
sources:
|
||||||
|
- llvm-toolchain-trusty-3.9
|
||||||
|
packages:
|
||||||
|
- scons
|
||||||
|
# LLVM packaging is broken and misses these dependencies
|
||||||
|
- libedit-dev
|
||||||
|
# From sources above
|
||||||
|
- llvm-3.9-dev
|
||||||
|
# Common
|
||||||
|
- xz-utils
|
||||||
|
- x11proto-xf86vidmode-dev
|
||||||
|
- libexpat1-dev
|
||||||
|
- libx11-xcb-dev
|
||||||
|
- libelf-dev
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- if test "x$BUILD" = xmeson; then
|
- pip install --user mako
|
||||||
pip3 install --user meson;
|
|
||||||
pip3 install --user mako;
|
# Since libdrm gets updated in configure.ac regularly, try to pick up the
|
||||||
fi
|
# latest version from there.
|
||||||
- if test "x$BUILD" = xscons; then
|
- for line in `grep "^LIBDRM.*_REQUIRED=" configure.ac`; do
|
||||||
pip2 install --user mako;
|
old_ver=`echo $LIBDRM_VERSION | sed 's/libdrm-//'`;
|
||||||
|
new_ver=`echo $line | sed 's/.*REQUIRED=//'`;
|
||||||
|
if `echo "$old_ver,$new_ver" | tr ',' '\n' | sort -Vc 2> /dev/null`; then
|
||||||
|
export LIBDRM_VERSION="libdrm-$new_ver";
|
||||||
|
fi;
|
||||||
|
done
|
||||||
|
|
||||||
|
# Install dependencies where we require specific versions (or where
|
||||||
|
# disallowed by Travis CI's package whitelisting).
|
||||||
|
|
||||||
|
- wget $XORG_RELEASES/util/$XORGMACROS_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $XORGMACROS_VERSION.tar.bz2
|
||||||
|
- (cd $XORGMACROS_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget $XORG_RELEASES/proto/$GLPROTO_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $GLPROTO_VERSION.tar.bz2
|
||||||
|
- (cd $GLPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget $XORG_RELEASES/proto/$DRI2PROTO_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $DRI2PROTO_VERSION.tar.bz2
|
||||||
|
- (cd $DRI2PROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget $XCB_RELEASES/$XCBPROTO_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $XCBPROTO_VERSION.tar.bz2
|
||||||
|
- (cd $XCBPROTO_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget $XCB_RELEASES/$LIBXCB_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $LIBXCB_VERSION.tar.bz2
|
||||||
|
- (cd $LIBXCB_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget $XORG_RELEASES/lib/$LIBPCIACCESS_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $LIBPCIACCESS_VERSION.tar.bz2
|
||||||
|
- (cd $LIBPCIACCESS_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget http://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $LIBDRM_VERSION.tar.bz2
|
||||||
|
- (cd $LIBDRM_VERSION && ./configure --prefix=$HOME/prefix --enable-vc4 --enable-freedreno --enable-etnaviv-experimental-api && make install)
|
||||||
|
|
||||||
|
- wget $XORG_RELEASES/lib/$LIBXSHMFENCE_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $LIBXSHMFENCE_VERSION.tar.bz2
|
||||||
|
- (cd $LIBXSHMFENCE_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
# libtxc-dxtn uses the patented S3 Texture Compression
|
||||||
|
# algorithm. Therefore, we don't want to use this library but it is
|
||||||
|
# still possible through setting the USE_TXC_DXTN variable to yes in
|
||||||
|
# the travis web UI.
|
||||||
|
#
|
||||||
|
# According to Wikipedia, the patent expires on October 2, 2017:
|
||||||
|
# https://en.wikipedia.org/wiki/S3_Texture_Compression#Patent
|
||||||
|
- if test "x$USE_TXC_DXTN" = xyes; then
|
||||||
|
wget https://people.freedesktop.org/~cbrill/libtxc_dxtn/$LIBTXC_DXTN_VERSION.tar.bz2;
|
||||||
|
tar -jxvf $LIBTXC_DXTN_VERSION.tar.bz2;
|
||||||
|
(cd $LIBTXC_DXTN_VERSION && ./configure --prefix=$HOME/prefix && make install);
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
- wget http://people.freedesktop.org/~aplattner/vdpau/$LIBVDPAU_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $LIBVDPAU_VERSION.tar.bz2
|
||||||
|
- (cd $LIBVDPAU_VERSION && ./configure --prefix=$HOME/prefix && make install)
|
||||||
|
|
||||||
|
- wget http://www.freedesktop.org/software/vaapi/releases/libva/$LIBVA_VERSION.tar.bz2
|
||||||
|
- tar -jxvf $LIBVA_VERSION.tar.bz2
|
||||||
|
- (cd $LIBVA_VERSION && ./configure --prefix=$HOME/prefix --disable-wayland --disable-dummy-driver && make install)
|
||||||
|
|
||||||
|
- wget http://wayland.freedesktop.org/releases/$LIBWAYLAND_VERSION.tar.xz
|
||||||
|
- tar -axvf $LIBWAYLAND_VERSION.tar.xz
|
||||||
|
- (cd $LIBWAYLAND_VERSION && ./configure --prefix=$HOME/prefix --enable-libraries --without-host-scanner --disable-documentation --disable-dtd-validation && make install)
|
||||||
|
|
||||||
|
# Generate the header since one is missing on the Travis instance
|
||||||
|
- mkdir -p linux
|
||||||
|
- printf "%s\n" \
|
||||||
|
"#ifndef _LINUX_MEMFD_H" \
|
||||||
|
"#define _LINUX_MEMFD_H" \
|
||||||
|
"" \
|
||||||
|
"#define __NR_memfd_create 319" \
|
||||||
|
"#define SYS_memfd_create __NR_memfd_create" \
|
||||||
|
"" \
|
||||||
|
"#define MFD_CLOEXEC 0x0001U" \
|
||||||
|
"#define MFD_ALLOW_SEALING 0x0002U" \
|
||||||
|
"" \
|
||||||
|
"#endif /* _LINUX_MEMFD_H */" > linux/memfd.h
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- if test "x$BUILD" = xmeson; then
|
- if test "x$BUILD" = xmake; then
|
||||||
meson _build -Dbuild-tests=true;
|
test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
|
||||||
ninja -C _build || travis_terminate 1;
|
test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
|
||||||
ninja -C _build test || travis_terminate 1;
|
export CC="$CC -isystem`pwd`";
|
||||||
ninja -C _build install || travis_terminate 1;
|
|
||||||
|
./autogen.sh --enable-debug
|
||||||
|
$LIBUNWIND_FLAGS
|
||||||
|
$DRI_LOADERS
|
||||||
|
--with-dri-drivers=$DRI_DRIVERS
|
||||||
|
$GALLIUM_ST
|
||||||
|
--with-gallium-drivers=$GALLIUM_DRIVERS
|
||||||
|
--with-vulkan-drivers=$VULKAN_DRIVERS
|
||||||
|
--disable-llvm-shared-libs
|
||||||
|
&&
|
||||||
|
make && eval $MAKE_CHECK_COMMAND;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- if test "x$BUILD" = xscons; then
|
- if test "x$BUILD" = xscons; then
|
||||||
scons force_scons=1 || travis_terminate 1;
|
test -n "$OVERRIDE_CC" && export CC="$OVERRIDE_CC";
|
||||||
scons force_scons=1 check || travis_terminate 1;
|
test -n "$OVERRIDE_CXX" && export CXX="$OVERRIDE_CXX";
|
||||||
|
scons $SCONS_TARGET && eval $SCONS_CHECK_COMMAND;
|
||||||
fi
|
fi
|
||||||
|
@@ -31,36 +31,25 @@ LOCAL_C_INCLUDES += \
|
|||||||
|
|
||||||
MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION)
|
MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION)
|
||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-Wno-error \
|
|
||||||
-Werror=incompatible-pointer-types \
|
|
||||||
-Wno-unused-parameter \
|
-Wno-unused-parameter \
|
||||||
|
-Wno-date-time \
|
||||||
-Wno-pointer-arith \
|
-Wno-pointer-arith \
|
||||||
-Wno-missing-field-initializers \
|
-Wno-missing-field-initializers \
|
||||||
-Wno-initializer-overrides \
|
-Wno-initializer-overrides \
|
||||||
-Wno-mismatched-tags \
|
-Wno-mismatched-tags \
|
||||||
-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \
|
-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \
|
||||||
-DPACKAGE_BUGREPORT=\"https://gitlab.freedesktop.org/mesa/mesa/-/issues\"
|
-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"
|
||||||
|
|
||||||
# XXX: The following __STDC_*_MACROS defines should not be needed.
|
|
||||||
# It's likely due to a bug elsewhere, but let's temporarily add them
|
|
||||||
# here to fix the radeonsi build.
|
|
||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-DANDROID_API_LEVEL=$(PLATFORM_SDK_VERSION) \
|
|
||||||
-DENABLE_SHADER_CACHE \
|
-DENABLE_SHADER_CACHE \
|
||||||
-D__STDC_CONSTANT_MACROS \
|
|
||||||
-D__STDC_LIMIT_MACROS \
|
|
||||||
-DHAVE___BUILTIN_EXPECT \
|
-DHAVE___BUILTIN_EXPECT \
|
||||||
-DHAVE___BUILTIN_FFS \
|
-DHAVE___BUILTIN_FFS \
|
||||||
-DHAVE___BUILTIN_FFSLL \
|
-DHAVE___BUILTIN_FFSLL \
|
||||||
-DHAVE_DLFCN_H \
|
|
||||||
-DHAVE_FUNC_ATTRIBUTE_FLATTEN \
|
-DHAVE_FUNC_ATTRIBUTE_FLATTEN \
|
||||||
-DHAVE_FUNC_ATTRIBUTE_UNUSED \
|
-DHAVE_FUNC_ATTRIBUTE_UNUSED \
|
||||||
-DHAVE_FUNC_ATTRIBUTE_FORMAT \
|
-DHAVE_FUNC_ATTRIBUTE_FORMAT \
|
||||||
-DHAVE_FUNC_ATTRIBUTE_PACKED \
|
-DHAVE_FUNC_ATTRIBUTE_PACKED \
|
||||||
-DHAVE_FUNC_ATTRIBUTE_ALIAS \
|
-DHAVE_FUNC_ATTRIBUTE_ALIAS \
|
||||||
-DHAVE_FUNC_ATTRIBUTE_NORETURN \
|
|
||||||
-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL \
|
|
||||||
-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT \
|
|
||||||
-DHAVE___BUILTIN_CTZ \
|
-DHAVE___BUILTIN_CTZ \
|
||||||
-DHAVE___BUILTIN_POPCOUNT \
|
-DHAVE___BUILTIN_POPCOUNT \
|
||||||
-DHAVE___BUILTIN_POPCOUNTLL \
|
-DHAVE___BUILTIN_POPCOUNTLL \
|
||||||
@@ -68,16 +57,10 @@ LOCAL_CFLAGS += \
|
|||||||
-DHAVE___BUILTIN_CLZLL \
|
-DHAVE___BUILTIN_CLZLL \
|
||||||
-DHAVE___BUILTIN_UNREACHABLE \
|
-DHAVE___BUILTIN_UNREACHABLE \
|
||||||
-DHAVE_PTHREAD=1 \
|
-DHAVE_PTHREAD=1 \
|
||||||
-DHAVE_DLADDR \
|
-DHAVE_DLOPEN \
|
||||||
-DHAVE_DL_ITERATE_PHDR \
|
-DHAVE_DL_ITERATE_PHDR \
|
||||||
-DHAVE_LINUX_FUTEX_H \
|
|
||||||
-DHAVE_ENDIAN_H \
|
|
||||||
-DHAVE_ZLIB \
|
|
||||||
-DMAJOR_IN_SYSMACROS \
|
-DMAJOR_IN_SYSMACROS \
|
||||||
-DVK_USE_PLATFORM_ANDROID_KHR \
|
|
||||||
-fvisibility=hidden \
|
-fvisibility=hidden \
|
||||||
-fno-math-errno \
|
|
||||||
-fno-trapping-math \
|
|
||||||
-Wno-sign-compare
|
-Wno-sign-compare
|
||||||
|
|
||||||
LOCAL_CPPFLAGS += \
|
LOCAL_CPPFLAGS += \
|
||||||
@@ -91,35 +74,39 @@ LOCAL_CPPFLAGS += \
|
|||||||
LOCAL_CONLYFLAGS += \
|
LOCAL_CONLYFLAGS += \
|
||||||
-std=c99
|
-std=c99
|
||||||
|
|
||||||
# c11 timespec_get is part of bionic as well
|
ifeq ($(strip $(MESA_ENABLE_ASM)),true)
|
||||||
# https://android-review.googlesource.com/c/718518
|
|
||||||
# This means releases from P and earlier won't need this
|
|
||||||
ifeq ($(filter 5 6 7 8 9, $(MESA_ANDROID_MAJOR_VERSION)),)
|
|
||||||
LOCAL_CFLAGS += -DHAVE_TIMESPEC_GET
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Android's libc began supporting shm in Oreo
|
|
||||||
ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true)
|
|
||||||
LOCAL_CFLAGS += -DHAVE_SYS_SHM_H
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(TARGET_ARCH),x86)
|
ifeq ($(TARGET_ARCH),x86)
|
||||||
LOCAL_CFLAGS += \
|
LOCAL_CFLAGS += \
|
||||||
-DUSE_X86_ASM
|
-DUSE_X86_ASM
|
||||||
|
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH_ARM_HAVE_NEON),true)
|
|
||||||
LOCAL_CFLAGS_arm += -DUSE_ARM_ASM
|
|
||||||
endif
|
endif
|
||||||
LOCAL_CFLAGS_arm64 += -DUSE_AARCH64_ASM
|
|
||||||
|
ifeq ($(MESA_ENABLE_LLVM),true)
|
||||||
|
ifeq ($(MESA_ANDROID_MAJOR_VERSION),5)
|
||||||
|
LOCAL_CFLAGS += -DHAVE_LLVM=0x0305 -DMESA_LLVM_VERSION_PATCH=2
|
||||||
|
ELF_INCLUDES := external/elfutils/0.153/libelf
|
||||||
|
endif
|
||||||
|
ifeq ($(MESA_ANDROID_MAJOR_VERSION),6)
|
||||||
|
LOCAL_CFLAGS += -DHAVE_LLVM=0x0307 -DMESA_LLVM_VERSION_PATCH=0
|
||||||
|
ELF_INCLUDES := external/elfutils/src/libelf
|
||||||
|
endif
|
||||||
|
ifeq ($(MESA_ANDROID_MAJOR_VERSION),7)
|
||||||
|
LOCAL_CFLAGS += -DHAVE_LLVM=0x0308 -DMESA_LLVM_VERSION_PATCH=0
|
||||||
|
ELF_INCLUDES := external/elfutils/libelf
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(LOCAL_IS_HOST_MODULE),true)
|
ifneq ($(LOCAL_IS_HOST_MODULE),true)
|
||||||
|
# add libdrm if there are hardware drivers
|
||||||
|
ifneq ($(filter-out swrast,$(MESA_GPU_DRIVERS)),)
|
||||||
LOCAL_CFLAGS += -DHAVE_LIBDRM
|
LOCAL_CFLAGS += -DHAVE_LIBDRM
|
||||||
LOCAL_SHARED_LIBRARIES += libdrm
|
LOCAL_SHARED_LIBRARIES += libdrm
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
LOCAL_CFLAGS_32 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib/$(MESA_DRI_MODULE_REL_PATH)\"
|
LOCAL_CFLAGS_32 += -DDEFAULT_DRIVER_DIR=\"/system/lib/$(MESA_DRI_MODULE_REL_PATH)\"
|
||||||
LOCAL_CFLAGS_64 += -DDEFAULT_DRIVER_DIR=\"/vendor/lib64/$(MESA_DRI_MODULE_REL_PATH)\"
|
LOCAL_CFLAGS_64 += -DDEFAULT_DRIVER_DIR=\"/system/lib64/$(MESA_DRI_MODULE_REL_PATH)\"
|
||||||
LOCAL_PROPRIETARY_MODULE := true
|
|
||||||
|
|
||||||
# uncomment to keep the debug symbols
|
# uncomment to keep the debug symbols
|
||||||
#LOCAL_STRIP_MODULE := false
|
#LOCAL_STRIP_MODULE := false
|
||||||
|
93
Android.mk
93
Android.mk
@@ -24,7 +24,7 @@
|
|||||||
# BOARD_GPU_DRIVERS should be defined. The valid values are
|
# BOARD_GPU_DRIVERS should be defined. The valid values are
|
||||||
#
|
#
|
||||||
# classic drivers: i915 i965
|
# classic drivers: i915 i965
|
||||||
# gallium drivers: swrast freedreno i915g nouveau kmsro r300g r600g radeonsi vc4 virgl vmwgfx etnaviv iris lima panfrost
|
# gallium drivers: swrast freedreno i915g nouveau r300g r600g radeonsi vc4 virgl vmwgfx
|
||||||
#
|
#
|
||||||
# The main target is libGLES_mesa. For each classic driver enabled, a DRI
|
# The main target is libGLES_mesa. For each classic driver enabled, a DRI
|
||||||
# module will also be built. DRI modules will be loaded by libGLES_mesa.
|
# module will also be built. DRI modules will be loaded by libGLES_mesa.
|
||||||
@@ -32,74 +32,53 @@
|
|||||||
MESA_TOP := $(call my-dir)
|
MESA_TOP := $(call my-dir)
|
||||||
|
|
||||||
MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
|
MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
|
||||||
ifneq ($(filter 2 4, $(MESA_ANDROID_MAJOR_VERSION)),)
|
|
||||||
$(error "Android 4.4 and earlier not supported")
|
|
||||||
endif
|
|
||||||
|
|
||||||
MESA_DRI_MODULE_REL_PATH := dri
|
MESA_DRI_MODULE_REL_PATH := dri
|
||||||
MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/$(MESA_DRI_MODULE_REL_PATH)
|
MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/$(MESA_DRI_MODULE_REL_PATH)
|
||||||
MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/$(MESA_DRI_MODULE_REL_PATH)
|
MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/$(MESA_DRI_MODULE_REL_PATH)
|
||||||
MESA_DRI_LDFLAGS := -Wl,--build-id=sha1
|
|
||||||
|
|
||||||
MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
|
MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
|
||||||
MESA_PYTHON2 := python
|
MESA_PYTHON2 := python
|
||||||
MESA_PYTHON3 := python3
|
|
||||||
|
|
||||||
# Lists to convert driver names to boolean variables
|
classic_drivers := i915 i965
|
||||||
# in form of <driver name>.<boolean make variable>
|
gallium_drivers := swrast freedreno i915g nouveau r300g r600g radeonsi vmwgfx vc4 virgl
|
||||||
classic_drivers := i915.HAVE_I915_DRI i965.HAVE_I965_DRI
|
|
||||||
gallium_drivers := \
|
|
||||||
swrast.HAVE_GALLIUM_SOFTPIPE \
|
|
||||||
freedreno.HAVE_GALLIUM_FREEDRENO \
|
|
||||||
i915g.HAVE_GALLIUM_I915 \
|
|
||||||
nouveau.HAVE_GALLIUM_NOUVEAU \
|
|
||||||
kmsro.HAVE_GALLIUM_KMSRO \
|
|
||||||
r300g.HAVE_GALLIUM_R300 \
|
|
||||||
r600g.HAVE_GALLIUM_R600 \
|
|
||||||
radeonsi.HAVE_GALLIUM_RADEONSI \
|
|
||||||
vmwgfx.HAVE_GALLIUM_VMWGFX \
|
|
||||||
vc4.HAVE_GALLIUM_VC4 \
|
|
||||||
virgl.HAVE_GALLIUM_VIRGL \
|
|
||||||
etnaviv.HAVE_GALLIUM_ETNAVIV \
|
|
||||||
iris.HAVE_GALLIUM_IRIS \
|
|
||||||
lima.HAVE_GALLIUM_LIMA \
|
|
||||||
panfrost.HAVE_GALLIUM_PANFROST
|
|
||||||
|
|
||||||
ifeq ($(BOARD_GPU_DRIVERS),all)
|
MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS))
|
||||||
MESA_BUILD_CLASSIC := $(filter HAVE_%, $(subst ., , $(classic_drivers)))
|
|
||||||
MESA_BUILD_GALLIUM := $(filter HAVE_%, $(subst ., , $(gallium_drivers)))
|
# warn about invalid drivers
|
||||||
|
invalid_drivers := $(filter-out \
|
||||||
|
$(classic_drivers) $(gallium_drivers), $(MESA_GPU_DRIVERS))
|
||||||
|
ifneq ($(invalid_drivers),)
|
||||||
|
$(warning invalid GPU drivers: $(invalid_drivers))
|
||||||
|
# tidy up
|
||||||
|
MESA_GPU_DRIVERS := $(filter-out $(invalid_drivers), $(MESA_GPU_DRIVERS))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# host and target must be the same arch to generate matypes.h
|
||||||
|
ifeq ($(TARGET_ARCH),$(HOST_ARCH))
|
||||||
|
MESA_ENABLE_ASM := true
|
||||||
else
|
else
|
||||||
# Warn if we have any invalid driver names
|
MESA_ENABLE_ASM := false
|
||||||
$(foreach d, $(BOARD_GPU_DRIVERS), \
|
|
||||||
$(if $(findstring $(d).,$(classic_drivers) $(gallium_drivers)), \
|
|
||||||
, \
|
|
||||||
$(warning invalid GPU driver: $(d)) \
|
|
||||||
) \
|
|
||||||
)
|
|
||||||
MESA_BUILD_CLASSIC := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(classic_drivers)))))
|
|
||||||
MESA_BUILD_GALLIUM := $(strip $(foreach d, $(BOARD_GPU_DRIVERS), $(patsubst $(d).%,%, $(filter $(d).%, $(gallium_drivers)))))
|
|
||||||
endif
|
|
||||||
ifeq ($(filter x86%,$(TARGET_ARCH)),)
|
|
||||||
MESA_BUILD_CLASSIC :=
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true))
|
ifneq ($(filter $(classic_drivers), $(MESA_GPU_DRIVERS)),)
|
||||||
|
MESA_BUILD_CLASSIC := true
|
||||||
ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),)
|
else
|
||||||
MESA_ENABLE_LLVM := true
|
MESA_BUILD_CLASSIC := false
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define mesa-build-with-llvm
|
ifneq ($(filter $(gallium_drivers), $(MESA_GPU_DRIVERS)),)
|
||||||
$(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \
|
MESA_BUILD_GALLIUM := true
|
||||||
$(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \
|
else
|
||||||
$(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DMESA_LLVM_VERSION_STRING=\"3.9\") \
|
MESA_BUILD_GALLIUM := false
|
||||||
$(eval LOCAL_SHARED_LIBRARIES += libLLVM)
|
endif
|
||||||
endef
|
|
||||||
|
MESA_ENABLE_LLVM := $(if $(filter radeonsi,$(MESA_GPU_DRIVERS)),true,false)
|
||||||
|
|
||||||
# add subdirectories
|
# add subdirectories
|
||||||
|
ifneq ($(strip $(MESA_GPU_DRIVERS)),)
|
||||||
|
|
||||||
SUBDIRS := \
|
SUBDIRS := \
|
||||||
src/etnaviv \
|
|
||||||
src/freedreno \
|
|
||||||
src/gbm \
|
src/gbm \
|
||||||
src/loader \
|
src/loader \
|
||||||
src/mapi \
|
src/mapi \
|
||||||
@@ -108,12 +87,16 @@ SUBDIRS := \
|
|||||||
src/util \
|
src/util \
|
||||||
src/egl \
|
src/egl \
|
||||||
src/amd \
|
src/amd \
|
||||||
src/broadcom \
|
|
||||||
src/intel \
|
src/intel \
|
||||||
src/mesa/drivers/dri \
|
src/mesa/drivers/dri \
|
||||||
src/vulkan \
|
src/vulkan
|
||||||
src/panfrost \
|
|
||||||
|
|
||||||
INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS))
|
INC_DIRS := $(call all-named-subdir-makefiles,$(SUBDIRS))
|
||||||
|
|
||||||
|
ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
|
||||||
INC_DIRS += $(call all-named-subdir-makefiles,src/gallium)
|
INC_DIRS += $(call all-named-subdir-makefiles,src/gallium)
|
||||||
|
endif
|
||||||
|
|
||||||
include $(INC_DIRS)
|
include $(INC_DIRS)
|
||||||
|
|
||||||
|
endif
|
||||||
|
@@ -10,7 +10,7 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/STATIC_LIBRARIES/libmesa_*_interm
|
|||||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/i9?5_dri_intermediates)
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/i9?5_dri_intermediates)
|
||||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libglapi_intermediates)
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libglapi_intermediates)
|
||||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libGLES_mesa_intermediates)
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libGLES_mesa_intermediates)
|
||||||
$(call add-clean-step, rm -rf $(HOST_OUT)/*/EXECUTABLES/mesa_*_intermediates)
|
$(call add-clean-step, rm -rf $(HOST_OUT_release)/*/EXECUTABLES/mesa_*_intermediates)
|
||||||
$(call add-clean-step, rm -rf $(HOST_OUT)/*/EXECUTABLES/glsl_compiler_intermediates)
|
$(call add-clean-step, rm -rf $(HOST_OUT_release)/*/EXECUTABLES/glsl_compiler_intermediates)
|
||||||
$(call add-clean-step, rm -rf $(HOST_OUT)/*/STATIC_LIBRARIES/libmesa_*_intermediates)
|
$(call add-clean-step, rm -rf $(HOST_OUT_release)/*/STATIC_LIBRARIES/libmesa_*_intermediates)
|
||||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/*_dri_intermediates)
|
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/*_dri_intermediates)
|
||||||
|
74
Makefile.am
Normal file
74
Makefile.am
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# Copyright © 2012 Intel Corporation
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
|
# to deal in the Software without restriction, including without limitation
|
||||||
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice (including the next
|
||||||
|
# paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
# Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
|
SUBDIRS = src
|
||||||
|
|
||||||
|
AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||||
|
--enable-dri \
|
||||||
|
--enable-dri3 \
|
||||||
|
--enable-egl \
|
||||||
|
--enable-gallium-tests \
|
||||||
|
--enable-gallium-osmesa \
|
||||||
|
--enable-llvm \
|
||||||
|
--enable-gbm \
|
||||||
|
--enable-gles1 \
|
||||||
|
--enable-gles2 \
|
||||||
|
--enable-glx \
|
||||||
|
--enable-glx-tls \
|
||||||
|
--enable-nine \
|
||||||
|
--enable-opencl \
|
||||||
|
--enable-opengl \
|
||||||
|
--enable-va \
|
||||||
|
--enable-vdpau \
|
||||||
|
--enable-xa \
|
||||||
|
--enable-xvmc \
|
||||||
|
--enable-llvm-shared-libs \
|
||||||
|
--enable-libunwind \
|
||||||
|
--with-platforms=x11,wayland,drm,surfaceless \
|
||||||
|
--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast \
|
||||||
|
--with-gallium-drivers=i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,swr,etnaviv,imx \
|
||||||
|
--with-vulkan-drivers=intel,radeon
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
autogen.sh \
|
||||||
|
common.py \
|
||||||
|
docs \
|
||||||
|
doxygen \
|
||||||
|
scons \
|
||||||
|
SConstruct
|
||||||
|
|
||||||
|
noinst_HEADERS = \
|
||||||
|
include/c99_alloca.h \
|
||||||
|
include/c99_compat.h \
|
||||||
|
include/c99_math.h \
|
||||||
|
include/c11 \
|
||||||
|
include/D3D9 \
|
||||||
|
include/GL/wglext.h \
|
||||||
|
include/HaikuGL \
|
||||||
|
include/no_extern_c.h \
|
||||||
|
include/pci_ids
|
||||||
|
|
||||||
|
# We list some directories in EXTRA_DIST, but don't actually want to include
|
||||||
|
# the .gitignore files in the tarball.
|
||||||
|
dist-hook:
|
||||||
|
find $(distdir) -name .gitignore -exec $(RM) {} +
|
59
README.rst
59
README.rst
@@ -1,59 +0,0 @@
|
|||||||
`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library
|
|
||||||
======================================================
|
|
||||||
|
|
||||||
|
|
||||||
Source
|
|
||||||
------
|
|
||||||
|
|
||||||
This repository lives at https://gitlab.freedesktop.org/mesa/mesa.
|
|
||||||
Other repositories are likely forks, and code found there is not supported.
|
|
||||||
|
|
||||||
|
|
||||||
Build & install
|
|
||||||
---------------
|
|
||||||
|
|
||||||
You can find more information in our documentation (`docs/install.html
|
|
||||||
<https://mesa3d.org/install.html>`_), but the recommended way is to use
|
|
||||||
Meson (`docs/meson.html <https://mesa3d.org/meson.html>`_):
|
|
||||||
|
|
||||||
.. code-block:: sh
|
|
||||||
|
|
||||||
$ mkdir build
|
|
||||||
$ cd build
|
|
||||||
$ meson ..
|
|
||||||
$ sudo ninja install
|
|
||||||
|
|
||||||
|
|
||||||
Support
|
|
||||||
-------
|
|
||||||
|
|
||||||
Many Mesa devs hang on IRC; if you're not sure which channel is
|
|
||||||
appropriate, you should ask your question on `Freenode's #dri-devel
|
|
||||||
<irc://chat.freenode.net#dri-devel>`_, someone will redirect you if
|
|
||||||
necessary.
|
|
||||||
Remember that not everyone is in the same timezone as you, so it might
|
|
||||||
take a while before someone qualified sees your question.
|
|
||||||
To figure out who you're talking to, or which nick to ping for your
|
|
||||||
question, check out `Who's Who on IRC
|
|
||||||
<https://dri.freedesktop.org/wiki/WhosWho/>`_.
|
|
||||||
|
|
||||||
The next best option is to ask your question in an email to the
|
|
||||||
mailing lists: `mesa-dev\@lists.freedesktop.org
|
|
||||||
<https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_
|
|
||||||
|
|
||||||
|
|
||||||
Bug reports
|
|
||||||
-----------
|
|
||||||
|
|
||||||
If you think something isn't working properly, please file a bug report
|
|
||||||
(`docs/bugs.html <https://mesa3d.org/bugs.html>`_).
|
|
||||||
|
|
||||||
|
|
||||||
Contributing
|
|
||||||
------------
|
|
||||||
|
|
||||||
Contributions are welcome, and step-by-step instructions can be found in our
|
|
||||||
documentation (`docs/submittingpatches.html
|
|
||||||
<https://mesa3d.org/submittingpatches.html>`_).
|
|
||||||
|
|
||||||
Note that Mesa uses gitlab for patches submission, review and discussions.
|
|
72
REVIEWERS
72
REVIEWERS
@@ -1,11 +1,30 @@
|
|||||||
Overview:
|
Overview:
|
||||||
|
|
||||||
This file is similar in syntax (or more precisly a subset) of what is
|
This file is similar in syntax (or more precisly a subset) of what is
|
||||||
used by the MAINTAINERS file in the linux kernel.
|
used by the MAINTAINERS file in the linux kernel. Some fields do not
|
||||||
|
apply, for example, in all cases, send patches to:
|
||||||
|
|
||||||
|
mesa-dev@lists.freedesktop.org
|
||||||
|
|
||||||
|
and in all cases the patchwork instance is:
|
||||||
|
|
||||||
|
https://patchwork.freedesktop.org/project/mesa/
|
||||||
|
|
||||||
The purpose is not exactly the same the MAINTAINERS file in the linux
|
The purpose is not exactly the same the MAINTAINERS file in the linux
|
||||||
kernel, as there are not official/formal maintainers of different
|
kernel, as there are not official/formal maintainers of different
|
||||||
subsystems in mesa, but is meant to give an idea of who to CC for
|
subsystems in mesa, but is meant to give an idea of who to CC for
|
||||||
various patches for review.
|
various patches for review, and to allow the use of
|
||||||
|
scripts/get_reviewer.pl as git --cc-cmd.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
When sending patches:
|
||||||
|
|
||||||
|
git send-email --cc-cmd ./scripts/get_reviewer.pl ...
|
||||||
|
|
||||||
|
Or to configure as default:
|
||||||
|
|
||||||
|
git config sendemail.cccmd ./scripts/get_reviewer.pl
|
||||||
|
|
||||||
Descriptions of section entries:
|
Descriptions of section entries:
|
||||||
|
|
||||||
@@ -17,6 +36,14 @@ Descriptions of section entries:
|
|||||||
F: drivers/net/* all files in drivers/net, but not below
|
F: drivers/net/* all files in drivers/net, but not below
|
||||||
F: */net/* all files in "any top level directory"/net
|
F: */net/* all files in "any top level directory"/net
|
||||||
One pattern per line. Multiple F: lines acceptable.
|
One pattern per line. Multiple F: lines acceptable.
|
||||||
|
N: Files and directories with regex patterns.
|
||||||
|
N: [^a-z]tegra all files whose path contains the word tegra
|
||||||
|
One pattern per line. Multiple N: lines acceptable.
|
||||||
|
scripts/get_maintainer.pl has different behavior for files that
|
||||||
|
match F: pattern and matches of N: patterns. By default,
|
||||||
|
get_maintainer will not look at git log history when an F: pattern
|
||||||
|
match occurs. When an N: match occurs, git log history is used
|
||||||
|
to also notify the people that have git commit signatures.
|
||||||
|
|
||||||
Maintainers List (try to look for most precise areas first)
|
Maintainers List (try to look for most precise areas first)
|
||||||
|
|
||||||
@@ -45,18 +72,7 @@ F: src/loader/
|
|||||||
|
|
||||||
EGL
|
EGL
|
||||||
R: Eric Engestrom <eric@engestrom.ch>
|
R: Eric Engestrom <eric@engestrom.ch>
|
||||||
R: Emil Velikov <emil.l.velikov@gmail.com>
|
|
||||||
F: src/egl/
|
F: src/egl/
|
||||||
F: include/EGL/
|
|
||||||
|
|
||||||
HAIKU
|
|
||||||
R: Alexander von Gluck IV <kallisti5@unixzen.com>
|
|
||||||
F: include/HaikuGL/
|
|
||||||
F: src/egl/drivers/haiku/
|
|
||||||
F: src/gallium/state_trackers/hgl/
|
|
||||||
F: src/gallium/targets/haiku-softpipe/
|
|
||||||
F: src/gallium/winsys/sw/hgl/
|
|
||||||
F: src/hgl/
|
|
||||||
|
|
||||||
GALLIUM LOADER
|
GALLIUM LOADER
|
||||||
R: Emil Velikov <emil.l.velikov@gmail.com>
|
R: Emil Velikov <emil.l.velikov@gmail.com>
|
||||||
@@ -67,6 +83,14 @@ GALLIUM TARGETS
|
|||||||
R: Emil Velikov <emil.l.velikov@gmail.com>
|
R: Emil Velikov <emil.l.velikov@gmail.com>
|
||||||
F: src/gallium/targets/
|
F: src/gallium/targets/
|
||||||
|
|
||||||
|
AUTOCONF BUILD
|
||||||
|
R: Emil Velikov <emil.l.velikov@gmail.com>
|
||||||
|
F: autogen.sh
|
||||||
|
F: configure.ac
|
||||||
|
F: */Automake.inc
|
||||||
|
F: */Makefile.*am
|
||||||
|
F: */Makefile.sources
|
||||||
|
|
||||||
SCONS BUILD
|
SCONS BUILD
|
||||||
F: scons/
|
F: scons/
|
||||||
F: */SConscript*
|
F: */SConscript*
|
||||||
@@ -79,13 +103,6 @@ F: CleanSpec.mk
|
|||||||
F: */Android.*mk
|
F: */Android.*mk
|
||||||
F: */Makefile.sources
|
F: */Makefile.sources
|
||||||
|
|
||||||
MESON BUILD
|
|
||||||
R: Dylan Baker <dylan@pnwbakers.com>
|
|
||||||
R: Eric Engestrom <eric@engestrom.ch>
|
|
||||||
F: */meson.build
|
|
||||||
F: meson.build
|
|
||||||
F: meson_options.txt
|
|
||||||
|
|
||||||
ANDROID EGL SUPPORT
|
ANDROID EGL SUPPORT
|
||||||
R: Rob Herring <robh@kernel.org>
|
R: Rob Herring <robh@kernel.org>
|
||||||
R: Tomasz Figa <tfiga@chromium.org>
|
R: Tomasz Figa <tfiga@chromium.org>
|
||||||
@@ -103,18 +120,3 @@ F: src/gallium/drivers/freedreno/
|
|||||||
GLX
|
GLX
|
||||||
R: Adam Jackson <ajax@redhat.com>
|
R: Adam Jackson <ajax@redhat.com>
|
||||||
F: src/glx/
|
F: src/glx/
|
||||||
|
|
||||||
VULKAN
|
|
||||||
R: Eric Engestrom <eric@engestrom.ch>
|
|
||||||
F: src/vulkan/
|
|
||||||
F: include/vulkan/
|
|
||||||
|
|
||||||
VMWARE DRIVER
|
|
||||||
R: Brian Paul <brianp@vmware.com>
|
|
||||||
R: Charmaine Lee <charmainel@vmware.com>
|
|
||||||
F: src/gallium/drivers/svga/
|
|
||||||
|
|
||||||
VMWARE WINSYS CODE
|
|
||||||
R: Thomas Hellstrom <thellstrom@vmware.com>
|
|
||||||
R: Deepak Rawat <drawat@vmware.com>
|
|
||||||
F: src/gallium/winsys/svga/
|
|
||||||
|
41
SConstruct
41
SConstruct
@@ -20,7 +20,6 @@
|
|||||||
# to get the full list of options. See scons manpage for more info.
|
# to get the full list of options. See scons manpage for more info.
|
||||||
#
|
#
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import sys
|
import sys
|
||||||
@@ -28,13 +27,6 @@ import SCons.Util
|
|||||||
|
|
||||||
import common
|
import common
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Minimal scons version
|
|
||||||
|
|
||||||
EnsureSConsVersion(2, 4)
|
|
||||||
EnsurePythonVersion(2, 7)
|
|
||||||
|
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Configuration options
|
# Configuration options
|
||||||
|
|
||||||
@@ -58,35 +50,15 @@ except KeyError:
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
targets = targets.split(',')
|
targets = targets.split(',')
|
||||||
print('scons: warning: targets option is deprecated; pass the targets on their own such as')
|
print 'scons: warning: targets option is deprecated; pass the targets on their own such as'
|
||||||
print()
|
print
|
||||||
print(' scons %s' % ' '.join(targets))
|
print ' scons %s' % ' '.join(targets)
|
||||||
print()
|
print
|
||||||
COMMAND_LINE_TARGETS.append(targets)
|
COMMAND_LINE_TARGETS.append(targets)
|
||||||
|
|
||||||
|
|
||||||
Help(opts.GenerateHelpText(env))
|
Help(opts.GenerateHelpText(env))
|
||||||
|
|
||||||
|
|
||||||
#######################################################################
|
|
||||||
# Print a deprecation warning for using scons on non-windows
|
|
||||||
|
|
||||||
if common.host_platform != 'windows' and env['platform'] != 'windows':
|
|
||||||
if env['force_scons']:
|
|
||||||
print("WARNING: Scons is deprecated for non-windows platforms (including cygwin) "
|
|
||||||
"please use meson instead.", file=sys.stderr)
|
|
||||||
else:
|
|
||||||
print("ERROR: Scons is deprecated for non-windows platforms (including cygwin) "
|
|
||||||
"please use meson instead. If you really need to use scons you "
|
|
||||||
"can add `force_scons=1` to the scons command line.", file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
print("WARNING: Scons support is in the process of being deprecated on "
|
|
||||||
"on windows platforms (including mingw). If you haven't already "
|
|
||||||
"please try using meson for windows builds. Be sure to report any "
|
|
||||||
"issues you run into", file=sys.stderr)
|
|
||||||
|
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Environment setup
|
# Environment setup
|
||||||
|
|
||||||
@@ -94,7 +66,7 @@ with open("VERSION") as f:
|
|||||||
mesa_version = f.read().strip()
|
mesa_version = f.read().strip()
|
||||||
env.Append(CPPDEFINES = [
|
env.Append(CPPDEFINES = [
|
||||||
('PACKAGE_VERSION', '\\"%s\\"' % mesa_version),
|
('PACKAGE_VERSION', '\\"%s\\"' % mesa_version),
|
||||||
('PACKAGE_BUGREPORT', '\\"https://gitlab.freedesktop.org/mesa/mesa/-/issues\\"'),
|
('PACKAGE_BUGREPORT', '\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\"'),
|
||||||
])
|
])
|
||||||
|
|
||||||
# Includes
|
# Includes
|
||||||
@@ -180,7 +152,8 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
aliases = sorted(default_ans.keys())
|
aliases = default_ans.keys()
|
||||||
|
aliases.sort()
|
||||||
env.Help('\n')
|
env.Help('\n')
|
||||||
env.Help('Recognized targets:\n')
|
env.Help('Recognized targets:\n')
|
||||||
for alias in aliases:
|
for alias in aliases:
|
||||||
|
55
appveyor.yml
55
appveyor.yml
@@ -33,38 +33,47 @@ branches:
|
|||||||
# - https://www.appveyor.com/blog/2014/06/04/shallow-clone-for-git-repositories
|
# - https://www.appveyor.com/blog/2014/06/04/shallow-clone-for-git-repositories
|
||||||
clone_depth: 100
|
clone_depth: 100
|
||||||
|
|
||||||
# https://www.appveyor.com/docs/build-cache/
|
|
||||||
cache:
|
cache:
|
||||||
- '%LOCALAPPDATA%\pip\Cache -> appveyor.yml'
|
- win_flex_bison-2.5.9.zip
|
||||||
- win_flex_bison-2.5.15.zip
|
- llvm-3.3.1-msvc2013-mtd.7z
|
||||||
- llvm-5.0.1-msvc2017-mtd.7z
|
|
||||||
- subprojects\packagecache -> subprojects\*.wrap
|
|
||||||
|
|
||||||
os: Visual Studio 2017
|
os: Visual Studio 2013
|
||||||
|
|
||||||
init:
|
|
||||||
# Appveyor defaults core.autocrlf to input instead of the default (true), but
|
|
||||||
# that can hide problems processing CRLF text on Windows
|
|
||||||
- git config --global core.autocrlf true
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
WINFLEXBISON_VERSION: 2.5.15
|
WINFLEXBISON_ARCHIVE: win_flex_bison-2.5.9.zip
|
||||||
LLVM_ARCHIVE: llvm-5.0.1-msvc2017-mtd.7z
|
LLVM_ARCHIVE: llvm-3.3.1-msvc2013-mtd.7z
|
||||||
matrix:
|
|
||||||
- compiler: msvc
|
|
||||||
buildsystem: scons
|
|
||||||
- compiler: msvc
|
|
||||||
buildsystem: meson
|
|
||||||
path: C:\Python38-x64;C:\Python38-x64\Scripts;%path%
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- cmd: .appveyor\appveyor_msvc.bat install
|
# Check pip
|
||||||
|
- python --version
|
||||||
|
- python -m pip --version
|
||||||
|
# Install Mako
|
||||||
|
- python -m pip install Mako==1.0.6
|
||||||
|
# Install pywin32 extensions, needed by SCons
|
||||||
|
- python -m pip install pypiwin32
|
||||||
|
# Install python wheels, necessary to install SCons via pip
|
||||||
|
- python -m pip install wheel
|
||||||
|
# Install SCons
|
||||||
|
- python -m pip install scons==2.5.1
|
||||||
|
- scons --version
|
||||||
|
# Install flex/bison
|
||||||
|
- if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://downloads.sourceforge.net/project/winflexbison/old_versions/%WINFLEXBISON_ARCHIVE%"
|
||||||
|
- 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
|
||||||
|
- set Path=%CD%\winflexbison;%Path%
|
||||||
|
- win_flex --version
|
||||||
|
- win_bison --version
|
||||||
|
# Download and extract LLVM
|
||||||
|
- if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%"
|
||||||
|
- 7z x -y "%LLVM_ARCHIVE%" > nul
|
||||||
|
- mkdir llvm\bin
|
||||||
|
- set LLVM=%CD%\llvm
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- cmd: .appveyor\appveyor_msvc.bat build_script
|
- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=12.0 llvm=1
|
||||||
|
|
||||||
|
after_build:
|
||||||
|
- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=12.0 llvm=1 check
|
||||||
|
|
||||||
test_script:
|
|
||||||
- cmd: .appveyor\appveyor_msvc.bat test_script
|
|
||||||
|
|
||||||
# It's possible to setup notification here, as described in
|
# It's possible to setup notification here, as described in
|
||||||
# http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but
|
# http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but
|
||||||
|
14
autogen.sh
Executable file
14
autogen.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
srcdir=`dirname "$0"`
|
||||||
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
|
ORIGDIR=`pwd`
|
||||||
|
cd "$srcdir"
|
||||||
|
|
||||||
|
autoreconf --force --verbose --install || exit 1
|
||||||
|
cd "$ORIGDIR" || exit $?
|
||||||
|
|
||||||
|
if test -z "$NOCONFIGURE"; then
|
||||||
|
"$srcdir"/configure "$@"
|
||||||
|
fi
|
304
bin/.cherry-ignore
Normal file
304
bin/.cherry-ignore
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
# stable: This commit depends on 9fd9a7d0ba3 and 678d568c7b2, neither
|
||||||
|
# of which is in branch.
|
||||||
|
b84b631c6381d9b36bca5d0e7cc67dd23af188c1 radeonsi: load patch_id for TES-as-ES when exporting for PS
|
||||||
|
# fixes: This commit addressed an earlier commit 126d5ad which did not
|
||||||
|
# land in branch.
|
||||||
|
9da104593386f6e8ddec8f0d9d288aceb8908fe1 radv: fix regression in descriptor set freeing.
|
||||||
|
# stable: This commit addressed an earlier commit 944455217b which did
|
||||||
|
# not land in branch.
|
||||||
|
b28938ffce0580e89e6012826900da2b6013b0df st/glsl_to_tgsi: use correct writemask when converting generic intrinsics
|
||||||
|
# stable: This commit depends on 330d0607e and 61d8f3387d, neither of
|
||||||
|
# which is in branch.
|
||||||
|
c12f8305a8ae4fd5d78a9ab8bbda790a711d5bed nv50,nvc0: remove IDX from bufctx immediately, to avoid conflicts with clear
|
||||||
|
# fixes: Genuine false positive.
|
||||||
|
5d87667fed1bd5ab850abdfb3a10db8c8c21c330 bin/get-fixes-pick-list.sh: better identify multiple "fixes:" tags" has more than one Fixes tag
|
||||||
|
# extra: References 6a7c5257cac but because later f8d69beed49
|
||||||
|
# introduced a regression and the latter didn't land
|
||||||
|
c35fd58688fd8c0c421c35b28419d20befdcb8b9 i965: Fix anisotropic filtering for mag filter
|
||||||
|
|
||||||
|
# stable: The commit addresses issue brought up by 08413a81b93dc537fb0c3
|
||||||
|
# which is not in branch.
|
||||||
|
8e3d9c5d09c48be9a88bdca7ae3124c12b6db4fe anv: Round u_vector element sizes to a power of two
|
||||||
|
|
||||||
|
# stable: The commit is a follow-up to 6235f08ff8870636d89d2181e0a9dfc3ebec7b45
|
||||||
|
# which is not in branch.
|
||||||
|
b178e239dd7205a93ae3cf6c0a24c2c555bf333f anv: Transition MCS buffers from the undefined layout
|
||||||
|
|
||||||
|
# stable: The commit addresses 63a43f41619 which is not in branch
|
||||||
|
f6e674fa5164a957e93e8dc1334a48c9e7ee7df9 i965: Fix offset addition in get_isl_surf.
|
||||||
|
|
||||||
|
# stable: The commit addresses 0f9b609cf4f which is not in branch.
|
||||||
|
698636cc9762f090b75fd0421db7e654609e7715 i965: Fix = vs == in MCS aux usage assert.
|
||||||
|
|
||||||
|
# stable: Depends on the low_prio queue, which did not land in branch.
|
||||||
|
ed2b3f5c81b76281ff0e4728928ac55944b930b8 radeonsi: decrease the number of compiler threads
|
||||||
|
|
||||||
|
# stable: Depends on the ac_surface work, which did not land in branch.
|
||||||
|
5e81df0f103667d888bd346e148843f510a80adc ac/surface: fix hybrid graphics where APU=GFX9, dGPU=older
|
||||||
|
|
||||||
|
# stable: Addresses build issues in autoExpandEnvironmentVariables
|
||||||
|
# which landed with commit a25093de7188d553dfd832626a4181bd36898604
|
||||||
|
e21fc2c625279b29a3c05d3341b8b748655d5cec swr/rast: non-regex knob fallback code for gcc < 4.9
|
||||||
|
|
||||||
|
# stable: Depends on the refactoring commit b10cdb217a1638aa7cbd2c7bbb580d180512f3f3
|
||||||
|
# at least.
|
||||||
|
194ff5eed18f310bece0899595f678699badd32e swr: fix transform feedback logic
|
||||||
|
|
||||||
|
# stable: Based upon earlier refactoring commit 37e22ab65e852fc585650f6df26d976e7306acce
|
||||||
|
873789002f5d1c7c6c39231a8c8d541f4f61e65c radeonsi/gfx9: fix vertex idx in ES with multiple waves per threadgroup
|
||||||
|
081ac6e5c6d2ef3931b27eb755d1a38827582a45 radeonsi/gfx9: always wrap GS and TCS in an if-block (v2)
|
||||||
|
|
||||||
|
# stable: Reverted shortly after being merged in master.
|
||||||
|
5c1241268ba9b240cb79ab9a30c5255b176c83c9 st/mesa: release sampler views when redefining a texture in st_context_teximage
|
||||||
|
|
||||||
|
# stable: The bindless work did not land in branch.
|
||||||
|
b38c9c57f272b54a190be4efd4297effa1a3deab mesa: fix mismatch when returning 64-bit bindless uniform handles
|
||||||
|
|
||||||
|
# stable: Addresses commit 57165f2ef8 which landed after the 17.1 branchpoint.
|
||||||
|
f99e9335e2ca46ec8ead00b63e79f800fec75592 st/glsl_to_tgsi: fix getting the image type for array of structs
|
||||||
|
|
||||||
|
# stable: Addresses issues with bindless textures.
|
||||||
|
f4d095cc651af005d5760aa9dd06e6ae7007fab6 radeonsi: update dirty_level_mask only when flushing or unbinding framebuffer
|
||||||
|
|
||||||
|
# stable: Addresses issue introduced by earlier fix (081ac6e5c6d2), which
|
||||||
|
# did not land in branch
|
||||||
|
2879a602dd5d133c792d262b6be98aa6f810c16d radeonsi: ensure that temp array allocas are in the entry block
|
||||||
|
|
||||||
|
# stable: The EGL extension landed in 17.2
|
||||||
|
39bf7756b9a56b4827fecabfca00a8139feecd25 egl: move KHR_no_error vs debug/robustness check further down
|
||||||
|
|
||||||
|
# stable: The offending commit did not land in branch
|
||||||
|
914f11e75b8ebe8a0faab76ce25fe185ab580eee st/mesa: fix unconditional return in st_framebuffer_iface_remove
|
||||||
|
c4652a0a5b5eef32f31baa1187ecd2612ac1009d virgl: encode index buffer offset.
|
||||||
|
|
||||||
|
# stable: RGBA landed in 17.2
|
||||||
|
1bf703e4ea5c4f742bc7ba55d01e5afc3f4e11f9 dri_interface,egl,gallium: only expose RGBA visuals on Android
|
||||||
|
be5773fa8dfe9255d9abaf5c7d5bbbd2d922da08 Android: fix compile error for DRI2 loader getCapability
|
||||||
|
|
||||||
|
# stable: Commit was never applied - see above.
|
||||||
|
d85802e501a67e193a4a363cfe3b4c17c3d9e2e9 Revert "st/mesa: release sampler views when redefining a texture in st_context_teximage"
|
||||||
|
|
||||||
|
# stable: Breaks SWR compilation due to earlier commit f50aa21456
|
||||||
|
# which did not land in branch.
|
||||||
|
4d53b16f555b2d33216518100fb2cd578428512d swr: use the correct variable for no undefined symbols
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 28634ff7d3
|
||||||
|
# which did not land in branch.
|
||||||
|
cb6f16dce90b4737f62588f8ea5083ee6544787e radeon/ac: use ds_swizzle for derivs on si/cik.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 1cb5a6061c
|
||||||
|
# which did not land in branch.
|
||||||
|
4d9b0dcccb81ad10113d9aef52b4c84496e879f1 configure: remove trailing "-a" in swr architecture test
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
31a6750988d7dd431f72ff1ff11bfca83bde5d8c st/dri: NULL check before deref DRI loader .getCapability
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
9966c85e01a4344d2a6bb76e432e0bed70d52ff6 st/osmesa: add osmesa framebuffer iface hash table per st manager
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
c15b92ce1160d742ea431062bbe4b3e818bb2aaf intel/isl: Stop padding surfaces
|
||||||
|
4d27c6095e8385cccd225993452baad4d2e35420 intel/isl: Don't align the height of the last array slice
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
8e5808fc0c9d9da19a0c7f683c156386d4648842 i965/miptree: Call alloc_aux in create_for_bo
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
2e9a13bf2205b6e96cba408e3f48f1c3fe49634a radv: Fix decompression on multisampled depth buffers
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
5563872dbfbf733ed56e1b367bc8944ca59b1c3e isl: Validate row pitch of stencil surfaces.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
27fef5d52d44c8684fa4e7a21bd7a4284f3688ee radeonsi/gfx9: use the VI codepath for clamping Z
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
f7dfc44c617bec0f847ebe49b8672a64354ab13d i965/blorp: Correct type of src_format in call to intel_miptree_texture_aux_usage
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
5247b311e9b348fedd74980a34c4b6542d85b07b radv/gfx9: fix set predication packet.
|
||||||
|
fc600eb98d5846fe59f4a79ed1c7ad2a0667e927 radv/gfx9: remove some leftover gfx6 descriptor setup.
|
||||||
|
674ecbfef2acb17be363867425a013ca151e16b2 radv: emit db_htile_surface reg on gfx9 as well
|
||||||
|
e43cc3e3afc98783310f81f8c0151a8314044739 radv/gfx9: handle GFX9 opaque metadata
|
||||||
|
31bb8517a194af733deefe2d821537d994d39365 radv/gfx9: fix tile swizzle handling for gfx9
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
694d59fbaf4bc85daaff6cc411162dd6d1232968 radv/gfx9: for fast clear use is_linear flag.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
49eda75df6aafdf5d2ffe5d9247b516ac7d14691 i965: Always allow CPU readback of the scanout on LLC platforms
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
4c02e2bd95d16407084914ff7248a1717bdce658 radv: disable texture gather workaround on gfx9.
|
||||||
|
|
||||||
|
# fixes: This commit is complex and has non trivial conflicts due to
|
||||||
|
# multiple previous changes.
|
||||||
|
ea08a296fe226f5e67366b4db420c2322f38774c radv: Handle VK_ATTACHMENT_UNUSED in color attachments.
|
||||||
|
|
||||||
|
# fixes: This commit addressed an earlier commit af22adee4f which did not
|
||||||
|
# land in branch.
|
||||||
|
554aa094406f3f5a935c4adbe77569cc9beb4312 virgl: drop precise modifier.
|
||||||
|
|
||||||
|
# fixes: This commit is complex and has non trivial conflicts due to
|
||||||
|
# previous changes.
|
||||||
|
df61a05019d5c7479d4b29d251af4231f125e61c radv: handle 10-bit format clamping workaround.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
611076a41aac3095a82dff2432943d7f8d429822 radv: disable support for VEGA for now.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
bc56dfbf3f20504fce13e0f1730eea05ea0ea69a i965: Mark all EGLimages as non-coherent.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
61d2f3f1c24323a1c067595ec78dfbfefdc72b41 i965/miptree: Return NONE from texture_aux_usage when fully resolved
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
b040f51b61d4d5ee671ba9d862e871ac5ac67ddf ac/nir: fixup layer/viewport export for GFX9.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
2843c5d15cf7c051d6aaf0744c3c1c7d4a734184 radeonsi: update non-resident bindless descriptors if needed
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
4734bfc02adad103efa1fa51e4c0f93fcaedb73c Android: Fix LLVM duplicated symbols linking for N and M
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
0ae9ce0f29ea1973b850a4e6c6cae8606973036e i965/clear: Quantize the depth clear value based on the format
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
fdef2f0fd19ac6f2715a802d1e14b8ddfa094f11 radeonsi/gfx9: properly handle imported textures with unexpected swizzle mode
|
||||||
|
8dadb077908ad6d875577ca08e0e04a5741ba95b radeonsi: emit VGT_REUSE_OFF in the right place
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
df09f1f3cd5110874899ed0f4b4c33ba9b006c50 radv/gfx9: use total levels in texture descriptor
|
||||||
|
11834195e9c276e1f3756cf8f6161be14124261b radv/gfx9: fix level count in color register setup.
|
||||||
|
d987b4ab9e240b479c71129c3c261982112c57d8 radv/gfx9: fixup db/stencil disable.
|
||||||
|
864eb1852778abaa6f63ca106216001c9f375f05 radv: bump space check for indexed draw.
|
||||||
|
9c080100d336e4f90575d5138508b519ed334eef radv/gfx9: emit sx_mrt_blend registers
|
||||||
|
5378b5d0710be00d1316e42e692a52d4bc5d92fe radv: cleanup some image view descriptor setup.
|
||||||
|
a74d98743115b928eaeabc0d58b63174158aa209 radv/image: don't rescale width/height if the format isn't changing
|
||||||
|
bae7723e132d3177697606c799eabbb7cdde2f38 radv/gfx9: only minify image view width/height/depth before gfx9.
|
||||||
|
5d26e0baf223b361c9919db213915a82d2dff5c4 radv: don't degrade tiling mode for small compressed or depth texture.
|
||||||
|
8985ad494bce5a4c365fe38fdf500d8582b5a7d0 radv/gfx9: don't expose linear depth on vega.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
43595db30274f714e2b1f6120c2f5ec4c41614fe ac/nir: Cast sources of integer ops to int.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
19f6906c1e498499035e98929657e2faebe6c993 radv/gfx9: gfx9 has buffer sizing rules like pre-VI.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 76e2f390f98
|
||||||
|
# which did not land in branch.
|
||||||
|
f24cf82d6db290a88abfff0669d2c5e2aa463901 i965/tex: Don't pass samples to miptree_create_for_teximage
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit f296c22989ff
|
||||||
|
# which did not land in branch.
|
||||||
|
54c41af0aa92333579a72830254ac3aaa9f4aea1 i965: Make a BRW_NEW_FAST_CLEAR_COLOR dirty bit.
|
||||||
|
|
||||||
|
# fixes: Depends on earlier commit 04a40f7d2a that did not land in
|
||||||
|
# branch and which exposes new API.
|
||||||
|
3a5e3aa5a53cff55a5e31766d713a41ffa5a93d7 egl/drm: Fix misused x and y offsets in swrast_put_image2()
|
||||||
|
fe2a6281b3b299998fe7399e7dbcc2077d773824 egl/drm: Fix misused x and y offsets in swrast_get_image()
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
0ac78dc92582a59d4319ebce019b4caa41fb432d util: move string_to_uint_map to glsl
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
88cdf16871a0f1cd8ec3844072051ee38e945600 llvmpipe: initialize llvmpipe->dirty with LP_NEW_SCISSOR
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
dc9e08b0c3b04ba77ed59b8700e9f43edccb3168 freedreno: skip batch-cache for compute shaders
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
d118ff876559e468d2d243470947eee53171fe57 radv: disable 1d/2d linear optimisation on gfx9.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
6d929d3f85604768971d04fa2548f02ffca1696e radv/gfx9: set descriptor up for base_mip to level range.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
e38685cc62e2a452521c49a3ad09d82495c6b1d0 Revert "radv: disable support for VEGA for now."
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 43ef75b394f
|
||||||
|
# which did not land in branch.
|
||||||
|
63e79a8a777b36ecb30a1f6900e6b638cb32fc5f nir: Fix system_value_from_intrinsic for subgroups
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit f37ede40bad
|
||||||
|
# which did not land in branch.
|
||||||
|
52b65dfda84e4d433a332dd84596eef054eb5cbb i965: Fix crash in fallback GTT mapping.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 5b62eb237c52
|
||||||
|
# which did not land in branch.
|
||||||
|
34124e412f00432ba8b3b8d16e3f2168aa596622 radeonsi/gfx9: always flush DB metadata on framebuffer changes
|
||||||
|
|
||||||
|
# fixes: Depends on earlier commit 78bef01da2b that did not land in
|
||||||
|
# branch.
|
||||||
|
ff23e03d60d264a64fce340c132404c6070050a0 radv: Fix vkCopyImage with both depth and stencil aspects.
|
||||||
|
|
||||||
|
# fixes: References 166823bf but it is not really a bug fix, just an
|
||||||
|
# enhancement.
|
||||||
|
45c5c444518b7e83d9accd9f44702fa49282a3b8 radeonsi/gfx9: proper workaround for LS/HS VGPR initialization bug
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
e4018fdd85d8b58250c2cff8cdf4edd6b2b3c70b st/mesa: skip draw calls with pipe_draw_info::count == 0
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
76ac8fafadca86941f2723f7f7176b22112f5c0c radv/winsys: use amdgpu_bo_va_op_raw.
|
||||||
|
e8d57802fea60d4b353761ba1bdb08545733c007 radv/gfx9: allocate events from uncached VA space
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
219d29e4d83d8c901f127c8a004c45c23c15751e radv: use simpler indirect packet 3 if possible.
|
||||||
|
|
||||||
|
# fixes: References 391673af but it is not really a bug fix.
|
||||||
|
17dd4856a68621ab7107975df8239fb2963a57bb radeonsi: don't always apply the PrimID instancing bug workaround on SI
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 4fab67a4415
|
||||||
|
# which did not land in branch.
|
||||||
|
d496780fb2c7f2cf0e32b6a79dc528e5156dfcb3 intel/eu/validate: Look up types on demand in execution_type()
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
2f5b4490b59062f224e73f7a2d5cc0d8bd8eaa7b radv: don't use iview for meta image width/height.
|
||||||
|
1bcb953e16600e0d9329b678a6eacee98d326547 radv: handle GFX9 1D textures
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
ebd2a5354df64ef504f1e213afd2d6ab9d69a776 radv/gfx9: set mip0-depth correctly for 2d arrays/3d images
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
3633bae36b56a8667d31096b3c3472ab388c4fbf radv/gfx9: fix image resource handling.
|
||||||
|
|
||||||
|
# fixes: It only fixes documentation.
|
||||||
|
85b66d20969685c26d3f7d22b6fc7b988872fa88 docs/egl: remove reference to EGL_DRIVERS_PATH
|
||||||
|
|
||||||
|
# fixes: We don't really want to disable something unless it is
|
||||||
|
# causing a big problem.
|
||||||
|
bee83b26611c0a4a554aa37c59187351242e82fd radv: Disable multilayer & multilevel DCC.
|
||||||
|
|
||||||
|
# fixes: Depends on earlier commit dfc06d2fac that did not land in
|
||||||
|
# branch.
|
||||||
|
1a172fb113554fa03053052b161d5e22fc2fcb1f radv: Don't allocate CMASK for linear images.
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit f187a4932
|
||||||
|
# which did not land in branch.
|
||||||
|
cffc0ae0d9e572a82ce88c09e6ee8e2ed2a9be91 ac/surface: match Z and stencil tile config
|
||||||
|
|
||||||
|
# stable: 17.2. nomination only.
|
||||||
|
64d9bd149aa7f5a09f73cae07499577933722fb2 radv/nir: call opt_remove_phis after trivial continues.
|
||||||
|
|
||||||
|
# fixes: Depends on earlier commit 13a28ff2368 that did not land in
|
||||||
|
# branch.
|
||||||
|
94736d31c364635a76a11e0bd4f046a42d2221d5 amd/common: add workaround for cube map array layer clamping
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only. Depends on earlier commit 5cb2eee557
|
||||||
|
# which did not land in branch.
|
||||||
|
6fb0c1013b3578c5bd264efaa99a6d68418ccfb1 radeonsi: workaround for gather4 on integer cube maps
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
c1b01370486d203a6bccff2161afb288cfda1de3 Scons: Add LLVM 5.0 support
|
||||||
|
|
||||||
|
# stable: 17.2 nomination only.
|
||||||
|
c4ac522511d20683c09441a9e96ddfbc1b540c00 ac/surface: handle S8 on gfx9
|
||||||
|
|
||||||
|
# fixes: This commit addressed an earlier commit 1bcb953e166 which did not
|
||||||
|
# land in branch.
|
||||||
|
979978ee06867a531b8d56cee252f5c83920a339 radv: Check for GFX9 for 1D arrays in image_size intrinsic.
|
||||||
|
|
||||||
|
# This commit is causing several regressions on i965 driver
|
||||||
|
15cae12804ef288c7fb4cb9a38f7e32e6d8c4dc1 glsl/linker: fix output variable overlap check
|
@@ -1,2 +1,3 @@
|
|||||||
[*.sh]
|
[*.sh]
|
||||||
indent_style = tab
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
9
bin/.gitignore
vendored
Normal file
9
bin/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
config.guess
|
||||||
|
config.sub
|
||||||
|
install-sh
|
||||||
|
/depcomp
|
||||||
|
/missing
|
||||||
|
ylwrap
|
||||||
|
compile
|
||||||
|
ar-lib
|
||||||
|
/test-driver
|
35
bin/bugzilla_mesa.sh
Executable file
35
bin/bugzilla_mesa.sh
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script is used to generate the list of fixed bugs that
|
||||||
|
# appears in the release notes files, with HTML formatting.
|
||||||
|
#
|
||||||
|
# Note: This script could take a while until all details have
|
||||||
|
# been fetched from bugzilla.
|
||||||
|
#
|
||||||
|
# Usage examples:
|
||||||
|
#
|
||||||
|
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3
|
||||||
|
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 > bugfixes
|
||||||
|
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee bugfixes
|
||||||
|
|
||||||
|
|
||||||
|
# regex pattern: trim before bug number
|
||||||
|
trim_before='s/.*show_bug.cgi?id=\([0-9]*\).*/\1/'
|
||||||
|
|
||||||
|
# regex pattern: reconstruct the url
|
||||||
|
use_after='s,^,https://bugs.freedesktop.org/show_bug.cgi?id=,'
|
||||||
|
|
||||||
|
echo "<ul>"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# extract fdo urls from commit log
|
||||||
|
git log $* | grep 'bugs.freedesktop.org/show_bug' | sed -e $trim_before | sort -n -u | sed -e $use_after |\
|
||||||
|
while read url
|
||||||
|
do
|
||||||
|
id=$(echo $url | cut -d'=' -f2)
|
||||||
|
summary=$(wget --quiet -O - $url | grep -e '<title>.*</title>' | sed -e 's/ *<title>[0-9]\+ – \(.*\)<\/title>/\1/')
|
||||||
|
echo "<li><a href=\"$url\">Bug $id</a> - $summary</li>"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "</ul>"
|
@@ -1,272 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Generates release notes for a given version of mesa."""
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import datetime
|
|
||||||
import os
|
|
||||||
import pathlib
|
|
||||||
import sys
|
|
||||||
import textwrap
|
|
||||||
import typing
|
|
||||||
import urllib.parse
|
|
||||||
|
|
||||||
import aiohttp
|
|
||||||
from mako.template import Template
|
|
||||||
from mako import exceptions
|
|
||||||
|
|
||||||
|
|
||||||
CURRENT_GL_VERSION = '4.6'
|
|
||||||
CURRENT_VK_VERSION = '1.2'
|
|
||||||
|
|
||||||
TEMPLATE = Template(textwrap.dedent("""\
|
|
||||||
<%!
|
|
||||||
import html
|
|
||||||
%>
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
||||||
<title>Mesa Release Notes</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div class="header">
|
|
||||||
<h1>The Mesa 3D Graphics Library</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<iframe src="../contents.html"></iframe>
|
|
||||||
<div class="content">
|
|
||||||
|
|
||||||
<h1>Mesa ${next_version} Release Notes / ${today}</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
%if not bugfix:
|
|
||||||
Mesa ${next_version} is a new development release. People who are concerned
|
|
||||||
with stability and reliability should stick with a previous release or
|
|
||||||
wait for Mesa ${next_version[:-1]}1.
|
|
||||||
%else:
|
|
||||||
Mesa ${next_version} is a bug fix release which fixes bugs found since the ${version} release.
|
|
||||||
%endif
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Mesa ${next_version} implements the OpenGL ${gl_version} API, but the version reported by
|
|
||||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
|
||||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
|
||||||
Some drivers don't support all the features required in OpenGL ${gl_version}. OpenGL
|
|
||||||
${gl_version} is <strong>only</strong> available if requested at context creation.
|
|
||||||
Compatibility contexts may report a lower version depending on each driver.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Mesa ${next_version} implements the Vulkan ${vk_version} API, but the version reported by
|
|
||||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
|
||||||
depends on the particular driver being used.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>SHA256 checksum</h2>
|
|
||||||
<pre>
|
|
||||||
TBD.
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>New features</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
%for f in features:
|
|
||||||
<li>${html.escape(f)}</li>
|
|
||||||
%endfor
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Bug fixes</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
%for b in bugs:
|
|
||||||
<li>${html.escape(b)}</li>
|
|
||||||
%endfor
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>Changes</h2>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
%for c, author in changes:
|
|
||||||
%if author:
|
|
||||||
<p>${html.escape(c)}</p>
|
|
||||||
%else:
|
|
||||||
<li>${html.escape(c)}</li>
|
|
||||||
%endif
|
|
||||||
%endfor
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
"""))
|
|
||||||
|
|
||||||
|
|
||||||
async def gather_commits(version: str) -> str:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'log', '--oneline', f'mesa-{version}..', '--grep', r'Closes: \(https\|#\).*',
|
|
||||||
stdout=asyncio.subprocess.PIPE)
|
|
||||||
out, _ = await p.communicate()
|
|
||||||
assert p.returncode == 0, f"git log didn't work: {version}"
|
|
||||||
return out.decode().strip()
|
|
||||||
|
|
||||||
|
|
||||||
async def gather_bugs(version: str) -> typing.List[str]:
|
|
||||||
commits = await gather_commits(version)
|
|
||||||
|
|
||||||
issues: typing.List[str] = []
|
|
||||||
for commit in commits.split('\n'):
|
|
||||||
sha, message = commit.split(maxsplit=1)
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'log', '--max-count', '1', r'--format=%b', sha,
|
|
||||||
stdout=asyncio.subprocess.PIPE)
|
|
||||||
_out, _ = await p.communicate()
|
|
||||||
out = _out.decode().split('\n')
|
|
||||||
for line in reversed(out):
|
|
||||||
if line.startswith('Closes:'):
|
|
||||||
bug = line.lstrip('Closes:').strip()
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise Exception('No closes found?')
|
|
||||||
if bug.startswith('h'):
|
|
||||||
# This means we have a bug in the form "Closes: https://..."
|
|
||||||
issues.append(os.path.basename(urllib.parse.urlparse(bug).path))
|
|
||||||
else:
|
|
||||||
issues.append(bug.lstrip('#'))
|
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
async with aiohttp.ClientSession(loop=loop) as session:
|
|
||||||
results = await asyncio.gather(*[get_bug(session, i) for i in issues])
|
|
||||||
typing.cast(typing.Tuple[str, ...], results)
|
|
||||||
return list(results)
|
|
||||||
|
|
||||||
|
|
||||||
async def get_bug(session: aiohttp.ClientSession, bug_id: str) -> str:
|
|
||||||
"""Query gitlab to get the name of the issue that was closed."""
|
|
||||||
# Mesa's gitlab id is 176,
|
|
||||||
url = 'https://gitlab.freedesktop.org/api/v4/projects/176/issues'
|
|
||||||
params = {'iids[]': bug_id}
|
|
||||||
async with session.get(url, params=params) as response:
|
|
||||||
content = await response.json()
|
|
||||||
return content[0]['title']
|
|
||||||
|
|
||||||
|
|
||||||
async def get_shortlog(version: str) -> str:
|
|
||||||
"""Call git shortlog."""
|
|
||||||
p = await asyncio.create_subprocess_exec('git', 'shortlog', f'mesa-{version}..',
|
|
||||||
stdout=asyncio.subprocess.PIPE)
|
|
||||||
out, _ = await p.communicate()
|
|
||||||
assert p.returncode == 0, 'error getting shortlog'
|
|
||||||
assert out is not None, 'just for mypy'
|
|
||||||
return out.decode()
|
|
||||||
|
|
||||||
|
|
||||||
def walk_shortlog(log: str) -> typing.Generator[typing.Tuple[str, bool], None, None]:
|
|
||||||
for l in log.split('\n'):
|
|
||||||
if l.startswith(' '): # this means we have a patch description
|
|
||||||
yield l, False
|
|
||||||
else:
|
|
||||||
yield l, True
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_next_version(version: str, is_point: bool) -> str:
|
|
||||||
"""Calculate the version about to be released."""
|
|
||||||
if '-' in version:
|
|
||||||
version = version.split('-')[0]
|
|
||||||
if is_point:
|
|
||||||
base = version.split('.')
|
|
||||||
base[2] = str(int(base[2]) + 1)
|
|
||||||
return '.'.join(base)
|
|
||||||
return version
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_previous_version(version: str, is_point: bool) -> str:
|
|
||||||
"""Calculate the previous version to compare to.
|
|
||||||
|
|
||||||
In the case of -rc to final that verison is the previous .0 release,
|
|
||||||
(19.3.0 in the case of 20.0.0, for example). for point releases that is
|
|
||||||
the last point release. This value will be the same as the input value
|
|
||||||
for a point release, but different for a major release.
|
|
||||||
"""
|
|
||||||
if '-' in version:
|
|
||||||
version = version.split('-')[0]
|
|
||||||
if is_point:
|
|
||||||
return version
|
|
||||||
base = version.split('.')
|
|
||||||
if base[1] == '0':
|
|
||||||
base[0] = str(int(base[0]) - 1)
|
|
||||||
base[1] = '3'
|
|
||||||
else:
|
|
||||||
base[1] = str(int(base[1]) - 1)
|
|
||||||
return '.'.join(base)
|
|
||||||
|
|
||||||
|
|
||||||
def get_features(is_point_release: bool) -> typing.Generator[str, None, None]:
|
|
||||||
p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / 'new_features.txt'
|
|
||||||
if p.exists():
|
|
||||||
if is_point_release:
|
|
||||||
print("WARNING: new features being introduced in a point release", file=sys.stderr)
|
|
||||||
with p.open('rt') as f:
|
|
||||||
for line in f:
|
|
||||||
yield line
|
|
||||||
else:
|
|
||||||
yield "None"
|
|
||||||
|
|
||||||
|
|
||||||
async def main() -> None:
|
|
||||||
v = pathlib.Path(__file__).parent.parent / 'VERSION'
|
|
||||||
with v.open('rt') as f:
|
|
||||||
raw_version = f.read().strip()
|
|
||||||
is_point_release = '-rc' not in raw_version
|
|
||||||
assert '-devel' not in raw_version, 'Do not run this script on -devel'
|
|
||||||
version = raw_version.split('-')[0]
|
|
||||||
previous_version = calculate_previous_version(version, is_point_release)
|
|
||||||
next_version = calculate_next_version(version, is_point_release)
|
|
||||||
|
|
||||||
shortlog, bugs = await asyncio.gather(
|
|
||||||
get_shortlog(previous_version),
|
|
||||||
gather_bugs(previous_version),
|
|
||||||
)
|
|
||||||
|
|
||||||
final = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes' / f'{next_version}.html'
|
|
||||||
with final.open('wt') as f:
|
|
||||||
try:
|
|
||||||
f.write(TEMPLATE.render(
|
|
||||||
bugfix=is_point_release,
|
|
||||||
bugs=bugs,
|
|
||||||
changes=walk_shortlog(shortlog),
|
|
||||||
features=get_features(is_point_release),
|
|
||||||
gl_version=CURRENT_GL_VERSION,
|
|
||||||
next_version=next_version,
|
|
||||||
today=datetime.date.today(),
|
|
||||||
version=previous_version,
|
|
||||||
vk_version=CURRENT_VK_VERSION,
|
|
||||||
))
|
|
||||||
except:
|
|
||||||
print(exceptions.text_error_template().render())
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
loop.run_until_complete(main())
|
|
@@ -1,62 +0,0 @@
|
|||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
from unittest import mock
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from .gen_release_notes import *
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
'current, is_point, expected',
|
|
||||||
[
|
|
||||||
('19.2.0', True, '19.2.1'),
|
|
||||||
('19.3.6', True, '19.3.7'),
|
|
||||||
('20.0.0-rc4', False, '20.0.0'),
|
|
||||||
])
|
|
||||||
def test_next_version(current: str, is_point: bool, expected: str) -> None:
|
|
||||||
assert calculate_next_version(current, is_point) == expected
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
'current, is_point, expected',
|
|
||||||
[
|
|
||||||
('19.3.6', True, '19.3.6'),
|
|
||||||
('20.0.0-rc4', False, '19.3.0'),
|
|
||||||
])
|
|
||||||
def test_previous_version(current: str, is_point: bool, expected: str) -> None:
|
|
||||||
assert calculate_previous_version(current, is_point) == expected
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_get_shortlog():
|
|
||||||
# Certainly not perfect, but it's something
|
|
||||||
version = '19.2.0'
|
|
||||||
out = await get_shortlog(version)
|
|
||||||
assert out
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_gather_commits():
|
|
||||||
# Certainly not perfect, but it's something
|
|
||||||
version = '19.2.0'
|
|
||||||
out = await gather_commits(version)
|
|
||||||
assert out
|
|
78
bin/get-fixes-pick-list.sh
Executable file
78
bin/get-fixes-pick-list.sh
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Script for generating a list of candidates [referenced by a Fixes tag] for
|
||||||
|
# cherry-picking to a stable branch
|
||||||
|
#
|
||||||
|
# Usage examples:
|
||||||
|
#
|
||||||
|
# $ bin/get-fixes-pick-list.sh
|
||||||
|
# $ bin/get-fixes-pick-list.sh > picklist
|
||||||
|
# $ bin/get-fixes-pick-list.sh | tee picklist
|
||||||
|
|
||||||
|
# Use the last branchpoint as our limit for the search
|
||||||
|
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||||
|
|
||||||
|
# List all the commits between day 1 and the branch point...
|
||||||
|
git log --reverse --pretty=%H $latest_branchpoint > already_landed
|
||||||
|
|
||||||
|
# ... and the ones cherry-picked.
|
||||||
|
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
||||||
|
grep "cherry picked from commit" |\
|
||||||
|
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||||
|
|
||||||
|
# Grep for commits with Fixes tag
|
||||||
|
git log --reverse --pretty=%H -i --grep="fixes:" $latest_branchpoint..origin/master |\
|
||||||
|
while read sha
|
||||||
|
do
|
||||||
|
# Check to see whether the patch is on the ignore list ...
|
||||||
|
if [ -f bin/.cherry-ignore ] ; then
|
||||||
|
if grep -q ^$sha bin/.cherry-ignore ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Skip if it has been already cherry-picked.
|
||||||
|
if grep -q ^$sha already_picked ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# For each one try to extract the tag
|
||||||
|
fixes_count=`git show $sha | grep -i "fixes:" | wc -l`
|
||||||
|
warn=`(test $fixes_count -gt 1 && echo $fixes_count) || echo 0`
|
||||||
|
while [ $fixes_count -gt 0 ] ; do
|
||||||
|
fixes=`git show $sha | grep -i "fixes:" | tail -n $fixes_count`
|
||||||
|
fixes_count=$(($fixes_count-1))
|
||||||
|
# The following sed/cut combination is borrowed from GregKH
|
||||||
|
id=`echo ${fixes} | sed -e 's/^[ \t]*//' | cut -f 2 -d ':' | sed -e 's/^[ \t]*//' | cut -f 1 -d ' '`
|
||||||
|
|
||||||
|
# Bail out if we cannot find suitable id.
|
||||||
|
# Any specific validation the $id is valid and not some junk, is
|
||||||
|
# implied with the follow up code
|
||||||
|
if [ "x$id" = x ] ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the offending commit is in branch.
|
||||||
|
|
||||||
|
# Be that cherry-picked ...
|
||||||
|
# ... or landed before the branchpoint.
|
||||||
|
if grep -q ^$id already_picked ||
|
||||||
|
grep -q ^$id already_landed ; then
|
||||||
|
|
||||||
|
printf "Commit \"%s\" fixes %s\n" \
|
||||||
|
"`git log -n1 --pretty=oneline $sha`" \
|
||||||
|
"$id"
|
||||||
|
warn=$(($warn-1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $warn -gt 0 ] ; then
|
||||||
|
printf "WARNING: Commit \"%s\" has more than one Fixes tag\n" \
|
||||||
|
"`git log -n1 --pretty=oneline $sha`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f already_picked
|
||||||
|
rm -f already_landed
|
@@ -7,107 +7,21 @@
|
|||||||
# $ bin/get-pick-list.sh
|
# $ bin/get-pick-list.sh
|
||||||
# $ bin/get-pick-list.sh > picklist
|
# $ bin/get-pick-list.sh > picklist
|
||||||
# $ bin/get-pick-list.sh | tee picklist
|
# $ bin/get-pick-list.sh | tee picklist
|
||||||
#
|
|
||||||
# The output is as follows:
|
|
||||||
# [nomination_type] commit_sha commit summary
|
|
||||||
|
|
||||||
is_stable_nomination()
|
|
||||||
{
|
|
||||||
git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-stable"
|
|
||||||
}
|
|
||||||
|
|
||||||
is_typod_nomination()
|
|
||||||
{
|
|
||||||
git show --pretty=medium --summary "$1" | grep -q -i -o "CC:.*mesa-dev"
|
|
||||||
}
|
|
||||||
|
|
||||||
fixes=
|
|
||||||
|
|
||||||
# Helper to handle various mistypos of the fixes tag.
|
|
||||||
# The tag string itself is passed as argument and normalised within.
|
|
||||||
#
|
|
||||||
# Resulting string in the global variable "fixes" and contains entries
|
|
||||||
# in the form "fixes:$sha"
|
|
||||||
is_sha_nomination()
|
|
||||||
{
|
|
||||||
fixes=`git show --pretty=medium -s $1 | tr -d "\n" | \
|
|
||||||
sed -e 's/'"$2"'/\nfixes:/Ig' | \
|
|
||||||
grep -Eo 'fixes:[a-f0-9]{4,40}'`
|
|
||||||
|
|
||||||
fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
|
|
||||||
if test $fixes_count -eq 0; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Throw a warning for each invalid sha
|
|
||||||
while test $fixes_count -gt 0; do
|
|
||||||
# Treat only the current line
|
|
||||||
id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2`
|
|
||||||
fixes_count=$(($fixes_count-1))
|
|
||||||
if ! git show $id >/dev/null 2>&1; then
|
|
||||||
echo WARNING: Commit $1 lists invalid sha $id
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Checks if at least one of offending commits, listed in the global
|
|
||||||
# "fixes", is in branch.
|
|
||||||
sha_in_range()
|
|
||||||
{
|
|
||||||
fixes_count=`echo "$fixes" | grep "fixes:" | wc -l`
|
|
||||||
while test $fixes_count -gt 0; do
|
|
||||||
# Treat only the current line
|
|
||||||
id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2`
|
|
||||||
fixes_count=$(($fixes_count-1))
|
|
||||||
|
|
||||||
# Be that cherry-picked ...
|
|
||||||
# ... or landed before the branchpoint.
|
|
||||||
if grep -q ^$id already_picked ||
|
|
||||||
grep -q ^$id already_landed ; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
is_fixes_nomination()
|
|
||||||
{
|
|
||||||
is_sha_nomination "$1" "fixes:[[:space:]]*"
|
|
||||||
if test $? -eq 0; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
is_sha_nomination "$1" "fixes[[:space:]]\+"
|
|
||||||
}
|
|
||||||
|
|
||||||
is_brokenby_nomination()
|
|
||||||
{
|
|
||||||
is_sha_nomination "$1" "broken by"
|
|
||||||
}
|
|
||||||
|
|
||||||
is_revert_nomination()
|
|
||||||
{
|
|
||||||
is_sha_nomination "$1" "This reverts commit "
|
|
||||||
}
|
|
||||||
|
|
||||||
# Use the last branchpoint as our limit for the search
|
# Use the last branchpoint as our limit for the search
|
||||||
latest_branchpoint=`git merge-base origin/master HEAD`
|
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||||
|
|
||||||
# List all the commits between day 1 and the branch point...
|
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||||
git log --reverse --pretty=%H $latest_branchpoint > already_landed
|
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
||||||
|
|
||||||
# ... and the ones cherry-picked.
|
|
||||||
git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
|
||||||
grep "cherry picked from commit" |\
|
grep "cherry picked from commit" |\
|
||||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||||
|
|
||||||
# Grep for potential candidates
|
# Grep for commits that were marked as a candidate for the stable tree.
|
||||||
git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable\|^CC:.*mesa-dev\|\<fixes\>\|\<broken by\>\|This reverts commit' $latest_branchpoint..origin/master |\
|
git log --reverse --pretty=%H -i --grep='^CC:.*mesa-stable' $latest_branchpoint..origin/master |\
|
||||||
while read sha
|
while read sha
|
||||||
do
|
do
|
||||||
# Check to see whether the patch is on the ignore list.
|
# Check to see whether the patch is on the ignore list.
|
||||||
if test -f bin/.cherry-ignore; then
|
if [ -f bin/.cherry-ignore ] ; then
|
||||||
if grep -q ^$sha bin/.cherry-ignore ; then
|
if grep -q ^$sha bin/.cherry-ignore ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@@ -118,33 +32,7 @@ do
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if is_fixes_nomination "$sha"; then
|
git log -n1 --pretty=oneline $sha | cat
|
||||||
tag=fixes
|
|
||||||
elif is_brokenby_nomination "$sha"; then
|
|
||||||
tag=brokenby
|
|
||||||
elif is_revert_nomination "$sha"; then
|
|
||||||
tag=revert
|
|
||||||
elif is_stable_nomination "$sha"; then
|
|
||||||
tag=stable
|
|
||||||
elif is_typod_nomination "$sha"; then
|
|
||||||
tag=typod
|
|
||||||
else
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$tag" in
|
|
||||||
fixes | brokenby | revert )
|
|
||||||
if ! sha_in_range; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
printf "[ %8s ] " "$tag"
|
|
||||||
git --no-pager show --no-patch --pretty=oneline $sha
|
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -f already_picked
|
rm -f already_picked
|
||||||
rm -f already_landed
|
|
||||||
|
42
bin/get-typod-pick-list.sh
Executable file
42
bin/get-typod-pick-list.sh
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Script for generating a list of candidates which have typos in the nomination line
|
||||||
|
#
|
||||||
|
# Usage examples:
|
||||||
|
#
|
||||||
|
# $ bin/get-typod-pick-list.sh
|
||||||
|
# $ bin/get-typod-pick-list.sh > picklist
|
||||||
|
# $ bin/get-typod-pick-list.sh | tee picklist
|
||||||
|
|
||||||
|
# NB:
|
||||||
|
# This script intentionally _never_ checks for specific version tag
|
||||||
|
# Should we consider folding it with the original get-pick-list.sh
|
||||||
|
|
||||||
|
# Use the last branchpoint as our limit for the search
|
||||||
|
latest_branchpoint=`git merge-base origin/master HEAD`
|
||||||
|
|
||||||
|
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||||
|
git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
|
||||||
|
grep "cherry picked from commit" |\
|
||||||
|
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||||
|
|
||||||
|
# Grep for commits that were marked as a candidate for the stable tree.
|
||||||
|
git log --reverse --pretty=%H -i --grep='^CC:.*mesa-dev' $latest_branchpoint..origin/master |\
|
||||||
|
while read sha
|
||||||
|
do
|
||||||
|
# Check to see whether the patch is on the ignore list.
|
||||||
|
if [ -f bin/.cherry-ignore ] ; then
|
||||||
|
if grep -q ^$sha bin/.cherry-ignore ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check to see if it has already been picked over.
|
||||||
|
if grep -q ^$sha already_picked ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
git log -n1 --pretty=oneline $sha | cat
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f already_picked
|
@@ -1,50 +0,0 @@
|
|||||||
"""
|
|
||||||
Generate the contents of the git_sha1.h file.
|
|
||||||
The output of this script goes to stdout.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def get_git_sha1():
|
|
||||||
"""Try to get the git SHA1 with git rev-parse."""
|
|
||||||
git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')
|
|
||||||
try:
|
|
||||||
git_sha1 = subprocess.check_output([
|
|
||||||
'git',
|
|
||||||
'--git-dir=' + git_dir,
|
|
||||||
'rev-parse',
|
|
||||||
'HEAD',
|
|
||||||
], stderr=open(os.devnull, 'w')).decode("ascii")
|
|
||||||
except:
|
|
||||||
# don't print anything if it fails
|
|
||||||
git_sha1 = ''
|
|
||||||
return git_sha1
|
|
||||||
|
|
||||||
def write_if_different(contents):
|
|
||||||
"""
|
|
||||||
Avoid touching the output file if it doesn't need modifications
|
|
||||||
Useful to avoid triggering rebuilds when nothing has changed.
|
|
||||||
"""
|
|
||||||
if os.path.isfile(args.output):
|
|
||||||
with open(args.output, 'r') as file:
|
|
||||||
if file.read() == contents:
|
|
||||||
return
|
|
||||||
with open(args.output, 'w') as file:
|
|
||||||
file.write(contents)
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('--output', help='File to write the #define in',
|
|
||||||
required=True)
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
git_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10]
|
|
||||||
if git_sha1:
|
|
||||||
write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"')
|
|
||||||
else:
|
|
||||||
write_if_different('#define MESA_GIT_SHA1 ""')
|
|
@@ -1,84 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# encoding=utf-8
|
|
||||||
# Copyright 2017-2018 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Script to install megadriver symlinks for meson."""
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('megadriver')
|
|
||||||
parser.add_argument('libdir')
|
|
||||||
parser.add_argument('drivers', nargs='+')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if os.path.isabs(args.libdir):
|
|
||||||
destdir = os.environ.get('DESTDIR')
|
|
||||||
if destdir:
|
|
||||||
to = os.path.join(destdir, args.libdir[1:])
|
|
||||||
else:
|
|
||||||
to = args.libdir
|
|
||||||
else:
|
|
||||||
to = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], args.libdir)
|
|
||||||
|
|
||||||
master = os.path.join(to, os.path.basename(args.megadriver))
|
|
||||||
|
|
||||||
if not os.path.exists(to):
|
|
||||||
if os.path.lexists(to):
|
|
||||||
os.unlink(to)
|
|
||||||
os.makedirs(to)
|
|
||||||
|
|
||||||
for driver in args.drivers:
|
|
||||||
abs_driver = os.path.join(to, driver)
|
|
||||||
|
|
||||||
if os.path.lexists(abs_driver):
|
|
||||||
os.unlink(abs_driver)
|
|
||||||
print('installing {} to {}'.format(args.megadriver, abs_driver))
|
|
||||||
os.link(master, abs_driver)
|
|
||||||
|
|
||||||
try:
|
|
||||||
ret = os.getcwd()
|
|
||||||
os.chdir(to)
|
|
||||||
|
|
||||||
name, ext = os.path.splitext(driver)
|
|
||||||
while ext != '.so':
|
|
||||||
if os.path.lexists(name):
|
|
||||||
os.unlink(name)
|
|
||||||
os.symlink(driver, name)
|
|
||||||
name, ext = os.path.splitext(name)
|
|
||||||
finally:
|
|
||||||
os.chdir(ret)
|
|
||||||
|
|
||||||
# Remove meson-created master .so and symlinks
|
|
||||||
os.unlink(master)
|
|
||||||
name, ext = os.path.splitext(master)
|
|
||||||
while ext != '.so':
|
|
||||||
if os.path.lexists(name):
|
|
||||||
os.unlink(name)
|
|
||||||
name, ext = os.path.splitext(name)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@@ -1,88 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""This script reads a meson build directory and gives back the command line it
|
|
||||||
was configured with.
|
|
||||||
|
|
||||||
This only works for meson 0.49.0 and newer.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import ast
|
|
||||||
import configparser
|
|
||||||
import pathlib
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args() -> argparse.Namespace:
|
|
||||||
"""Parse arguments."""
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument(
|
|
||||||
'build_dir',
|
|
||||||
help='Path the meson build directory')
|
|
||||||
args = parser.parse_args()
|
|
||||||
return args
|
|
||||||
|
|
||||||
|
|
||||||
def load_config(path: pathlib.Path) -> configparser.ConfigParser:
|
|
||||||
"""Load config file."""
|
|
||||||
conf = configparser.ConfigParser()
|
|
||||||
with path.open() as f:
|
|
||||||
conf.read_file(f)
|
|
||||||
return conf
|
|
||||||
|
|
||||||
|
|
||||||
def build_cmd(conf: configparser.ConfigParser) -> str:
|
|
||||||
"""Rebuild the command line."""
|
|
||||||
args = []
|
|
||||||
for k, v in conf['options'].items():
|
|
||||||
if ' ' in v:
|
|
||||||
args.append(f'-D{k}="{v}"')
|
|
||||||
else:
|
|
||||||
args.append(f'-D{k}={v}')
|
|
||||||
|
|
||||||
cf = conf['properties'].get('cross_file')
|
|
||||||
if cf:
|
|
||||||
args.append('--cross-file={}'.format(cf))
|
|
||||||
nf = conf['properties'].get('native_file')
|
|
||||||
if nf:
|
|
||||||
# this will be in the form "['str', 'str']", so use ast.literal_eval to
|
|
||||||
# convert it to a list of strings.
|
|
||||||
nf = ast.literal_eval(nf)
|
|
||||||
args.extend(['--native-file={}'.format(f) for f in nf])
|
|
||||||
return ' '.join(args)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
args = parse_args()
|
|
||||||
path = pathlib.Path(args.build_dir, 'meson-private', 'cmd_line.txt')
|
|
||||||
if not path.exists():
|
|
||||||
print('Cannot find the necessary file to rebuild command line. '
|
|
||||||
'Is your meson version >= 0.49.0?', file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
conf = load_config(path)
|
|
||||||
cmd = build_cmd(conf)
|
|
||||||
print(cmd)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@@ -1,63 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
from os import get_terminal_size
|
|
||||||
from textwrap import wrap
|
|
||||||
from mesonbuild import coredata
|
|
||||||
from mesonbuild import optinterpreter
|
|
||||||
|
|
||||||
(COLUMNS, _) = get_terminal_size()
|
|
||||||
|
|
||||||
def describe_option(option_name: str, option_default_value: str,
|
|
||||||
option_type: str, option_message: str) -> None:
|
|
||||||
print('name: ' + option_name)
|
|
||||||
print('default: ' + option_default_value)
|
|
||||||
print('type: ' + option_type)
|
|
||||||
for line in wrap(option_message, width=COLUMNS - 9):
|
|
||||||
print(' ' + line)
|
|
||||||
print('---')
|
|
||||||
|
|
||||||
oi = optinterpreter.OptionInterpreter('')
|
|
||||||
oi.process('meson_options.txt')
|
|
||||||
|
|
||||||
for (name, value) in oi.options.items():
|
|
||||||
if isinstance(value, coredata.UserStringOption):
|
|
||||||
describe_option(name,
|
|
||||||
value.value,
|
|
||||||
'string',
|
|
||||||
"You can type what you want, but make sure it makes sense")
|
|
||||||
elif isinstance(value, coredata.UserBooleanOption):
|
|
||||||
describe_option(name,
|
|
||||||
'true' if value.value else 'false',
|
|
||||||
'boolean',
|
|
||||||
"You can set it to 'true' or 'false'")
|
|
||||||
elif isinstance(value, coredata.UserIntegerOption):
|
|
||||||
describe_option(name,
|
|
||||||
str(value.value),
|
|
||||||
'integer',
|
|
||||||
"You can set it to any integer value between '{}' and '{}'".format(value.min_value, value.max_value))
|
|
||||||
elif isinstance(value, coredata.UserUmaskOption):
|
|
||||||
describe_option(name,
|
|
||||||
str(value.value),
|
|
||||||
'umask',
|
|
||||||
"You can set it to 'preserve' or a value between '0000' and '0777'")
|
|
||||||
elif isinstance(value, coredata.UserComboOption):
|
|
||||||
choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
|
|
||||||
describe_option(name,
|
|
||||||
value.value,
|
|
||||||
'combo',
|
|
||||||
"You can set it to any one of those values: " + choices)
|
|
||||||
elif isinstance(value, coredata.UserArrayOption):
|
|
||||||
choices = '[' + ', '.join(["'" + v + "'" for v in value.choices]) + ']'
|
|
||||||
value = '[' + ', '.join(["'" + v + "'" for v in value.value]) + ']'
|
|
||||||
describe_option(name,
|
|
||||||
value,
|
|
||||||
'array',
|
|
||||||
"You can set it to one or more of those values: " + choices)
|
|
||||||
elif isinstance(value, coredata.UserFeatureOption):
|
|
||||||
describe_option(name,
|
|
||||||
value.value,
|
|
||||||
'feature',
|
|
||||||
"You can set it to 'auto', 'enabled', or 'disabled'")
|
|
||||||
else:
|
|
||||||
print(name + ' is an option of a type unknown to this script')
|
|
||||||
print('---')
|
|
@@ -1,23 +0,0 @@
|
|||||||
# Copyright © 2017 Eric Engestrom
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
git_sha1_gen_py = files('git_sha1_gen.py')
|
|
||||||
symbols_check = find_program('symbols-check.py')
|
|
||||||
install_megadrivers_py = find_program('install_megadrivers.py')
|
|
@@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# encoding=utf-8
|
|
||||||
# Copyright © 2017 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
filename = os.path.join(os.environ['MESON_SOURCE_ROOT'], 'VERSION')
|
|
||||||
with open(filename) as f:
|
|
||||||
version = f.read().strip()
|
|
||||||
print(version, end='')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@@ -133,7 +133,7 @@ class PerfParser(LineParser):
|
|||||||
|
|
||||||
def __init__(self, infile, symbol):
|
def __init__(self, infile, symbol):
|
||||||
LineParser.__init__(self, infile)
|
LineParser.__init__(self, infile)
|
||||||
self.symbol = symbol
|
self.symbol = symbol
|
||||||
|
|
||||||
def readline(self):
|
def readline(self):
|
||||||
# Override LineParser.readline to ignore comment lines
|
# Override LineParser.readline to ignore comment lines
|
||||||
@@ -155,7 +155,7 @@ class PerfParser(LineParser):
|
|||||||
addresses.sort()
|
addresses.sort()
|
||||||
total_samples = 0
|
total_samples = 0
|
||||||
|
|
||||||
sys.stdout.write('%s:\n' % self.symbol)
|
sys.stdout.write('%s:\n' % self.symbol)
|
||||||
for address, instr in asm:
|
for address, instr in asm:
|
||||||
try:
|
try:
|
||||||
sample = samples.pop(address)
|
sample = samples.pop(address)
|
||||||
|
@@ -1,33 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019-2020 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
|
|
||||||
import urwid
|
|
||||||
|
|
||||||
from pick.ui import UI, PALETTE
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
u = UI()
|
|
||||||
evl = urwid.AsyncioEventLoop(loop=asyncio.get_event_loop())
|
|
||||||
loop = urwid.MainLoop(u.render(), PALETTE, event_loop=evl)
|
|
||||||
u.mainloop = loop
|
|
||||||
loop.run()
|
|
367
bin/pick/core.py
367
bin/pick/core.py
@@ -1,367 +0,0 @@
|
|||||||
# Copyright © 2019-2020 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Core data structures and routines for pick."""
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import enum
|
|
||||||
import json
|
|
||||||
import pathlib
|
|
||||||
import re
|
|
||||||
import typing
|
|
||||||
|
|
||||||
import attr
|
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
|
||||||
from .ui import UI
|
|
||||||
|
|
||||||
import typing_extensions
|
|
||||||
|
|
||||||
class CommitDict(typing_extensions.TypedDict):
|
|
||||||
|
|
||||||
sha: str
|
|
||||||
description: str
|
|
||||||
nomintated: bool
|
|
||||||
nomination_type: typing.Optional[int]
|
|
||||||
resolution: typing.Optional[int]
|
|
||||||
master_sha: typing.Optional[str]
|
|
||||||
|
|
||||||
IS_FIX = re.compile(r'^\s*fixes:\s*([a-f0-9]{6,40})', flags=re.MULTILINE | re.IGNORECASE)
|
|
||||||
# FIXME: I dislike the duplication in this regex, but I couldn't get it to work otherwise
|
|
||||||
IS_CC = re.compile(r'^\s*cc:\s*["\']?([0-9]{2}\.[0-9])?["\']?\s*["\']?([0-9]{2}\.[0-9])?["\']?\s*\<?mesa-stable',
|
|
||||||
flags=re.MULTILINE | re.IGNORECASE)
|
|
||||||
IS_REVERT = re.compile(r'This reverts commit ([0-9a-f]{40})')
|
|
||||||
|
|
||||||
# XXX: hack
|
|
||||||
SEM = asyncio.Semaphore(50)
|
|
||||||
|
|
||||||
COMMIT_LOCK = asyncio.Lock()
|
|
||||||
|
|
||||||
|
|
||||||
class PickUIException(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@enum.unique
|
|
||||||
class NominationType(enum.Enum):
|
|
||||||
|
|
||||||
CC = 0
|
|
||||||
FIXES = 1
|
|
||||||
REVERT = 2
|
|
||||||
|
|
||||||
|
|
||||||
@enum.unique
|
|
||||||
class Resolution(enum.Enum):
|
|
||||||
|
|
||||||
UNRESOLVED = 0
|
|
||||||
MERGED = 1
|
|
||||||
DENOMINATED = 2
|
|
||||||
BACKPORTED = 3
|
|
||||||
NOTNEEDED = 4
|
|
||||||
|
|
||||||
|
|
||||||
async def commit_state(*, amend: bool = False, message: str = 'Update') -> None:
|
|
||||||
"""Commit the .pick_status.json file."""
|
|
||||||
f = pathlib.Path(__file__).parent.parent.parent / '.pick_status.json'
|
|
||||||
async with COMMIT_LOCK:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'add', f.as_posix(),
|
|
||||||
stdout=asyncio.subprocess.DEVNULL,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL,
|
|
||||||
)
|
|
||||||
v = await p.wait()
|
|
||||||
if v != 0:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if amend:
|
|
||||||
cmd = ['--amend', '--no-edit']
|
|
||||||
else:
|
|
||||||
cmd = ['--message', f'.pick_status.json: {message}']
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'commit', *cmd,
|
|
||||||
stdout=asyncio.subprocess.DEVNULL,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL,
|
|
||||||
)
|
|
||||||
v = await p.wait()
|
|
||||||
if v != 0:
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
@attr.s(slots=True)
|
|
||||||
class Commit:
|
|
||||||
|
|
||||||
sha: str = attr.ib()
|
|
||||||
description: str = attr.ib()
|
|
||||||
nominated: bool = attr.ib(False)
|
|
||||||
nomination_type: typing.Optional[NominationType] = attr.ib(None)
|
|
||||||
resolution: Resolution = attr.ib(Resolution.UNRESOLVED)
|
|
||||||
master_sha: typing.Optional[str] = attr.ib(None)
|
|
||||||
because_sha: typing.Optional[str] = attr.ib(None)
|
|
||||||
|
|
||||||
def to_json(self) -> 'CommitDict':
|
|
||||||
d: typing.Dict[str, typing.Any] = attr.asdict(self)
|
|
||||||
if self.nomination_type is not None:
|
|
||||||
d['nomination_type'] = self.nomination_type.value
|
|
||||||
if self.resolution is not None:
|
|
||||||
d['resolution'] = self.resolution.value
|
|
||||||
return typing.cast('CommitDict', d)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_json(cls, data: 'CommitDict') -> 'Commit':
|
|
||||||
c = cls(data['sha'], data['description'], data['nominated'], master_sha=data['master_sha'], because_sha=data['because_sha'])
|
|
||||||
if data['nomination_type'] is not None:
|
|
||||||
c.nomination_type = NominationType(data['nomination_type'])
|
|
||||||
if data['resolution'] is not None:
|
|
||||||
c.resolution = Resolution(data['resolution'])
|
|
||||||
return c
|
|
||||||
|
|
||||||
async def apply(self, ui: 'UI') -> typing.Tuple[bool, str]:
|
|
||||||
# FIXME: This isn't really enough if we fail to cherry-pick because the
|
|
||||||
# git tree will still be dirty
|
|
||||||
async with COMMIT_LOCK:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'cherry-pick', '-x', self.sha,
|
|
||||||
stdout=asyncio.subprocess.DEVNULL,
|
|
||||||
stderr=asyncio.subprocess.PIPE,
|
|
||||||
)
|
|
||||||
_, err = await p.communicate()
|
|
||||||
|
|
||||||
if p.returncode != 0:
|
|
||||||
return (False, err)
|
|
||||||
|
|
||||||
self.resolution = Resolution.MERGED
|
|
||||||
await ui.feedback(f'{self.sha} ({self.description}) applied successfully')
|
|
||||||
|
|
||||||
# Append the changes to the .pickstatus.json file
|
|
||||||
ui.save()
|
|
||||||
v = await commit_state(amend=True)
|
|
||||||
return (v, '')
|
|
||||||
|
|
||||||
async def abort_cherry(self, ui: 'UI', err: str) -> None:
|
|
||||||
await ui.feedback(f'{self.sha} ({self.description}) failed to apply\n{err}')
|
|
||||||
async with COMMIT_LOCK:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'cherry-pick', '--abort',
|
|
||||||
stdout=asyncio.subprocess.DEVNULL,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL,
|
|
||||||
)
|
|
||||||
r = await p.wait()
|
|
||||||
await ui.feedback(f'{"Successfully" if r == 0 else "Failed to"} abort cherry-pick.')
|
|
||||||
|
|
||||||
async def denominate(self, ui: 'UI') -> bool:
|
|
||||||
self.resolution = Resolution.DENOMINATED
|
|
||||||
ui.save()
|
|
||||||
v = await commit_state(message=f'Mark {self.sha} as denominated')
|
|
||||||
assert v
|
|
||||||
await ui.feedback(f'{self.sha} ({self.description}) denominated successfully')
|
|
||||||
return True
|
|
||||||
|
|
||||||
async def backport(self, ui: 'UI') -> bool:
|
|
||||||
self.resolution = Resolution.BACKPORTED
|
|
||||||
ui.save()
|
|
||||||
v = await commit_state(message=f'Mark {self.sha} as backported')
|
|
||||||
assert v
|
|
||||||
await ui.feedback(f'{self.sha} ({self.description}) backported successfully')
|
|
||||||
return True
|
|
||||||
|
|
||||||
async def resolve(self, ui: 'UI') -> None:
|
|
||||||
self.resolution = Resolution.MERGED
|
|
||||||
ui.save()
|
|
||||||
v = await commit_state(amend=True)
|
|
||||||
assert v
|
|
||||||
await ui.feedback(f'{self.sha} ({self.description}) committed successfully')
|
|
||||||
|
|
||||||
|
|
||||||
async def get_new_commits(sha: str) -> typing.List[typing.Tuple[str, str]]:
|
|
||||||
# TODO: config file that points to the upstream branch
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'log', '--pretty=oneline', f'{sha}..master',
|
|
||||||
stdout=asyncio.subprocess.PIPE,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL)
|
|
||||||
out, _ = await p.communicate()
|
|
||||||
assert p.returncode == 0, f"git log didn't work: {sha}"
|
|
||||||
return list(split_commit_list(out.decode().strip()))
|
|
||||||
|
|
||||||
|
|
||||||
def split_commit_list(commits: str) -> typing.Generator[typing.Tuple[str, str], None, None]:
|
|
||||||
if not commits:
|
|
||||||
return
|
|
||||||
for line in commits.split('\n'):
|
|
||||||
v = tuple(line.split(' ', 1))
|
|
||||||
assert len(v) == 2, 'this is really just for mypy'
|
|
||||||
yield typing.cast(typing.Tuple[str, str], v)
|
|
||||||
|
|
||||||
|
|
||||||
async def is_commit_in_branch(sha: str) -> bool:
|
|
||||||
async with SEM:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'merge-base', '--is-ancestor', sha, 'HEAD',
|
|
||||||
stdout=asyncio.subprocess.DEVNULL,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL,
|
|
||||||
)
|
|
||||||
await p.wait()
|
|
||||||
return p.returncode == 0
|
|
||||||
|
|
||||||
|
|
||||||
async def full_sha(sha: str) -> str:
|
|
||||||
async with SEM:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'rev-parse', sha,
|
|
||||||
stdout=asyncio.subprocess.PIPE,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL,
|
|
||||||
)
|
|
||||||
out, _ = await p.communicate()
|
|
||||||
if p.returncode:
|
|
||||||
raise PickUIException(f'Invalid Sha {sha}')
|
|
||||||
return out.decode().strip()
|
|
||||||
|
|
||||||
|
|
||||||
async def resolve_nomination(commit: 'Commit', version: str) -> 'Commit':
|
|
||||||
async with SEM:
|
|
||||||
p = await asyncio.create_subprocess_exec(
|
|
||||||
'git', 'log', '--pretty=medium', '-1', commit.sha,
|
|
||||||
stdout=asyncio.subprocess.PIPE,
|
|
||||||
stderr=asyncio.subprocess.DEVNULL,
|
|
||||||
)
|
|
||||||
_out, _ = await p.communicate()
|
|
||||||
assert p.returncode == 0, f'git log for {commit.sha} failed'
|
|
||||||
out = _out.decode()
|
|
||||||
|
|
||||||
# We give presedence to fixes and cc tags over revert tags.
|
|
||||||
# XXX: not having the wallrus operator available makes me sad :=
|
|
||||||
m = IS_FIX.search(out)
|
|
||||||
if m:
|
|
||||||
# We set the nomination_type and because_sha here so that we can later
|
|
||||||
# check to see if this fixes another staged commit.
|
|
||||||
try:
|
|
||||||
commit.because_sha = fixed = await full_sha(m.group(1))
|
|
||||||
except PickUIException:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
commit.nomination_type = NominationType.FIXES
|
|
||||||
if await is_commit_in_branch(fixed):
|
|
||||||
commit.nominated = True
|
|
||||||
return commit
|
|
||||||
|
|
||||||
m = IS_CC.search(out)
|
|
||||||
if m:
|
|
||||||
if m.groups() == (None, None) or version in m.groups():
|
|
||||||
commit.nominated = True
|
|
||||||
commit.nomination_type = NominationType.CC
|
|
||||||
return commit
|
|
||||||
|
|
||||||
m = IS_REVERT.search(out)
|
|
||||||
if m:
|
|
||||||
# See comment for IS_FIX path
|
|
||||||
try:
|
|
||||||
commit.because_sha = reverted = await full_sha(m.group(1))
|
|
||||||
except PickUIException:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
commit.nomination_type = NominationType.REVERT
|
|
||||||
if await is_commit_in_branch(reverted):
|
|
||||||
commit.nominated = True
|
|
||||||
return commit
|
|
||||||
|
|
||||||
return commit
|
|
||||||
|
|
||||||
|
|
||||||
async def resolve_fixes(commits: typing.List['Commit'], previous: typing.List['Commit']) -> None:
|
|
||||||
"""Determine if any of the undecided commits fix/revert a staged commit.
|
|
||||||
|
|
||||||
The are still needed if they apply to a commit that is staged for
|
|
||||||
inclusion, but not yet included.
|
|
||||||
|
|
||||||
This must be done in order, because a commit 3 might fix commit 2 which
|
|
||||||
fixes commit 1.
|
|
||||||
"""
|
|
||||||
shas: typing.Set[str] = set(c.sha for c in previous if c.nominated)
|
|
||||||
assert None not in shas, 'None in shas'
|
|
||||||
|
|
||||||
for commit in reversed(commits):
|
|
||||||
if not commit.nominated and commit.nomination_type is NominationType.FIXES:
|
|
||||||
commit.nominated = commit.because_sha in shas
|
|
||||||
|
|
||||||
if commit.nominated:
|
|
||||||
shas.add(commit.sha)
|
|
||||||
|
|
||||||
for commit in commits:
|
|
||||||
if (commit.nomination_type is NominationType.REVERT and
|
|
||||||
commit.because_sha in shas):
|
|
||||||
for oldc in reversed(commits):
|
|
||||||
if oldc.sha == commit.because_sha:
|
|
||||||
# In this case a commit that hasn't yet been applied is
|
|
||||||
# reverted, we don't want to apply that commit at all
|
|
||||||
oldc.nominated = False
|
|
||||||
oldc.resolution = Resolution.DENOMINATED
|
|
||||||
commit.nominated = False
|
|
||||||
commit.resolution = Resolution.DENOMINATED
|
|
||||||
shas.remove(commit.because_sha)
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
||||||
async def gather_commits(version: str, previous: typing.List['Commit'],
|
|
||||||
new: typing.List[typing.Tuple[str, str]], cb) -> typing.List['Commit']:
|
|
||||||
# We create an array of the final size up front, then we pass that array
|
|
||||||
# to the "inner" co-routine, which is turned into a list of tasks and
|
|
||||||
# collected by asyncio.gather. We do this to allow the tasks to be
|
|
||||||
# asyncrounously gathered, but to also ensure that the commits list remains
|
|
||||||
# in order.
|
|
||||||
commits = [None] * len(new)
|
|
||||||
tasks = []
|
|
||||||
|
|
||||||
async def inner(commit: 'Commit', version: str, commits: typing.List['Commit'],
|
|
||||||
index: int, cb) -> None:
|
|
||||||
commits[index] = await resolve_nomination(commit, version)
|
|
||||||
cb()
|
|
||||||
|
|
||||||
for i, (sha, desc) in enumerate(new):
|
|
||||||
tasks.append(asyncio.ensure_future(
|
|
||||||
inner(Commit(sha, desc), version, commits, i, cb)))
|
|
||||||
|
|
||||||
await asyncio.gather(*tasks)
|
|
||||||
assert None not in commits
|
|
||||||
|
|
||||||
await resolve_fixes(commits, previous)
|
|
||||||
|
|
||||||
for commit in commits:
|
|
||||||
if commit.resolution is Resolution.UNRESOLVED and not commit.nominated:
|
|
||||||
commit.resolution = Resolution.NOTNEEDED
|
|
||||||
|
|
||||||
return commits
|
|
||||||
|
|
||||||
|
|
||||||
def load() -> typing.List['Commit']:
|
|
||||||
p = pathlib.Path(__file__).parent.parent.parent / '.pick_status.json'
|
|
||||||
if not p.exists():
|
|
||||||
return []
|
|
||||||
with p.open('r') as f:
|
|
||||||
raw = json.load(f)
|
|
||||||
return [Commit.from_json(c) for c in raw]
|
|
||||||
|
|
||||||
|
|
||||||
def save(commits: typing.Iterable['Commit']) -> None:
|
|
||||||
p = pathlib.Path(__file__).parent.parent.parent / '.pick_status.json'
|
|
||||||
commits = list(commits)
|
|
||||||
with p.open('wt') as f:
|
|
||||||
json.dump([c.to_json() for c in commits], f, indent=4)
|
|
||||||
|
|
||||||
asyncio.ensure_future(commit_state(message=f'Update to {commits[0].sha}'))
|
|
@@ -1,470 +0,0 @@
|
|||||||
# Copyright © 2019-2020 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Tests for pick's core data structures and routines."""
|
|
||||||
|
|
||||||
from unittest import mock
|
|
||||||
import textwrap
|
|
||||||
import typing
|
|
||||||
|
|
||||||
import attr
|
|
||||||
import pytest
|
|
||||||
|
|
||||||
from . import core
|
|
||||||
|
|
||||||
|
|
||||||
class TestCommit:
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def unnominated_commit(self) -> 'core.Commit':
|
|
||||||
return core.Commit('abc123', 'sub: A commit', master_sha='45678')
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def nominated_commit(self) -> 'core.Commit':
|
|
||||||
return core.Commit('abc123', 'sub: A commit', True,
|
|
||||||
core.NominationType.CC, core.Resolution.UNRESOLVED)
|
|
||||||
|
|
||||||
class TestToJson:
|
|
||||||
|
|
||||||
def test_not_nominated(self, unnominated_commit: 'core.Commit'):
|
|
||||||
c = unnominated_commit
|
|
||||||
v = c.to_json()
|
|
||||||
assert v == {'sha': 'abc123', 'description': 'sub: A commit', 'nominated': False,
|
|
||||||
'nomination_type': None, 'resolution': core.Resolution.UNRESOLVED.value,
|
|
||||||
'master_sha': '45678', 'because_sha': None}
|
|
||||||
|
|
||||||
def test_nominated(self, nominated_commit: 'core.Commit'):
|
|
||||||
c = nominated_commit
|
|
||||||
v = c.to_json()
|
|
||||||
assert v == {'sha': 'abc123',
|
|
||||||
'description': 'sub: A commit',
|
|
||||||
'nominated': True,
|
|
||||||
'nomination_type': core.NominationType.CC.value,
|
|
||||||
'resolution': core.Resolution.UNRESOLVED.value,
|
|
||||||
'master_sha': None,
|
|
||||||
'because_sha': None}
|
|
||||||
|
|
||||||
class TestFromJson:
|
|
||||||
|
|
||||||
def test_not_nominated(self, unnominated_commit: 'core.Commit'):
|
|
||||||
c = unnominated_commit
|
|
||||||
v = c.to_json()
|
|
||||||
c2 = core.Commit.from_json(v)
|
|
||||||
assert c == c2
|
|
||||||
|
|
||||||
def test_nominated(self, nominated_commit: 'core.Commit'):
|
|
||||||
c = nominated_commit
|
|
||||||
v = c.to_json()
|
|
||||||
c2 = core.Commit.from_json(v)
|
|
||||||
assert c == c2
|
|
||||||
|
|
||||||
|
|
||||||
class TestRE:
|
|
||||||
|
|
||||||
"""Tests for the regular expressions used to identify commits."""
|
|
||||||
|
|
||||||
class TestFixes:
|
|
||||||
|
|
||||||
def test_simple(self):
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
etnaviv: fix vertex buffer state emission for single stream GPUs
|
|
||||||
|
|
||||||
GPUs with a single supported vertex stream must use the single state
|
|
||||||
address to program the stream.
|
|
||||||
|
|
||||||
Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)
|
|
||||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
|
|
||||||
Reviewed-by: Jonathan Marek <jonathan@marek.ca>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_FIX.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '3d09bb390a39'
|
|
||||||
|
|
||||||
class TestCC:
|
|
||||||
|
|
||||||
def test_single_branch(self):
|
|
||||||
"""Tests commit meant for a single branch, ie, 19.1"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
radv: fix DCC fast clear code for intensity formats
|
|
||||||
|
|
||||||
This fixes a rendering issue with DiRT 4 on GFX10. Only GFX10 was
|
|
||||||
affected because intensity formats are different.
|
|
||||||
|
|
||||||
Cc: 19.2 <mesa-stable@lists.freedesktop.org>
|
|
||||||
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1923
|
|
||||||
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
|
|
||||||
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '19.2'
|
|
||||||
|
|
||||||
def test_multiple_branches(self):
|
|
||||||
"""Tests commit with more than one branch specified"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
radeonsi: enable zerovram for Rocket League
|
|
||||||
|
|
||||||
Fixes corruption on game startup.
|
|
||||||
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1888
|
|
||||||
|
|
||||||
Cc: 19.1 19.2 <mesa-stable@lists.freedesktop.org>
|
|
||||||
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '19.1'
|
|
||||||
assert m.group(2) == '19.2'
|
|
||||||
|
|
||||||
def test_no_branch(self):
|
|
||||||
"""Tests commit with no branch specification"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
anv/android: fix images created with external format support
|
|
||||||
|
|
||||||
This fixes a case where user first creates image and then later binds it
|
|
||||||
with memory created from AHW buffer.
|
|
||||||
|
|
||||||
Cc: <mesa-stable@lists.freedesktop.org>
|
|
||||||
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
|
|
||||||
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
|
|
||||||
def test_quotes(self):
|
|
||||||
"""Tests commit with quotes around the versions"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
anv: Always fill out the AUX table even if CCS is disabled
|
|
||||||
|
|
||||||
Cc: "20.0" mesa-stable@lists.freedesktop.org
|
|
||||||
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
|
|
||||||
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '20.0'
|
|
||||||
|
|
||||||
def test_multiple_quotes(self):
|
|
||||||
"""Tests commit with quotes around the versions"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
anv: Always fill out the AUX table even if CCS is disabled
|
|
||||||
|
|
||||||
Cc: "20.0" "20.1" mesa-stable@lists.freedesktop.org
|
|
||||||
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
|
|
||||||
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '20.0'
|
|
||||||
assert m.group(2) == '20.1'
|
|
||||||
|
|
||||||
def test_single_quotes(self):
|
|
||||||
"""Tests commit with quotes around the versions"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
anv: Always fill out the AUX table even if CCS is disabled
|
|
||||||
|
|
||||||
Cc: '20.0' mesa-stable@lists.freedesktop.org
|
|
||||||
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
|
|
||||||
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '20.0'
|
|
||||||
|
|
||||||
def test_multiple_single_quotes(self):
|
|
||||||
"""Tests commit with quotes around the versions"""
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
anv: Always fill out the AUX table even if CCS is disabled
|
|
||||||
|
|
||||||
Cc: '20.0' '20.1' mesa-stable@lists.freedesktop.org
|
|
||||||
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
|
|
||||||
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3454>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_CC.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '20.0'
|
|
||||||
assert m.group(2) == '20.1'
|
|
||||||
|
|
||||||
class TestRevert:
|
|
||||||
|
|
||||||
def test_simple(self):
|
|
||||||
message = textwrap.dedent("""\
|
|
||||||
Revert "radv: do not emit PKT3_CONTEXT_CONTROL with AMDGPU 3.6.0+"
|
|
||||||
|
|
||||||
This reverts commit 2ca8629fa9b303e24783b76a7b3b0c2513e32fbd.
|
|
||||||
|
|
||||||
This was initially ported from RadeonSI, but in the meantime it has
|
|
||||||
been reverted because it might hang. Be conservative and re-introduce
|
|
||||||
this packet emission.
|
|
||||||
|
|
||||||
Unfortunately this doesn't fix anything known.
|
|
||||||
|
|
||||||
Cc: 19.2 <mesa-stable@lists.freedesktop.org>
|
|
||||||
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
|
|
||||||
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
|
|
||||||
""")
|
|
||||||
|
|
||||||
m = core.IS_REVERT.search(message)
|
|
||||||
assert m is not None
|
|
||||||
assert m.group(1) == '2ca8629fa9b303e24783b76a7b3b0c2513e32fbd'
|
|
||||||
|
|
||||||
|
|
||||||
class TestResolveNomination:
|
|
||||||
|
|
||||||
@attr.s(slots=True)
|
|
||||||
class FakeSubprocess:
|
|
||||||
|
|
||||||
"""A fake asyncio.subprocess like classe for use with mock."""
|
|
||||||
|
|
||||||
out: typing.Optional[bytes] = attr.ib(None)
|
|
||||||
returncode: int = attr.ib(0)
|
|
||||||
|
|
||||||
async def mock(self, *_, **__):
|
|
||||||
"""A dirtly little helper for mocking."""
|
|
||||||
return self
|
|
||||||
|
|
||||||
async def communicate(self) -> typing.Tuple[bytes, bytes]:
|
|
||||||
assert self.out is not None
|
|
||||||
return self.out, b''
|
|
||||||
|
|
||||||
async def wait(self) -> int:
|
|
||||||
return self.returncode
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
async def return_true(*_, **__) -> bool:
|
|
||||||
return True
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
async def return_false(*_, **__) -> bool:
|
|
||||||
return False
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_fix_is_nominated(self):
|
|
||||||
s = self.FakeSubprocess(b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
|
|
||||||
await core.resolve_nomination(c, '')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.FIXES
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_fix_is_not_nominated(self):
|
|
||||||
s = self.FakeSubprocess(b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_false):
|
|
||||||
await core.resolve_nomination(c, '')
|
|
||||||
|
|
||||||
assert not c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.FIXES
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_cc_is_nominated(self):
|
|
||||||
s = self.FakeSubprocess(b'Cc: 16.2 <mesa-stable@lists.freedesktop.org>')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
await core.resolve_nomination(c, '16.2')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.CC
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_cc_is_nominated2(self):
|
|
||||||
s = self.FakeSubprocess(b'Cc: mesa-stable@lists.freedesktop.org')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
await core.resolve_nomination(c, '16.2')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.CC
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_cc_is_not_nominated(self):
|
|
||||||
s = self.FakeSubprocess(b'Cc: 16.2 <mesa-stable@lists.freedesktop.org>')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
await core.resolve_nomination(c, '16.1')
|
|
||||||
|
|
||||||
assert not c.nominated
|
|
||||||
assert c.nomination_type is None
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_revert_is_nominated(self):
|
|
||||||
s = self.FakeSubprocess(b'This reverts commit 1234567890123456789012345678901234567890.')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
|
|
||||||
await core.resolve_nomination(c, '')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.REVERT
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_revert_is_not_nominated(self):
|
|
||||||
s = self.FakeSubprocess(b'This reverts commit 1234567890123456789012345678901234567890.')
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_false):
|
|
||||||
await core.resolve_nomination(c, '')
|
|
||||||
|
|
||||||
assert not c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.REVERT
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_is_fix_and_cc(self):
|
|
||||||
s = self.FakeSubprocess(
|
|
||||||
b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)\n'
|
|
||||||
b'Cc: 16.1 <mesa-stable@lists.freedesktop.org>'
|
|
||||||
)
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
|
|
||||||
await core.resolve_nomination(c, '16.1')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.FIXES
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_is_fix_and_revert(self):
|
|
||||||
s = self.FakeSubprocess(
|
|
||||||
b'Fixes: 3d09bb390a39 (etnaviv: GC7000: State changes for HALTI3..5)\n'
|
|
||||||
b'This reverts commit 1234567890123456789012345678901234567890.'
|
|
||||||
)
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
|
|
||||||
await core.resolve_nomination(c, '16.1')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.FIXES
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_is_cc_and_revert(self):
|
|
||||||
s = self.FakeSubprocess(
|
|
||||||
b'This reverts commit 1234567890123456789012345678901234567890.\n'
|
|
||||||
b'Cc: 16.1 <mesa-stable@lists.freedesktop.org>'
|
|
||||||
)
|
|
||||||
c = core.Commit('abcdef1234567890', 'a commit')
|
|
||||||
|
|
||||||
with mock.patch('bin.pick.core.asyncio.create_subprocess_exec', s.mock):
|
|
||||||
with mock.patch('bin.pick.core.is_commit_in_branch', self.return_true):
|
|
||||||
await core.resolve_nomination(c, '16.1')
|
|
||||||
|
|
||||||
assert c.nominated
|
|
||||||
assert c.nomination_type is core.NominationType.CC
|
|
||||||
|
|
||||||
|
|
||||||
class TestResolveFixes:
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_in_new(self):
|
|
||||||
"""Because commit abcd is nominated, so f123 should be as well."""
|
|
||||||
c = [
|
|
||||||
core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
|
|
||||||
core.Commit('abcd', 'desc', True),
|
|
||||||
]
|
|
||||||
await core.resolve_fixes(c, [])
|
|
||||||
assert c[1].nominated
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_not_in_new(self):
|
|
||||||
"""Because commit abcd is not nominated, commit f123 shouldn't be either."""
|
|
||||||
c = [
|
|
||||||
core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
|
|
||||||
core.Commit('abcd', 'desc'),
|
|
||||||
]
|
|
||||||
await core.resolve_fixes(c, [])
|
|
||||||
assert not c[0].nominated
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_in_previous(self):
|
|
||||||
"""Because commit abcd is nominated, so f123 should be as well."""
|
|
||||||
p = [
|
|
||||||
core.Commit('abcd', 'desc', True),
|
|
||||||
]
|
|
||||||
c = [
|
|
||||||
core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
|
|
||||||
]
|
|
||||||
await core.resolve_fixes(c, p)
|
|
||||||
assert c[0].nominated
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_not_in_previous(self):
|
|
||||||
"""Because commit abcd is not nominated, commit f123 shouldn't be either."""
|
|
||||||
p = [
|
|
||||||
core.Commit('abcd', 'desc'),
|
|
||||||
]
|
|
||||||
c = [
|
|
||||||
core.Commit('f123', 'desc', nomination_type=core.NominationType.FIXES, because_sha='abcd'),
|
|
||||||
]
|
|
||||||
await core.resolve_fixes(c, p)
|
|
||||||
assert not c[0].nominated
|
|
||||||
|
|
||||||
|
|
||||||
class TestIsCommitInBranch:
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_no(self):
|
|
||||||
# Hopefully this is never true?
|
|
||||||
value = await core.is_commit_in_branch('ffffffffffffffffffffffffffffff')
|
|
||||||
assert not value
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_yes(self):
|
|
||||||
# This commit is from 2000, it better always be in the branch
|
|
||||||
value = await core.is_commit_in_branch('88f3b89a2cb77766d2009b9868c44e03abe2dbb2')
|
|
||||||
assert value
|
|
||||||
|
|
||||||
|
|
||||||
class TestFullSha:
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_basic(self):
|
|
||||||
# This commit is from 2000, it better always be in the branch
|
|
||||||
value = await core.full_sha('88f3b89a2cb777')
|
|
||||||
assert value
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
async def test_invalid(self):
|
|
||||||
# This commit is from 2000, it better always be in the branch
|
|
||||||
with pytest.raises(core.PickUIException):
|
|
||||||
await core.full_sha('fffffffffffffffffffffffffffffffffff')
|
|
259
bin/pick/ui.py
259
bin/pick/ui.py
@@ -1,259 +0,0 @@
|
|||||||
# Copyright © 2020-2020 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Urwid UI for pick script."""
|
|
||||||
|
|
||||||
import asyncio
|
|
||||||
import functools
|
|
||||||
import itertools
|
|
||||||
import textwrap
|
|
||||||
import typing
|
|
||||||
|
|
||||||
import attr
|
|
||||||
import urwid
|
|
||||||
|
|
||||||
from . import core
|
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
|
||||||
WidgetType = typing.TypeVar('WidgetType', bound=urwid.Widget)
|
|
||||||
|
|
||||||
PALETTE = [
|
|
||||||
('a', 'black', 'light gray'),
|
|
||||||
('b', 'black', 'dark red'),
|
|
||||||
('bg', 'black', 'dark blue'),
|
|
||||||
('reversed', 'standout', ''),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class RootWidget(urwid.Frame):
|
|
||||||
|
|
||||||
def __init__(self, *args, ui: 'UI' = None, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
assert ui is not None
|
|
||||||
self.ui = ui
|
|
||||||
|
|
||||||
def keypress(self, size: int, key: str) -> typing.Optional[str]:
|
|
||||||
if key == 'q':
|
|
||||||
raise urwid.ExitMainLoop()
|
|
||||||
elif key == 'u':
|
|
||||||
asyncio.ensure_future(self.ui.update())
|
|
||||||
elif key == 'a':
|
|
||||||
self.ui.add()
|
|
||||||
else:
|
|
||||||
return super().keypress(size, key)
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class CommitWidget(urwid.Text):
|
|
||||||
|
|
||||||
# urwid.Text is normally not interactable, this is required to tell urwid
|
|
||||||
# to use our keypress method
|
|
||||||
_selectable = True
|
|
||||||
|
|
||||||
def __init__(self, ui: 'UI', commit: 'core.Commit'):
|
|
||||||
super().__init__(commit.description)
|
|
||||||
self.ui = ui
|
|
||||||
self.commit = commit
|
|
||||||
|
|
||||||
async def apply(self) -> None:
|
|
||||||
result, err = await self.commit.apply(self.ui)
|
|
||||||
if not result:
|
|
||||||
self.ui.chp_failed(self, err)
|
|
||||||
else:
|
|
||||||
self.ui.remove_commit(self)
|
|
||||||
|
|
||||||
async def denominate(self) -> None:
|
|
||||||
await self.commit.denominate(self.ui)
|
|
||||||
self.ui.remove_commit(self)
|
|
||||||
|
|
||||||
async def backport(self) -> None:
|
|
||||||
await self.commit.backport(self.ui)
|
|
||||||
self.ui.remove_commit(self)
|
|
||||||
|
|
||||||
def keypress(self, size: int, key: str) -> typing.Optional[str]:
|
|
||||||
if key == 'c':
|
|
||||||
asyncio.ensure_future(self.apply())
|
|
||||||
elif key == 'd':
|
|
||||||
asyncio.ensure_future(self.denominate())
|
|
||||||
elif key == 'b':
|
|
||||||
asyncio.ensure_future(self.backport())
|
|
||||||
else:
|
|
||||||
return key
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
@attr.s(slots=True)
|
|
||||||
class UI:
|
|
||||||
|
|
||||||
"""Main management object.
|
|
||||||
|
|
||||||
:previous_commits: A list of commits to master since this branch was created
|
|
||||||
:new_commits: Commits added to master since the last time this script was run
|
|
||||||
"""
|
|
||||||
|
|
||||||
commit_list: typing.List['urwid.Button'] = attr.ib(factory=lambda: urwid.SimpleFocusListWalker([]), init=False)
|
|
||||||
feedback_box: typing.List['urwid.Text'] = attr.ib(factory=lambda: urwid.SimpleFocusListWalker([]), init=False)
|
|
||||||
header: 'urwid.Text' = attr.ib(factory=lambda: urwid.Text('Mesa Stable Picker', align='center'), init=False)
|
|
||||||
body: 'urwid.Columns' = attr.ib(attr.Factory(lambda s: s._make_body(), True), init=False)
|
|
||||||
footer: 'urwid.Columns' = attr.ib(attr.Factory(lambda s: s._make_footer(), True), init=False)
|
|
||||||
root: RootWidget = attr.ib(attr.Factory(lambda s: s._make_root(), True), init=False)
|
|
||||||
mainloop: urwid.MainLoop = attr.ib(None, init=False)
|
|
||||||
|
|
||||||
previous_commits: typing.List['core.Commit'] = attr.ib(factory=list, init=False)
|
|
||||||
new_commits: typing.List['core.Commit'] = attr.ib(factory=list, init=False)
|
|
||||||
|
|
||||||
def _make_body(self) -> 'urwid.Columns':
|
|
||||||
commits = urwid.ListBox(self.commit_list)
|
|
||||||
feedback = urwid.ListBox(self.feedback_box)
|
|
||||||
return urwid.Columns([commits, feedback])
|
|
||||||
|
|
||||||
def _make_footer(self) -> 'urwid.Columns':
|
|
||||||
body = [
|
|
||||||
urwid.Text('[U]pdate'),
|
|
||||||
urwid.Text('[Q]uit'),
|
|
||||||
urwid.Text('[C]herry Pick'),
|
|
||||||
urwid.Text('[D]enominate'),
|
|
||||||
urwid.Text('[B]ackport'),
|
|
||||||
urwid.Text('[A]pply additional patch')
|
|
||||||
]
|
|
||||||
return urwid.Columns(body)
|
|
||||||
|
|
||||||
def _make_root(self) -> 'RootWidget':
|
|
||||||
return RootWidget(self.body, self.header, self.footer, 'body', ui=self)
|
|
||||||
|
|
||||||
def render(self) -> 'WidgetType':
|
|
||||||
asyncio.ensure_future(self.update())
|
|
||||||
return self.root
|
|
||||||
|
|
||||||
def load(self) -> None:
|
|
||||||
self.previous_commits = core.load()
|
|
||||||
|
|
||||||
async def update(self) -> None:
|
|
||||||
self.load()
|
|
||||||
with open('VERSION', 'r') as f:
|
|
||||||
version = f.read().strip()[:4]
|
|
||||||
if self.previous_commits:
|
|
||||||
sha = self.previous_commits[0].sha
|
|
||||||
else:
|
|
||||||
sha = f'{version}-branchpoint'
|
|
||||||
|
|
||||||
new_commits = await core.get_new_commits(sha)
|
|
||||||
|
|
||||||
if new_commits:
|
|
||||||
pb = urwid.ProgressBar('a', 'b', done=len(new_commits))
|
|
||||||
o = self.mainloop.widget
|
|
||||||
self.mainloop.widget = urwid.Overlay(
|
|
||||||
urwid.Filler(urwid.LineBox(pb)), o, 'center', ('relative', 50), 'middle', ('relative', 50))
|
|
||||||
self.new_commits = await core.gather_commits(
|
|
||||||
version, self.previous_commits, new_commits,
|
|
||||||
lambda: pb.set_completion(pb.current + 1))
|
|
||||||
self.mainloop.widget = o
|
|
||||||
|
|
||||||
for commit in reversed(list(itertools.chain(self.new_commits, self.previous_commits))):
|
|
||||||
if commit.nominated and commit.resolution is core.Resolution.UNRESOLVED:
|
|
||||||
b = urwid.AttrMap(CommitWidget(self, commit), None, focus_map='reversed')
|
|
||||||
self.commit_list.append(b)
|
|
||||||
self.save()
|
|
||||||
|
|
||||||
async def feedback(self, text: str) -> None:
|
|
||||||
self.feedback_box.append(urwid.AttrMap(urwid.Text(text), None))
|
|
||||||
|
|
||||||
def remove_commit(self, commit: CommitWidget) -> None:
|
|
||||||
for i, c in enumerate(self.commit_list):
|
|
||||||
if c.base_widget is commit:
|
|
||||||
del self.commit_list[i]
|
|
||||||
break
|
|
||||||
|
|
||||||
def save(self):
|
|
||||||
core.save(itertools.chain(self.new_commits, self.previous_commits))
|
|
||||||
|
|
||||||
def add(self) -> None:
|
|
||||||
"""Add an additional commit which isn't nominated."""
|
|
||||||
o = self.mainloop.widget
|
|
||||||
|
|
||||||
def reset_cb(_) -> None:
|
|
||||||
self.mainloop.widget = o
|
|
||||||
|
|
||||||
async def apply_cb(edit: urwid.Edit) -> None:
|
|
||||||
text: str = edit.get_edit_text()
|
|
||||||
|
|
||||||
# In case the text is empty
|
|
||||||
if not text:
|
|
||||||
return
|
|
||||||
|
|
||||||
sha = await core.full_sha(text)
|
|
||||||
for c in reversed(list(itertools.chain(self.new_commits, self.previous_commits))):
|
|
||||||
if c.sha == sha:
|
|
||||||
commit = c
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise RuntimeError(f"Couldn't find {sha}")
|
|
||||||
|
|
||||||
await commit.apply(self)
|
|
||||||
|
|
||||||
q = urwid.Edit("Comit sha\n")
|
|
||||||
ok_btn = urwid.Button('Ok')
|
|
||||||
urwid.connect_signal(ok_btn, 'click', lambda _: asyncio.ensure_future(apply_cb(q)))
|
|
||||||
urwid.connect_signal(ok_btn, 'click', reset_cb)
|
|
||||||
|
|
||||||
can_btn = urwid.Button('Cancel')
|
|
||||||
urwid.connect_signal(can_btn, 'click', reset_cb)
|
|
||||||
|
|
||||||
cols = urwid.Columns([ok_btn, can_btn])
|
|
||||||
pile = urwid.Pile([q, cols])
|
|
||||||
box = urwid.LineBox(pile)
|
|
||||||
|
|
||||||
self.mainloop.widget = urwid.Overlay(
|
|
||||||
urwid.Filler(box), o, 'center', ('relative', 50), 'middle', ('relative', 50)
|
|
||||||
)
|
|
||||||
|
|
||||||
def chp_failed(self, commit: 'CommitWidget', err: str) -> None:
|
|
||||||
o = self.mainloop.widget
|
|
||||||
|
|
||||||
def reset_cb(_) -> None:
|
|
||||||
self.mainloop.widget = o
|
|
||||||
|
|
||||||
t = urwid.Text(textwrap.dedent(f"""
|
|
||||||
Failed to apply {commit.commit.sha} {commit.commit.description} with the following error:
|
|
||||||
|
|
||||||
{err}
|
|
||||||
|
|
||||||
You can either cancel, or resolve the conflicts, commit the
|
|
||||||
changes and select ok."""))
|
|
||||||
|
|
||||||
can_btn = urwid.Button('Cancel')
|
|
||||||
urwid.connect_signal(can_btn, 'click', reset_cb)
|
|
||||||
urwid.connect_signal(
|
|
||||||
can_btn, 'click', lambda _: asyncio.ensure_future(commit.commit.abort_cherry(self, err)))
|
|
||||||
|
|
||||||
ok_btn = urwid.Button('Ok')
|
|
||||||
urwid.connect_signal(ok_btn, 'click', reset_cb)
|
|
||||||
urwid.connect_signal(
|
|
||||||
ok_btn, 'click', lambda _: asyncio.ensure_future(commit.commit.resolve(self)))
|
|
||||||
urwid.connect_signal(
|
|
||||||
ok_btn, 'click', lambda _: self.remove_commit(commit))
|
|
||||||
|
|
||||||
cols = urwid.Columns([ok_btn, can_btn])
|
|
||||||
pile = urwid.Pile([t, cols])
|
|
||||||
box = urwid.LineBox(pile)
|
|
||||||
|
|
||||||
self.mainloop.widget = urwid.Overlay(
|
|
||||||
urwid.Filler(box), o, 'center', ('relative', 50), 'middle', ('relative', 50)
|
|
||||||
)
|
|
@@ -1,117 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2019 Intel Corporation
|
|
||||||
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
"""Update the main page, release notes, and calendar."""
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import calendar
|
|
||||||
import datetime
|
|
||||||
import pathlib
|
|
||||||
from lxml import (
|
|
||||||
etree,
|
|
||||||
html,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_previous_version(version: str, is_point: bool) -> str:
|
|
||||||
"""Calculate the previous version to compare to.
|
|
||||||
|
|
||||||
In the case of -rc to final that verison is the previous .0 release,
|
|
||||||
(19.3.0 in the case of 20.0.0, for example). for point releases that is
|
|
||||||
the last point release. This value will be the same as the input value
|
|
||||||
for a poiont release, but different for a major release.
|
|
||||||
"""
|
|
||||||
if '-' in version:
|
|
||||||
version = version.split('-')[0]
|
|
||||||
if is_point:
|
|
||||||
return version
|
|
||||||
base = version.split('.')
|
|
||||||
if base[1] == '0':
|
|
||||||
base[0] = str(int(base[0]) - 1)
|
|
||||||
base[1] = '3'
|
|
||||||
else:
|
|
||||||
base[1] = str(int(base[1]) - 1)
|
|
||||||
return '.'.join(base)
|
|
||||||
|
|
||||||
|
|
||||||
def is_point_release(version: str) -> bool:
|
|
||||||
return not version.endswith('.0')
|
|
||||||
|
|
||||||
|
|
||||||
def update_index(is_point: bool, version: str, previous_version: str) -> None:
|
|
||||||
p = pathlib.Path(__file__).parent.parent / 'docs' / 'index.html'
|
|
||||||
with p.open('rt') as f:
|
|
||||||
tree = html.parse(f)
|
|
||||||
|
|
||||||
news = tree.xpath('.//h1')[0]
|
|
||||||
|
|
||||||
date = datetime.date.today()
|
|
||||||
month = calendar.month_name[date.month]
|
|
||||||
header = etree.Element('h2')
|
|
||||||
header.text = f"{month} {date.day}, {date.year}"
|
|
||||||
|
|
||||||
body = etree.Element('p')
|
|
||||||
a = etree.SubElement(
|
|
||||||
body, 'a', attrib={'href': f'relnotes/{previous_version}.html'})
|
|
||||||
a.text = f"Mesa {previous_version}"
|
|
||||||
if is_point:
|
|
||||||
a.tail = " is released. This is a bug fix release."
|
|
||||||
else:
|
|
||||||
a.tail = (" is released. This is a new development release. "
|
|
||||||
"See the release notes for mor information about this release.")
|
|
||||||
|
|
||||||
root = news.getparent()
|
|
||||||
index = root.index(news) + 1
|
|
||||||
root.insert(index, body)
|
|
||||||
root.insert(index, header)
|
|
||||||
|
|
||||||
tree.write(p.as_posix(), method='html')
|
|
||||||
|
|
||||||
|
|
||||||
def update_release_notes(previous_version: str) -> None:
|
|
||||||
p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes.html'
|
|
||||||
with p.open('rt') as f:
|
|
||||||
tree = html.parse(f)
|
|
||||||
|
|
||||||
li = etree.Element('li')
|
|
||||||
a = etree.SubElement(li, 'a', href=f'relnotes/{previous_version}.html')
|
|
||||||
a.text = f'{previous_version} release notes'
|
|
||||||
|
|
||||||
ul = tree.xpath('.//ul')[0]
|
|
||||||
ul.insert(0, li)
|
|
||||||
|
|
||||||
tree.write(p.as_posix(), method='html')
|
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('version', help="The released version.")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
is_point = is_point_release(args.version)
|
|
||||||
previous_version = calculate_previous_version(args.version, is_point)
|
|
||||||
|
|
||||||
update_index(is_point, args.version, previous_version)
|
|
||||||
update_release_notes(previous_version)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
29
bin/shortlog_mesa.sh
Executable file
29
bin/shortlog_mesa.sh
Executable file
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script is used to generate the list of changes that
|
||||||
|
# appears in the release notes files, with HTML formatting.
|
||||||
|
#
|
||||||
|
# Usage examples:
|
||||||
|
#
|
||||||
|
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3
|
||||||
|
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 > changes
|
||||||
|
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee changes
|
||||||
|
|
||||||
|
|
||||||
|
in_log=0
|
||||||
|
|
||||||
|
git shortlog $* | while read l
|
||||||
|
do
|
||||||
|
if [ $in_log -eq 0 ]; then
|
||||||
|
echo '<p>'$l'</p>'
|
||||||
|
echo '<ul>'
|
||||||
|
in_log=1
|
||||||
|
elif echo "$l" | egrep -q '^$' ; then
|
||||||
|
echo '</ul>'
|
||||||
|
echo
|
||||||
|
in_log=0
|
||||||
|
else
|
||||||
|
mesg=$(echo $l | sed 's/ (cherry picked from commit [0-9a-f]\+)//;s/\&/&/g;s/</\</g;s/>/\>/g')
|
||||||
|
echo ' <li>'${mesg}'</li>'
|
||||||
|
fi
|
||||||
|
done
|
@@ -1,172 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
|
||||||
import platform
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
# This list contains symbols that _might_ be exported for some platforms
|
|
||||||
PLATFORM_SYMBOLS = [
|
|
||||||
'__bss_end__',
|
|
||||||
'__bss_start__',
|
|
||||||
'__bss_start',
|
|
||||||
'__end__',
|
|
||||||
'_bss_end__',
|
|
||||||
'_edata',
|
|
||||||
'_end',
|
|
||||||
'_fini',
|
|
||||||
'_init',
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def get_symbols_nm(nm, lib):
|
|
||||||
'''
|
|
||||||
List all the (non platform-specific) symbols exported by the library
|
|
||||||
using `nm`
|
|
||||||
'''
|
|
||||||
symbols = []
|
|
||||||
platform_name = platform.system()
|
|
||||||
output = subprocess.check_output([nm, '-gP', lib],
|
|
||||||
stderr=open(os.devnull, 'w')).decode("ascii")
|
|
||||||
for line in output.splitlines():
|
|
||||||
fields = line.split()
|
|
||||||
if len(fields) == 2 or fields[1] == 'U':
|
|
||||||
continue
|
|
||||||
symbol_name = fields[0]
|
|
||||||
if platform_name == 'Linux':
|
|
||||||
if symbol_name in PLATFORM_SYMBOLS:
|
|
||||||
continue
|
|
||||||
elif platform_name == 'Darwin':
|
|
||||||
assert symbol_name[0] == '_'
|
|
||||||
symbol_name = symbol_name[1:]
|
|
||||||
symbols.append(symbol_name)
|
|
||||||
return symbols
|
|
||||||
|
|
||||||
|
|
||||||
def get_symbols_dumpbin(dumpbin, lib):
|
|
||||||
'''
|
|
||||||
List all the (non platform-specific) symbols exported by the library
|
|
||||||
using `dumpbin`
|
|
||||||
'''
|
|
||||||
symbols = []
|
|
||||||
output = subprocess.check_output([dumpbin, '/exports', lib],
|
|
||||||
stderr=open(os.devnull, 'w')).decode("ascii")
|
|
||||||
for line in output.splitlines():
|
|
||||||
fields = line.split()
|
|
||||||
# The lines with the symbols are made of at least 4 columns; see details below
|
|
||||||
if len(fields) < 4:
|
|
||||||
continue
|
|
||||||
try:
|
|
||||||
# Making sure the first 3 columns are a dec counter, a hex counter
|
|
||||||
# and a hex address
|
|
||||||
_ = int(fields[0], 10)
|
|
||||||
_ = int(fields[1], 16)
|
|
||||||
_ = int(fields[2], 16)
|
|
||||||
except ValueError:
|
|
||||||
continue
|
|
||||||
symbol_name = fields[3]
|
|
||||||
# De-mangle symbols
|
|
||||||
if symbol_name[0] == '_':
|
|
||||||
symbol_name = symbol_name[1:].split('@')[0]
|
|
||||||
symbols.append(symbol_name)
|
|
||||||
return symbols
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument('--symbols-file',
|
|
||||||
action='store',
|
|
||||||
required=True,
|
|
||||||
help='path to file containing symbols')
|
|
||||||
parser.add_argument('--lib',
|
|
||||||
action='store',
|
|
||||||
required=True,
|
|
||||||
help='path to library')
|
|
||||||
parser.add_argument('--nm',
|
|
||||||
action='store',
|
|
||||||
help='path to binary (or name in $PATH)')
|
|
||||||
parser.add_argument('--dumpbin',
|
|
||||||
action='store',
|
|
||||||
help='path to binary (or name in $PATH)')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
try:
|
|
||||||
if platform.system() == 'Windows':
|
|
||||||
if not args.dumpbin:
|
|
||||||
parser.error('--dumpbin is mandatory')
|
|
||||||
lib_symbols = get_symbols_dumpbin(args.dumpbin, args.lib)
|
|
||||||
else:
|
|
||||||
if not args.nm:
|
|
||||||
parser.error('--nm is mandatory')
|
|
||||||
lib_symbols = get_symbols_nm(args.nm, args.lib)
|
|
||||||
except:
|
|
||||||
# We can't run this test, but we haven't technically failed it either
|
|
||||||
# Return the GNU "skip" error code
|
|
||||||
exit(77)
|
|
||||||
mandatory_symbols = []
|
|
||||||
optional_symbols = []
|
|
||||||
with open(args.symbols_file) as symbols_file:
|
|
||||||
qualifier_optional = '(optional)'
|
|
||||||
for line in symbols_file.readlines():
|
|
||||||
|
|
||||||
# Strip comments
|
|
||||||
line = line.split('#')[0]
|
|
||||||
line = line.strip()
|
|
||||||
if not line:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Line format:
|
|
||||||
# [qualifier] symbol
|
|
||||||
qualifier = None
|
|
||||||
symbol = None
|
|
||||||
|
|
||||||
fields = line.split()
|
|
||||||
if len(fields) == 1:
|
|
||||||
symbol = fields[0]
|
|
||||||
elif len(fields) == 2:
|
|
||||||
qualifier = fields[0]
|
|
||||||
symbol = fields[1]
|
|
||||||
else:
|
|
||||||
print(args.symbols_file + ': invalid format: ' + line)
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
# The only supported qualifier is 'optional', which means the
|
|
||||||
# symbol doesn't have to be exported by the library
|
|
||||||
if qualifier and not qualifier == qualifier_optional:
|
|
||||||
print(args.symbols_file + ': invalid qualifier: ' + qualifier)
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
if qualifier == qualifier_optional:
|
|
||||||
optional_symbols.append(symbol)
|
|
||||||
else:
|
|
||||||
mandatory_symbols.append(symbol)
|
|
||||||
|
|
||||||
unknown_symbols = []
|
|
||||||
for symbol in lib_symbols:
|
|
||||||
if symbol in mandatory_symbols:
|
|
||||||
continue
|
|
||||||
if symbol in optional_symbols:
|
|
||||||
continue
|
|
||||||
if symbol[:2] == '_Z':
|
|
||||||
# Ignore random C++ symbols
|
|
||||||
#TODO: figure out if there's any way to avoid exporting them in the first place
|
|
||||||
continue
|
|
||||||
unknown_symbols.append(symbol)
|
|
||||||
|
|
||||||
missing_symbols = [
|
|
||||||
sym for sym in mandatory_symbols if sym not in lib_symbols
|
|
||||||
]
|
|
||||||
|
|
||||||
for symbol in unknown_symbols:
|
|
||||||
print(args.lib + ': unknown symbol exported: ' + symbol)
|
|
||||||
|
|
||||||
for symbol in missing_symbols:
|
|
||||||
print(args.lib + ': missing symbol: ' + symbol)
|
|
||||||
|
|
||||||
if unknown_symbols or missing_symbols:
|
|
||||||
exit(1)
|
|
||||||
exit(0)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
radeon_drm_winsys_create;
|
|
||||||
};
|
|
@@ -1,6 +0,0 @@
|
|||||||
VERSION_1 {
|
|
||||||
global:
|
|
||||||
main;
|
|
||||||
local:
|
|
||||||
*;
|
|
||||||
};
|
|
21
common.py
21
common.py
@@ -17,9 +17,6 @@ import SCons.Script.SConscript
|
|||||||
host_platform = _platform.system().lower()
|
host_platform = _platform.system().lower()
|
||||||
if host_platform.startswith('cygwin'):
|
if host_platform.startswith('cygwin'):
|
||||||
host_platform = 'cygwin'
|
host_platform = 'cygwin'
|
||||||
# MSYS2 default platform selection.
|
|
||||||
if host_platform.startswith('mingw'):
|
|
||||||
host_platform = 'windows'
|
|
||||||
|
|
||||||
# Search sys.argv[] for a "platform=foo" argument since we don't have
|
# Search sys.argv[] for a "platform=foo" argument since we don't have
|
||||||
# an 'env' variable at this point.
|
# an 'env' variable at this point.
|
||||||
@@ -52,18 +49,9 @@ if 'PROCESSOR_ARCHITECTURE' in os.environ:
|
|||||||
else:
|
else:
|
||||||
host_machine = _platform.machine()
|
host_machine = _platform.machine()
|
||||||
host_machine = _machine_map.get(host_machine, 'generic')
|
host_machine = _machine_map.get(host_machine, 'generic')
|
||||||
# MSYS2 default machine selection.
|
|
||||||
if _platform.system().lower().startswith('mingw') and 'MSYSTEM' in os.environ:
|
|
||||||
if os.environ['MSYSTEM'] == 'MINGW32':
|
|
||||||
host_machine = 'x86'
|
|
||||||
if os.environ['MSYSTEM'] == 'MINGW64':
|
|
||||||
host_machine = 'x86_64'
|
|
||||||
|
|
||||||
default_machine = host_machine
|
default_machine = host_machine
|
||||||
default_toolchain = 'default'
|
default_toolchain = 'default'
|
||||||
# MSYS2 default toolchain selection.
|
|
||||||
if _platform.system().lower().startswith('mingw'):
|
|
||||||
default_toolchain = 'mingw'
|
|
||||||
|
|
||||||
if target_platform == 'windows' and host_platform != 'windows':
|
if target_platform == 'windows' and host_platform != 'windows':
|
||||||
default_machine = 'x86'
|
default_machine = 'x86'
|
||||||
@@ -98,7 +86,7 @@ def AddOptions(opts):
|
|||||||
from SCons.Options.EnumOption import EnumOption
|
from SCons.Options.EnumOption import EnumOption
|
||||||
opts.Add(EnumOption('build', 'build type', 'debug',
|
opts.Add(EnumOption('build', 'build type', 'debug',
|
||||||
allowed_values=('debug', 'checked', 'profile',
|
allowed_values=('debug', 'checked', 'profile',
|
||||||
'release')))
|
'release', 'opt')))
|
||||||
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
||||||
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
|
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
|
||||||
default_machine,
|
default_machine,
|
||||||
@@ -111,14 +99,17 @@ def AddOptions(opts):
|
|||||||
'enable static code analysis where available', 'no'))
|
'enable static code analysis where available', 'no'))
|
||||||
opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no'))
|
opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no'))
|
||||||
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
|
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
|
||||||
|
opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support',
|
||||||
|
'no'))
|
||||||
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
|
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
|
||||||
opts.Add(BoolOption('force_scons', 'Force enable scons on deprecated platforms', 'false'))
|
|
||||||
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
|
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
|
||||||
'no'))
|
'no'))
|
||||||
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
||||||
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
||||||
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
||||||
|
opts.Add(BoolOption('texture_float',
|
||||||
|
'enable floating-point textures and renderbuffers',
|
||||||
|
'no'))
|
||||||
opts.Add(BoolOption('swr', 'Build OpenSWR', 'no'))
|
opts.Add(BoolOption('swr', 'Build OpenSWR', 'no'))
|
||||||
if host_platform == 'windows':
|
if host_platform == 'windows':
|
||||||
opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
|
opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
|
||||||
opts.Add('MSVC_USE_SCRIPT', 'Microsoft Visual C/C++ vcvarsall script', True)
|
|
||||||
|
3018
configure.ac
Normal file
3018
configure.ac
Normal file
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
<div class="header">
|
<div class="header">
|
||||||
The Mesa 3D Graphics Library
|
<h1>The Mesa 3D Graphics Library</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<iframe src="contents.html"></iframe>
|
<iframe src="contents.html"></iframe>
|
||||||
@@ -48,25 +48,23 @@ start-up because of an extension string buffer-overflow problem.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
The problem is a modern OpenGL driver will return a very long string
|
The problem is a modern OpenGL driver will return a very long string
|
||||||
for the <code>glGetString(GL_EXTENSIONS)</code> query and if the application
|
for the glGetString(GL_EXTENSIONS) query and if the application
|
||||||
naively copies the string into a fixed-size buffer it can overflow the
|
naively copies the string into a fixed-size buffer it can overflow the
|
||||||
buffer and crash the application.
|
buffer and crash the application.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The work-around is to set the <code>MESA_EXTENSION_MAX_YEAR</code>
|
The work-around is to set the MESA_EXTENSION_MAX_YEAR environment variable
|
||||||
environment variable to the approximate release year of the game.
|
to the approximate release year of the game.
|
||||||
This will cause the <code>glGetString(GL_EXTENSIONS)</code> query to only report
|
This will cause the glGetString(GL_EXTENSIONS) query to only report extensions
|
||||||
extensions older than the given year.
|
older than the given year.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
For example, if the game was released in 2001, do
|
For example, if the game was released in 2001, do
|
||||||
</p>
|
|
||||||
<pre>
|
<pre>
|
||||||
export MESA_EXTENSION_MAX_YEAR=2001
|
export MESA_EXTENSION_MAX_YEAR=2001
|
||||||
</pre>
|
</pre>
|
||||||
<p>
|
|
||||||
before running the game.
|
before running the game.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
257
docs/autoconf.html
Normal file
257
docs/autoconf.html
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
|
<title>Compilation and Installation using Autoconf</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<h1>The Mesa 3D Graphics Library</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<iframe src="contents.html"></iframe>
|
||||||
|
<div class="content">
|
||||||
|
|
||||||
|
<h1>Compilation and Installation using Autoconf</h1>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li><p><a href="#basic">Basic Usage</a></li>
|
||||||
|
<li><p><a href="#driver">Driver Options</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#xlib">Xlib Driver Options</a></li>
|
||||||
|
<li><a href="#dri">DRI Driver Options</a></li>
|
||||||
|
<li><a href="#osmesa">OSMesa Driver Options</a></li>
|
||||||
|
</ul>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
|
<h2 id="basic">1. Basic Usage</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The autoconf generated configure script can be used to guess your
|
||||||
|
platform and change various options for building Mesa. To use the
|
||||||
|
configure script, type:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
./configure
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
To see a short description of all the options, type <code>./configure
|
||||||
|
--help</code>. If you are using a development snapshot and the configure
|
||||||
|
script does not exist, type <code>./autogen.sh</code> to generate it
|
||||||
|
first. If you know the options you want to pass to
|
||||||
|
<code>configure</code>, you can pass them to <code>autogen.sh</code>. It
|
||||||
|
will run <code>configure</code> with these options after it is
|
||||||
|
generated. Once you have run <code>configure</code> and set the options
|
||||||
|
to your preference, type:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
make
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This will produce libGL.so and/or several other libraries depending on the
|
||||||
|
options you have chosen. Later, if you want to rebuild for a different
|
||||||
|
configuration run <code>make realclean</code> before rebuilding.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Some of the generic autoconf options are used with Mesa:
|
||||||
|
</p>
|
||||||
|
<dl>
|
||||||
|
<dt><code>--prefix=PREFIX</code></dt>
|
||||||
|
<dd><p>This is the root directory where
|
||||||
|
files will be installed by <code>make install</code>. The default is
|
||||||
|
<code>/usr/local</code>.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>--exec-prefix=EPREFIX</code></dt>
|
||||||
|
<dd><p>This is the root directory
|
||||||
|
where architecture-dependent files will be installed. In Mesa, this is
|
||||||
|
only used to derive the directory for the libraries. The default is
|
||||||
|
<code>${prefix}</code>.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>--libdir=LIBDIR</code></dt>
|
||||||
|
<dd><p>This option specifies the directory
|
||||||
|
where the GL libraries will be installed. The default is
|
||||||
|
<code>${exec_prefix}/lib</code>. It also serves as the name of the
|
||||||
|
library staging area in the source tree. For instance, if the option
|
||||||
|
<code>--libdir=/usr/local/lib64</code> is used, the libraries will be
|
||||||
|
created in a <code>lib64</code> directory at the top of the Mesa source
|
||||||
|
tree.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>--sysconfdir=DIR</code></dt>
|
||||||
|
<dd><p>This option specifies the directory where the configuration
|
||||||
|
files will be installed. The default is <code>${prefix}/etc</code>.
|
||||||
|
Currently there's only one config file provided when dri drivers are
|
||||||
|
enabled - it's <code>drirc</code>.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>--enable-static, --disable-shared</code></dt>
|
||||||
|
<dd><p>By default, Mesa
|
||||||
|
will build shared libraries. Either of these options will force static
|
||||||
|
libraries to be built. It is not currently possible to build static and
|
||||||
|
shared libraries in a single pass.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt>
|
||||||
|
<dd><p>These environment variables
|
||||||
|
control the C and C++ compilers used during the build. By default,
|
||||||
|
<code>gcc</code> and <code>g++</code> are used and the debug/optimisation
|
||||||
|
level is left unchanged.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>LDFLAGS</code></dt>
|
||||||
|
<dd><p>An environment variable specifying flags to
|
||||||
|
pass when linking programs. These should be empty and
|
||||||
|
<code>PKG_CONFIG_PATH</code> is recommended to be used instead. If needed
|
||||||
|
it can be used to direct the linker to use libraries in nonstandard
|
||||||
|
directories. For example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>PKG_CONFIG_PATH</code></dt>
|
||||||
|
<dd><p>The
|
||||||
|
<code>pkg-config</code> utility is a hard requirement for configuring and
|
||||||
|
building mesa. It is used to search for external libraries
|
||||||
|
on the system. This environment variable is used to control the search
|
||||||
|
path for <code>pkg-config</code>. For instance, setting
|
||||||
|
<code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for
|
||||||
|
package metadata in <code>/usr/X11R6</code> before the standard
|
||||||
|
directories.</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
There are also a few general options for altering the Mesa build:
|
||||||
|
</p>
|
||||||
|
<dl>
|
||||||
|
<dt><code>--enable-debug</code></dt>
|
||||||
|
<dd><p>This option will set the compiler debug/optimisation levels (if the user
|
||||||
|
hasn't already set them via the CFLAGS/CXXFLAGS) and macros to aid in
|
||||||
|
debugging the Mesa libraries.</p>
|
||||||
|
|
||||||
|
<p>Note that enabling this option can lead to noticeable loss of performance.</p>
|
||||||
|
|
||||||
|
<dt><code>--disable-asm</code></dt>
|
||||||
|
<dd><p>There are assembly routines
|
||||||
|
available for a few architectures. These will be used by default if
|
||||||
|
one of these architectures is detected. This option ensures that
|
||||||
|
assembly will not be used.</p>
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt><code>--build=</code></dt>
|
||||||
|
<dt><code>--host=</code></dt>
|
||||||
|
<dd><p>By default, the build will compile code for the architecture that
|
||||||
|
it's running on. In order to build cross-compile Mesa on a x86-64 machine
|
||||||
|
that is to run on a i686, one would need to set the options to:</p>
|
||||||
|
|
||||||
|
<p><code>--build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu</code></p>
|
||||||
|
|
||||||
|
Note that these can vary from distribution to distribution. For more
|
||||||
|
information check with the
|
||||||
|
<a href="https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html">
|
||||||
|
autoconf manual</a>.
|
||||||
|
Note that you will need to correctly set <code>PKG_CONFIG_PATH</code> as well.
|
||||||
|
|
||||||
|
|
||||||
|
<p>In some cases a single compiler is capable of handling both architectures
|
||||||
|
(multilib) in that case one would need to set the <code>CC,CXX</code> variables
|
||||||
|
appending the correct machine options. Seek your compiler documentation for
|
||||||
|
further information -
|
||||||
|
<a href="https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html"> gcc
|
||||||
|
machine dependent options</a></p>
|
||||||
|
|
||||||
|
<p>In addition to specifying correct <code>PKG_CONFIG_PATH</code> for the target
|
||||||
|
architecture, the following should be sufficient to configure multilib Mesa</p>
|
||||||
|
|
||||||
|
<code>./configure CC="gcc -m32" CXX="g++ -m32" --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu ...</code>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
<h2 id="driver">2. GL Driver Options</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
There are several different driver modes that Mesa can use. These are
|
||||||
|
described in more detail in the <a href="install.html">basic
|
||||||
|
installation instructions</a>. The Mesa driver is controlled through the
|
||||||
|
configure options <code>--enable-glx</code> and <code>--enable-osmesa</code>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3 id="xlib">Xlib</h3><p>
|
||||||
|
It uses Xlib as a software renderer to do all rendering. It corresponds
|
||||||
|
to the option <code>--enable-glx=xlib</code> or <code>--enable-glx=gallium-xlib</code>.
|
||||||
|
|
||||||
|
<h3 id="dri">DRI</h3><p>This mode uses the DRI hardware drivers for
|
||||||
|
accelerated OpenGL rendering. To enable use <code>--enable-glx=dri
|
||||||
|
--enable-dri</code>.
|
||||||
|
|
||||||
|
<!-- DRI specific options -->
|
||||||
|
<dl>
|
||||||
|
<dt><code>--with-dri-driverdir=DIR</code>
|
||||||
|
<dd><p> This option specifies the
|
||||||
|
location the DRI drivers will be installed to and the location libGL
|
||||||
|
will search for DRI drivers. The default is <code>${libdir}/dri</code>.
|
||||||
|
<dt><code>--with-dri-drivers=DRIVER,DRIVER,...</code>
|
||||||
|
<dd><p> This option
|
||||||
|
allows a specific set of DRI drivers to be built. For example,
|
||||||
|
<code>--with-dri-drivers="swrast,i965,radeon,nouveau"</code>. By
|
||||||
|
default, the drivers will be chosen depending on the target platform.
|
||||||
|
See the directory <code>src/mesa/drivers/dri</code> in the source tree
|
||||||
|
for available drivers. Beware that the swrast DRI driver is used by both
|
||||||
|
libGL and the X.Org xserver GLX module to do software rendering, so you
|
||||||
|
may run into problems if it is not available.
|
||||||
|
<!-- This explanation might be totally bogus. Kristian? -->
|
||||||
|
<dt><code>--disable-driglx-direct</code>
|
||||||
|
<dd><p> Disable direct rendering in
|
||||||
|
GLX. Normally, direct hardware rendering through the DRI drivers and
|
||||||
|
indirect software rendering are enabled in GLX. This option disables
|
||||||
|
direct rendering entirely. It can be useful on architectures where
|
||||||
|
kernel DRM modules are not available.
|
||||||
|
<dt><code>--enable-glx-tls</code> <dd><p>
|
||||||
|
Enable Thread Local Storage (TLS) in
|
||||||
|
GLX.
|
||||||
|
<dt><code>--with-expat=DIR</code>
|
||||||
|
<dd><p><strong>DEPRECATED</strong>, use <code>PKG_CONFIG_PATH</code> instead.</p>
|
||||||
|
<p>The DRI-enabled libGL uses expat to
|
||||||
|
parse the DRI configuration files in <code>${sysconfdir}/drirc</code> and
|
||||||
|
<code>~/.drirc</code>. This option allows a specific expat installation
|
||||||
|
to be used. For example, <code>--with-expat=/usr/local</code> will
|
||||||
|
search for expat headers and libraries in <code>/usr/local/include</code>
|
||||||
|
and <code>/usr/local/lib</code>, respectively.
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<h3 id="osmesa">OSMesa </h3><p> No libGL is built in this
|
||||||
|
mode. Instead, the driver code is built into the Off-Screen Mesa
|
||||||
|
(OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a>
|
||||||
|
page for more details. It corresponds to the option
|
||||||
|
<code>--enable-osmesa</code>.
|
||||||
|
|
||||||
|
<!-- OSMesa specific options -->
|
||||||
|
<dl>
|
||||||
|
<dt><code>--with-osmesa-bits=BITS</code>
|
||||||
|
<dd><p> This option allows the size
|
||||||
|
of the color channel in bits to be specified. By default, an 8-bit
|
||||||
|
channel will be used, and the driver will be named libOSMesa. Other
|
||||||
|
options are 16- and 32-bit color channels, which will add the bit size
|
||||||
|
to the library name. For example, <code>--with-osmesa-bits=16</code>
|
||||||
|
will create the libOSMesa16 library with a 16-bit color channel.
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
<h2 id="library">3. Library Options</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The configure script provides more fine grained control over the libraries
|
||||||
|
that will be built.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user