Compare commits
695 Commits
explicit-s
...
mesa-24.0.
Author | SHA1 | Date | |
---|---|---|---|
|
d6695f1641 | ||
|
8f3dfb0aaa | ||
|
c15886ec43 | ||
|
8c913751a2 | ||
|
16c64c184c | ||
|
d5675923b3 | ||
|
0fd4f15601 | ||
|
c3f11a4011 | ||
|
ea6c84849d | ||
|
93572f4e31 | ||
|
450ad166c0 | ||
|
331d440811 | ||
|
1bf184747e | ||
|
30ddd43e6d | ||
|
11f595f5e7 | ||
|
eac0e52cdb | ||
|
a0e1b5f436 | ||
|
2c1cbf296e | ||
|
699ec9c4c7 | ||
|
352d44ce5a | ||
|
69c7b25037 | ||
|
1aaec51f56 | ||
|
d3b8a28357 | ||
|
368892e9e2 | ||
|
ba4462df44 | ||
|
115598022a | ||
|
20595e465b | ||
|
6eaf495a19 | ||
|
5dbc8d493d | ||
|
0598097e8a | ||
|
74802851d2 | ||
|
028dc8957f | ||
|
c291a73202 | ||
|
c2739fefe3 | ||
|
e462e3cc39 | ||
|
abf8b28b65 | ||
|
9eb14991f9 | ||
|
c64129a0bd | ||
|
ca6431d9d7 | ||
|
df810add64 | ||
|
d68141bd68 | ||
|
0a312787cd | ||
|
ce7e1ca1fa | ||
|
254b300f6b | ||
|
6d23f70e79 | ||
|
9343ede6a2 | ||
|
5be42f6982 | ||
|
020d145f4a | ||
|
cb375dfe03 | ||
|
57198d2ca9 | ||
|
90012f1f66 | ||
|
38485a49f4 | ||
|
33d6e6f9a2 | ||
|
6fc67be3a5 | ||
|
58dfa780c1 | ||
|
4047c51834 | ||
|
cc175010c5 | ||
|
1b8bd9dd65 | ||
|
e76bce30e6 | ||
|
bd3a6fae9d | ||
|
9037c102f4 | ||
|
8aa5d5ca7f | ||
|
ea8729bc24 | ||
|
2c3d8d76aa | ||
|
c849ee432d | ||
|
eb8f6e9617 | ||
|
5c9360387a | ||
|
4ce32b754a | ||
|
d4eaa3f7f2 | ||
|
a351cbeff6 | ||
|
c5633dbbe3 | ||
|
0dfac8d7f9 | ||
|
11a140b33e | ||
|
c6aed97536 | ||
|
90c4fa8a8f | ||
|
318711b84d | ||
|
aad74e3c73 | ||
|
bf737eef0b | ||
|
a24eb14fc0 | ||
|
4a04c47a5f | ||
|
a9140ec2f7 | ||
|
9f0f6df18c | ||
|
db932b6456 | ||
|
9ea069be85 | ||
|
0051354249 | ||
|
39e6ab2483 | ||
|
7ed240c627 | ||
|
0a174bb629 | ||
|
4af94a8214 | ||
|
b4af8ee0a5 | ||
|
695c875b04 | ||
|
c2dc7eff44 | ||
|
a983e8dcbf | ||
|
1ac05d0409 | ||
|
8197d55180 | ||
|
b13f4897e5 | ||
|
8f0d4074ad | ||
|
714f7bd58b | ||
|
0b1d5f32f8 | ||
|
5d0c48b817 | ||
|
e1332ee978 | ||
|
e65cf53979 | ||
|
b114598270 | ||
|
334cba5e20 | ||
|
c659c7e660 | ||
|
77c49fc246 | ||
|
90b256f146 | ||
|
f174be0a3e | ||
|
de5be437a9 | ||
|
e4117e7fb0 | ||
|
e8816cf5ae | ||
|
5345aceffa | ||
|
a6d4353291 | ||
|
8a04af36f2 | ||
|
6a985ac55f | ||
|
2cfab55cba | ||
|
fe5147ae49 | ||
|
93ce419991 | ||
|
9bcd937968 | ||
|
767a40dfa6 | ||
|
1b584ada4b | ||
|
e4cac5d357 | ||
|
2f6cec1ed6 | ||
|
6c00d37aa8 | ||
|
f35fc4ace8 | ||
|
266238b88b | ||
|
6ba5ef79df | ||
|
28cd577dd3 | ||
|
39e103e13b | ||
|
5a1d9cb484 | ||
|
51dd480f79 | ||
|
c9429bce04 | ||
|
68343412ff | ||
|
7afd8e495a | ||
|
062a764258 | ||
|
4c4b655c9e | ||
|
5e2893babe | ||
|
b0c7292db5 | ||
|
881f4d6036 | ||
|
a4639e866d | ||
|
15e6d8b8d2 | ||
|
431c00e39d | ||
|
62cba397d1 | ||
|
052f4952f2 | ||
|
c4b6f6b450 | ||
|
8b496ec0ab | ||
|
2a82433d7b | ||
|
bc76037811 | ||
|
dc3a8b54b8 | ||
|
e01f71ad46 | ||
|
658e39802c | ||
|
9376ec8dcd | ||
|
c73b6da5b3 | ||
|
d731bfcd54 | ||
|
b255492acb | ||
|
976b75c8c5 | ||
|
7737614720 | ||
|
4de817cee2 | ||
|
066c61c748 | ||
|
cbbf9d781b | ||
|
4a33e47af5 | ||
|
df4f6b5491 | ||
|
b1087acbcb | ||
|
7bf97678dd | ||
|
63873590d8 | ||
|
64b0629062 | ||
|
e1c686778a | ||
|
ad2594ead4 | ||
|
b573f69885 | ||
|
b351969fa2 | ||
|
50669655ed | ||
|
dac8689fc3 | ||
|
c73e830dc9 | ||
|
5eb9128a52 | ||
|
a6aa5d30d7 | ||
|
b3a65a1881 | ||
|
60c8db6cd1 | ||
|
3e9ac50d37 | ||
|
6dab9b4a6d | ||
|
45904c576d | ||
|
1971a267bc | ||
|
5681b3604a | ||
|
0d608f1b5b | ||
|
a5d4638ed5 | ||
|
0deacc982b | ||
|
955d6229c1 | ||
|
9e225ce531 | ||
|
3935eb328f | ||
|
f144f32686 | ||
|
5e02f105d0 | ||
|
b07f9486ce | ||
|
94cb4761a1 | ||
|
25d0db95e0 | ||
|
f0e045931f | ||
|
661c93900c | ||
|
721dbc0afe | ||
|
24fd8685b7 | ||
|
95e350d2bf | ||
|
0c3ab0517a | ||
|
23d2c845f9 | ||
|
b87c4de1b6 | ||
|
f08cb1aa44 | ||
|
23a9b2ba84 | ||
|
f21d4dbee6 | ||
|
398bd27e98 | ||
|
b21da22332 | ||
|
1cc79c6d89 | ||
|
f794f5fa08 | ||
|
2f9c2f74ce | ||
|
b657ee8138 | ||
|
92cf2460ef | ||
|
12d72d4d37 | ||
|
eadd6fd2f8 | ||
|
8f5cdfe3fe | ||
|
db324a6bfd | ||
|
4b5623a067 | ||
|
ef08816b25 | ||
|
5254932711 | ||
|
7cbcbd3bbf | ||
|
33da1afe5d | ||
|
f0ab4edc1b | ||
|
8ab2fb3fe4 | ||
|
c84e2e3181 | ||
|
d7af7fdecc | ||
|
27faffb976 | ||
|
da2e83a332 | ||
|
b10ce2157b | ||
|
4bd77aff49 | ||
|
6c9706d99e | ||
|
c34dc4bebf | ||
|
6c4a85a04e | ||
|
e0c85b916c | ||
|
f8bfdc4bbb | ||
|
3a181751ee | ||
|
60c5bc93b4 | ||
|
06d94df022 | ||
|
bb6a55b75b | ||
|
ea5e99da51 | ||
|
25dac7bc12 | ||
|
0bc813906c | ||
|
f942a50676 | ||
|
9900dc15e4 | ||
|
acee542721 | ||
|
0edfbaaf99 | ||
|
7c6ea9011b | ||
|
cdfe4171c5 | ||
|
31be238fe8 | ||
|
32c80c965c | ||
|
cd6b71cd47 | ||
|
465e9bd99e | ||
|
aade46435a | ||
|
27c7c50793 | ||
|
21e95719ee | ||
|
90dc45bcff | ||
|
b75b707f96 | ||
|
3e0fc344c9 | ||
|
53ad33ce26 | ||
|
2e028d7cf3 | ||
|
b0ada3497c | ||
|
0a04f00123 | ||
|
8428accd42 | ||
|
4f34ef90af | ||
|
12ac7ecdf2 | ||
|
2e08bfb5df | ||
|
be542ad96f | ||
|
e07d16f3d8 | ||
|
a2f3d6b4e2 | ||
|
90575edff3 | ||
|
721997fc9b | ||
|
c01e156621 | ||
|
1ef6511564 | ||
|
c9c61a2f52 | ||
|
97ce881041 | ||
|
8643637612 | ||
|
75acf5c478 | ||
|
a006716ad4 | ||
|
6358b96b31 | ||
|
a12c72fc97 | ||
|
1d6cc85e8d | ||
|
65399c4dd6 | ||
|
bd8d5d196a | ||
|
fdf70bb811 | ||
|
daf78a80f3 | ||
|
3a8b733daf | ||
|
ddbf64abe6 | ||
|
aaf2417cdb | ||
|
95f7e7ce0b | ||
|
ebd28f22ac | ||
|
2832e9fe77 | ||
|
57d1d40413 | ||
|
9909b84f5b | ||
|
a38268cfbe | ||
|
b71cae2608 | ||
|
b106553008 | ||
|
ff466be7d8 | ||
|
ff06623baf | ||
|
90386f2a27 | ||
|
c318561067 | ||
|
895bc56899 | ||
|
63218f4161 | ||
|
47bbdbec9b | ||
|
babead0a4b | ||
|
ef52324fb9 | ||
|
84abf14d9c | ||
|
29afc1c53e | ||
|
640932a664 | ||
|
319f9314e2 | ||
|
822212ceda | ||
|
03bc6156a3 | ||
|
d5b22fa737 | ||
|
724b1c197d | ||
|
7f56248fa7 | ||
|
2eb71d157c | ||
|
9e5f6d42d1 | ||
|
5b8ee85c1a | ||
|
90dcd95c0e | ||
|
c4d371fa7e | ||
|
7c2243b1db | ||
|
991396e823 | ||
|
0aeacc0883 | ||
|
ce73c8f829 | ||
|
bcad1274bb | ||
|
8ee75c66d3 | ||
|
ed886a26c7 | ||
|
b775fb81e9 | ||
|
e9551eaf33 | ||
|
c46abe651b | ||
|
c93608ecf9 | ||
|
00de0668b5 | ||
|
d45476c079 | ||
|
c679b07111 | ||
|
41b3728135 | ||
|
c54a222442 | ||
|
5e8ca5d067 | ||
|
4364f09974 | ||
|
8c84083a17 | ||
|
ead9441e18 | ||
|
5ce5cfa3b6 | ||
|
79bd37189b | ||
|
9ec4e8aa47 | ||
|
933f7a68d1 | ||
|
eecce40e2a | ||
|
dfc52d165a | ||
|
c968caaa69 | ||
|
14a15f8265 | ||
|
d12ea6f472 | ||
|
6fdb734b86 | ||
|
05eb8397cd | ||
|
09073442c1 | ||
|
2ee94a147c | ||
|
d92001d59c | ||
|
8579909cb5 | ||
|
3426b29094 | ||
|
aa42cefb3c | ||
|
b98965d507 | ||
|
fa4eea1f12 | ||
|
1880875820 | ||
|
01a3bd1da3 | ||
|
131ee3ea4f | ||
|
71484427a8 | ||
|
5ce799b576 | ||
|
cb69a13079 | ||
|
cbcc0368fb | ||
|
343d1731ea | ||
|
e93dbb6df2 | ||
|
1885c9f4a9 | ||
|
79fd6ae01b | ||
|
32e278d0af | ||
|
77a4e8b7a4 | ||
|
68cf272b8a | ||
|
ae34f04d74 | ||
|
b89310ffed | ||
|
c154218160 | ||
|
d88d664399 | ||
|
a3b1539bb3 | ||
|
eb07359061 | ||
|
cf7f7e700e | ||
|
ebed52c790 | ||
|
63ab36fe28 | ||
|
042a8de6d1 | ||
|
082ca33d0f | ||
|
8e88a23e79 | ||
|
d83d9a1c80 | ||
|
b14d23014e | ||
|
8ea0390197 | ||
|
538f20c1e0 | ||
|
b23616ced2 | ||
|
85a62e0498 | ||
|
eb30cab5e4 | ||
|
bba7bd12e0 | ||
|
8f15da8e97 | ||
|
54cc1bd801 | ||
|
fdea6e7194 | ||
|
d8f16144d8 | ||
|
85338ceaf2 | ||
|
a2c0e08b45 | ||
|
4f94fcdf8e | ||
|
bb0e5fd621 | ||
|
ff6336ff29 | ||
|
5f5cecd9e5 | ||
|
d2b3fb381b | ||
|
dba05ca558 | ||
|
cced7e7b7a | ||
|
6ae0d0d77b | ||
|
ce3b50747a | ||
|
d216278366 | ||
|
335c32a168 | ||
|
2d0f20b40c | ||
|
abb3cb8f20 | ||
|
47bb143185 | ||
|
cc34111ec0 | ||
|
5131484a30 | ||
|
a3df5eab6c | ||
|
11367cc87a | ||
|
8a5c89a294 | ||
|
7e6f55f336 | ||
|
b137afc1e6 | ||
|
b067a61c07 | ||
|
e7244292ce | ||
|
6157ac47f5 | ||
|
dd627a3462 | ||
|
f22f1117bd | ||
|
b44886773c | ||
|
d6aefb583e | ||
|
e94f1fc304 | ||
|
046ca162a9 | ||
|
c440d7ceef | ||
|
20cc365eb2 | ||
|
cf0ed80d3a | ||
|
850c9dbdc9 | ||
|
baba35ed69 | ||
|
ffd79476ec | ||
|
ab000d7951 | ||
|
2728e5f2cc | ||
|
313a9e6b73 | ||
|
f5311e2418 | ||
|
d2c6a48ee9 | ||
|
aead18c79d | ||
|
40ab1da1b4 | ||
|
83250a30aa | ||
|
6aa24ea086 | ||
|
5e178a07a0 | ||
|
da3ac67e23 | ||
|
76bb6e7f8e | ||
|
21090c8d3e | ||
|
c8bdf6129a | ||
|
d50d8ea2ba | ||
|
c7f3e736a0 | ||
|
db5a997626 | ||
|
d3df85a197 | ||
|
d0ea44cfdc | ||
|
2e1ccf1c59 | ||
|
2bc85abbf2 | ||
|
0f8d77fc04 | ||
|
6add041513 | ||
|
0de687d8f8 | ||
|
8dd90997d7 | ||
|
71442fdd6f | ||
|
2128a8a07b | ||
|
e814fc81b0 | ||
|
c126631fe7 | ||
|
519c96f3c8 | ||
|
a85301784d | ||
|
8a338675c6 | ||
|
abd5842ed7 | ||
|
f36d69d1d6 | ||
|
2166ee5c2e | ||
|
3794d15e61 | ||
|
40c72e73e7 | ||
|
7426889729 | ||
|
0738409dc7 | ||
|
cd582fa016 | ||
|
4d87eb83da | ||
|
e730b1b62b | ||
|
b9def8ca05 | ||
|
3c1a634e7e | ||
|
10eb12968b | ||
|
a9c5611b49 | ||
|
1528c6f524 | ||
|
25d2384e10 | ||
|
3120d28d2d | ||
|
7a0833e335 | ||
|
974829185e | ||
|
5da667ad3e | ||
|
1933436ada | ||
|
3ba68813f2 | ||
|
be7a46c3c5 | ||
|
000135abe1 | ||
|
c1b9d9118f | ||
|
edf03628d7 | ||
|
f32c100fcc | ||
|
eb72574c8d | ||
|
ef8f54de13 | ||
|
f43c8e6694 | ||
|
e886ee02ed | ||
|
4c434ac992 | ||
|
be6a909520 | ||
|
f41b8b1323 | ||
|
5c0de4ed9b | ||
|
9d42171013 | ||
|
19d0f2708f | ||
|
92cb6d5938 | ||
|
3e361635b8 | ||
|
68a46fd846 | ||
|
9b4abb2ed0 | ||
|
e4c2cbeb33 | ||
|
8d18be6357 | ||
|
c1afe86299 | ||
|
003ba21b5f | ||
|
73c637fcfe | ||
|
277c905b41 | ||
|
c206849335 | ||
|
a2a141dffa | ||
|
48608401a3 | ||
|
9b2d95ab13 | ||
|
73b955965b | ||
|
23442c825b | ||
|
d1b79ef57b | ||
|
e7c7b4e2f1 | ||
|
e8c13d5b9d | ||
|
ddb4aff2c2 | ||
|
963ad46563 | ||
|
8667ddc209 | ||
|
46c290d94b | ||
|
45c761f2c2 | ||
|
41b9381046 | ||
|
d329b14698 | ||
|
25b67841a1 | ||
|
7d8c7ccc0d | ||
|
feacc7e5a3 | ||
|
7d78a9b36b | ||
|
6e96c0df97 | ||
|
eac978e36d | ||
|
8bb8f2ef2c | ||
|
c3ba03903f | ||
|
cb6f5b00e9 | ||
|
223c8cd0d3 | ||
|
71c1740914 | ||
|
7bca150d5a | ||
|
7a27b2afba | ||
|
acdfcc4243 | ||
|
c47dbea2a0 | ||
|
4c25e80e6c | ||
|
3ee587ed56 | ||
|
d24a93dbec | ||
|
dbf730b14d | ||
|
b9554aead1 | ||
|
3f5b57c696 | ||
|
8c5fafef1d | ||
|
f45c9a38db | ||
|
4ce8d2d8b3 | ||
|
9f0048a73f | ||
|
60d67f1820 | ||
|
22bc2a897c | ||
|
8c6de60c54 | ||
|
e79ec6621b | ||
|
ee25160ed5 | ||
|
150a5d8298 | ||
|
03ecd8b0a5 | ||
|
74a0eb9cfa | ||
|
ec84f5a1e2 | ||
|
63dc250b69 | ||
|
a3a927a1cd | ||
|
f7c73de1c2 | ||
|
a085877c56 | ||
|
438a064a9c | ||
|
627a6d792a | ||
|
098fb7465d | ||
|
b728809a02 | ||
|
cb7fe98f3f | ||
|
22a21925e4 | ||
|
f135adb82a | ||
|
d2064c52fb | ||
|
e5ef4678dd | ||
|
9ac7a658c4 | ||
|
566c2835dc | ||
|
6bcf386f5c | ||
|
cad3474793 | ||
|
bbe9e29fd4 | ||
|
1aab9bc3f0 | ||
|
ec4d013e82 | ||
|
6924679fff | ||
|
780b69ebfc | ||
|
26db70410e | ||
|
d1b2c4152e | ||
|
ce8c959664 | ||
|
e6990f0316 | ||
|
6cced86088 | ||
|
ea8681f985 | ||
|
570faac1c1 | ||
|
a315353199 | ||
|
4c62d39214 | ||
|
5f7921620e | ||
|
8be6eab836 | ||
|
66d3b00eaa | ||
|
68e58263eb | ||
|
88880bfc78 | ||
|
439aff7ff6 | ||
|
e7715e39a5 | ||
|
97c0e12da3 | ||
|
dae3eb155a | ||
|
dc7b4111fd | ||
|
6ffceb7138 | ||
|
8f9db1db2e | ||
|
5b7553a101 | ||
|
77e4a2a06e | ||
|
2588d3f4b9 | ||
|
09bace40bf | ||
|
aba20a934d | ||
|
7e4e5fbdfb | ||
|
77c2a5d4d8 | ||
|
ba5fd74ae3 | ||
|
808f056688 | ||
|
d25222c73f | ||
|
3f1d5726cc | ||
|
466ae8c313 | ||
|
d2094c1e1b | ||
|
73dcdc7a4e | ||
|
1059613931 | ||
|
4410947ebe | ||
|
b85673b086 | ||
|
725af5b50c | ||
|
e2178ddc07 | ||
|
ee57c9df39 | ||
|
2a4f8de54f | ||
|
7af4d666a7 | ||
|
72d36448f8 | ||
|
e99d28b4e2 | ||
|
bfa31de5fd | ||
|
252a87e77c | ||
|
95167b212e | ||
|
8039f6a525 | ||
|
2e4623bd19 | ||
|
812bcc29af | ||
|
21d22653da | ||
|
ebd56d7a76 | ||
|
e1d20b69c4 | ||
|
0392e4bf5c | ||
|
364835c513 | ||
|
83b5a3a3f9 | ||
|
6d1dae874d | ||
|
484a051aaa | ||
|
cfa818f191 | ||
|
69cac7ae19 | ||
|
b428530441 | ||
|
057493cefb | ||
|
219cd6dc40 | ||
|
ba54cfa014 | ||
|
bc9a92aa03 | ||
|
085612fce5 | ||
|
74ee323c17 | ||
|
2ff9219359 | ||
|
ed75400a50 | ||
|
22c416e1c8 | ||
|
a062b0432a | ||
|
01b374ecaf | ||
|
e716b08f86 | ||
|
9d1a064663 | ||
|
f7f823c787 | ||
|
b65d7520f6 | ||
|
1246e54f1c | ||
|
4175b4d547 | ||
|
9732d1bdcd | ||
|
8974222433 | ||
|
ce34ec41cd | ||
|
3dabc03b58 | ||
|
25ae9134dd | ||
|
43a00ad0fa | ||
|
78fd14d938 | ||
|
c5b8590e6d | ||
|
9888a95130 | ||
|
05ff891088 | ||
|
fc4180339c | ||
|
b39ee4d766 | ||
|
5b8984f32f | ||
|
eb3d73073f | ||
|
f19b7d8dfc | ||
|
04ffe4771e | ||
|
0ebdd39d85 | ||
|
fcd78c5281 | ||
|
97ebcff41c | ||
|
6febac5c96 | ||
|
ab960ee0bf | ||
|
fc11cbb37e | ||
|
1f5604ed45 | ||
|
cc677d7c30 | ||
|
f575e2b9f1 | ||
|
3753919715 | ||
|
757192b046 | ||
|
02b5a2348d | ||
|
3c36933195 | ||
|
ae5c0e6600 | ||
|
f1064107e9 | ||
|
6b4f639474 | ||
|
26a96af808 |
@@ -2,7 +2,6 @@
|
|||||||
# enforcement in the CI.
|
# enforcement in the CI.
|
||||||
|
|
||||||
src/gallium/drivers/i915
|
src/gallium/drivers/i915
|
||||||
src/gallium/targets/teflon/**/*
|
|
||||||
src/amd/vulkan/**/*
|
src/amd/vulkan/**/*
|
||||||
src/amd/compiler/**/*
|
src/amd/compiler/**/*
|
||||||
src/egl/**/*
|
src/egl/**/*
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,4 +3,3 @@
|
|||||||
*.pyo
|
*.pyo
|
||||||
*.out
|
*.out
|
||||||
/build
|
/build
|
||||||
.venv/
|
|
||||||
|
@@ -160,7 +160,25 @@ include:
|
|||||||
- local: '.gitlab-ci/farm-rules.yml'
|
- local: '.gitlab-ci/farm-rules.yml'
|
||||||
- local: '.gitlab-ci/test-source-dep.yml'
|
- local: '.gitlab-ci/test-source-dep.yml'
|
||||||
- local: 'docs/gitlab-ci.yml'
|
- local: 'docs/gitlab-ci.yml'
|
||||||
- local: 'src/**/ci/gitlab-ci.yml'
|
- local: 'src/amd/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/broadcom/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/etnaviv/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/freedreno/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/crocus/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/d3d12/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/i915/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/r300/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/lima/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/nouveau/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/softpipe/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/virgl/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/drivers/zink/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/gallium/frontends/lavapipe/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/intel/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/microsoft/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/panfrost/ci/gitlab-ci.yml'
|
||||||
|
- local: 'src/virtio/ci/gitlab-ci.yml'
|
||||||
|
|
||||||
|
|
||||||
# YAML anchors for rule conditions
|
# YAML anchors for rule conditions
|
||||||
@@ -276,32 +294,6 @@ sanity:
|
|||||||
script:
|
script:
|
||||||
# ci-fairy check-commits --junit-xml=check-commits.xml
|
# ci-fairy check-commits --junit-xml=check-commits.xml
|
||||||
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
|
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
|
||||||
- |
|
|
||||||
set -eu
|
|
||||||
image_tags=(
|
|
||||||
DEBIAN_BASE_TAG
|
|
||||||
DEBIAN_BUILD_TAG
|
|
||||||
DEBIAN_X86_64_TEST_ANDROID_TAG
|
|
||||||
DEBIAN_X86_64_TEST_GL_TAG
|
|
||||||
DEBIAN_X86_64_TEST_VK_TAG
|
|
||||||
ALPINE_X86_64_BUILD_TAG
|
|
||||||
ALPINE_X86_64_LAVA_SSH_TAG
|
|
||||||
FEDORA_X86_64_BUILD_TAG
|
|
||||||
KERNEL_ROOTFS_TAG
|
|
||||||
KERNEL_TAG
|
|
||||||
PKG_REPO_REV
|
|
||||||
WINDOWS_X64_MSVC_TAG
|
|
||||||
WINDOWS_X64_BUILD_TAG
|
|
||||||
WINDOWS_X64_TEST_TAG
|
|
||||||
)
|
|
||||||
for var in "${image_tags[@]}"
|
|
||||||
do
|
|
||||||
if [ "$(echo -n "${!var}" | wc -c)" -gt 20 ]
|
|
||||||
then
|
|
||||||
echo "$var is too long; please make sure it is at most 20 chars."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
artifacts:
|
artifacts:
|
||||||
when: on_failure
|
when: on_failure
|
||||||
reports:
|
reports:
|
||||||
|
@@ -9,9 +9,6 @@
|
|||||||
# submission, so skip it in the regular CI.
|
# submission, so skip it in the regular CI.
|
||||||
dEQP-VK.api.driver_properties.conformance_version
|
dEQP-VK.api.driver_properties.conformance_version
|
||||||
|
|
||||||
# Exclude this test which might fail when a new extension is implemented.
|
|
||||||
dEQP-VK.info.device_extensions
|
|
||||||
|
|
||||||
# These are tremendously slow (pushing toward a minute), and aren't
|
# These are tremendously slow (pushing toward a minute), and aren't
|
||||||
# reliable to be run in parallel with other tests due to CPU-side timing.
|
# reliable to be run in parallel with other tests due to CPU-side timing.
|
||||||
dEQP-GLES[0-9]*.functional.flush_finish.*
|
dEQP-GLES[0-9]*.functional.flush_finish.*
|
||||||
|
@@ -74,11 +74,10 @@ debian-testing:
|
|||||||
-D platforms=x11,wayland
|
-D platforms=x11,wayland
|
||||||
GALLIUM_ST: >
|
GALLIUM_ST: >
|
||||||
-D dri3=enabled
|
-D dri3=enabled
|
||||||
-D gallium-nine=true
|
|
||||||
-D gallium-va=enabled
|
-D gallium-va=enabled
|
||||||
-D gallium-rusticl=true
|
-D gallium-rusticl=true
|
||||||
GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915,r300"
|
GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915,r300"
|
||||||
VULKAN_DRIVERS: "swrast,amd,intel,intel_hasvk,virtio,nouveau"
|
VULKAN_DRIVERS: "swrast,amd,intel,intel_hasvk,virtio,nouveau-experimental"
|
||||||
BUILDTYPE: "debugoptimized"
|
BUILDTYPE: "debugoptimized"
|
||||||
EXTRA_OPTION: >
|
EXTRA_OPTION: >
|
||||||
-D spirv-to-dxil=true
|
-D spirv-to-dxil=true
|
||||||
@@ -104,22 +103,8 @@ debian-testing-asan:
|
|||||||
-D b_sanitize=address
|
-D b_sanitize=address
|
||||||
-D valgrind=disabled
|
-D valgrind=disabled
|
||||||
-D tools=dlclose-skip
|
-D tools=dlclose-skip
|
||||||
-D intel-clc=system
|
|
||||||
S3_ARTIFACT_NAME: ""
|
S3_ARTIFACT_NAME: ""
|
||||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||||
# Do a host build for intel-clc (asan complains not being loaded
|
|
||||||
# as the first library)
|
|
||||||
HOST_BUILD_OPTIONS: >
|
|
||||||
-D build-tests=false
|
|
||||||
-D enable-glcpp-tests=false
|
|
||||||
-D gallium-opencl=disabled
|
|
||||||
-D gallium-drivers=
|
|
||||||
-D vulkan-drivers=
|
|
||||||
-D video-codecs=
|
|
||||||
-D glx=disabled
|
|
||||||
-D platforms=
|
|
||||||
-D intel-clc=enabled
|
|
||||||
-D install-intel-clc=true
|
|
||||||
|
|
||||||
debian-testing-msan:
|
debian-testing-msan:
|
||||||
# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
|
# https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo
|
||||||
@@ -131,7 +116,6 @@ debian-testing-msan:
|
|||||||
EXTRA_OPTION:
|
EXTRA_OPTION:
|
||||||
-D b_sanitize=memory
|
-D b_sanitize=memory
|
||||||
-D b_lundef=false
|
-D b_lundef=false
|
||||||
-D intel-clc=system
|
|
||||||
S3_ARTIFACT_NAME: ""
|
S3_ARTIFACT_NAME: ""
|
||||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||||
# Don't run all the tests yet:
|
# Don't run all the tests yet:
|
||||||
@@ -140,19 +124,6 @@ debian-testing-msan:
|
|||||||
MESON_TEST_ARGS: "--suite glcpp --suite format"
|
MESON_TEST_ARGS: "--suite glcpp --suite format"
|
||||||
GALLIUM_DRIVERS: "freedreno,iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
GALLIUM_DRIVERS: "freedreno,iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus"
|
||||||
VULKAN_DRIVERS: intel,amd,broadcom,virtio
|
VULKAN_DRIVERS: intel,amd,broadcom,virtio
|
||||||
# Do a host build for intel-clc (msan complains about
|
|
||||||
# uninitialized values in the LLVM libs)
|
|
||||||
HOST_BUILD_OPTIONS: >
|
|
||||||
-D build-tests=false
|
|
||||||
-D enable-glcpp-tests=false
|
|
||||||
-D gallium-opencl=disabled
|
|
||||||
-D gallium-drivers=
|
|
||||||
-D vulkan-drivers=
|
|
||||||
-D video-codecs=
|
|
||||||
-D glx=disabled
|
|
||||||
-D platforms=
|
|
||||||
-D intel-clc=enabled
|
|
||||||
-D install-intel-clc=true
|
|
||||||
|
|
||||||
debian-build-testing:
|
debian-build-testing:
|
||||||
extends: .meson-build
|
extends: .meson-build
|
||||||
@@ -224,7 +195,6 @@ debian-release:
|
|||||||
-D osmesa=true
|
-D osmesa=true
|
||||||
-D tools=all
|
-D tools=all
|
||||||
-D intel-clc=enabled
|
-D intel-clc=enabled
|
||||||
-D intel-rt=enabled
|
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
BUILDTYPE: "release"
|
BUILDTYPE: "release"
|
||||||
S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
|
S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}"
|
||||||
@@ -249,7 +219,7 @@ alpine-build-testing:
|
|||||||
-D egl=enabled
|
-D egl=enabled
|
||||||
-D glvnd=false
|
-D glvnd=false
|
||||||
-D platforms=wayland
|
-D platforms=wayland
|
||||||
LLVM_VERSION: "16"
|
LLVM_VERSION: ""
|
||||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||||
GALLIUM_ST: >
|
GALLIUM_ST: >
|
||||||
-D dri3=enabled
|
-D dri3=enabled
|
||||||
@@ -295,9 +265,8 @@ fedora-release:
|
|||||||
-D selinux=true
|
-D selinux=true
|
||||||
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
-D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination
|
||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D intel-rt=enabled
|
-D intel-clc=enabled
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
-D teflon=true
|
|
||||||
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink"
|
||||||
GALLIUM_ST: >
|
GALLIUM_ST: >
|
||||||
-D dri3=enabled
|
-D dri3=enabled
|
||||||
@@ -347,7 +316,6 @@ debian-android:
|
|||||||
-D platform-sdk-version=33
|
-D platform-sdk-version=33
|
||||||
-D valgrind=disabled
|
-D valgrind=disabled
|
||||||
-D android-libbacktrace=disabled
|
-D android-libbacktrace=disabled
|
||||||
-D intel-clc=system
|
|
||||||
GALLIUM_ST: >
|
GALLIUM_ST: >
|
||||||
-D dri3=disabled
|
-D dri3=disabled
|
||||||
-D gallium-vdpau=disabled
|
-D gallium-vdpau=disabled
|
||||||
@@ -356,19 +324,8 @@ debian-android:
|
|||||||
-D gallium-xa=disabled
|
-D gallium-xa=disabled
|
||||||
-D gallium-nine=false
|
-D gallium-nine=false
|
||||||
-D gallium-rusticl=false
|
-D gallium-rusticl=false
|
||||||
LLVM_VERSION: "15"
|
LLVM_VERSION: ""
|
||||||
PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
|
PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
|
||||||
HOST_BUILD_OPTIONS: >
|
|
||||||
-D build-tests=false
|
|
||||||
-D enable-glcpp-tests=false
|
|
||||||
-D gallium-opencl=disabled
|
|
||||||
-D gallium-drivers=
|
|
||||||
-D vulkan-drivers=
|
|
||||||
-D video-codecs=
|
|
||||||
-D glx=disabled
|
|
||||||
-D platforms=
|
|
||||||
-D intel-clc=enabled
|
|
||||||
-D install-intel-clc=true
|
|
||||||
ARTIFACTS_DEBUG_SYMBOLS: 1
|
ARTIFACTS_DEBUG_SYMBOLS: 1
|
||||||
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE}
|
||||||
script:
|
script:
|
||||||
@@ -459,7 +416,6 @@ debian-arm64:
|
|||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
-D perfetto=true
|
-D perfetto=true
|
||||||
-D freedreno-kmds=msm,virtio
|
-D freedreno-kmds=msm,virtio
|
||||||
-D teflon=true
|
|
||||||
S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
|
S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE}
|
||||||
script:
|
script:
|
||||||
- .gitlab-ci/meson/build.sh
|
- .gitlab-ci/meson/build.sh
|
||||||
@@ -540,7 +496,7 @@ debian-clang:
|
|||||||
-D opencl-spirv=true
|
-D opencl-spirv=true
|
||||||
-D shared-glapi=enabled
|
-D shared-glapi=enabled
|
||||||
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
|
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi"
|
||||||
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau
|
VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau-experimental
|
||||||
EXTRA_OPTION:
|
EXTRA_OPTION:
|
||||||
-D spirv-to-dxil=true
|
-D spirv-to-dxil=true
|
||||||
-D osmesa=true
|
-D osmesa=true
|
||||||
@@ -549,9 +505,7 @@ debian-clang:
|
|||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D build-aco-tests=true
|
-D build-aco-tests=true
|
||||||
-D intel-clc=enabled
|
-D intel-clc=enabled
|
||||||
-D intel-rt=enabled
|
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
-D teflon=true
|
|
||||||
CC: clang-${LLVM_VERSION}
|
CC: clang-${LLVM_VERSION}
|
||||||
CXX: clang++-${LLVM_VERSION}
|
CXX: clang++-${LLVM_VERSION}
|
||||||
|
|
||||||
@@ -618,11 +572,11 @@ debian-vulkan:
|
|||||||
-D c_args=-fno-sanitize-recover=all
|
-D c_args=-fno-sanitize-recover=all
|
||||||
-D cpp_args=-fno-sanitize-recover=all
|
-D cpp_args=-fno-sanitize-recover=all
|
||||||
UBSAN_OPTIONS: "print_stacktrace=1"
|
UBSAN_OPTIONS: "print_stacktrace=1"
|
||||||
VULKAN_DRIVERS: amd,broadcom,freedreno,intel,intel_hasvk,panfrost,virtio,imagination-experimental,microsoft-experimental,nouveau
|
VULKAN_DRIVERS: amd,broadcom,freedreno,intel,intel_hasvk,virtio,imagination-experimental,microsoft-experimental
|
||||||
EXTRA_OPTION: >
|
EXTRA_OPTION: >
|
||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D build-aco-tests=true
|
-D build-aco-tests=true
|
||||||
-D intel-rt=disabled
|
-D intel-clc=disabled
|
||||||
-D imagination-srv=true
|
-D imagination-srv=true
|
||||||
|
|
||||||
debian-x86_32:
|
debian-x86_32:
|
||||||
@@ -637,18 +591,6 @@ debian-x86_32:
|
|||||||
LLVM_VERSION: 15
|
LLVM_VERSION: 15
|
||||||
EXTRA_OPTION: >
|
EXTRA_OPTION: >
|
||||||
-D vulkan-layers=device-select,overlay
|
-D vulkan-layers=device-select,overlay
|
||||||
-D intel-clc=system
|
|
||||||
HOST_BUILD_OPTIONS: >
|
|
||||||
-D build-tests=false
|
|
||||||
-D enable-glcpp-tests=false
|
|
||||||
-D gallium-opencl=disabled
|
|
||||||
-D gallium-drivers=
|
|
||||||
-D vulkan-drivers=
|
|
||||||
-D video-codecs=
|
|
||||||
-D glx=disabled
|
|
||||||
-D platforms=
|
|
||||||
-D intel-clc=enabled
|
|
||||||
-D install-intel-clc=true
|
|
||||||
|
|
||||||
debian-s390x:
|
debian-s390x:
|
||||||
extends:
|
extends:
|
||||||
|
@@ -39,6 +39,7 @@ for var in \
|
|||||||
DEQP_RUNNER_OPTIONS \
|
DEQP_RUNNER_OPTIONS \
|
||||||
DEQP_SUITE \
|
DEQP_SUITE \
|
||||||
DEQP_TEMP_DIR \
|
DEQP_TEMP_DIR \
|
||||||
|
DEQP_VARIANT \
|
||||||
DEQP_VER \
|
DEQP_VER \
|
||||||
DEQP_WIDTH \
|
DEQP_WIDTH \
|
||||||
DEVICE_NAME \
|
DEVICE_NAME \
|
||||||
@@ -120,7 +121,6 @@ for var in \
|
|||||||
VK_ICD_FILENAMES \
|
VK_ICD_FILENAMES \
|
||||||
VKD3D_PROTON_RESULTS \
|
VKD3D_PROTON_RESULTS \
|
||||||
VKD3D_CONFIG \
|
VKD3D_CONFIG \
|
||||||
VKD3D_TEST_EXCLUDE \
|
|
||||||
ZINK_DESCRIPTORS \
|
ZINK_DESCRIPTORS \
|
||||||
ZINK_DEBUG \
|
ZINK_DEBUG \
|
||||||
LVP_POISON_MEMORY \
|
LVP_POISON_MEMORY \
|
||||||
|
@@ -7,8 +7,6 @@
|
|||||||
# Second-stage init, used to set up devices and our job environment before
|
# Second-stage init, used to set up devices and our job environment before
|
||||||
# running tests.
|
# running tests.
|
||||||
|
|
||||||
shopt -s extglob
|
|
||||||
|
|
||||||
# Make sure to kill itself and all the children process from this script on
|
# Make sure to kill itself and all the children process from this script on
|
||||||
# exiting, since any console output may interfere with LAVA signals handling,
|
# exiting, since any console output may interfere with LAVA signals handling,
|
||||||
# which based on the log console.
|
# which based on the log console.
|
||||||
@@ -108,13 +106,6 @@ export XDG_CACHE_HOME=/tmp
|
|||||||
# Make sure Python can find all our imports
|
# Make sure Python can find all our imports
|
||||||
export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
|
export PYTHONPATH=$(python3 -c "import sys;print(\":\".join(sys.path))")
|
||||||
|
|
||||||
# If we need to specify a driver, it means several drivers could pick up this gpu;
|
|
||||||
# ensure that the other driver can't accidentally be used
|
|
||||||
if [ -n "$MESA_LOADER_DRIVER_OVERRIDE" ]; then
|
|
||||||
rm /install/lib/dri/!($MESA_LOADER_DRIVER_OVERRIDE)_dri.so
|
|
||||||
fi
|
|
||||||
ls -1 /install/lib/dri/*_dri.so
|
|
||||||
|
|
||||||
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
if [ "$HWCI_FREQ_MAX" = "true" ]; then
|
||||||
# Ensure initialization of the DRM device (needed by MSM)
|
# Ensure initialization of the DRM device (needed by MSM)
|
||||||
head -0 /dev/dri/renderD128
|
head -0 /dev/dri/renderD128
|
||||||
|
@@ -8,8 +8,6 @@
|
|||||||
set -e
|
set -e
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
export LLVM_VERSION="${LLVM_VERSION:=16}"
|
|
||||||
|
|
||||||
EPHEMERAL=(
|
EPHEMERAL=(
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -18,7 +16,6 @@ DEPS=(
|
|||||||
bash
|
bash
|
||||||
bison
|
bison
|
||||||
ccache
|
ccache
|
||||||
clang16-dev
|
|
||||||
cmake
|
cmake
|
||||||
clang-dev
|
clang-dev
|
||||||
coreutils
|
coreutils
|
||||||
@@ -30,7 +27,6 @@ DEPS=(
|
|||||||
gettext
|
gettext
|
||||||
glslang
|
glslang
|
||||||
linux-headers
|
linux-headers
|
||||||
llvm16-static
|
|
||||||
llvm16-dev
|
llvm16-dev
|
||||||
meson
|
meson
|
||||||
expat-dev
|
expat-dev
|
||||||
@@ -52,10 +48,6 @@ DEPS=(
|
|||||||
|
|
||||||
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
apk --no-cache add "${DEPS[@]}" "${EPHEMERAL[@]}"
|
||||||
|
|
||||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
|
||||||
|
|
||||||
. .gitlab-ci/container/build-libclc.sh
|
|
||||||
|
|
||||||
. .gitlab-ci/container/container_pre_build.sh
|
. .gitlab-ci/container/container_pre_build.sh
|
||||||
|
|
||||||
|
|
||||||
|
@@ -6,13 +6,13 @@ set -ex
|
|||||||
git config --global user.email "mesa@example.com"
|
git config --global user.email "mesa@example.com"
|
||||||
git config --global user.name "Mesa CI"
|
git config --global user.name "Mesa CI"
|
||||||
|
|
||||||
CROSVM_VERSION=1641c55bcc922588e24de73e9cca7b5e4005bd6d
|
CROSVM_VERSION=e3815e62d675ef436956a992e0ed58b7309c759d
|
||||||
git clone --single-branch -b main --no-checkout https://chromium.googlesource.com/crosvm/crosvm /platform/crosvm
|
git clone --single-branch -b main --no-checkout https://chromium.googlesource.com/crosvm/crosvm /platform/crosvm
|
||||||
pushd /platform/crosvm
|
pushd /platform/crosvm
|
||||||
git checkout "$CROSVM_VERSION"
|
git checkout "$CROSVM_VERSION"
|
||||||
git submodule update --init
|
git submodule update --init
|
||||||
|
|
||||||
VIRGLRENDERER_VERSION=d9c002fac153b834a2c17731f2b85c36e333e102
|
VIRGLRENDERER_VERSION=747c6ae5b194ca551a79958a9a86c42bddcc4553
|
||||||
rm -rf third_party/virglrenderer
|
rm -rf third_party/virglrenderer
|
||||||
git clone --single-branch -b main --no-checkout https://gitlab.freedesktop.org/virgl/virglrenderer.git third_party/virglrenderer
|
git clone --single-branch -b main --no-checkout https://gitlab.freedesktop.org/virgl/virglrenderer.git third_party/virglrenderer
|
||||||
pushd third_party/virglrenderer
|
pushd third_party/virglrenderer
|
||||||
@@ -31,10 +31,10 @@ RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
|||||||
--version 0.65.1 \
|
--version 0.65.1 \
|
||||||
$EXTRA_CARGO_ARGS
|
$EXTRA_CARGO_ARGS
|
||||||
|
|
||||||
CROSVM_USE_SYSTEM_MINIGBM=1 CROSVM_USE_SYSTEM_VIRGLRENDERER=1 RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
CROSVM_USE_SYSTEM_VIRGLRENDERER=1 RUSTFLAGS='-L native=/usr/local/lib' cargo install \
|
||||||
-j ${FDO_CI_CONCURRENT:-4} \
|
-j ${FDO_CI_CONCURRENT:-4} \
|
||||||
--locked \
|
--locked \
|
||||||
--features 'default-no-sandbox gpu x virgl_renderer' \
|
--features 'default-no-sandbox gpu x virgl_renderer virgl_renderer_next' \
|
||||||
--path . \
|
--path . \
|
||||||
--root /usr/local \
|
--root /usr/local \
|
||||||
$EXTRA_CARGO_ARGS
|
$EXTRA_CARGO_ARGS
|
||||||
|
@@ -3,37 +3,31 @@
|
|||||||
|
|
||||||
# When changing this file, you need to bump the following
|
# When changing this file, you need to bump the following
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
# .gitlab-ci/image-tags.yml tags:
|
||||||
|
# DEBIAN_BASE_TAG
|
||||||
# DEBIAN_X86_64_TEST_ANDROID_TAG
|
# DEBIAN_X86_64_TEST_ANDROID_TAG
|
||||||
# DEBIAN_X86_64_TEST_GL_TAG
|
|
||||||
# DEBIAN_X86_64_TEST_VK_TAG
|
|
||||||
# KERNEL_ROOTFS_TAG
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
DEQP_RUNNER_VERSION=0.18.0
|
DEQP_RUNNER_VERSION=0.18.0
|
||||||
|
|
||||||
DEQP_RUNNER_GIT_URL="${DEQP_RUNNER_GIT_URL:-https://gitlab.freedesktop.org/mesa/deqp-runner.git}"
|
|
||||||
|
|
||||||
if [ -n "${DEQP_RUNNER_GIT_TAG}${DEQP_RUNNER_GIT_REV}" ]; then
|
if [ -n "${DEQP_RUNNER_GIT_TAG}${DEQP_RUNNER_GIT_REV}" ]; then
|
||||||
# Build and install from source
|
# Build and install from source
|
||||||
DEQP_RUNNER_CARGO_ARGS="--git $DEQP_RUNNER_GIT_URL"
|
DEQP_RUNNER_CARGO_ARGS="--git ${DEQP_RUNNER_GIT_URL:-https://gitlab.freedesktop.org/anholt/deqp-runner.git}"
|
||||||
|
|
||||||
if [ -n "${DEQP_RUNNER_GIT_TAG}" ]; then
|
if [ -n "${DEQP_RUNNER_GIT_TAG}" ]; then
|
||||||
DEQP_RUNNER_CARGO_ARGS="--tag ${DEQP_RUNNER_GIT_TAG} ${DEQP_RUNNER_CARGO_ARGS}"
|
DEQP_RUNNER_CARGO_ARGS="--tag ${DEQP_RUNNER_GIT_TAG} ${DEQP_RUNNER_CARGO_ARGS}"
|
||||||
DEQP_RUNNER_GIT_CHECKOUT="$DEQP_RUNNER_GIT_TAG"
|
|
||||||
else
|
else
|
||||||
DEQP_RUNNER_CARGO_ARGS="--rev ${DEQP_RUNNER_GIT_REV} ${DEQP_RUNNER_CARGO_ARGS}"
|
DEQP_RUNNER_CARGO_ARGS="--rev ${DEQP_RUNNER_GIT_REV} ${DEQP_RUNNER_CARGO_ARGS}"
|
||||||
DEQP_RUNNER_GIT_CHECKOUT="$DEQP_RUNNER_GIT_REV"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DEQP_RUNNER_CARGO_ARGS="${DEQP_RUNNER_CARGO_ARGS} ${EXTRA_CARGO_ARGS}"
|
DEQP_RUNNER_CARGO_ARGS="${DEQP_RUNNER_CARGO_ARGS} ${EXTRA_CARGO_ARGS}"
|
||||||
else
|
else
|
||||||
# Install from package registry
|
# Install from package registry
|
||||||
DEQP_RUNNER_CARGO_ARGS="--version ${DEQP_RUNNER_VERSION} ${EXTRA_CARGO_ARGS} -- deqp-runner"
|
DEQP_RUNNER_CARGO_ARGS="--version ${DEQP_RUNNER_VERSION} ${EXTRA_CARGO_ARGS} -- deqp-runner"
|
||||||
DEQP_RUNNER_GIT_CHECKOUT="v$DEQP_RUNNER_VERSION"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$RUST_TARGET" != *-android ]]; then
|
if [ -z "$ANDROID_NDK_HOME" ]; then
|
||||||
cargo install --locked \
|
cargo install --locked \
|
||||||
-j ${FDO_CI_CONCURRENT:-4} \
|
-j ${FDO_CI_CONCURRENT:-4} \
|
||||||
--root /usr/local \
|
--root /usr/local \
|
||||||
@@ -41,7 +35,7 @@ if [[ "$RUST_TARGET" != *-android ]]; then
|
|||||||
else
|
else
|
||||||
mkdir -p /deqp-runner
|
mkdir -p /deqp-runner
|
||||||
pushd /deqp-runner
|
pushd /deqp-runner
|
||||||
git clone --branch "$DEQP_RUNNER_GIT_CHECKOUT" --depth 1 "$DEQP_RUNNER_GIT_URL" deqp-runner-git
|
git clone --branch v${DEQP_RUNNER_VERSION} --depth 1 https://gitlab.freedesktop.org/anholt/deqp-runner.git deqp-runner-git
|
||||||
pushd deqp-runner-git
|
pushd deqp-runner-git
|
||||||
|
|
||||||
cargo install --locked \
|
cargo install --locked \
|
||||||
@@ -49,10 +43,10 @@ else
|
|||||||
--root /usr/local --version 2.10.0 \
|
--root /usr/local --version 2.10.0 \
|
||||||
cargo-ndk
|
cargo-ndk
|
||||||
|
|
||||||
rustup target add $RUST_TARGET
|
rustup target add x86_64-linux-android
|
||||||
RUSTFLAGS='-C target-feature=+crt-static' cargo ndk --target $RUST_TARGET build --release
|
RUSTFLAGS='-C target-feature=+crt-static' cargo ndk --target x86_64-linux-android build
|
||||||
|
|
||||||
mv target/$RUST_TARGET/release/deqp-runner /deqp-runner
|
mv target/x86_64-linux-android/debug/deqp-runner /deqp-runner
|
||||||
|
|
||||||
cargo uninstall --locked \
|
cargo uninstall --locked \
|
||||||
--root /usr/local \
|
--root /usr/local \
|
||||||
|
@@ -10,15 +10,20 @@
|
|||||||
|
|
||||||
set -ex -o pipefail
|
set -ex -o pipefail
|
||||||
|
|
||||||
# See `deqp_build_targets` below for which release is used to produce which
|
DEQP_VERSION=vulkan-cts-1.3.7.0
|
||||||
# binary. Unless this comment has bitrotten:
|
|
||||||
# - the VK release produces `deqp-vk`,
|
|
||||||
# - the GL release produces `glcts`, and
|
|
||||||
# - the GLES release produces `deqp-gles*` and `deqp-egl`
|
|
||||||
|
|
||||||
DEQP_VK_VERSION=1.3.7.0
|
git config --global user.email "mesa@example.com"
|
||||||
DEQP_GL_VERSION=4.6.4.0
|
git config --global user.name "Mesa CI"
|
||||||
DEQP_GLES_VERSION=3.2.10.0
|
git clone \
|
||||||
|
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
||||||
|
-b $DEQP_VERSION \
|
||||||
|
--depth 1 \
|
||||||
|
/VK-GL-CTS
|
||||||
|
pushd /VK-GL-CTS
|
||||||
|
|
||||||
|
mkdir -p /deqp
|
||||||
|
|
||||||
|
echo "dEQP base version $DEQP_VERSION" > /deqp/version-log
|
||||||
|
|
||||||
# Patches to VulkanCTS may come from commits in their repo (listed in
|
# Patches to VulkanCTS may come from commits in their repo (listed in
|
||||||
# cts_commits_to_backport) or patch files stored in our repo (in the patch
|
# cts_commits_to_backport) or patch files stored in our repo (in the patch
|
||||||
@@ -26,8 +31,7 @@ DEQP_GLES_VERSION=3.2.10.0
|
|||||||
# Both list variables would have comments explaining the reasons behind the
|
# Both list variables would have comments explaining the reasons behind the
|
||||||
# patches.
|
# patches.
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
cts_commits_to_backport=(
|
||||||
vk_cts_commits_to_backport=(
|
|
||||||
# Take multiview into account for task shader inv. stats
|
# Take multiview into account for task shader inv. stats
|
||||||
22aa3f4c59f6e1d4daebd5a8c9c05bce6cd3b63b
|
22aa3f4c59f6e1d4daebd5a8c9c05bce6cd3b63b
|
||||||
|
|
||||||
@@ -39,106 +43,30 @@ vk_cts_commits_to_backport=(
|
|||||||
|
|
||||||
# Fix several issues in dynamic rendering basic tests
|
# Fix several issues in dynamic rendering basic tests
|
||||||
c5453824b498c981c6ba42017d119f5de02a3e34
|
c5453824b498c981c6ba42017d119f5de02a3e34
|
||||||
|
|
||||||
# Add setVisible for VulkanWindowDirectDrm
|
|
||||||
a8466bf6ea98f6cd6733849ad8081775318a3e3e
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
for commit in "${cts_commits_to_backport[@]}"
|
||||||
vk_cts_patch_files=(
|
|
||||||
# Derivate subgroup fix
|
|
||||||
# https://github.com/KhronosGroup/VK-GL-CTS/pull/442
|
|
||||||
build-deqp-vk_Use-subgroups-helper-in-derivate-tests.patch
|
|
||||||
build-deqp-vk_Add-missing-subgroup-support-checks-for-linear-derivate-tests.patch
|
|
||||||
)
|
|
||||||
|
|
||||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
||||||
vk_cts_patch_files+=(
|
|
||||||
build-deqp-vk_Allow-running-on-Android-from-the-command-line.patch
|
|
||||||
build-deqp-vk_Android-prints-to-stdout-instead-of-logcat.patch
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
|
||||||
gl_cts_commits_to_backport=(
|
|
||||||
)
|
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
|
||||||
gl_cts_patch_files=(
|
|
||||||
)
|
|
||||||
|
|
||||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
||||||
gl_cts_patch_files+=(
|
|
||||||
build-deqp-gl_Allow-running-on-Android-from-the-command-line.patch
|
|
||||||
build-deqp-gl_Android-prints-to-stdout-instead-of-logcat.patch
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
|
||||||
# GLES builds also EGL
|
|
||||||
gles_cts_commits_to_backport=(
|
|
||||||
# Implement support for the EGL_EXT_config_select_group extension
|
|
||||||
88ba9ac270db5be600b1ecacbc6d9db0c55d5be4
|
|
||||||
)
|
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
|
||||||
gles_cts_patch_files=(
|
|
||||||
)
|
|
||||||
|
|
||||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
||||||
gles_cts_patch_files+=(
|
|
||||||
build-deqp-gles_Allow-running-on-Android-from-the-command-line.patch
|
|
||||||
build-deqp-gles_Android-prints-to-stdout-instead-of-logcat.patch
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
### Careful editing anything below this line
|
|
||||||
|
|
||||||
|
|
||||||
git config --global user.email "mesa@example.com"
|
|
||||||
git config --global user.name "Mesa CI"
|
|
||||||
|
|
||||||
# shellcheck disable=SC2153
|
|
||||||
case "${DEQP_API}" in
|
|
||||||
VK) DEQP_VERSION="vulkan-cts-$DEQP_VK_VERSION";;
|
|
||||||
GL) DEQP_VERSION="opengl-cts-$DEQP_GL_VERSION";;
|
|
||||||
GLES) DEQP_VERSION="opengl-es-cts-$DEQP_GLES_VERSION";;
|
|
||||||
esac
|
|
||||||
|
|
||||||
git clone \
|
|
||||||
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
|
||||||
-b $DEQP_VERSION \
|
|
||||||
--depth 1 \
|
|
||||||
/VK-GL-CTS
|
|
||||||
pushd /VK-GL-CTS
|
|
||||||
|
|
||||||
mkdir -p /deqp
|
|
||||||
|
|
||||||
# shellcheck disable=SC2153
|
|
||||||
deqp_api=${DEQP_API,,}
|
|
||||||
|
|
||||||
cts_commits_to_backport="${deqp_api}_cts_commits_to_backport[@]"
|
|
||||||
for commit in "${!cts_commits_to_backport}"
|
|
||||||
do
|
do
|
||||||
PATCH_URL="https://github.com/KhronosGroup/VK-GL-CTS/commit/$commit.patch"
|
PATCH_URL="https://github.com/KhronosGroup/VK-GL-CTS/commit/$commit.patch"
|
||||||
echo "Apply patch to ${DEQP_API} CTS from $PATCH_URL"
|
echo "Apply patch to VK-GL-CTS from $PATCH_URL"
|
||||||
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 $PATCH_URL | \
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 $PATCH_URL | \
|
||||||
git am -
|
git am -
|
||||||
done
|
done
|
||||||
|
|
||||||
cts_patch_files="${deqp_api}_cts_patch_files[@]"
|
cts_patch_files=(
|
||||||
for patch in "${!cts_patch_files}"
|
# Android specific patches.
|
||||||
|
build-deqp_Allow-running-on-Android-from-the-command-line.patch
|
||||||
|
build-deqp_Android-prints-to-stdout-instead-of-logcat.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
for patch in "${cts_patch_files[@]}"
|
||||||
do
|
do
|
||||||
echo "Apply patch to ${DEQP_API} CTS from $patch"
|
echo "Apply patch to VK-GL-CTS from $patch"
|
||||||
git am < $OLDPWD/.gitlab-ci/container/patches/$patch
|
git am < $OLDPWD/.gitlab-ci/container/patches/$patch
|
||||||
done
|
done
|
||||||
|
|
||||||
{
|
echo "The following local patches are applied on top:" >> /deqp/version-log
|
||||||
echo "dEQP base version $DEQP_VERSION"
|
git log --reverse --oneline $DEQP_VERSION.. --format=%s | sed 's/^/- /' >> /deqp/version-log
|
||||||
echo "The following local patches are applied on top:"
|
|
||||||
git log --reverse --oneline $DEQP_VERSION.. --format=%s | sed 's/^/- /'
|
|
||||||
} > /deqp/version-$deqp_api
|
|
||||||
|
|
||||||
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
||||||
# libpng (sigh). The archives get their checksums checked anyway, and git
|
# libpng (sigh). The archives get their checksums checked anyway, and git
|
||||||
@@ -151,35 +79,26 @@ popd
|
|||||||
|
|
||||||
pushd /deqp
|
pushd /deqp
|
||||||
|
|
||||||
if [ "${DEQP_API}" = 'GLES' ]; then
|
if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||||
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
||||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
|
||||||
-DDEQP_TARGET=android \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
$EXTRA_CMAKE_ARGS
|
|
||||||
mold --run ninja modules/egl/deqp-egl
|
|
||||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-android
|
|
||||||
else
|
|
||||||
# When including EGL/X11 testing, do that build first and save off its
|
# When including EGL/X11 testing, do that build first and save off its
|
||||||
# deqp-egl binary.
|
# deqp-egl binary.
|
||||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||||
-DDEQP_TARGET=x11_egl_glx \
|
-DDEQP_TARGET=x11_egl_glx \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
$EXTRA_CMAKE_ARGS
|
$EXTRA_CMAKE_ARGS
|
||||||
mold --run ninja modules/egl/deqp-egl
|
ninja modules/egl/deqp-egl
|
||||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-x11
|
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-x11
|
||||||
|
|
||||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||||
-DDEQP_TARGET=wayland \
|
-DDEQP_TARGET=wayland \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
$EXTRA_CMAKE_ARGS
|
$EXTRA_CMAKE_ARGS
|
||||||
mold --run ninja modules/egl/deqp-egl
|
ninja modules/egl/deqp-egl
|
||||||
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-wayland
|
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-wayland
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cmake -S /VK-GL-CTS -B . -G Ninja \
|
cmake -S /VK-GL-CTS -B . -G Ninja \
|
||||||
-DDEQP_TARGET=${DEQP_TARGET} \
|
-DDEQP_TARGET=${DEQP_TARGET:-default} \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
$EXTRA_CMAKE_ARGS
|
$EXTRA_CMAKE_ARGS
|
||||||
|
|
||||||
@@ -190,58 +109,35 @@ if [ "${DEQP_TARGET}" = 'default' ]; then
|
|||||||
grep -q DEQP_SUPPORT_XCB=1 build.ninja
|
grep -q DEQP_SUPPORT_XCB=1 build.ninja
|
||||||
fi
|
fi
|
||||||
|
|
||||||
deqp_build_targets=()
|
mold --run ninja
|
||||||
case "${DEQP_API}" in
|
|
||||||
VK)
|
if [ "${DEQP_TARGET}" = 'android' ]; then
|
||||||
deqp_build_targets+=(deqp-vk)
|
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-android
|
||||||
;;
|
|
||||||
GL)
|
|
||||||
deqp_build_targets+=(glcts)
|
|
||||||
;;
|
|
||||||
GLES)
|
|
||||||
deqp_build_targets+=(deqp-gles{2,3,31})
|
|
||||||
# deqp-egl also comes from this build, but it is handled separately above.
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if [ "${DEQP_TARGET}" != 'android' ]; then
|
|
||||||
deqp_build_targets+=(testlog-to-xml)
|
|
||||||
deqp_build_targets+=(testlog-to-csv)
|
|
||||||
deqp_build_targets+=(testlog-to-junit)
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mold --run ninja "${deqp_build_targets[@]}"
|
# Copy out the mustpass lists we want.
|
||||||
|
mkdir /deqp/mustpass
|
||||||
|
for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt) ; do
|
||||||
|
cat /VK-GL-CTS/external/vulkancts/mustpass/main/$mustpass \
|
||||||
|
>> /deqp/mustpass/vk-master.txt
|
||||||
|
done
|
||||||
|
|
||||||
if [ "${DEQP_TARGET}" != 'android' ]; then
|
if [ "${DEQP_TARGET}" != 'android' ]; then
|
||||||
# Copy out the mustpass lists we want.
|
cp \
|
||||||
mkdir -p /deqp/mustpass
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
|
||||||
|
/deqp/mustpass/.
|
||||||
if [ "${DEQP_API}" = 'VK' ]; then
|
cp \
|
||||||
for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt) ; do
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt \
|
||||||
cat /VK-GL-CTS/external/vulkancts/mustpass/main/$mustpass \
|
/deqp/mustpass/.
|
||||||
>> /deqp/mustpass/vk-master.txt
|
cp \
|
||||||
done
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-master.txt \
|
||||||
fi
|
/deqp/mustpass/.
|
||||||
|
cp \
|
||||||
if [ "${DEQP_API}" = 'GL' ]; then
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
|
||||||
cp \
|
/deqp/mustpass/.
|
||||||
/VK-GL-CTS/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-main.txt \
|
cp \
|
||||||
/deqp/mustpass/
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
|
||||||
cp \
|
/deqp/mustpass/.
|
||||||
/VK-GL-CTS/external/openglcts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
|
|
||||||
/deqp/mustpass/
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${DEQP_API}" = 'GLES' ]; then
|
|
||||||
cp \
|
|
||||||
/VK-GL-CTS/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
|
|
||||||
/deqp/mustpass/
|
|
||||||
cp \
|
|
||||||
/VK-GL-CTS/external/openglcts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-main.txt \
|
|
||||||
/deqp/mustpass/
|
|
||||||
cp \
|
|
||||||
/VK-GL-CTS/external/openglcts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-main.txt \
|
|
||||||
/deqp/mustpass/
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Save *some* executor utils, but otherwise strip things down
|
# Save *some* executor utils, but otherwise strip things down
|
||||||
# to reduct deqp build size:
|
# to reduct deqp build size:
|
||||||
@@ -252,7 +148,7 @@ if [ "${DEQP_TARGET}" != 'android' ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
|
# Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
|
||||||
rm -rf /deqp/external/**/mustpass/
|
rm -rf /deqp/external/openglcts/modules/gl_cts/data/mustpass
|
||||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-master*
|
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-master*
|
||||||
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-default
|
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-default
|
||||||
|
|
||||||
@@ -261,15 +157,9 @@ rm -rf /deqp/modules/internal
|
|||||||
rm -rf /deqp/execserver
|
rm -rf /deqp/execserver
|
||||||
rm -rf /deqp/framework
|
rm -rf /deqp/framework
|
||||||
find . -depth \( -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' \) -exec rm -rf {} \;
|
find . -depth \( -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' \) -exec rm -rf {} \;
|
||||||
if [ "${DEQP_API}" = 'VK' ]; then
|
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
|
||||||
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
|
${STRIP_CMD:-strip} external/openglcts/modules/glcts
|
||||||
fi
|
${STRIP_CMD:-strip} modules/*/deqp-*
|
||||||
if [ "${DEQP_API}" = 'GL' ]; then
|
|
||||||
${STRIP_CMD:-strip} external/openglcts/modules/glcts
|
|
||||||
fi
|
|
||||||
if [ "${DEQP_API}" = 'GLES' ]; then
|
|
||||||
${STRIP_CMD:-strip} modules/*/deqp-*
|
|
||||||
fi
|
|
||||||
du -sh ./*
|
du -sh ./*
|
||||||
rm -rf /VK-GL-CTS
|
rm -rf /VK-GL-CTS
|
||||||
popd
|
popd
|
||||||
|
@@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
# When changing this file, you need to bump the following
|
MOLD_VERSION="1.11.0"
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
|
||||||
# DEBIAN_BASE_TAG
|
|
||||||
# DEBIAN_BUILD_TAG
|
|
||||||
# FEDORA_X86_64_BUILD_TAG
|
|
||||||
# KERNEL_ROOTFS_TAG
|
|
||||||
|
|
||||||
MOLD_VERSION="2.4.1"
|
|
||||||
|
|
||||||
git clone -b v"$MOLD_VERSION" --single-branch --depth 1 https://github.com/rui314/mold.git
|
git clone -b v"$MOLD_VERSION" --single-branch --depth 1 https://github.com/rui314/mold.git
|
||||||
pushd mold
|
pushd mold
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# When changing this file, you need to bump the following
|
|
||||||
# .gitlab-ci/image-tags.yml tags:
|
|
||||||
# DEBIAN_X86_64_TEST_GL_TAG
|
|
||||||
|
|
||||||
set -ex -o pipefail
|
|
||||||
|
|
||||||
### Careful editing anything below this line
|
|
||||||
|
|
||||||
git config --global user.email "mesa@example.com"
|
|
||||||
git config --global user.name "Mesa CI"
|
|
||||||
git clone https://github.com/axeldavy/Xnine.git /Xnine
|
|
||||||
mkdir /Xnine/build
|
|
||||||
pushd /Xnine/build
|
|
||||||
git checkout c64753d224c08006bcdcfa7880ada826f27164b1
|
|
||||||
|
|
||||||
cmake .. -DBUILD_TESTS=1 -DWITH_DRI3=1 -DD3DADAPTER9_LOCATION=/install/lib/d3d/d3dadapter9.so
|
|
||||||
make
|
|
||||||
|
|
||||||
mkdir -p /NineTests/
|
|
||||||
mv NineTests/NineTests /NineTests/
|
|
||||||
|
|
||||||
popd
|
|
||||||
rm -rf /Xnine
|
|
@@ -8,7 +8,7 @@ set -ex
|
|||||||
# DEBIAN_X86_64_TEST_VK_TAG
|
# DEBIAN_X86_64_TEST_VK_TAG
|
||||||
# KERNEL_ROOTFS_TAG
|
# KERNEL_ROOTFS_TAG
|
||||||
|
|
||||||
REV="1e631479c0b477006dd7561c55e06269d2878d8d"
|
REV="f7db20b03de6896d013826c0a731bc4417c1a5a0"
|
||||||
|
|
||||||
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
git clone https://gitlab.freedesktop.org/mesa/piglit.git --single-branch --no-checkout /piglit
|
||||||
pushd /piglit
|
pushd /piglit
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
VALIDATION_TAG="snapshot-2024wk06"
|
VALIDATION_TAG="v1.3.269"
|
||||||
|
|
||||||
git clone -b "$VALIDATION_TAG" --single-branch --depth 1 https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
|
git clone -b "$VALIDATION_TAG" --single-branch --depth 1 https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
|
||||||
pushd Vulkan-ValidationLayers
|
pushd Vulkan-ValidationLayers
|
||||||
|
@@ -52,8 +52,7 @@ if [[ $arch != "armhf" ]]; then
|
|||||||
# We don't need clang-format for the crossbuilds, but the installed amd64
|
# We don't need clang-format for the crossbuilds, but the installed amd64
|
||||||
# package will conflict with libclang. Uninstall clang-format (and its
|
# package will conflict with libclang. Uninstall clang-format (and its
|
||||||
# problematic dependency) to fix.
|
# problematic dependency) to fix.
|
||||||
apt-get remove -y "clang-format-${LLVM_VERSION}" "libclang-cpp${LLVM_VERSION}" \
|
apt-get remove -y "clang-format-${LLVM_VERSION}" "libclang-cpp${LLVM_VERSION}"
|
||||||
"llvm-${LLVM_VERSION}-runtime" "llvm-${LLVM_VERSION}-linker-tools"
|
|
||||||
|
|
||||||
# llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only
|
# llvm-*-tools:$arch conflicts with python3:amd64. Install dependencies only
|
||||||
# with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
|
# with apt-get, then force-install llvm-*-{dev,tools}:$arch with dpkg to get
|
||||||
|
@@ -27,7 +27,6 @@ DEPS=(
|
|||||||
cmake
|
cmake
|
||||||
curl
|
curl
|
||||||
fastboot
|
fastboot
|
||||||
flatbuffers-compiler
|
|
||||||
flex
|
flex
|
||||||
g++
|
g++
|
||||||
git
|
git
|
||||||
@@ -37,7 +36,6 @@ DEPS=(
|
|||||||
libdrm-dev
|
libdrm-dev
|
||||||
libelf-dev
|
libelf-dev
|
||||||
libexpat1-dev
|
libexpat1-dev
|
||||||
libflatbuffers-dev
|
|
||||||
libvulkan-dev
|
libvulkan-dev
|
||||||
libx11-dev
|
libx11-dev
|
||||||
libx11-xcb-dev
|
libx11-xcb-dev
|
||||||
@@ -52,7 +50,6 @@ DEPS=(
|
|||||||
libxext-dev
|
libxext-dev
|
||||||
libxrandr-dev
|
libxrandr-dev
|
||||||
libxshmfence-dev
|
libxshmfence-dev
|
||||||
libxtensor-dev
|
|
||||||
libxxf86vm-dev
|
libxxf86vm-dev
|
||||||
libwayland-dev
|
libwayland-dev
|
||||||
libwayland-egl-backend-dev
|
libwayland-egl-backend-dev
|
||||||
|
@@ -25,12 +25,10 @@ DEPS=(
|
|||||||
bison
|
bison
|
||||||
ccache
|
ccache
|
||||||
curl
|
curl
|
||||||
"clang-${LLVM_VERSION}"
|
|
||||||
"clang-format-${LLVM_VERSION}"
|
"clang-format-${LLVM_VERSION}"
|
||||||
dpkg-cross
|
dpkg-cross
|
||||||
findutils
|
findutils
|
||||||
flex
|
flex
|
||||||
flatbuffers-compiler
|
|
||||||
g++
|
g++
|
||||||
cmake
|
cmake
|
||||||
gcc
|
gcc
|
||||||
@@ -43,7 +41,6 @@ DEPS=(
|
|||||||
libelf-dev
|
libelf-dev
|
||||||
libepoxy-dev
|
libepoxy-dev
|
||||||
libexpat1-dev
|
libexpat1-dev
|
||||||
libflatbuffers-dev
|
|
||||||
libgtk-3-dev
|
libgtk-3-dev
|
||||||
"libllvm${LLVM_VERSION}"
|
"libllvm${LLVM_VERSION}"
|
||||||
libomxil-bellagio-dev
|
libomxil-bellagio-dev
|
||||||
@@ -59,7 +56,6 @@ DEPS=(
|
|||||||
libxrandr-dev
|
libxrandr-dev
|
||||||
libxrender-dev
|
libxrender-dev
|
||||||
libxshmfence-dev
|
libxshmfence-dev
|
||||||
libxtensor-dev
|
|
||||||
libxxf86vm-dev
|
libxxf86vm-dev
|
||||||
libwayland-egl-backend-dev
|
libwayland-egl-backend-dev
|
||||||
make
|
make
|
||||||
@@ -87,10 +83,6 @@ apt-get update
|
|||||||
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
apt-get install -y --no-remove "${DEPS[@]}" "${EPHEMERAL[@]}" \
|
||||||
$EXTRA_LOCAL_PACKAGES
|
$EXTRA_LOCAL_PACKAGES
|
||||||
|
|
||||||
. .gitlab-ci/container/build-llvm-spirv.sh
|
|
||||||
|
|
||||||
. .gitlab-ci/container/build-libclc.sh
|
|
||||||
|
|
||||||
# Needed for ci-fairy, this revision is able to upload files to S3
|
# Needed for ci-fairy, this revision is able to upload files to S3
|
||||||
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
pip3 install --break-system-packages git+http://gitlab.freedesktop.org/freedesktop/ci-templates@ffe4d1b10aab7534489f0c4bbc4c5899df17d3f2
|
||||||
|
|
||||||
|
@@ -75,6 +75,10 @@ tar -xvf $XORGMACROS_VERSION.tar.bz2 && rm $XORGMACROS_VERSION.tar.bz2
|
|||||||
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
cd $XORGMACROS_VERSION; ./configure; make install; cd ..
|
||||||
rm -rf $XORGMACROS_VERSION
|
rm -rf $XORGMACROS_VERSION
|
||||||
|
|
||||||
|
. .gitlab-ci/container/build-llvm-spirv.sh
|
||||||
|
|
||||||
|
. .gitlab-ci/container/build-libclc.sh
|
||||||
|
|
||||||
. .gitlab-ci/container/build-wayland.sh
|
. .gitlab-ci/container/build-wayland.sh
|
||||||
|
|
||||||
. .gitlab-ci/container/build-shader-db.sh
|
. .gitlab-ci/container/build-shader-db.sh
|
||||||
|
@@ -41,7 +41,6 @@ rm "$ndk.zip"
|
|||||||
############### Build dEQP runner
|
############### Build dEQP runner
|
||||||
|
|
||||||
export ANDROID_NDK_HOME=/$ndk
|
export ANDROID_NDK_HOME=/$ndk
|
||||||
export RUST_TARGET=x86_64-linux-android
|
|
||||||
. .gitlab-ci/container/build-rust.sh
|
. .gitlab-ci/container/build-rust.sh
|
||||||
. .gitlab-ci/container/build-deqp-runner.sh
|
. .gitlab-ci/container/build-deqp-runner.sh
|
||||||
|
|
||||||
@@ -50,12 +49,6 @@ rm -rf /root/.rustup
|
|||||||
|
|
||||||
############### Build dEQP GL
|
############### Build dEQP GL
|
||||||
|
|
||||||
DEQP_API=GL \
|
|
||||||
DEQP_TARGET="android" \
|
|
||||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
|
||||||
|
|
||||||
DEQP_API=GLES \
|
|
||||||
DEQP_TARGET="android" \
|
DEQP_TARGET="android" \
|
||||||
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \
|
EXTRA_CMAKE_ARGS="-DDEQP_TARGET_TOOLCHAIN=ndk-modern -DANDROID_NDK_PATH=/$ndk -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28" \
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
@@ -80,14 +73,8 @@ popd
|
|||||||
|
|
||||||
############### Building and installing Debian package ...
|
############### Building and installing Debian package ...
|
||||||
|
|
||||||
ANDROID_CUTTLEFISH_VERSION=f6494d9fbeaa9974b56923e3029909e5d5f440dd
|
git clone --depth 1 https://github.com/google/android-cuttlefish.git
|
||||||
|
|
||||||
mkdir android-cuttlefish
|
|
||||||
pushd android-cuttlefish
|
pushd android-cuttlefish
|
||||||
git init
|
|
||||||
git remote add origin https://github.com/google/android-cuttlefish.git
|
|
||||||
git fetch --depth 1 origin "$ANDROID_CUTTLEFISH_VERSION"
|
|
||||||
git checkout FETCH_HEAD
|
|
||||||
|
|
||||||
pushd base
|
pushd base
|
||||||
dpkg-buildpackage -uc -us
|
dpkg-buildpackage -uc -us
|
||||||
|
@@ -22,7 +22,6 @@ EPHEMERAL=(
|
|||||||
"libclang-cpp${LLVM_VERSION}-dev"
|
"libclang-cpp${LLVM_VERSION}-dev"
|
||||||
libdrm-dev
|
libdrm-dev
|
||||||
libgles2-mesa-dev
|
libgles2-mesa-dev
|
||||||
libgtest-dev
|
|
||||||
libpciaccess-dev
|
libpciaccess-dev
|
||||||
libpng-dev
|
libpng-dev
|
||||||
libudev-dev
|
libudev-dev
|
||||||
@@ -31,9 +30,6 @@ EPHEMERAL=(
|
|||||||
libwayland-dev
|
libwayland-dev
|
||||||
libx11-xcb-dev
|
libx11-xcb-dev
|
||||||
libxcb-dri2-0-dev
|
libxcb-dri2-0-dev
|
||||||
libxcb-dri3-dev
|
|
||||||
libxcb-present-dev
|
|
||||||
libxfixes-dev
|
|
||||||
libxkbcommon-dev
|
libxkbcommon-dev
|
||||||
libxrandr-dev
|
libxrandr-dev
|
||||||
libxrender-dev
|
libxrender-dev
|
||||||
@@ -50,7 +46,6 @@ EPHEMERAL=(
|
|||||||
DEPS=(
|
DEPS=(
|
||||||
clinfo
|
clinfo
|
||||||
iptables
|
iptables
|
||||||
kmod
|
|
||||||
"libclang-common-${LLVM_VERSION}-dev"
|
"libclang-common-${LLVM_VERSION}-dev"
|
||||||
"libclang-cpp${LLVM_VERSION}"
|
"libclang-cpp${LLVM_VERSION}"
|
||||||
libcap2
|
libcap2
|
||||||
@@ -65,7 +60,6 @@ DEPS=(
|
|||||||
spirv-tools
|
spirv-tools
|
||||||
sysvinit-core
|
sysvinit-core
|
||||||
weston
|
weston
|
||||||
xwayland
|
|
||||||
)
|
)
|
||||||
|
|
||||||
apt-get update
|
apt-get update
|
||||||
@@ -82,13 +76,7 @@ PIGLIT_OPTS="-DPIGLIT_BUILD_GLX_TESTS=ON -DPIGLIT_BUILD_CL_TESTS=ON -DPIGLIT_BUI
|
|||||||
|
|
||||||
############### Build dEQP GL
|
############### Build dEQP GL
|
||||||
|
|
||||||
DEQP_API=GL \
|
DEQP_TARGET=surfaceless . .gitlab-ci/container/build-deqp.sh
|
||||||
DEQP_TARGET=surfaceless \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
|
||||||
|
|
||||||
DEQP_API=GLES \
|
|
||||||
DEQP_TARGET=surfaceless \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
|
||||||
|
|
||||||
############### Build apitrace
|
############### Build apitrace
|
||||||
|
|
||||||
@@ -98,10 +86,6 @@ DEQP_TARGET=surfaceless \
|
|||||||
|
|
||||||
. .gitlab-ci/container/build-vulkan-validation.sh
|
. .gitlab-ci/container/build-vulkan-validation.sh
|
||||||
|
|
||||||
############### Build nine tests
|
|
||||||
|
|
||||||
. .gitlab-ci/container/build-ninetests.sh
|
|
||||||
|
|
||||||
############### Uninstall the build software
|
############### Uninstall the build software
|
||||||
|
|
||||||
apt-get purge -y "${EPHEMERAL[@]}"
|
apt-get purge -y "${EPHEMERAL[@]}"
|
||||||
|
@@ -103,8 +103,6 @@ PIGLIT_BUILD_TARGETS="piglit_replayer" . .gitlab-ci/container/build-piglit.sh
|
|||||||
|
|
||||||
############### Build dEQP VK
|
############### Build dEQP VK
|
||||||
|
|
||||||
DEQP_API=VK \
|
|
||||||
DEQP_TARGET=default \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
. .gitlab-ci/container/build-deqp.sh
|
||||||
|
|
||||||
############### Build apitrace
|
############### Build apitrace
|
||||||
|
@@ -30,7 +30,6 @@ DEPS=(
|
|||||||
ccache
|
ccache
|
||||||
clang-devel
|
clang-devel
|
||||||
flex
|
flex
|
||||||
flatbuffers-compiler
|
|
||||||
gcc
|
gcc
|
||||||
gcc-c++
|
gcc-c++
|
||||||
gettext
|
gettext
|
||||||
@@ -42,7 +41,6 @@ DEPS=(
|
|||||||
"pkgconfig(SPIRV-Tools)"
|
"pkgconfig(SPIRV-Tools)"
|
||||||
"pkgconfig(dri2proto)"
|
"pkgconfig(dri2proto)"
|
||||||
"pkgconfig(expat)"
|
"pkgconfig(expat)"
|
||||||
"pkgconfig(flatbuffers)"
|
|
||||||
"pkgconfig(glproto)"
|
"pkgconfig(glproto)"
|
||||||
"pkgconfig(libclc)"
|
"pkgconfig(libclc)"
|
||||||
"pkgconfig(libelf)"
|
"pkgconfig(libelf)"
|
||||||
@@ -68,7 +66,6 @@ DEPS=(
|
|||||||
"pkgconfig(xfixes)"
|
"pkgconfig(xfixes)"
|
||||||
"pkgconfig(xrandr)"
|
"pkgconfig(xrandr)"
|
||||||
"pkgconfig(xshmfence)"
|
"pkgconfig(xshmfence)"
|
||||||
"pkgconfig(xtensor)"
|
|
||||||
"pkgconfig(xxf86vm)"
|
"pkgconfig(xxf86vm)"
|
||||||
"pkgconfig(zlib)"
|
"pkgconfig(zlib)"
|
||||||
procps-ng
|
procps-ng
|
||||||
|
@@ -316,6 +316,7 @@ fedora/x86_64_build:
|
|||||||
|
|
||||||
|
|
||||||
.kernel+rootfs:
|
.kernel+rootfs:
|
||||||
|
timeout: 2h # 24.0-only change
|
||||||
extends:
|
extends:
|
||||||
- .container+build-rules
|
- .container+build-rules
|
||||||
- .debian-container
|
- .debian-container
|
||||||
|
@@ -272,17 +272,7 @@ mv /usr/local/bin/*-runner $ROOTFS/usr/bin/.
|
|||||||
|
|
||||||
|
|
||||||
############### Build dEQP
|
############### Build dEQP
|
||||||
DEQP_API=GL \
|
DEQP_TARGET=surfaceless . .gitlab-ci/container/build-deqp.sh
|
||||||
DEQP_TARGET=surfaceless \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
|
||||||
|
|
||||||
DEQP_API=GLES \
|
|
||||||
DEQP_TARGET=surfaceless \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
|
||||||
|
|
||||||
DEQP_API=VK \
|
|
||||||
DEQP_TARGET=default \
|
|
||||||
. .gitlab-ci/container/build-deqp.sh
|
|
||||||
|
|
||||||
mv /deqp $ROOTFS/.
|
mv /deqp $ROOTFS/.
|
||||||
|
|
||||||
|
@@ -1,182 +0,0 @@
|
|||||||
From dc97ee83a813f6b170079ddf2a04bbb06221a5a7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
|
||||||
Date: Fri, 26 Aug 2022 18:24:27 +0200
|
|
||||||
Subject: [PATCH 1/2] Allow running on Android from the command line
|
|
||||||
|
|
||||||
For testing the Android EGL platform without having to go via the
|
|
||||||
Android activity manager, build deqp-egl.
|
|
||||||
|
|
||||||
Tests that render to native windows are unsupported, as command line
|
|
||||||
programs cannot create windows on Android.
|
|
||||||
|
|
||||||
$ cmake -S . -B build/ -DDEQP_TARGET=android -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror -DANDROID_NDK_PATH=./android-ndk-r21d -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28 -DGLCTS_GTF_TARGET=gles32 -G Ninja
|
|
||||||
$ ninja -C build modules/egl/deqp-egl
|
|
||||||
|
|
||||||
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 38 ++-----------------
|
|
||||||
.../android/tcuAndroidNativeActivity.cpp | 36 +++++++++---------
|
|
||||||
.../platform/android/tcuAndroidPlatform.cpp | 12 +++++-
|
|
||||||
3 files changed, 34 insertions(+), 52 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index eb58cc7ba..98b8fc6cc 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -272,7 +272,7 @@ include_directories(
|
|
||||||
external/vulkancts/framework/vulkan
|
|
||||||
)
|
|
||||||
|
|
||||||
-if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
|
|
||||||
+if (DE_OS_IS_IOS)
|
|
||||||
# On Android deqp modules are compiled as libraries and linked into final .so
|
|
||||||
set(DEQP_MODULE_LIBRARIES )
|
|
||||||
set(DEQP_MODULE_ENTRY_POINTS )
|
|
||||||
@@ -316,7 +316,7 @@ macro (add_deqp_module MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
|
||||||
set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
|
|
||||||
set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
|
|
||||||
|
|
||||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
|
||||||
+ if (NOT DE_OS_IS_IOS)
|
|
||||||
# Executable target
|
|
||||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
|
||||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
|
||||||
@@ -338,7 +338,7 @@ macro (add_deqp_module_skip_android MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
|
||||||
add_library("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" STATIC ${SRCS})
|
|
||||||
target_link_libraries("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" ${LIBS})
|
|
||||||
|
|
||||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
|
||||||
+ if (NOT DE_OS_IS_IOS)
|
|
||||||
# Executable target
|
|
||||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
|
||||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
|
||||||
@@ -390,37 +390,7 @@ add_subdirectory(external/vulkancts/vkscpc ${MAYBE_EXCLUDE_FROM_ALL})
|
|
||||||
add_subdirectory(external/openglcts ${MAYBE_EXCLUDE_FROM_ALL})
|
|
||||||
|
|
||||||
# Single-binary targets
|
|
||||||
-if (DE_OS_IS_ANDROID)
|
|
||||||
- include_directories(executor)
|
|
||||||
- include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
|
|
||||||
-
|
|
||||||
- set(DEQP_SRCS
|
|
||||||
- framework/platform/android/tcuAndroidMain.cpp
|
|
||||||
- framework/platform/android/tcuAndroidJNI.cpp
|
|
||||||
- framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp
|
|
||||||
- framework/platform/android/tcuTestLogParserJNI.cpp
|
|
||||||
- ${DEQP_MODULE_ENTRY_POINTS}
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
- set(DEQP_LIBS
|
|
||||||
- tcutil-platform
|
|
||||||
- xecore
|
|
||||||
- ${DEQP_MODULE_LIBRARIES}
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
- add_library(deqp SHARED ${DEQP_SRCS})
|
|
||||||
- target_link_libraries(deqp ${DEQP_LIBS})
|
|
||||||
-
|
|
||||||
- # Separate out the debug information because it's enormous
|
|
||||||
- add_custom_command(TARGET deqp POST_BUILD
|
|
||||||
- COMMAND ${CMAKE_STRIP} --only-keep-debug -o $<TARGET_FILE:deqp>.debug $<TARGET_FILE:deqp>
|
|
||||||
- COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:deqp>)
|
|
||||||
-
|
|
||||||
- # Needed by OpenGL CTS that defines its own activity but depends on
|
|
||||||
- # common Android support code.
|
|
||||||
- target_include_directories(deqp PRIVATE framework/platform/android)
|
|
||||||
-
|
|
||||||
-elseif (DE_OS_IS_IOS)
|
|
||||||
+if (DE_OS_IS_IOS)
|
|
||||||
# Code sign identity
|
|
||||||
set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
|
|
||||||
|
|
||||||
diff --git a/framework/platform/android/tcuAndroidNativeActivity.cpp b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
|
||||||
index 6f8cd8fc5..b83e30f41 100644
|
|
||||||
--- a/framework/platform/android/tcuAndroidNativeActivity.cpp
|
|
||||||
+++ b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
|
||||||
@@ -116,23 +116,25 @@ namespace Android
|
|
||||||
NativeActivity::NativeActivity (ANativeActivity* activity)
|
|
||||||
: m_activity(activity)
|
|
||||||
{
|
|
||||||
- activity->instance = (void*)this;
|
|
||||||
- activity->callbacks->onStart = onStartCallback;
|
|
||||||
- activity->callbacks->onResume = onResumeCallback;
|
|
||||||
- activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
|
||||||
- activity->callbacks->onPause = onPauseCallback;
|
|
||||||
- activity->callbacks->onStop = onStopCallback;
|
|
||||||
- activity->callbacks->onDestroy = onDestroyCallback;
|
|
||||||
- activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
|
||||||
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
|
||||||
- activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
|
||||||
- activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
|
||||||
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
|
||||||
- activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
|
||||||
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
|
||||||
- activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
|
||||||
- activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
|
||||||
- activity->callbacks->onLowMemory = onLowMemoryCallback;
|
|
||||||
+ if (activity) {
|
|
||||||
+ activity->instance = (void*)this;
|
|
||||||
+ activity->callbacks->onStart = onStartCallback;
|
|
||||||
+ activity->callbacks->onResume = onResumeCallback;
|
|
||||||
+ activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
|
||||||
+ activity->callbacks->onPause = onPauseCallback;
|
|
||||||
+ activity->callbacks->onStop = onStopCallback;
|
|
||||||
+ activity->callbacks->onDestroy = onDestroyCallback;
|
|
||||||
+ activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
|
||||||
+ activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
|
||||||
+ activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
|
||||||
+ activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
|
||||||
+ activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
|
||||||
+ activity->callbacks->onLowMemory = onLowMemoryCallback;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
NativeActivity::~NativeActivity (void)
|
|
||||||
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
|
||||||
index b8a35898c..cf02e6b70 100644
|
|
||||||
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
|
||||||
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
*//*--------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "tcuAndroidPlatform.hpp"
|
|
||||||
+#include "tcuAndroidNativeActivity.hpp"
|
|
||||||
#include "tcuAndroidUtil.hpp"
|
|
||||||
#include "gluRenderContext.hpp"
|
|
||||||
#include "egluNativeDisplay.hpp"
|
|
||||||
@@ -170,7 +171,7 @@ eglu::NativeWindow* NativeWindowFactory::createWindow (const eglu::WindowParams&
|
|
||||||
Window* window = m_windowRegistry.tryAcquireWindow();
|
|
||||||
|
|
||||||
if (!window)
|
|
||||||
- throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
|
||||||
+ throw NotSupportedError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
|
||||||
|
|
||||||
return new NativeWindow(window, params.width, params.height, format);
|
|
||||||
}
|
|
||||||
@@ -292,6 +293,9 @@ static size_t getTotalSystemMemory (ANativeActivity* activity)
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
+ if (!activity)
|
|
||||||
+ throw tcu::InternalError("No activity (running from command line?");
|
|
||||||
+
|
|
||||||
const size_t totalMemory = getTotalAndroidSystemMemory(activity);
|
|
||||||
print("Device has %.2f MiB of system memory\n", static_cast<double>(totalMemory) / static_cast<double>(MiB));
|
|
||||||
return totalMemory;
|
|
||||||
@@ -388,3 +392,9 @@ bool Platform::hasDisplay (vk::wsi::Type wsiType) const
|
|
||||||
|
|
||||||
} // Android
|
|
||||||
} // tcu
|
|
||||||
+
|
|
||||||
+tcu::Platform* createPlatform (void)
|
|
||||||
+{
|
|
||||||
+ tcu::Android::NativeActivity activity(NULL);
|
|
||||||
+ return new tcu::Android::Platform(activity);
|
|
||||||
+}
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
@@ -1,182 +0,0 @@
|
|||||||
From dc97ee83a813f6b170079ddf2a04bbb06221a5a7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
|
||||||
Date: Fri, 26 Aug 2022 18:24:27 +0200
|
|
||||||
Subject: [PATCH 1/2] Allow running on Android from the command line
|
|
||||||
|
|
||||||
For testing the Android EGL platform without having to go via the
|
|
||||||
Android activity manager, build deqp-egl.
|
|
||||||
|
|
||||||
Tests that render to native windows are unsupported, as command line
|
|
||||||
programs cannot create windows on Android.
|
|
||||||
|
|
||||||
$ cmake -S . -B build/ -DDEQP_TARGET=android -DDEQP_TARGET_TOOLCHAIN=ndk-modern -DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror -DANDROID_NDK_PATH=./android-ndk-r21d -DANDROID_ABI=x86_64 -DDE_ANDROID_API=28 -DGLCTS_GTF_TARGET=gles32 -G Ninja
|
|
||||||
$ ninja -C build modules/egl/deqp-egl
|
|
||||||
|
|
||||||
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 38 ++-----------------
|
|
||||||
.../android/tcuAndroidNativeActivity.cpp | 36 +++++++++---------
|
|
||||||
.../platform/android/tcuAndroidPlatform.cpp | 12 +++++-
|
|
||||||
3 files changed, 34 insertions(+), 52 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index eb58cc7ba..98b8fc6cc 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -272,7 +272,7 @@ include_directories(
|
|
||||||
external/vulkancts/framework/vulkan
|
|
||||||
)
|
|
||||||
|
|
||||||
-if (DE_OS_IS_ANDROID OR DE_OS_IS_IOS)
|
|
||||||
+if (DE_OS_IS_IOS)
|
|
||||||
# On Android deqp modules are compiled as libraries and linked into final .so
|
|
||||||
set(DEQP_MODULE_LIBRARIES )
|
|
||||||
set(DEQP_MODULE_ENTRY_POINTS )
|
|
||||||
@@ -316,7 +316,7 @@ macro (add_deqp_module MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
|
||||||
set(DEQP_MODULE_LIBRARIES ${DEQP_MODULE_LIBRARIES} PARENT_SCOPE)
|
|
||||||
set(DEQP_MODULE_ENTRY_POINTS ${DEQP_MODULE_ENTRY_POINTS} PARENT_SCOPE)
|
|
||||||
|
|
||||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
|
||||||
+ if (NOT DE_OS_IS_IOS)
|
|
||||||
# Executable target
|
|
||||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
|
||||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
|
||||||
@@ -338,7 +338,7 @@ macro (add_deqp_module_skip_android MODULE_NAME SRCS LIBS EXECLIBS ENTRY)
|
|
||||||
add_library("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" STATIC ${SRCS})
|
|
||||||
target_link_libraries("${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}" ${LIBS})
|
|
||||||
|
|
||||||
- if (NOT DE_OS_IS_ANDROID AND NOT DE_OS_IS_IOS)
|
|
||||||
+ if (NOT DE_OS_IS_IOS)
|
|
||||||
# Executable target
|
|
||||||
add_executable(${MODULE_NAME} ${PROJECT_SOURCE_DIR}/framework/platform/tcuMain.cpp ${ENTRY})
|
|
||||||
target_link_libraries(${MODULE_NAME} PUBLIC "${EXECLIBS}" "${MODULE_NAME}${MODULE_LIB_TARGET_POSTFIX}")
|
|
||||||
@@ -390,37 +390,7 @@ add_subdirectory(external/vulkancts/vkscpc ${MAYBE_EXCLUDE_FROM_ALL})
|
|
||||||
add_subdirectory(external/openglcts ${MAYBE_EXCLUDE_FROM_ALL})
|
|
||||||
|
|
||||||
# Single-binary targets
|
|
||||||
-if (DE_OS_IS_ANDROID)
|
|
||||||
- include_directories(executor)
|
|
||||||
- include_directories(${PROJECT_BINARY_DIR}/external/vulkancts/framework/vulkan)
|
|
||||||
-
|
|
||||||
- set(DEQP_SRCS
|
|
||||||
- framework/platform/android/tcuAndroidMain.cpp
|
|
||||||
- framework/platform/android/tcuAndroidJNI.cpp
|
|
||||||
- framework/platform/android/tcuAndroidPlatformCapabilityQueryJNI.cpp
|
|
||||||
- framework/platform/android/tcuTestLogParserJNI.cpp
|
|
||||||
- ${DEQP_MODULE_ENTRY_POINTS}
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
- set(DEQP_LIBS
|
|
||||||
- tcutil-platform
|
|
||||||
- xecore
|
|
||||||
- ${DEQP_MODULE_LIBRARIES}
|
|
||||||
- )
|
|
||||||
-
|
|
||||||
- add_library(deqp SHARED ${DEQP_SRCS})
|
|
||||||
- target_link_libraries(deqp ${DEQP_LIBS})
|
|
||||||
-
|
|
||||||
- # Separate out the debug information because it's enormous
|
|
||||||
- add_custom_command(TARGET deqp POST_BUILD
|
|
||||||
- COMMAND ${CMAKE_STRIP} --only-keep-debug -o $<TARGET_FILE:deqp>.debug $<TARGET_FILE:deqp>
|
|
||||||
- COMMAND ${CMAKE_STRIP} -g $<TARGET_FILE:deqp>)
|
|
||||||
-
|
|
||||||
- # Needed by OpenGL CTS that defines its own activity but depends on
|
|
||||||
- # common Android support code.
|
|
||||||
- target_include_directories(deqp PRIVATE framework/platform/android)
|
|
||||||
-
|
|
||||||
-elseif (DE_OS_IS_IOS)
|
|
||||||
+if (DE_OS_IS_IOS)
|
|
||||||
# Code sign identity
|
|
||||||
set(DEQP_IOS_CODE_SIGN_IDENTITY "drawElements" CACHE STRING "Code sign identity for iOS build")
|
|
||||||
|
|
||||||
diff --git a/framework/platform/android/tcuAndroidNativeActivity.cpp b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
|
||||||
index 6f8cd8fc5..b83e30f41 100644
|
|
||||||
--- a/framework/platform/android/tcuAndroidNativeActivity.cpp
|
|
||||||
+++ b/framework/platform/android/tcuAndroidNativeActivity.cpp
|
|
||||||
@@ -116,23 +116,25 @@ namespace Android
|
|
||||||
NativeActivity::NativeActivity (ANativeActivity* activity)
|
|
||||||
: m_activity(activity)
|
|
||||||
{
|
|
||||||
- activity->instance = (void*)this;
|
|
||||||
- activity->callbacks->onStart = onStartCallback;
|
|
||||||
- activity->callbacks->onResume = onResumeCallback;
|
|
||||||
- activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
|
||||||
- activity->callbacks->onPause = onPauseCallback;
|
|
||||||
- activity->callbacks->onStop = onStopCallback;
|
|
||||||
- activity->callbacks->onDestroy = onDestroyCallback;
|
|
||||||
- activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
|
||||||
- activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
|
||||||
- activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
|
||||||
- activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
|
||||||
- activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
|
||||||
- activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
|
||||||
- activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
|
||||||
- activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
|
||||||
- activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
|
||||||
- activity->callbacks->onLowMemory = onLowMemoryCallback;
|
|
||||||
+ if (activity) {
|
|
||||||
+ activity->instance = (void*)this;
|
|
||||||
+ activity->callbacks->onStart = onStartCallback;
|
|
||||||
+ activity->callbacks->onResume = onResumeCallback;
|
|
||||||
+ activity->callbacks->onSaveInstanceState = onSaveInstanceStateCallback;
|
|
||||||
+ activity->callbacks->onPause = onPauseCallback;
|
|
||||||
+ activity->callbacks->onStop = onStopCallback;
|
|
||||||
+ activity->callbacks->onDestroy = onDestroyCallback;
|
|
||||||
+ activity->callbacks->onWindowFocusChanged = onWindowFocusChangedCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowCreated = onNativeWindowCreatedCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowResized = onNativeWindowResizedCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeededCallback;
|
|
||||||
+ activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyedCallback;
|
|
||||||
+ activity->callbacks->onInputQueueCreated = onInputQueueCreatedCallback;
|
|
||||||
+ activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyedCallback;
|
|
||||||
+ activity->callbacks->onContentRectChanged = onContentRectChangedCallback;
|
|
||||||
+ activity->callbacks->onConfigurationChanged = onConfigurationChangedCallback;
|
|
||||||
+ activity->callbacks->onLowMemory = onLowMemoryCallback;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
NativeActivity::~NativeActivity (void)
|
|
||||||
diff --git a/framework/platform/android/tcuAndroidPlatform.cpp b/framework/platform/android/tcuAndroidPlatform.cpp
|
|
||||||
index b8a35898c..cf02e6b70 100644
|
|
||||||
--- a/framework/platform/android/tcuAndroidPlatform.cpp
|
|
||||||
+++ b/framework/platform/android/tcuAndroidPlatform.cpp
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
*//*--------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "tcuAndroidPlatform.hpp"
|
|
||||||
+#include "tcuAndroidNativeActivity.hpp"
|
|
||||||
#include "tcuAndroidUtil.hpp"
|
|
||||||
#include "gluRenderContext.hpp"
|
|
||||||
#include "egluNativeDisplay.hpp"
|
|
||||||
@@ -170,7 +171,7 @@ eglu::NativeWindow* NativeWindowFactory::createWindow (const eglu::WindowParams&
|
|
||||||
Window* window = m_windowRegistry.tryAcquireWindow();
|
|
||||||
|
|
||||||
if (!window)
|
|
||||||
- throw ResourceError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
|
||||||
+ throw NotSupportedError("Native window is not available", DE_NULL, __FILE__, __LINE__);
|
|
||||||
|
|
||||||
return new NativeWindow(window, params.width, params.height, format);
|
|
||||||
}
|
|
||||||
@@ -292,6 +293,9 @@ static size_t getTotalSystemMemory (ANativeActivity* activity)
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
+ if (!activity)
|
|
||||||
+ throw tcu::InternalError("No activity (running from command line?");
|
|
||||||
+
|
|
||||||
const size_t totalMemory = getTotalAndroidSystemMemory(activity);
|
|
||||||
print("Device has %.2f MiB of system memory\n", static_cast<double>(totalMemory) / static_cast<double>(MiB));
|
|
||||||
return totalMemory;
|
|
||||||
@@ -388,3 +392,9 @@ bool Platform::hasDisplay (vk::wsi::Type wsiType) const
|
|
||||||
|
|
||||||
} // Android
|
|
||||||
} // tcu
|
|
||||||
+
|
|
||||||
+tcu::Platform* createPlatform (void)
|
|
||||||
+{
|
|
||||||
+ tcu::Android::NativeActivity activity(NULL);
|
|
||||||
+ return new tcu::Android::Platform(activity);
|
|
||||||
+}
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
@@ -1,26 +0,0 @@
|
|||||||
From a602822c53e22e985f942f843ccadbfb64613212 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Helen Koike <helen.koike@collabora.com>
|
|
||||||
Date: Tue, 27 Sep 2022 12:35:22 -0300
|
|
||||||
Subject: [PATCH 2/2] Android prints to stdout instead of logcat
|
|
||||||
|
|
||||||
Signed-off-by: Helen Koike <helen.koike@collabora.com>
|
|
||||||
---
|
|
||||||
framework/qphelper/qpDebugOut.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/framework/qphelper/qpDebugOut.c b/framework/qphelper/qpDebugOut.c
|
|
||||||
index 6579e9f48..c200c6f6b 100644
|
|
||||||
--- a/framework/qphelper/qpDebugOut.c
|
|
||||||
+++ b/framework/qphelper/qpDebugOut.c
|
|
||||||
@@ -98,7 +98,7 @@ void qpDiev (const char* format, va_list args)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* print() implementation. */
|
|
||||||
-#if (DE_OS == DE_OS_ANDROID)
|
|
||||||
+#if (0)
|
|
||||||
|
|
||||||
#include <android/log.h>
|
|
||||||
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
@@ -1,29 +0,0 @@
|
|||||||
From 7c9aa6f846f9f2f0d70b5c4a8e7c99a3d31b3b1a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rob Clark <robdclark@chromium.org>
|
|
||||||
Date: Sat, 27 Jan 2024 10:59:00 -0800
|
|
||||||
Subject: [PATCH] Add missing subgroup support checks for linear derivate tests
|
|
||||||
|
|
||||||
Some of these tests require subgroup ops support, but didn't bother
|
|
||||||
checking whether they were supported. Add this missing checks.
|
|
||||||
---
|
|
||||||
.../vulkan/shaderrender/vktShaderRenderDerivateTests.cpp | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
|
||||||
index 3253505958..709044f2e8 100644
|
|
||||||
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
|
||||||
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
|
||||||
@@ -1145,6 +1145,13 @@ LinearDerivateCase::~LinearDerivateCase (void)
|
|
||||||
TestInstance* LinearDerivateCase::createInstance (Context& context) const
|
|
||||||
{
|
|
||||||
DE_ASSERT(m_uniformSetup != DE_NULL);
|
|
||||||
+ if (m_fragmentTmpl.find("gl_SubgroupInvocationID") != std::string::npos) {
|
|
||||||
+ if (!subgroups::areQuadOperationsSupportedForStages(context, VK_SHADER_STAGE_FRAGMENT_BIT))
|
|
||||||
+ throw tcu::NotSupportedError("test requires VK_SUBGROUP_FEATURE_QUAD_BIT");
|
|
||||||
+
|
|
||||||
+ if (subgroups::getSubgroupSize(context) < 4)
|
|
||||||
+ throw tcu::NotSupportedError("test requires subgroupSize >= 4");
|
|
||||||
+ }
|
|
||||||
return new LinearDerivateCaseInstance(context, *m_uniformSetup, m_definitions, m_values);
|
|
||||||
}
|
|
||||||
|
|
@@ -1,26 +0,0 @@
|
|||||||
From a602822c53e22e985f942f843ccadbfb64613212 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Helen Koike <helen.koike@collabora.com>
|
|
||||||
Date: Tue, 27 Sep 2022 12:35:22 -0300
|
|
||||||
Subject: [PATCH 2/2] Android prints to stdout instead of logcat
|
|
||||||
|
|
||||||
Signed-off-by: Helen Koike <helen.koike@collabora.com>
|
|
||||||
---
|
|
||||||
framework/qphelper/qpDebugOut.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/framework/qphelper/qpDebugOut.c b/framework/qphelper/qpDebugOut.c
|
|
||||||
index 6579e9f48..c200c6f6b 100644
|
|
||||||
--- a/framework/qphelper/qpDebugOut.c
|
|
||||||
+++ b/framework/qphelper/qpDebugOut.c
|
|
||||||
@@ -98,7 +98,7 @@ void qpDiev (const char* format, va_list args)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* print() implementation. */
|
|
||||||
-#if (DE_OS == DE_OS_ANDROID)
|
|
||||||
+#if (0)
|
|
||||||
|
|
||||||
#include <android/log.h>
|
|
||||||
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
@@ -1,56 +0,0 @@
|
|||||||
From ed3794c975d284a5453ae33ae59dd1541a9eb804 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rob Clark <robdclark@chromium.org>
|
|
||||||
Date: Sat, 27 Jan 2024 10:57:28 -0800
|
|
||||||
Subject: [PATCH] Use subgroups helper in derivate tests
|
|
||||||
|
|
||||||
For the tests that need subgroup ops, use the existing subgroups helper,
|
|
||||||
rather than open-coding the same checks.
|
|
||||||
---
|
|
||||||
.../vktShaderRenderDerivateTests.cpp | 23 ++++---------------
|
|
||||||
1 file changed, 5 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
|
||||||
index a8bb5a3ba7..3253505958 100644
|
|
||||||
--- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
|
||||||
+++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderDerivateTests.cpp
|
|
||||||
@@ -31,6 +31,7 @@
|
|
||||||
|
|
||||||
#include "vktShaderRenderDerivateTests.hpp"
|
|
||||||
#include "vktShaderRender.hpp"
|
|
||||||
+#include "subgroups/vktSubgroupsTestsUtils.hpp"
|
|
||||||
#include "vkImageUtil.hpp"
|
|
||||||
#include "vkQueryUtil.hpp"
|
|
||||||
|
|
||||||
@@ -707,28 +708,14 @@ tcu::TestStatus TriangleDerivateCaseInstance::iterate (void)
|
|
||||||
{
|
|
||||||
const std::string errorPrefix = m_definitions.inNonUniformControlFlow ? "Derivatives in dynamic control flow" :
|
|
||||||
"Manual derivatives with subgroup operations";
|
|
||||||
- if (!m_context.contextSupports(vk::ApiVersion(0, 1, 1, 0)))
|
|
||||||
- throw tcu::NotSupportedError(errorPrefix + " require Vulkan 1.1");
|
|
||||||
-
|
|
||||||
- vk::VkPhysicalDeviceSubgroupProperties subgroupProperties;
|
|
||||||
- deMemset(&subgroupProperties, 0, sizeof(subgroupProperties));
|
|
||||||
- subgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
|
|
||||||
-
|
|
||||||
- vk::VkPhysicalDeviceProperties2 properties2;
|
|
||||||
- deMemset(&properties2, 0, sizeof(properties2));
|
|
||||||
- properties2.sType = vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
|
||||||
- properties2.pNext = &subgroupProperties;
|
|
||||||
-
|
|
||||||
- m_context.getInstanceInterface().getPhysicalDeviceProperties2(m_context.getPhysicalDevice(), &properties2);
|
|
||||||
+ if (!subgroups::areQuadOperationsSupportedForStages(m_context, VK_SHADER_STAGE_FRAGMENT_BIT))
|
|
||||||
+ throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT");
|
|
||||||
|
|
||||||
- if (subgroupProperties.subgroupSize < 4)
|
|
||||||
+ if (subgroups::getSubgroupSize(m_context) < 4)
|
|
||||||
throw tcu::NotSupportedError(errorPrefix + " require subgroupSize >= 4");
|
|
||||||
|
|
||||||
- if ((subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_BALLOT_BIT) == 0)
|
|
||||||
+ if (!subgroups::isSubgroupFeatureSupportedForDevice(m_context, VK_SUBGROUP_FEATURE_BALLOT_BIT))
|
|
||||||
throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_BALLOT_BIT");
|
|
||||||
-
|
|
||||||
- if (isSubgroupFunc(m_definitions.func) && (subgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_QUAD_BIT) == 0)
|
|
||||||
- throw tcu::NotSupportedError(errorPrefix + " tests require VK_SUBGROUP_FEATURE_QUAD_BIT");
|
|
||||||
}
|
|
||||||
|
|
||||||
setup();
|
|
@@ -48,7 +48,7 @@ $ADB shell setenforce 0
|
|||||||
# deqp
|
# deqp
|
||||||
|
|
||||||
$ADB push /deqp/modules/egl/deqp-egl-android /data/.
|
$ADB push /deqp/modules/egl/deqp-egl-android /data/.
|
||||||
$ADB push /deqp/assets/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-main.txt /data/
|
$ADB push /deqp/assets/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt /data/.
|
||||||
$ADB push /deqp-runner/deqp-runner /data/.
|
$ADB push /deqp-runner/deqp-runner /data/.
|
||||||
|
|
||||||
# download Android Mesa from S3
|
# download Android Mesa from S3
|
||||||
|
@@ -46,6 +46,7 @@ if [ -z "$DEQP_SUITE" ]; then
|
|||||||
DEQP_WIDTH=${DEQP_WIDTH:-256}
|
DEQP_WIDTH=${DEQP_WIDTH:-256}
|
||||||
DEQP_HEIGHT=${DEQP_HEIGHT:-256}
|
DEQP_HEIGHT=${DEQP_HEIGHT:-256}
|
||||||
DEQP_CONFIG=${DEQP_CONFIG:-rgba8888d24s8ms0}
|
DEQP_CONFIG=${DEQP_CONFIG:-rgba8888d24s8ms0}
|
||||||
|
DEQP_VARIANT=${DEQP_VARIANT:-master}
|
||||||
|
|
||||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-width=$DEQP_WIDTH --deqp-surface-height=$DEQP_HEIGHT"
|
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-width=$DEQP_WIDTH --deqp-surface-height=$DEQP_HEIGHT"
|
||||||
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=${DEQP_SURFACE_TYPE:-pbuffer}"
|
DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=${DEQP_SURFACE_TYPE:-pbuffer}"
|
||||||
@@ -59,16 +60,16 @@ if [ -z "$DEQP_SUITE" ]; then
|
|||||||
|
|
||||||
# Generate test case list file.
|
# Generate test case list file.
|
||||||
if [ "$DEQP_VER" = "vk" ]; then
|
if [ "$DEQP_VER" = "vk" ]; then
|
||||||
MUSTPASS=/deqp/mustpass/vk-master.txt
|
MUSTPASS=/deqp/mustpass/vk-$DEQP_VARIANT.txt
|
||||||
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
|
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
|
||||||
elif [ "$DEQP_VER" = "gles2" ] || [ "$DEQP_VER" = "gles3" ] || [ "$DEQP_VER" = "gles31" ] || [ "$DEQP_VER" = "egl" ]; then
|
elif [ "$DEQP_VER" = "gles2" ] || [ "$DEQP_VER" = "gles3" ] || [ "$DEQP_VER" = "gles31" ] || [ "$DEQP_VER" = "egl" ]; then
|
||||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
|
||||||
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
|
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
|
||||||
elif [ "$DEQP_VER" = "gles2-khr" ] || [ "$DEQP_VER" = "gles3-khr" ] || [ "$DEQP_VER" = "gles31-khr" ] || [ "$DEQP_VER" = "gles32-khr" ]; then
|
elif [ "$DEQP_VER" = "gles2-khr" ] || [ "$DEQP_VER" = "gles3-khr" ] || [ "$DEQP_VER" = "gles31-khr" ] || [ "$DEQP_VER" = "gles32-khr" ]; then
|
||||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
|
||||||
DEQP=/deqp/external/openglcts/modules/glcts
|
DEQP=/deqp/external/openglcts/modules/glcts
|
||||||
else
|
else
|
||||||
MUSTPASS=/deqp/mustpass/$DEQP_VER-main.txt
|
MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
|
||||||
DEQP=/deqp/external/openglcts/modules/glcts
|
DEQP=/deqp/external/openglcts/modules/glcts
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -168,13 +169,7 @@ fi
|
|||||||
|
|
||||||
uncollapsed_section_switch deqp "deqp: deqp-runner"
|
uncollapsed_section_switch deqp "deqp: deqp-runner"
|
||||||
|
|
||||||
# Print the detailed version with the list of backports and local patches
|
cat /deqp/version-log
|
||||||
for api in vk gl; do
|
|
||||||
deqp_version_log=/deqp/version-$api
|
|
||||||
if [ -r "$deqp_version_log" ]; then
|
|
||||||
cat "$deqp_version_log"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
if [ -z "$DEQP_SUITE" ]; then
|
if [ -z "$DEQP_SUITE" ]; then
|
||||||
|
@@ -1,22 +1,16 @@
|
|||||||
# Keep the tags below under 20 chars each, as they end up combined into
|
# Keep the tags below under 25-30 chars each, as they end up combined into
|
||||||
# docker image tags, and docker has a length limit of 128 chars total in tags.
|
# docker image tags, and docker has a length limit of 128 chars total in tags.
|
||||||
#
|
#
|
||||||
# The word after the date doesn't need to be overly descriptive, it exists
|
|
||||||
# purely to avoid the risk of two people updating an image tag on the same day
|
|
||||||
# while working on different changes, so it doesn't matter whether that word
|
|
||||||
# will make sense to someone else. Aim for "nobody else will pick that word
|
|
||||||
# for their change".
|
|
||||||
#
|
|
||||||
# If you update a tag and you get an error like this:
|
# If you update a tag and you get an error like this:
|
||||||
# cannot parse input: "$image:$tag": invalid reference format
|
# cannot parse input: "$image:$tag": invalid reference format
|
||||||
# check the length of $tag; if it's > 128 chars you need to shorten your tag.
|
# check the length of $tag; if it's > 128 chars you need to shorten your tag.
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
DEBIAN_X86_64_BUILD_BASE_IMAGE: "debian/x86_64_build-base"
|
||||||
DEBIAN_BASE_TAG: "20240307-virglcrosvm"
|
DEBIAN_BASE_TAG: "2024-01-14-runner24"
|
||||||
|
|
||||||
DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build"
|
DEBIAN_X86_64_BUILD_IMAGE_PATH: "debian/x86_64_build"
|
||||||
DEBIAN_BUILD_TAG: "20240301-mold"
|
DEBIAN_BUILD_TAG: "2024-01-04-find"
|
||||||
|
|
||||||
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
|
DEBIAN_X86_64_TEST_BASE_IMAGE: "debian/x86_64_test-base"
|
||||||
|
|
||||||
@@ -24,23 +18,23 @@ variables:
|
|||||||
DEBIAN_X86_64_TEST_IMAGE_VK_PATH: "debian/x86_64_test-vk"
|
DEBIAN_X86_64_TEST_IMAGE_VK_PATH: "debian/x86_64_test-vk"
|
||||||
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
DEBIAN_X86_64_TEST_ANDROID_IMAGE_PATH: "debian/x86_64_test-android"
|
||||||
|
|
||||||
DEBIAN_X86_64_TEST_ANDROID_TAG: "20240311-runner"
|
DEBIAN_X86_64_TEST_ANDROID_TAG: "2024-01-14-runner24"
|
||||||
DEBIAN_X86_64_TEST_GL_TAG: "20240313-ninetests"
|
DEBIAN_X86_64_TEST_GL_TAG: "2024-01-14-check24"
|
||||||
DEBIAN_X86_64_TEST_VK_TAG: "20240317-direct_drm"
|
DEBIAN_X86_64_TEST_VK_TAG: "2024-01-14-check24"
|
||||||
KERNEL_ROOTFS_TAG: "20240317-direct_drm"
|
|
||||||
|
|
||||||
ALPINE_X86_64_BUILD_TAG: "20240208-libclc-5"
|
ALPINE_X86_64_BUILD_TAG: "2023-01-07-libdrm2_4_119"
|
||||||
ALPINE_X86_64_LAVA_SSH_TAG: "20230626-v1"
|
ALPINE_X86_64_LAVA_SSH_TAG: "2023-06-26-first-version"
|
||||||
FEDORA_X86_64_BUILD_TAG: "20240301-mold"
|
FEDORA_X86_64_BUILD_TAG: "2024-01-06-libdrm"
|
||||||
KERNEL_TAG: "v6.6.21-mesa-19fc"
|
KERNEL_ROOTFS_TAG: "2024-01-14-runner24"
|
||||||
|
KERNEL_TAG: "v6.6.4-for-mesa-ci-e4f4c500f7fb"
|
||||||
KERNEL_REPO: "gfx-ci/linux"
|
KERNEL_REPO: "gfx-ci/linux"
|
||||||
PKG_REPO_REV: "3cc12a2a"
|
PKG_REPO_REV: "67f2c46b"
|
||||||
|
|
||||||
WINDOWS_X64_MSVC_PATH: "windows/x86_64_msvc"
|
WINDOWS_X64_MSVC_PATH: "windows/x86_64_msvc"
|
||||||
WINDOWS_X64_MSVC_TAG: "20231222-msvc"
|
WINDOWS_X64_MSVC_TAG: "2023-12-22-msvc"
|
||||||
|
|
||||||
WINDOWS_X64_BUILD_PATH: "windows/x86_64_build"
|
WINDOWS_X64_BUILD_PATH: "windows/x86_64_build"
|
||||||
WINDOWS_X64_BUILD_TAG: "20240117-vulkan-sdk"
|
WINDOWS_X64_BUILD_TAG: "2023-12-22-msvc"
|
||||||
|
|
||||||
WINDOWS_X64_TEST_PATH: "windows/x86_64_test"
|
WINDOWS_X64_TEST_PATH: "windows/x86_64_test"
|
||||||
WINDOWS_X64_TEST_TAG: "20240117-vulkan-sdk"
|
WINDOWS_X64_TEST_TAG: "2023-12-22-msvc"
|
||||||
|
@@ -12,14 +12,3 @@ JOB_PRIORITY = int(getenv("JOB_PRIORITY", 75))
|
|||||||
# Use UART over the default SSH mechanism to follow logs.
|
# Use UART over the default SSH mechanism to follow logs.
|
||||||
# Caution: this can lead to device silence in some devices in Mesa CI.
|
# Caution: this can lead to device silence in some devices in Mesa CI.
|
||||||
FORCE_UART = bool(getenv("LAVA_FORCE_UART", False))
|
FORCE_UART = bool(getenv("LAVA_FORCE_UART", False))
|
||||||
|
|
||||||
# How many times the r8152 error may happen to consider it a known issue.
|
|
||||||
KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER: int = 10
|
|
||||||
KNOWN_ISSUE_R8152_PATTERNS: tuple[str, ...] = (
|
|
||||||
r"r8152 \S+ eth0: Tx status -71",
|
|
||||||
r"nfs: server \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} not responding, still trying",
|
|
||||||
)
|
|
||||||
|
|
||||||
# This is considered noise, since LAVA produces this log after receiving a package of feedback
|
|
||||||
# messages.
|
|
||||||
LOG_DEBUG_FEEDBACK_NOISE = "Listened to connection for namespace 'dut' done"
|
|
||||||
|
@@ -2,78 +2,42 @@ from __future__ import annotations
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from typing import TYPE_CHECKING, Any, Sequence
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from lava.utils import LogFollower
|
from lava.utils import LogFollower
|
||||||
|
|
||||||
from lava.exceptions import MesaCIKnownIssueException
|
from lava.exceptions import MesaCIKnownIssueException
|
||||||
from lava.utils.console_format import CONSOLE_LOG
|
from lava.utils.console_format import CONSOLE_LOG
|
||||||
from lava.utils.constants import (
|
|
||||||
KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER,
|
|
||||||
LOG_DEBUG_FEEDBACK_NOISE,
|
|
||||||
KNOWN_ISSUE_R8152_PATTERNS,
|
|
||||||
)
|
|
||||||
from lava.utils.log_section import LogSectionType
|
from lava.utils.log_section import LogSectionType
|
||||||
|
|
||||||
|
|
||||||
def search_known_issue_patterns(patterns: Sequence[str], line: str) -> str:
|
|
||||||
for pattern in patterns:
|
|
||||||
if re.search(pattern, line):
|
|
||||||
return pattern
|
|
||||||
return ""
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class LAVALogHints:
|
class LAVALogHints:
|
||||||
log_follower: LogFollower
|
log_follower: LogFollower
|
||||||
r8152_issue_consecutive_counter: int = field(default=0, init=False)
|
has_r8152_issue_history: bool = field(default=False, init=False)
|
||||||
reboot_counter: int = field(default=0, init=False)
|
|
||||||
|
|
||||||
def raise_known_issue(self, message) -> None:
|
|
||||||
raise MesaCIKnownIssueException(
|
|
||||||
"Found known issue: "
|
|
||||||
f"{CONSOLE_LOG['FG_MAGENTA']}"
|
|
||||||
f"{message}"
|
|
||||||
f"{CONSOLE_LOG['RESET']}"
|
|
||||||
)
|
|
||||||
|
|
||||||
def detect_failure(self, new_lines: list[dict[str, Any]]):
|
def detect_failure(self, new_lines: list[dict[str, Any]]):
|
||||||
for line in new_lines:
|
for line in new_lines:
|
||||||
if line["msg"] == LOG_DEBUG_FEEDBACK_NOISE:
|
|
||||||
continue
|
|
||||||
self.detect_r8152_issue(line)
|
self.detect_r8152_issue(line)
|
||||||
self.detect_forced_reboot(line)
|
|
||||||
|
|
||||||
def detect_r8152_issue(self, line):
|
def detect_r8152_issue(self, line):
|
||||||
if self.log_follower.phase in (
|
|
||||||
LogSectionType.LAVA_BOOT,
|
|
||||||
LogSectionType.TEST_CASE,
|
|
||||||
) and line["lvl"] in ("feedback", "target"):
|
|
||||||
if search_known_issue_patterns(KNOWN_ISSUE_R8152_PATTERNS, line["msg"]):
|
|
||||||
if (
|
|
||||||
self.r8152_issue_consecutive_counter
|
|
||||||
< KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER
|
|
||||||
):
|
|
||||||
self.r8152_issue_consecutive_counter += 1
|
|
||||||
return
|
|
||||||
|
|
||||||
self.raise_known_issue(
|
|
||||||
"Probable network issue failure encountered, retrying the job"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Reset the status, as the `nfs... still trying` complaint was not detected
|
|
||||||
self.r8152_issue_consecutive_counter = 0
|
|
||||||
|
|
||||||
def detect_forced_reboot(self, line: dict[str, Any]) -> None:
|
|
||||||
if (
|
if (
|
||||||
self.log_follower.phase == LogSectionType.TEST_CASE
|
self.log_follower.phase == LogSectionType.TEST_CASE
|
||||||
and line["lvl"] == "feedback"
|
and line["lvl"] == "target"
|
||||||
):
|
):
|
||||||
if re.search(r"^Reboot requested", line["msg"]):
|
if re.search(r"r8152 \S+ eth0: Tx status -71", line["msg"]):
|
||||||
self.reboot_counter += 1
|
self.has_r8152_issue_history = True
|
||||||
|
return
|
||||||
|
|
||||||
if self.reboot_counter > 0:
|
if self.has_r8152_issue_history and re.search(
|
||||||
self.raise_known_issue(
|
r"nfs: server \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} not responding, still trying",
|
||||||
"Forced reboot detected during test phase, failing the job..."
|
line["msg"],
|
||||||
)
|
):
|
||||||
|
raise MesaCIKnownIssueException(
|
||||||
|
f"{CONSOLE_LOG['FG_MAGENTA']}"
|
||||||
|
"Probable network issue failure encountered, retrying the job"
|
||||||
|
f"{CONSOLE_LOG['RESET']}"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.has_r8152_issue_history = False
|
||||||
|
@@ -187,25 +187,6 @@ class LogFollower:
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def ignore_dut_feedback_lines(self, line: dict[str, str]) -> bool:
|
|
||||||
"""
|
|
||||||
Ignores feedback lines from LAVA.
|
|
||||||
If we only receive this level of message for some time, it means that the job is
|
|
||||||
misbehaving. E.g Rebooting.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
line: A dictionary representing a single log line.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
A boolean indicating whether the current line is a feedback line.
|
|
||||||
"""
|
|
||||||
if line["lvl"] == "feedback" and line["ns"] == "dut":
|
|
||||||
return True
|
|
||||||
if line["lvl"] == "debug":
|
|
||||||
# This message happens after LAVA end receiving the feedback from the DUT
|
|
||||||
if line["msg"] == "Listened to connection for namespace 'dut' done":
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def feed(self, new_lines: list[dict[str, str]]) -> bool:
|
def feed(self, new_lines: list[dict[str, str]]) -> bool:
|
||||||
"""Input data to be processed by LogFollower instance
|
"""Input data to be processed by LogFollower instance
|
||||||
@@ -226,9 +207,6 @@ class LogFollower:
|
|||||||
if self.merge_carriage_return_lines(line):
|
if self.merge_carriage_return_lines(line):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if self.ignore_dut_feedback_lines(line):
|
|
||||||
continue
|
|
||||||
|
|
||||||
# At least we are fed with a non-kernel dump log, it seems that the
|
# At least we are fed with a non-kernel dump log, it seems that the
|
||||||
# job is progressing
|
# job is progressing
|
||||||
is_job_healthy = True
|
is_job_healthy = True
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
# shellcheck disable=SC1003 # works for us now...
|
# shellcheck disable=SC1003 # works for us now...
|
||||||
# shellcheck disable=SC2086 # we want word splitting
|
# shellcheck disable=SC2086 # we want word splitting
|
||||||
|
|
||||||
section_switch meson-cross-file "meson: cross file generate"
|
section_switch meson-configure "meson: configure"
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
@@ -49,38 +49,6 @@ if [ -n "$CROSS" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$HOST_BUILD_OPTIONS" ]; then
|
|
||||||
section_switch meson-host-configure "meson: host configure"
|
|
||||||
|
|
||||||
# Stash the PKG_CONFIG_LIBDIR so that we can use the base x86_64 image
|
|
||||||
# libraries.
|
|
||||||
tmp_pkg_config_libdir=$PKG_CONFIG_LIBDIR
|
|
||||||
unset PKG_CONFIG_LIBDIR
|
|
||||||
|
|
||||||
# Compile a host version for the few tools we need for a cross build (for
|
|
||||||
# now just intel-clc)
|
|
||||||
rm -rf _host_build
|
|
||||||
meson setup _host_build \
|
|
||||||
--native-file=native.file \
|
|
||||||
-D prefix=/usr \
|
|
||||||
-D libdir=lib \
|
|
||||||
${HOST_BUILD_OPTIONS}
|
|
||||||
|
|
||||||
pushd _host_build
|
|
||||||
|
|
||||||
section_switch meson-host-build "meson: host build"
|
|
||||||
|
|
||||||
meson configure
|
|
||||||
ninja
|
|
||||||
ninja install
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Restore PKG_CONFIG_LIBDIR
|
|
||||||
if [ -n "$tmp_pkg_config_libdir" ]; then
|
|
||||||
export PKG_CONFIG_LIBDIR=$tmp_pkg_config_libdir
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Only use GNU time if available, not any shell built-in command
|
# Only use GNU time if available, not any shell built-in command
|
||||||
case $CI_JOB_NAME in
|
case $CI_JOB_NAME in
|
||||||
# ASAN leak detection is incompatible with strace
|
# ASAN leak detection is incompatible with strace
|
||||||
@@ -98,8 +66,6 @@ case $CI_JOB_NAME in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
section_switch meson-configure "meson: configure"
|
|
||||||
|
|
||||||
rm -rf _build
|
rm -rf _build
|
||||||
meson setup _build \
|
meson setup _build \
|
||||||
--native-file=native.file \
|
--native-file=native.file \
|
||||||
|
@@ -238,3 +238,25 @@
|
|||||||
- changes: *rust_file_list
|
- changes: *rust_file_list
|
||||||
when: on_success
|
when: on_success
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
|
||||||
|
.lint-clang-format-rules:
|
||||||
|
rules:
|
||||||
|
- !reference [.never-post-merge-rules, rules]
|
||||||
|
- !reference [.core-rules, rules]
|
||||||
|
# in merge pipeline, formatting checks are not allowed to fail
|
||||||
|
- if: $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||||
|
changes: &clang_format_file_list
|
||||||
|
- .clang-format
|
||||||
|
- .clang-format-include
|
||||||
|
- .clang-format-ignore
|
||||||
|
- src/**/.clang-format
|
||||||
|
- src/egl/**/*
|
||||||
|
- src/amd/vulkan/**/*
|
||||||
|
- src/amd/compiler/**/*
|
||||||
|
- src/etnaviv/isa/**/*
|
||||||
|
when: on_success
|
||||||
|
allow_failure: false
|
||||||
|
# in other pipelines, formatting checks are allowed to fail
|
||||||
|
- changes: *clang_format_file_list
|
||||||
|
when: on_success
|
||||||
|
allow_failure: true
|
||||||
|
@@ -43,6 +43,20 @@ rustfmt:
|
|||||||
- rustfmt --verbose src/**/lib.rs
|
- rustfmt --verbose src/**/lib.rs
|
||||||
- rustfmt --verbose src/**/main.rs
|
- rustfmt --verbose src/**/main.rs
|
||||||
|
|
||||||
|
.clang-format:
|
||||||
|
extends:
|
||||||
|
- .formatting-check
|
||||||
|
- .lint-clang-format-rules
|
||||||
|
variables:
|
||||||
|
LLVM_VERSION: 15
|
||||||
|
before_script:
|
||||||
|
- shopt -s globstar
|
||||||
|
# We need a meson build dir, but its config doesn't actually matter, so
|
||||||
|
# let's just use the default.
|
||||||
|
- meson setup build
|
||||||
|
- clang-format-${LLVM_VERSION} --version
|
||||||
|
- ninja -C build clang-format
|
||||||
|
|
||||||
.test-check:
|
.test-check:
|
||||||
# Cancel job if a newer commit is pushed to the same branch
|
# Cancel job if a newer commit is pushed to the same branch
|
||||||
interruptible: true
|
interruptible: true
|
||||||
@@ -171,6 +185,12 @@ python-test:
|
|||||||
reports:
|
reports:
|
||||||
junit: results/junit.xml
|
junit: results/junit.xml
|
||||||
|
|
||||||
|
.deqp-test-vk:
|
||||||
|
extends:
|
||||||
|
- .deqp-test
|
||||||
|
variables:
|
||||||
|
DEQP_VER: vk
|
||||||
|
|
||||||
.fossilize-test:
|
.fossilize-test:
|
||||||
script:
|
script:
|
||||||
- ./install/fossilize-runner.sh
|
- ./install/fossilize-runner.sh
|
||||||
|
@@ -9,9 +9,8 @@ import os
|
|||||||
import xmlrpc.client
|
import xmlrpc.client
|
||||||
from contextlib import nullcontext as does_not_raise
|
from contextlib import nullcontext as does_not_raise
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from itertools import islice, repeat
|
from itertools import chain, repeat
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Generator
|
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
@@ -342,15 +341,13 @@ def test_full_yaml_log(mock_proxy, frozen_time, lava_job_submitter):
|
|||||||
if not data_chunk:
|
if not data_chunk:
|
||||||
return
|
return
|
||||||
|
|
||||||
first_log = lava_yaml.load(data_chunk[0])[0]
|
first_log_time = data_chunk[0]["dt"]
|
||||||
first_log_time = first_log["dt"]
|
|
||||||
frozen_time.move_to(first_log_time)
|
frozen_time.move_to(first_log_time)
|
||||||
yield
|
yield
|
||||||
|
|
||||||
last_log = lava_yaml.load(data_chunk[-1])[0]
|
last_log_time = data_chunk[-1]["dt"]
|
||||||
last_log_time = last_log["dt"]
|
|
||||||
frozen_time.move_to(last_log_time)
|
frozen_time.move_to(last_log_time)
|
||||||
yield
|
return
|
||||||
|
|
||||||
def time_travel_to_test_time():
|
def time_travel_to_test_time():
|
||||||
# Suppose that the first message timestamp of the entire LAVA job log is
|
# Suppose that the first message timestamp of the entire LAVA job log is
|
||||||
@@ -360,31 +357,22 @@ def test_full_yaml_log(mock_proxy, frozen_time, lava_job_submitter):
|
|||||||
first_log_time = lava_yaml.load(first_log)[0]["dt"]
|
first_log_time = lava_yaml.load(first_log)[0]["dt"]
|
||||||
frozen_time.move_to(first_log_time)
|
frozen_time.move_to(first_log_time)
|
||||||
|
|
||||||
def load_lines() -> Generator[tuple[bool, str], None, None]:
|
def load_lines() -> list:
|
||||||
with open("/tmp/log.yaml", "r") as f:
|
with open("/tmp/log.yaml", "r") as f:
|
||||||
# data = yaml.safe_load(f)
|
# data = yaml.safe_load(f)
|
||||||
log_lines = f.readlines()
|
data = f.readlines()
|
||||||
serial_message: str = ""
|
stream = chain(data)
|
||||||
chunk_start_line = 0
|
|
||||||
chunk_end_line = 0
|
|
||||||
chunk_max_size = 100
|
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
chunk_end_line = chunk_start_line + random.randint(1, chunk_max_size)
|
data_chunk = [next(stream) for _ in range(random.randint(0, 50))]
|
||||||
# split the log in chunks of random size
|
serial_message = "".join(data_chunk)
|
||||||
log_chunk = list(islice(log_lines, chunk_start_line, chunk_end_line))
|
|
||||||
chunk_start_line = chunk_end_line + 1
|
|
||||||
serial_message = "".join(log_chunk)
|
|
||||||
# time_traveller_gen will make the time trave according to the timestamp from
|
|
||||||
# the message
|
|
||||||
time_traveller_gen = time_travel_from_log_chunk(log_chunk)
|
|
||||||
# Suppose that the first message timestamp is the same of
|
# Suppose that the first message timestamp is the same of
|
||||||
# log fetch RPC call
|
# log fetch RPC call
|
||||||
next(time_traveller_gen)
|
time_travel_from_log_chunk(data_chunk)
|
||||||
yield False, "[]"
|
yield False, "[]"
|
||||||
# Travel to the same datetime of the last fetched log line
|
# Travel to the same datetime of the last fetched log line
|
||||||
# in the chunk
|
# in the chunk
|
||||||
next(time_traveller_gen)
|
time_travel_from_log_chunk(data_chunk)
|
||||||
yield False, serial_message
|
yield False, serial_message
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
yield True, serial_message
|
yield True, serial_message
|
||||||
@@ -396,20 +384,11 @@ def test_full_yaml_log(mock_proxy, frozen_time, lava_job_submitter):
|
|||||||
proxy.scheduler.jobs.logs.side_effect = load_lines()
|
proxy.scheduler.jobs.logs.side_effect = load_lines()
|
||||||
|
|
||||||
proxy.scheduler.jobs.submit = reset_logs
|
proxy.scheduler.jobs.submit = reset_logs
|
||||||
try:
|
with pytest.raises(MesaCIRetryError):
|
||||||
time_travel_to_test_time()
|
time_travel_to_test_time()
|
||||||
start_time = datetime.now()
|
lava_job_submitter.submit()
|
||||||
retriable_follow_job(proxy, "")
|
retriable_follow_job(proxy, "")
|
||||||
finally:
|
print(lava_job_submitter.structured_log_file.read_text())
|
||||||
try:
|
|
||||||
# If the job fails, maybe there will be no structured log
|
|
||||||
print(lava_job_submitter.structured_log_file.read_text())
|
|
||||||
finally:
|
|
||||||
end_time = datetime.now()
|
|
||||||
print("---- Reproduction log stats ----")
|
|
||||||
print(f"Start time: {start_time}")
|
|
||||||
print(f"End time: {end_time}")
|
|
||||||
print(f"Duration: {end_time - start_time}")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
@@ -16,15 +16,8 @@ from lava.utils import (
|
|||||||
fix_lava_gitlab_section_log,
|
fix_lava_gitlab_section_log,
|
||||||
hide_sensitive_data,
|
hide_sensitive_data,
|
||||||
)
|
)
|
||||||
from lava.utils.constants import KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER
|
|
||||||
|
|
||||||
from ..lava.helpers import (
|
from ..lava.helpers import create_lava_yaml_msg, does_not_raise, lava_yaml, yaml_dump
|
||||||
create_lava_yaml_msg,
|
|
||||||
does_not_raise,
|
|
||||||
lava_yaml,
|
|
||||||
mock_lava_signal,
|
|
||||||
yaml_dump,
|
|
||||||
)
|
|
||||||
|
|
||||||
GITLAB_SECTION_SCENARIOS = {
|
GITLAB_SECTION_SCENARIOS = {
|
||||||
"start collapsed": (
|
"start collapsed": (
|
||||||
@@ -318,56 +311,47 @@ def test_gitlab_section_id(case_name, expected_id):
|
|||||||
assert gl.id == expected_id
|
assert gl.id == expected_id
|
||||||
|
|
||||||
|
|
||||||
def a618_network_issue_logs(level: str = "target") -> list:
|
A618_NETWORK_ISSUE_LOGS = [
|
||||||
net_error = create_lava_yaml_msg(
|
create_lava_yaml_msg(
|
||||||
msg="[ 1733.599402] r8152 2-1.3:1.0 eth0: Tx status -71", lvl=level)
|
msg="[ 1733.599402] r8152 2-1.3:1.0 eth0: Tx status -71", lvl="target"
|
||||||
|
),
|
||||||
nfs_error = create_lava_yaml_msg(
|
create_lava_yaml_msg(
|
||||||
msg="[ 1733.604506] nfs: server 192.168.201.1 not responding, still trying",
|
msg="[ 1733.604506] nfs: server 192.168.201.1 not responding, still trying",
|
||||||
lvl=level,
|
lvl="target",
|
||||||
)
|
),
|
||||||
|
]
|
||||||
return [
|
TEST_PHASE_LAVA_SIGNAL = create_lava_yaml_msg(
|
||||||
*(KNOWN_ISSUE_R8152_MAX_CONSECUTIVE_COUNTER*[net_error]),
|
msg="Received signal: <STARTTC> mesa-ci_a618_vk", lvl="debug"
|
||||||
nfs_error
|
)
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
TEST_PHASE_LAVA_SIGNAL = mock_lava_signal(LogSectionType.TEST_CASE)
|
|
||||||
A618_NET_ISSUE_BOOT = a618_network_issue_logs(level="feedback")
|
|
||||||
A618_NET_ISSUE_TEST = [TEST_PHASE_LAVA_SIGNAL, *a618_network_issue_logs(level="target")]
|
|
||||||
|
|
||||||
|
|
||||||
A618_NETWORK_ISSUE_SCENARIOS = {
|
A618_NETWORK_ISSUE_SCENARIOS = {
|
||||||
"Fail - R8152 kmsg during boot phase": (
|
"Pass - R8152 kmsg during boot": (A618_NETWORK_ISSUE_LOGS, does_not_raise()),
|
||||||
A618_NET_ISSUE_BOOT,
|
|
||||||
pytest.raises(MesaCIKnownIssueException),
|
|
||||||
),
|
|
||||||
"Fail - R8152 kmsg during test phase": (
|
"Fail - R8152 kmsg during test phase": (
|
||||||
A618_NET_ISSUE_TEST,
|
[TEST_PHASE_LAVA_SIGNAL, *A618_NETWORK_ISSUE_LOGS],
|
||||||
pytest.raises(MesaCIKnownIssueException),
|
pytest.raises(MesaCIKnownIssueException),
|
||||||
),
|
),
|
||||||
"Pass - Partial (1) R8152 kmsg during test phase": (
|
"Pass - Partial (1) R8152 kmsg during test phase": (
|
||||||
A618_NET_ISSUE_TEST[:1],
|
[TEST_PHASE_LAVA_SIGNAL, A618_NETWORK_ISSUE_LOGS[0]],
|
||||||
does_not_raise(),
|
does_not_raise(),
|
||||||
),
|
),
|
||||||
"Pass - Partial (2) R8152 kmsg during test phase": (
|
"Pass - Partial (2) R8152 kmsg during test phase": (
|
||||||
A618_NET_ISSUE_TEST[:2],
|
[TEST_PHASE_LAVA_SIGNAL, A618_NETWORK_ISSUE_LOGS[1]],
|
||||||
does_not_raise(),
|
does_not_raise(),
|
||||||
),
|
),
|
||||||
"Pass - Partial (3) subsequent R8152 kmsg during test phase": (
|
"Pass - Partial subsequent (3) R8152 kmsg during test phase": (
|
||||||
[
|
[
|
||||||
TEST_PHASE_LAVA_SIGNAL,
|
TEST_PHASE_LAVA_SIGNAL,
|
||||||
A618_NET_ISSUE_TEST[1],
|
A618_NETWORK_ISSUE_LOGS[0],
|
||||||
A618_NET_ISSUE_TEST[1],
|
A618_NETWORK_ISSUE_LOGS[0],
|
||||||
],
|
],
|
||||||
does_not_raise(),
|
does_not_raise(),
|
||||||
),
|
),
|
||||||
"Pass - Partial (4) subsequent nfs kmsg during test phase": (
|
"Pass - Partial subsequent (4) R8152 kmsg during test phase": (
|
||||||
[
|
[
|
||||||
TEST_PHASE_LAVA_SIGNAL,
|
TEST_PHASE_LAVA_SIGNAL,
|
||||||
A618_NET_ISSUE_TEST[-1],
|
A618_NETWORK_ISSUE_LOGS[1],
|
||||||
A618_NET_ISSUE_TEST[-1],
|
A618_NETWORK_ISSUE_LOGS[1],
|
||||||
],
|
],
|
||||||
does_not_raise(),
|
does_not_raise(),
|
||||||
),
|
),
|
||||||
@@ -380,13 +364,6 @@ A618_NETWORK_ISSUE_SCENARIOS = {
|
|||||||
ids=A618_NETWORK_ISSUE_SCENARIOS.keys(),
|
ids=A618_NETWORK_ISSUE_SCENARIOS.keys(),
|
||||||
)
|
)
|
||||||
def test_detect_failure(messages, expectation):
|
def test_detect_failure(messages, expectation):
|
||||||
boot_section = GitlabSection(
|
lf = LogFollower()
|
||||||
id="lava_boot",
|
|
||||||
header="LAVA boot",
|
|
||||||
type=LogSectionType.LAVA_BOOT,
|
|
||||||
start_collapsed=True,
|
|
||||||
)
|
|
||||||
boot_section.start()
|
|
||||||
lf = LogFollower(starting_section=boot_section)
|
|
||||||
with expectation:
|
with expectation:
|
||||||
lf.feed(messages)
|
lf.feed(messages)
|
||||||
|
@@ -59,6 +59,7 @@ meson setup `
|
|||||||
-Dopencl-spirv=true `
|
-Dopencl-spirv=true `
|
||||||
-Dmicrosoft-clc=enabled `
|
-Dmicrosoft-clc=enabled `
|
||||||
-Dstatic-libclc=all `
|
-Dstatic-libclc=all `
|
||||||
|
-Dopencl-external-clang-headers=disabled `
|
||||||
-Dspirv-to-dxil=true `
|
-Dspirv-to-dxil=true `
|
||||||
-Dbuild-tests=true `
|
-Dbuild-tests=true `
|
||||||
-Dwerror=true `
|
-Dwerror=true `
|
||||||
|
@@ -158,12 +158,12 @@ Remove-Item -Recurse -Force -ErrorAction SilentlyContinue -Path $llvm_build
|
|||||||
|
|
||||||
Get-Date
|
Get-Date
|
||||||
Write-Host "Cloning SPIRV-Tools"
|
Write-Host "Cloning SPIRV-Tools"
|
||||||
git clone -b "vulkan-sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Tools deps/SPIRV-Tools
|
git clone -b "sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Tools deps/SPIRV-Tools
|
||||||
if (!$?) {
|
if (!$?) {
|
||||||
Write-Host "Failed to clone SPIRV-Tools repository"
|
Write-Host "Failed to clone SPIRV-Tools repository"
|
||||||
Exit 1
|
Exit 1
|
||||||
}
|
}
|
||||||
git clone -b "vulkan-sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Headers deps/SPIRV-Tools/external/SPIRV-Headers
|
git clone -b "sdk-$env:VULKAN_SDK_VERSION" --depth=1 https://github.com/KhronosGroup/SPIRV-Headers deps/SPIRV-Tools/external/SPIRV-Headers
|
||||||
if (!$?) {
|
if (!$?) {
|
||||||
Write-Host "Failed to clone SPIRV-Headers repository"
|
Write-Host "Failed to clone SPIRV-Headers repository"
|
||||||
Exit 1
|
Exit 1
|
||||||
|
@@ -18,7 +18,7 @@ Remove-Item -Recurse 'C:\agility'
|
|||||||
|
|
||||||
Write-Host "Downloading Updated WARP at:"
|
Write-Host "Downloading Updated WARP at:"
|
||||||
Get-Date
|
Get-Date
|
||||||
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.9 -OutFile 'warp.zip'
|
Invoke-WebRequest -Uri https://www.nuget.org/api/v2/package/Microsoft.Direct3D.WARP/1.0.7.1 -OutFile 'warp.zip'
|
||||||
Expand-Archive -Path 'warp.zip' -DestinationPath 'C:\warp'
|
Expand-Archive -Path 'warp.zip' -DestinationPath 'C:\warp'
|
||||||
# Copy WARP into mesa-deps\bin
|
# Copy WARP into mesa-deps\bin
|
||||||
Copy-Item 'C:\warp\build\native\amd64\d3d10warp.dll' -Destination $depsInstallPath\bin
|
Copy-Item 'C:\warp\build\native\amd64\d3d10warp.dll' -Destination $depsInstallPath\bin
|
||||||
|
@@ -53,7 +53,7 @@ New-Item -ItemType Directory -Path "$piglit_source" | Out-Null
|
|||||||
Push-Location -Path $piglit_source
|
Push-Location -Path $piglit_source
|
||||||
git init
|
git init
|
||||||
git remote add origin https://gitlab.freedesktop.org/mesa/piglit.git
|
git remote add origin https://gitlab.freedesktop.org/mesa/piglit.git
|
||||||
git fetch --depth 1 origin 814046fe6942eac660ee4a6cc5fcc54011a49945 # of branch main
|
git fetch --depth 1 origin b41accc83689966f91217fc5b57dbe06202b8c8c # of branch main
|
||||||
if (!$?) {
|
if (!$?) {
|
||||||
Write-Host "Failed to fetch Piglit repository"
|
Write-Host "Failed to fetch Piglit repository"
|
||||||
Pop-Location
|
Pop-Location
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
# Touch this file needs update both WINDOWS_X64_BUILD_TAG WINDOWS_X64_TEST_TAG
|
# Touch this file needs update both WINDOWS_X64_BUILD_TAG WINDOWS_X64_TEST_TAG
|
||||||
# This file needs run in administrator mode
|
# This file needs run in administrator mode
|
||||||
|
|
||||||
$env:VULKAN_SDK_VERSION="1.3.275.0"
|
$env:VULKAN_SDK_VERSION="1.3.211.0"
|
||||||
|
|
||||||
$ProgressPreference = "SilentlyContinue"
|
$ProgressPreference = "SilentlyContinue"
|
||||||
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
$env:PIGLIT_NO_FAST_SKIP = 1
|
$env:PIGLIT_NO_FAST_SKIP = 1
|
||||||
$env:PIGLIT_SPIRV_AS_BINARY = "C:\VulkanSDK\$env:VULKAN_SDK_VERSION\Bin\spirv-as.exe"
|
|
||||||
|
|
||||||
Copy-Item -Path _install\bin\opengl32.dll -Destination C:\Piglit\bin\opengl32.dll
|
Copy-Item -Path _install\bin\opengl32.dll -Destination C:\Piglit\bin\opengl32.dll
|
||||||
Copy-Item -Path _install\bin\libgallium_wgl.dll -Destination C:\Piglit\bin\libgallium_wgl.dll
|
Copy-Item -Path _install\bin\libgallium_wgl.dll -Destination C:\Piglit\bin\libgallium_wgl.dll
|
||||||
|
@@ -1,279 +0,0 @@
|
|||||||
# version field is required
|
|
||||||
version: 1
|
|
||||||
project:
|
|
||||||
name: 'mesa'
|
|
||||||
id: 176
|
|
||||||
instance: https://gitlab.freedesktop.org
|
|
||||||
|
|
||||||
issues:
|
|
||||||
topics: &topics
|
|
||||||
'aco': 'ACO'
|
|
||||||
'anv': 'ANV'
|
|
||||||
'asahi': 'asahi'
|
|
||||||
'blorp': 'blorp'
|
|
||||||
'ci': 'CI'
|
|
||||||
'clc': 'OpenCL'
|
|
||||||
'clover': 'clover'
|
|
||||||
'crocus': 'crocus'
|
|
||||||
'd3d12': 'd3d12'
|
|
||||||
'docs': 'docs'
|
|
||||||
'dozen': 'dozen'
|
|
||||||
'drirc': 'drirc'
|
|
||||||
'dzn': 'dozen'
|
|
||||||
'egl': 'EGL'
|
|
||||||
'etnaviv': 'etnaviv'
|
|
||||||
'freedreno': 'freedreno'
|
|
||||||
'freedreno/ir3': ['freedreno', 'ir3']
|
|
||||||
'gallium': 'gallium'
|
|
||||||
'gbm': 'gbm'
|
|
||||||
'gitlab-ci': 'CI'
|
|
||||||
'glsl': 'GLSL'
|
|
||||||
'glvnd': 'GLVND'
|
|
||||||
'glx': 'GLX'
|
|
||||||
'hasvk': 'hasvk'
|
|
||||||
'i915': 'i915'
|
|
||||||
'i965': 'i965'
|
|
||||||
'intel/compiler': 'intel-compiler'
|
|
||||||
'intel/brw': 'intel-brw'
|
|
||||||
'intel/elk': 'intel-elk'
|
|
||||||
'intel/tools': 'intel-tools'
|
|
||||||
'iris': 'iris'
|
|
||||||
'isl': 'ISL'
|
|
||||||
'lima': 'lima'
|
|
||||||
'lima/ppir' : 'lima'
|
|
||||||
'llvmpipe': 'llvmpipe'
|
|
||||||
'mesa' : 'mesa'
|
|
||||||
'meson' : 'meson'
|
|
||||||
'microsoft/compiler': 'd3d12'
|
|
||||||
'nak' : 'NAK'
|
|
||||||
'nine' : 'nine'
|
|
||||||
'nir': 'NIR'
|
|
||||||
'nir2dxil': 'd3d12'
|
|
||||||
'nouveau' : 'nouveau'
|
|
||||||
'nv30' : ['nouveau', 'nv30']
|
|
||||||
'nv50' : ['nouveau', 'nv50']
|
|
||||||
'nv50/ir' : 'nouveau'
|
|
||||||
'nvc0' : ['nouveau', 'nvc0']
|
|
||||||
'nvk' : 'NVK'
|
|
||||||
'panfrost' : 'panfrost'
|
|
||||||
'pan/midgard' : 'panfrost'
|
|
||||||
'pvr' : 'powervr'
|
|
||||||
'r100' : 'r100'
|
|
||||||
'r200' : 'r200'
|
|
||||||
'r300' : 'r300'
|
|
||||||
'r600' : 'r600'
|
|
||||||
'radeonsi' : 'radeonsi'
|
|
||||||
'radv': 'RADV'
|
|
||||||
'radv/aco': ['RADV', 'ACO']
|
|
||||||
'rusticl': 'Rusticl'
|
|
||||||
'softpipe' : 'softpipe'
|
|
||||||
'spirv' : 'SPIR-V'
|
|
||||||
'swr' : 'swr'
|
|
||||||
'swrast' : 'swrast'
|
|
||||||
'tegra' : 'tegra'
|
|
||||||
'tgsi' : 'TGSI'
|
|
||||||
'turnip': 'turnip'
|
|
||||||
'util' : 'util'
|
|
||||||
'v3d': 'v3d'
|
|
||||||
'vaapi' : 'VA-API'
|
|
||||||
'vc4' : 'vc4'
|
|
||||||
'vdpau' : 'VDPAU'
|
|
||||||
'vieux' : 'vieux'
|
|
||||||
'virgl' : 'virgl'
|
|
||||||
'vmwgfx' : 'vmwgfx'
|
|
||||||
'zink': 'zink'
|
|
||||||
|
|
||||||
titles: &titles
|
|
||||||
'android': 'android'
|
|
||||||
'bisected': 'bisected'
|
|
||||||
'coverity': 'coverity'
|
|
||||||
'deqp': 'deqp'
|
|
||||||
'feature request': 'feature_request'
|
|
||||||
'haiku' : 'haiku'
|
|
||||||
'regression': 'regression'
|
|
||||||
|
|
||||||
'i915_dri.so' : 'i915'
|
|
||||||
'i965_dri.so' : 'i965'
|
|
||||||
'iris_dri.so' : 'iris'
|
|
||||||
'nouveau_dri.so' : 'nouveau'
|
|
||||||
'nouveau_vieux_dri.so' : 'vieux'
|
|
||||||
'r200_dri.so' : 'r200'
|
|
||||||
'r300_dri.so' : 'r300'
|
|
||||||
'r600_dri.so' : 'r600'
|
|
||||||
'radeonsi_dri.so' : 'radeonsi'
|
|
||||||
'swrast_dri.so' : 'swrast'
|
|
||||||
'vmwgfx_dri.so' : 'vmwgfx'
|
|
||||||
|
|
||||||
merge_requests:
|
|
||||||
topics:
|
|
||||||
*topics
|
|
||||||
titles:
|
|
||||||
*titles
|
|
||||||
|
|
||||||
paths:
|
|
||||||
'^.gitlab/issue_templates/' : ['docs']
|
|
||||||
'^.gitlab-ci' : ['CI']
|
|
||||||
'^.*/gitlab-ci.yml' : ['CI']
|
|
||||||
'^.*/ci/' : ['CI']
|
|
||||||
'^.gitlab-ci/windows/' : ['Windows']
|
|
||||||
'^bin/__init__.py$' : ['maintainer-scripts']
|
|
||||||
'^bin/gen_release_notes' : ['maintainer-scripts']
|
|
||||||
'^bin/git_sha1_gen.py$' : ['meson', 'android']
|
|
||||||
'^bin/install_megadrivers.py$' : ['meson']
|
|
||||||
'^bin/meson-cmd-extract.py$' : ['meson']
|
|
||||||
'^bin/meson.build$' : ['meson']
|
|
||||||
'^bin/pick-ui' : ['maintainer-scripts']
|
|
||||||
'^bin/pick/' : ['maintainer-scripts']
|
|
||||||
'^bin/post_version' : ['maintainer-scripts']
|
|
||||||
'^bin/symbols-check.py$' : ['meson']
|
|
||||||
'^docs/' : ['docs']
|
|
||||||
'^include/drm-uapi/i915_drm.h' : ['intel']
|
|
||||||
'^include/drm-uapi/xe_drm.h' : ['intel']
|
|
||||||
'^include/vulkan/' : ['vulkan']
|
|
||||||
'^meson_options.txt' : ['meson']
|
|
||||||
'^README.rst' : ['docs']
|
|
||||||
'^src/amd/addrlib/' : ['AMD common']
|
|
||||||
'^src/amd/common/' : ['AMD common']
|
|
||||||
'^src/amd/compiler/' : ['ACO']
|
|
||||||
'^src/amd/llvm/' : ['AMD common']
|
|
||||||
'^src/amd/registers/' : ['AMD common']
|
|
||||||
'^src/amd/vulkan/' : ['RADV']
|
|
||||||
'^src/asahi/' : ['asahi']
|
|
||||||
'^src/broadcom/drm-shim/v3d' : ['v3d']
|
|
||||||
'^src/broadcom/vulkan/' : ['v3dv']
|
|
||||||
'^src/compiler/clc' : ['OpenCL']
|
|
||||||
'^src/compiler/glsl' : ['GLSL']
|
|
||||||
'^src/compiler/nir' : ['NIR']
|
|
||||||
'^src/compiler/spirv/' : ['SPIR-V']
|
|
||||||
'^src/egl/' : ['EGL']
|
|
||||||
'^src/egl/drivers/wgl/' : ['wgl']
|
|
||||||
'^src/etnaviv/' : ['etnaviv']
|
|
||||||
'^src/freedreno/' : ['freedreno']
|
|
||||||
'^src/freedreno/ir3/' : ['ir3']
|
|
||||||
'^src/freedreno/vulkan/' : ['turnip']
|
|
||||||
'^src/gallium/auxiliary/' : ['gallium']
|
|
||||||
'^src/gallium/auxiliary/nir/' : ['NIR']
|
|
||||||
'^src/gallium/auxiliary/nir/.*tgsi.*' : ['TGSI']
|
|
||||||
'^src/gallium/auxiliary/tgsi/' : ['TGSI']
|
|
||||||
'^src/gallium/docs/' : ['gallium']
|
|
||||||
'^src/gallium/drivers/asahi/' : ['asahi']
|
|
||||||
'^src/gallium/drivers/crocus/' : ['crocus']
|
|
||||||
'^src/gallium/drivers/d3d12/' : ['d3d12']
|
|
||||||
'^src/gallium/drivers/etnaviv/' : ['etnaviv']
|
|
||||||
'^src/gallium/drivers/freedreno/' : ['freedreno']
|
|
||||||
'^src/gallium/drivers/grate/' : ['tegra']
|
|
||||||
'^src/gallium/drivers/i915/' : ['i915g']
|
|
||||||
'^src/gallium/drivers/iris/' : ['iris']
|
|
||||||
'^src/gallium/drivers/lima/' : ['lima']
|
|
||||||
'^src/gallium/drivers/llvmpipe/' : ['llvmpipe']
|
|
||||||
'^src/gallium/drivers/nouveau/' : ['nouveau']
|
|
||||||
'^src/gallium/drivers/nouveau/nv30' : ['nv30']
|
|
||||||
'^src/gallium/drivers/nouveau/nv50' : ['nv50']
|
|
||||||
'^src/gallium/drivers/nouveau/nvc0' : ['nvc0']
|
|
||||||
'^src/gallium/drivers/panfrost/' : ['panfrost']
|
|
||||||
'^src/gallium/drivers/r300/' : ['r300']
|
|
||||||
'^src/gallium/drivers/r600/' : ['r600']
|
|
||||||
'^src/gallium/drivers/radeonsi' : ['radeonsi']
|
|
||||||
'^src/gallium/drivers/softpipe' : ['softpipe']
|
|
||||||
'^src/gallium/drivers/svga/' : ['svga']
|
|
||||||
'^src/gallium/drivers/swr/' : ['swr']
|
|
||||||
'^src/gallium/drivers/tegra/' : ['tegra']
|
|
||||||
'^src/gallium/drivers/v3d/' : ['v3d']
|
|
||||||
'^src/gallium/drivers/vc4/' : ['vc4']
|
|
||||||
'^src/gallium/drivers/virgl/' : ['virgl']
|
|
||||||
'^src/gallium/drivers/zink/' : ['zink']
|
|
||||||
'^src/gallium/frontends/clover/' : ['clover']
|
|
||||||
'^src/gallium/frontends/dri/' : ['gallium']
|
|
||||||
'^src/gallium/frontends/glx/' : ['GLX']
|
|
||||||
'^src/gallium/frontends/hgl/' : ['haiku']
|
|
||||||
'^src/gallium/frontends/lavapipe/' : ['lavapipe']
|
|
||||||
'^src/gallium/frontends/nine/' : ['nine']
|
|
||||||
'^src/gallium/frontends/omx/' : ['omx']
|
|
||||||
'^src/gallium/frontends/osmesa/' : ['osmesa']
|
|
||||||
'^src/gallium/frontends/rusticl/' : ['Rusticl']
|
|
||||||
'^src/gallium/frontends/va/' : ['VA-API']
|
|
||||||
'^src/gallium/frontends/vdpau/' : ['VDPAU']
|
|
||||||
'^src/gallium/frontends/wgl/' : ['wgl']
|
|
||||||
# '^src/gallium/frontends/xa/' : ['']
|
|
||||||
'^src/gallium/include/' : ['gallium']
|
|
||||||
'^src/gallium/targets/' : ['gallium']
|
|
||||||
'^src/gallium/targets/opencl/' : ['clover']
|
|
||||||
'^src/gallium/targets/osmesa/' : ['osmesa']
|
|
||||||
'^src/gallium/targets/rusticl/' : ['Rusticl']
|
|
||||||
'^src/gallium/tests/' : ['gallium']
|
|
||||||
'^src/gallium/tools/' : ['gallium']
|
|
||||||
# '^src/gallium/winsys/amdgpu/' : ['']
|
|
||||||
'^src/gallium/winsys/crocus/' : ['crocus']
|
|
||||||
'^src/gallium/winsys/d3d12/' : ['d3d12']
|
|
||||||
'^src/gallium/winsys/etnaviv/' : ['etnaviv']
|
|
||||||
'^src/gallium/winsys/freedreno/' : ['freedreno']
|
|
||||||
'^src/gallium/winsys/grate/' : ['tegra']
|
|
||||||
'^src/gallium/winsys/i915/' : ['i915g']
|
|
||||||
'^src/gallium/winsys/iris/' : ['iris']
|
|
||||||
# '^src/gallium/winsys/kmsro/' : ['']
|
|
||||||
'^src/gallium/winsys/lima/' : ['lima']
|
|
||||||
'^src/gallium/winsys/nouveau/' : ['nouveau']
|
|
||||||
'^src/gallium/winsys/panfrost/' : ['panfrost']
|
|
||||||
# '^src/gallium/winsys/radeon/' : ['radeon']
|
|
||||||
'^src/gallium/winsys/svga/' : ['svga']
|
|
||||||
# '^src/gallium/winsys/sw/' : ['']
|
|
||||||
'^src/gallium/winsys/sw/gdi/' : ['wgl']
|
|
||||||
'^src/gallium/winsys/tegra/' : ['tegra']
|
|
||||||
'^src/gallium/winsys/v3d/' : ['v3d']
|
|
||||||
'^src/gallium/winsys/vc4/' : ['vc4']
|
|
||||||
'^src/gallium/winsys/virgl/' : ['virgl']
|
|
||||||
'^src/gbm/' : ['gbm']
|
|
||||||
'^src/glx/' : ['GLX']
|
|
||||||
'^src/imagination/' : ['powervr']
|
|
||||||
'^src/intel/blorp/' : ['blorp']
|
|
||||||
'^src/intel/common/' : ['intel']
|
|
||||||
'^src/intel/compiler/' : ['intel-compiler']
|
|
||||||
'^src/intel/compiler/brw' : ['intel-brw']
|
|
||||||
'^src/intel/compiler/elk' : ['intel-elk']
|
|
||||||
'^src/intel/dev/' : ['intel']
|
|
||||||
'^src/intel/ds/' : ['intel']
|
|
||||||
'^src/intel/genxml/' : ['intel']
|
|
||||||
'^src/intel/isl/' : ['ISL']
|
|
||||||
'^src/intel/nullhw-layer/' : ['intel']
|
|
||||||
'^src/intel/perf/' : ['intel']
|
|
||||||
'^src/intel/tools/' : ['intel-tools']
|
|
||||||
'^src/intel/vulkan/' : ['ANV']
|
|
||||||
'^src/intel/vulkan_hasvk/' : ['hasvk']
|
|
||||||
'^src/loader/' : ['loader']
|
|
||||||
'^src/mapi/' : ['mapi']
|
|
||||||
'^src/mesa/drivers/dri/i915/' : ['i915']
|
|
||||||
'^src/mesa/drivers/dri/i965/' : ['i965']
|
|
||||||
'^src/mesa/drivers/dri/nouveau/' : ['vieux']
|
|
||||||
'^src/mesa/drivers/dri/r200/' : ['r200']
|
|
||||||
'^src/mesa/drivers/dri/radeon/' : ['radeon']
|
|
||||||
'^src/mesa/drivers/dri/swrast/' : ['swrast']
|
|
||||||
'^src/mesa/drivers/osmesa' : ['osmesa']
|
|
||||||
'^src/mesa/main/' : ['mesa']
|
|
||||||
'^src/mesa/state_tracker/.*glsl.*' : ['GLSL']
|
|
||||||
'^src/mesa/state_tracker/.*tgsi.*' : ['TGSI']
|
|
||||||
'^src/mesa/state_tracker/.*nir.*' : ['NIR']
|
|
||||||
'^src/microsoft/clc/' : ['d3d12']
|
|
||||||
'^src/microsoft/compiler/' : ['d3d12']
|
|
||||||
'^src/microsoft/spirv_to_dxil/' : ['dozen']
|
|
||||||
'^src/microsoft/vulkan/' : ['dozen']
|
|
||||||
'^src/nouveau/codegen/' : ['nouveau']
|
|
||||||
'^src/nouveau/compiler/' : ['NAK']
|
|
||||||
'^src/nouveau/drm-shim/' : ['nouveau']
|
|
||||||
'^src/nouveau/mme/' : ['NVK']
|
|
||||||
'^src/nouveau/nil/' : ['NVK']
|
|
||||||
'^src/nouveau/nvidia-headers/' : ['NVK']
|
|
||||||
'^src/nouveau/vulkan/' : ['NVK']
|
|
||||||
'^src/nouveau/winsys/' : ['NVK']
|
|
||||||
'^src/panfrost/' : ['panfrost']
|
|
||||||
'^src/virtio/vulkan/' : ['venus']
|
|
||||||
'^src/virtio/venus-protocol/' : ['venus']
|
|
||||||
'^src/virtio/ci/' : ['venus']
|
|
||||||
'^src/util/' : ['util']
|
|
||||||
'^src/util/00-mesa-defaults.conf' : ['drirc']
|
|
||||||
'^src/vulkan/' : ['vulkan']
|
|
||||||
'^VERSION$' : ['maintainer-scripts']
|
|
||||||
|
|
||||||
'Android' : ['android']
|
|
||||||
'EGL' : ['EGL']
|
|
||||||
'meson.build' : ['meson']
|
|
||||||
'wayland' : ['wayland']
|
|
64052
.pick_status.json
Normal file
64052
.pick_status.json
Normal file
File diff suppressed because it is too large
Load Diff
14
CODEOWNERS
14
CODEOWNERS
@@ -29,7 +29,7 @@ meson.build @dbaker @eric
|
|||||||
|
|
||||||
# Compatibility headers
|
# Compatibility headers
|
||||||
/include/c99* @xexaxo
|
/include/c99* @xexaxo
|
||||||
/src/c11/ @lygstate
|
/src/c11/ @eric @lygstate
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
/docs/ @eric @xexaxo
|
/docs/ @eric @xexaxo
|
||||||
@@ -43,8 +43,8 @@ meson.build @dbaker @eric
|
|||||||
/src/compiler/nir/ @gfxstrand
|
/src/compiler/nir/ @gfxstrand
|
||||||
|
|
||||||
# Vulkan
|
# Vulkan
|
||||||
/src/vulkan/ @gfxstrand
|
/src/vulkan/ @eric @gfxstrand
|
||||||
/include/vulkan/ @gfxstrand
|
/include/vulkan/ @eric @gfxstrand
|
||||||
|
|
||||||
|
|
||||||
#############
|
#############
|
||||||
@@ -99,10 +99,6 @@ meson.build @dbaker @eric
|
|||||||
# CI #
|
# CI #
|
||||||
######
|
######
|
||||||
|
|
||||||
/.gitlab-ci.yml @eric
|
|
||||||
/.gitlab-ci/ @eric
|
|
||||||
gitlab-ci*.yml @eric
|
|
||||||
|
|
||||||
# Broadcom
|
# Broadcom
|
||||||
/src/broadcom/ci/ @jasuarez @chema
|
/src/broadcom/ci/ @jasuarez @chema
|
||||||
|
|
||||||
@@ -124,8 +120,8 @@ gitlab-ci*.yml @eric
|
|||||||
/src/gallium/drivers/freedreno/ @robclark
|
/src/gallium/drivers/freedreno/ @robclark
|
||||||
|
|
||||||
# Imagination
|
# Imagination
|
||||||
/include/drm-uapi/pvr_drm.h @aashishc @frankbinns @luigi.santivetti
|
/include/drm-uapi/pvr_drm.h @CreativeCylon @frankbinns @MTCoster
|
||||||
/src/imagination/ @aashishc @frankbinns @luigi.santivetti
|
/src/imagination/ @CreativeCylon @frankbinns @MTCoster
|
||||||
/src/imagination/rogue/ @simon-perretta-img
|
/src/imagination/rogue/ @simon-perretta-img
|
||||||
|
|
||||||
# Intel
|
# Intel
|
||||||
|
@@ -79,6 +79,11 @@ LOCAL_SHARED_LIBRARIES += libdrm_radeon
|
|||||||
MESON_GEN_PKGCONFIGS += libdrm_radeon:$(LIBDRM_VERSION)
|
MESON_GEN_PKGCONFIGS += libdrm_radeon:$(LIBDRM_VERSION)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(filter nouveau,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||||
|
LOCAL_SHARED_LIBRARIES += libdrm_nouveau
|
||||||
|
MESON_GEN_PKGCONFIGS += libdrm_nouveau:$(LIBDRM_VERSION)
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(filter d3d12,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
ifneq ($(filter d3d12,$(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||||
LOCAL_HEADER_LIBRARIES += DirectX-Headers
|
LOCAL_HEADER_LIBRARIES += DirectX-Headers
|
||||||
LOCAL_STATIC_LIBRARIES += DirectX-Guids
|
LOCAL_STATIC_LIBRARIES += DirectX-Guids
|
||||||
@@ -123,21 +128,23 @@ endif
|
|||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
# $1: name
|
# $1: name
|
||||||
# $2: subdir
|
# $2: symlink suffix
|
||||||
# $3: source prebuilt
|
# $3: subdir
|
||||||
# $4: export headers
|
# $4: source prebuilt
|
||||||
|
# $5: export headers
|
||||||
define mesa3d-lib
|
define mesa3d-lib
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||||
LOCAL_MODULE := $1
|
LOCAL_MODULE := $1
|
||||||
LOCAL_VENDOR_MODULE := true
|
LOCAL_VENDOR_MODULE := true
|
||||||
LOCAL_MODULE_RELATIVE_PATH := $2
|
LOCAL_MODULE_RELATIVE_PATH := $3
|
||||||
LOCAL_PREBUILT_MODULE_FILE := $($3)
|
LOCAL_PREBUILT_MODULE_FILE := $($4)
|
||||||
LOCAL_MULTILIB := first
|
LOCAL_MULTILIB := first
|
||||||
LOCAL_CHECK_ELF_FILES := false
|
LOCAL_CHECK_ELF_FILES := false
|
||||||
LOCAL_MODULE_SUFFIX := .so
|
LOCAL_MODULE_SUFFIX := .so
|
||||||
|
LOCAL_MODULE_SYMLINKS := $1$2
|
||||||
LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
||||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $4
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $5
|
||||||
include $(BUILD_PREBUILT)
|
include $(BUILD_PREBUILT)
|
||||||
|
|
||||||
ifdef TARGET_2ND_ARCH
|
ifdef TARGET_2ND_ARCH
|
||||||
@@ -145,13 +152,14 @@ include $(CLEAR_VARS)
|
|||||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||||
LOCAL_MODULE := $1
|
LOCAL_MODULE := $1
|
||||||
LOCAL_VENDOR_MODULE := true
|
LOCAL_VENDOR_MODULE := true
|
||||||
LOCAL_MODULE_RELATIVE_PATH := $2
|
LOCAL_MODULE_RELATIVE_PATH := $3
|
||||||
LOCAL_PREBUILT_MODULE_FILE := $(2ND_$3)
|
LOCAL_PREBUILT_MODULE_FILE := $(2ND_$4)
|
||||||
LOCAL_MULTILIB := 32
|
LOCAL_MULTILIB := 32
|
||||||
LOCAL_CHECK_ELF_FILES := false
|
LOCAL_CHECK_ELF_FILES := false
|
||||||
LOCAL_MODULE_SUFFIX := .so
|
LOCAL_MODULE_SUFFIX := .so
|
||||||
|
LOCAL_MODULE_SYMLINKS := $1$2
|
||||||
LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
LOCAL_SHARED_LIBRARIES := $(__MY_SHARED_LIBRARIES)
|
||||||
LOCAL_EXPORT_C_INCLUDE_DIRS := $4
|
LOCAL_EXPORT_C_INCLUDE_DIRS := $5
|
||||||
include $(BUILD_PREBUILT)
|
include $(BUILD_PREBUILT)
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
@@ -159,25 +167,25 @@ endef
|
|||||||
ifneq ($(strip $(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
ifneq ($(strip $(BOARD_MESA3D_GALLIUM_DRIVERS)),)
|
||||||
# Module 'libgallium_dri', produces '/vendor/lib{64}/dri/libgallium_dri.so'
|
# Module 'libgallium_dri', produces '/vendor/lib{64}/dri/libgallium_dri.so'
|
||||||
# This module also trigger DRI symlinks creation process
|
# This module also trigger DRI symlinks creation process
|
||||||
$(eval $(call mesa3d-lib,libgallium_dri,dri,MESA3D_GALLIUM_DRI_BIN))
|
$(eval $(call mesa3d-lib,libgallium_dri,.so.0,dri,MESA3D_GALLIUM_DRI_BIN))
|
||||||
# Module 'libglapi', produces '/vendor/lib{64}/libglapi.so'
|
# Module 'libglapi', produces '/vendor/lib{64}/libglapi.so'
|
||||||
$(eval $(call mesa3d-lib,libglapi,,MESA3D_LIBGLAPI_BIN))
|
$(eval $(call mesa3d-lib,libglapi,.so.0,,MESA3D_LIBGLAPI_BIN))
|
||||||
|
|
||||||
# Module 'libEGL_mesa', produces '/vendor/lib{64}/egl/libEGL_mesa.so'
|
# Module 'libEGL_mesa', produces '/vendor/lib{64}/egl/libEGL_mesa.so'
|
||||||
$(eval $(call mesa3d-lib,libEGL_mesa,egl,MESA3D_LIBEGL_BIN))
|
$(eval $(call mesa3d-lib,libEGL_mesa,.so.1,egl,MESA3D_LIBEGL_BIN))
|
||||||
# Module 'libGLESv1_CM_mesa', produces '/vendor/lib{64}/egl/libGLESv1_CM_mesa.so'
|
# Module 'libGLESv1_CM_mesa', produces '/vendor/lib{64}/egl/libGLESv1_CM_mesa.so'
|
||||||
$(eval $(call mesa3d-lib,libGLESv1_CM_mesa,egl,MESA3D_LIBGLESV1_BIN))
|
$(eval $(call mesa3d-lib,libGLESv1_CM_mesa,.so.1,egl,MESA3D_LIBGLESV1_BIN))
|
||||||
# Module 'libGLESv2_mesa', produces '/vendor/lib{64}/egl/libGLESv2_mesa.so'
|
# Module 'libGLESv2_mesa', produces '/vendor/lib{64}/egl/libGLESv2_mesa.so'
|
||||||
$(eval $(call mesa3d-lib,libGLESv2_mesa,egl,MESA3D_LIBGLESV2_BIN))
|
$(eval $(call mesa3d-lib,libGLESv2_mesa,.so.2,egl,MESA3D_LIBGLESV2_BIN))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Modules 'vulkan.{driver_name}', produces '/vendor/lib{64}/hw/vulkan.{driver_name}.so' HAL
|
# Modules 'vulkan.{driver_name}', produces '/vendor/lib{64}/hw/vulkan.{driver_name}.so' HAL
|
||||||
$(foreach driver,$(BOARD_MESA3D_VULKAN_DRIVERS), \
|
$(foreach driver,$(BOARD_MESA3D_VULKAN_DRIVERS), \
|
||||||
$(eval $(call mesa3d-lib,vulkan.$(MESA_VK_LIB_SUFFIX_$(driver)),hw,MESA3D_VULKAN_$(driver)_BIN)))
|
$(eval $(call mesa3d-lib,vulkan.$(MESA_VK_LIB_SUFFIX_$(driver)),.so.0,hw,MESA3D_VULKAN_$(driver)_BIN)))
|
||||||
|
|
||||||
ifneq ($(filter true, $(BOARD_MESA3D_BUILD_LIBGBM)),)
|
ifneq ($(filter true, $(BOARD_MESA3D_BUILD_LIBGBM)),)
|
||||||
# Modules 'libgbm', produces '/vendor/lib{64}/libgbm.so'
|
# Modules 'libgbm', produces '/vendor/lib{64}/libgbm.so'
|
||||||
$(eval $(call mesa3d-lib,$(MESA_LIBGBM_NAME),,MESA3D_LIBGBM_BIN,$(MESA3D_TOP)/src/gbm/main))
|
$(eval $(call mesa3d-lib,$(MESA_LIBGBM_NAME),.so.1,,MESA3D_LIBGBM_BIN,$(MESA3D_TOP)/src/gbm/main))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
@@ -65,11 +65,11 @@ MESON_GEN_FILES_TARGET := $(MESON_GEN_DIR)/.timestamp
|
|||||||
|
|
||||||
MESA3D_GALLIUM_DRI_DIR := $(MESON_OUT_DIR)/install/usr/local/lib/dri
|
MESA3D_GALLIUM_DRI_DIR := $(MESON_OUT_DIR)/install/usr/local/lib/dri
|
||||||
$(M_TARGET_PREFIX)MESA3D_GALLIUM_DRI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libgallium_dri.so
|
$(M_TARGET_PREFIX)MESA3D_GALLIUM_DRI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libgallium_dri.so
|
||||||
$(M_TARGET_PREFIX)MESA3D_LIBEGL_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libEGL.so
|
$(M_TARGET_PREFIX)MESA3D_LIBEGL_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libEGL.so.1.0.0
|
||||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV1_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv1_CM.so
|
$(M_TARGET_PREFIX)MESA3D_LIBGLESV1_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv1_CM.so.1.1.0
|
||||||
$(M_TARGET_PREFIX)MESA3D_LIBGLESV2_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv2.so
|
$(M_TARGET_PREFIX)MESA3D_LIBGLESV2_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libGLESv2.so.2.0.0
|
||||||
$(M_TARGET_PREFIX)MESA3D_LIBGLAPI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libglapi.so
|
$(M_TARGET_PREFIX)MESA3D_LIBGLAPI_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/libglapi.so.0.0.0
|
||||||
$(M_TARGET_PREFIX)MESA3D_LIBGBM_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/$(MESA_LIBGBM_NAME).so
|
$(M_TARGET_PREFIX)MESA3D_LIBGBM_BIN := $(MESON_OUT_DIR)/install/usr/local/lib/$(MESA_LIBGBM_NAME).so.1.0.0
|
||||||
|
|
||||||
|
|
||||||
MESA3D_GLES_BINS := \
|
MESA3D_GLES_BINS := \
|
||||||
@@ -256,7 +256,7 @@ $(MESON_GEN_FILES_TARGET): $(sort $(shell find -L $(MESA3D_TOP) -not -path '*/\.
|
|||||||
"pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=' + '$(call relative-to-absolute,$(MESON_GEN_DIR))', '/usr/bin/pkg-config']\n\n" \
|
"pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=' + '$(call relative-to-absolute,$(MESON_GEN_DIR))', '/usr/bin/pkg-config']\n\n" \
|
||||||
"llvm-config = '/dev/null'\n" \
|
"llvm-config = '/dev/null'\n" \
|
||||||
"[host_machine]\n" \
|
"[host_machine]\n" \
|
||||||
"system = 'android'\n" \
|
"system = 'linux'\n" \
|
||||||
"cpu_family = '$(MESON_CPU_FAMILY)'\n" \
|
"cpu_family = '$(MESON_CPU_FAMILY)'\n" \
|
||||||
"cpu = '$(MESON_CPU_FAMILY)'\n" \
|
"cpu = '$(MESON_CPU_FAMILY)'\n" \
|
||||||
"endian = 'little'" > $(dir $@)/aosp_cross
|
"endian = 'little'" > $(dir $@)/aosp_cross
|
||||||
|
@@ -1,162 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2023 Collabora Ltd.
|
|
||||||
# Authors:
|
|
||||||
# Helen Koike <helen.koike@collabora.com>
|
|
||||||
#
|
|
||||||
# For the dependencies, see the requirements.txt
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import gitlab
|
|
||||||
import plotly.express as px
|
|
||||||
from gitlab_common import pretty_duration
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
from gitlab_common import read_token, GITLAB_URL, get_gitlab_pipeline_from_url
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_queued_at(job):
|
|
||||||
# we can have queued_duration without started_at when a job is canceled
|
|
||||||
if not job.queued_duration or not job.started_at:
|
|
||||||
return None
|
|
||||||
started_at = job.started_at.replace("Z", "+00:00")
|
|
||||||
return datetime.fromisoformat(started_at) - timedelta(seconds=job.queued_duration)
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_time_difference(time1, time2):
|
|
||||||
if not time1 or not time2:
|
|
||||||
return None
|
|
||||||
if type(time1) is str:
|
|
||||||
time1 = datetime.fromisoformat(time1.replace("Z", "+00:00"))
|
|
||||||
if type(time2) is str:
|
|
||||||
time2 = datetime.fromisoformat(time2.replace("Z", "+00:00"))
|
|
||||||
|
|
||||||
diff = time2 - time1
|
|
||||||
return pretty_duration(diff.seconds)
|
|
||||||
|
|
||||||
|
|
||||||
def create_task_name(job):
|
|
||||||
status_color = {"success": "green", "failed": "red"}.get(job.status, "grey")
|
|
||||||
return f"{job.name}\t(<span style='color: {status_color}'>{job.status}</span>,<a href='{job.web_url}'>{job.id}</a>)"
|
|
||||||
|
|
||||||
|
|
||||||
def add_gantt_bar(job, tasks):
|
|
||||||
queued_at = calculate_queued_at(job)
|
|
||||||
task_name = create_task_name(job)
|
|
||||||
|
|
||||||
tasks.append(
|
|
||||||
{
|
|
||||||
"Job": task_name,
|
|
||||||
"Start": job.created_at,
|
|
||||||
"Finish": queued_at,
|
|
||||||
"Duration": calculate_time_difference(job.created_at, queued_at),
|
|
||||||
"Phase": "Waiting dependencies",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
tasks.append(
|
|
||||||
{
|
|
||||||
"Job": task_name,
|
|
||||||
"Start": queued_at,
|
|
||||||
"Finish": job.started_at,
|
|
||||||
"Duration": calculate_time_difference(queued_at, job.started_at),
|
|
||||||
"Phase": "Queued",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
tasks.append(
|
|
||||||
{
|
|
||||||
"Job": task_name,
|
|
||||||
"Start": job.started_at,
|
|
||||||
"Finish": job.finished_at,
|
|
||||||
"Duration": calculate_time_difference(job.started_at, job.finished_at),
|
|
||||||
"Phase": "Running",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def generate_gantt_chart(pipeline):
|
|
||||||
if pipeline.yaml_errors:
|
|
||||||
raise ValueError("Pipeline YAML errors detected")
|
|
||||||
|
|
||||||
# Convert the data into a list of dictionaries for plotly
|
|
||||||
tasks = []
|
|
||||||
|
|
||||||
for job in pipeline.jobs.list(all=True, include_retried=True):
|
|
||||||
add_gantt_bar(job, tasks)
|
|
||||||
|
|
||||||
# Make it easier to see retried jobs
|
|
||||||
tasks.sort(key=lambda x: x["Job"])
|
|
||||||
|
|
||||||
title = f"Gantt chart of jobs in pipeline <a href='{pipeline.web_url}'>{pipeline.web_url}</a>."
|
|
||||||
title += (
|
|
||||||
f" Total duration {str(timedelta(seconds=pipeline.duration))}"
|
|
||||||
if pipeline.duration
|
|
||||||
else ""
|
|
||||||
)
|
|
||||||
|
|
||||||
# Create a Gantt chart
|
|
||||||
fig = px.timeline(
|
|
||||||
tasks,
|
|
||||||
x_start="Start",
|
|
||||||
x_end="Finish",
|
|
||||||
y="Job",
|
|
||||||
color="Phase",
|
|
||||||
title=title,
|
|
||||||
hover_data=["Duration"],
|
|
||||||
)
|
|
||||||
|
|
||||||
# Calculate the height dynamically
|
|
||||||
fig.update_layout(height=len(tasks) * 10, yaxis_tickfont_size=14)
|
|
||||||
|
|
||||||
# Add a deadline line to the chart
|
|
||||||
created_at = datetime.fromisoformat(pipeline.created_at.replace("Z", "+00:00"))
|
|
||||||
timeout_at = created_at + timedelta(hours=1)
|
|
||||||
fig.add_vrect(
|
|
||||||
x0=timeout_at,
|
|
||||||
x1=timeout_at,
|
|
||||||
annotation_text="1h Timeout",
|
|
||||||
fillcolor="gray",
|
|
||||||
line_width=2,
|
|
||||||
line_color="gray",
|
|
||||||
line_dash="dash",
|
|
||||||
annotation_position="top left",
|
|
||||||
annotation_textangle=90,
|
|
||||||
)
|
|
||||||
|
|
||||||
return fig
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args() -> None:
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description="Generate the Gantt chart from a given pipeline."
|
|
||||||
)
|
|
||||||
parser.add_argument("pipeline_url", type=str, help="URLs to the pipeline.")
|
|
||||||
parser.add_argument(
|
|
||||||
"-o",
|
|
||||||
"--output",
|
|
||||||
type=str,
|
|
||||||
help="Output file name. Use html ou image suffixes to choose the format.",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--token",
|
|
||||||
metavar="token",
|
|
||||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
|
||||||
)
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
args = parse_args()
|
|
||||||
|
|
||||||
token = read_token(args.token)
|
|
||||||
|
|
||||||
gl = gitlab.Gitlab(url=GITLAB_URL, private_token=token, retry_transient_errors=True)
|
|
||||||
|
|
||||||
pipeline, _ = get_gitlab_pipeline_from_url(gl, args.pipeline_url)
|
|
||||||
fig = generate_gantt_chart(pipeline)
|
|
||||||
if args.output and "htm" in args.output:
|
|
||||||
fig.write_html(args.output)
|
|
||||||
elif args.output:
|
|
||||||
fig.update_layout(width=1000)
|
|
||||||
fig.write_image(args.output)
|
|
||||||
else:
|
|
||||||
fig.show()
|
|
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
this_dir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")
|
|
||||||
readonly this_dir
|
|
||||||
|
|
||||||
exec \
|
|
||||||
"$this_dir/../python-venv.sh" \
|
|
||||||
"$this_dir/requirements.txt" \
|
|
||||||
"$this_dir/ci_gantt_chart.py" "$@"
|
|
@@ -1,178 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# Copyright © 2023 Collabora Ltd.
|
|
||||||
# Authors:
|
|
||||||
# Helen Koike <helen.koike@collabora.com>
|
|
||||||
#
|
|
||||||
# For the dependencies, see the requirements.txt
|
|
||||||
# SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import gitlab
|
|
||||||
import re
|
|
||||||
import os
|
|
||||||
import pytz
|
|
||||||
import traceback
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
from gitlab_common import (
|
|
||||||
read_token,
|
|
||||||
GITLAB_URL,
|
|
||||||
get_gitlab_pipeline_from_url,
|
|
||||||
)
|
|
||||||
from ci_gantt_chart import generate_gantt_chart
|
|
||||||
|
|
||||||
MARGE_USER_ID = 9716 # Marge
|
|
||||||
|
|
||||||
LAST_MARGE_EVENT_FILE = os.path.expanduser("~/.config/last_marge_event")
|
|
||||||
|
|
||||||
|
|
||||||
def read_last_event_date_from_file():
|
|
||||||
try:
|
|
||||||
with open(LAST_MARGE_EVENT_FILE, "r") as f:
|
|
||||||
last_event_date = f.read().strip()
|
|
||||||
except FileNotFoundError:
|
|
||||||
# 3 days ago
|
|
||||||
last_event_date = (datetime.now() - timedelta(days=3)).isoformat()
|
|
||||||
return last_event_date
|
|
||||||
|
|
||||||
|
|
||||||
def pretty_time(time_str):
|
|
||||||
"""Pretty print time"""
|
|
||||||
local_timezone = datetime.now().astimezone().tzinfo
|
|
||||||
|
|
||||||
time_d = datetime.fromisoformat(time_str.replace("Z", "+00:00")).astimezone(
|
|
||||||
local_timezone
|
|
||||||
)
|
|
||||||
return f'{time_str} ({time_d.strftime("%d %b %Y %Hh%Mm%Ss")} {local_timezone})'
|
|
||||||
|
|
||||||
|
|
||||||
def compose_message(file_name, attachment_url):
|
|
||||||
return f"""
|
|
||||||
Here is the Gantt chart for the referred pipeline, I hope it helps 😄 (tip: click on the "Pan" button on the top right bar):
|
|
||||||
|
|
||||||
[{file_name}]({attachment_url})
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>more info</summary>
|
|
||||||
|
|
||||||
This message was generated by the ci_post_gantt.py script, which is running on a server at Collabora.
|
|
||||||
</details>
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
def gitlab_upload_file_get_url(gl, project_id, filepath):
|
|
||||||
project = gl.projects.get(project_id)
|
|
||||||
uploaded_file = project.upload(filepath, filepath=filepath)
|
|
||||||
return uploaded_file["url"]
|
|
||||||
|
|
||||||
|
|
||||||
def gitlab_post_reply_to_note(gl, event, reply_message):
|
|
||||||
"""
|
|
||||||
Post a reply to a note in thread based on a GitLab event.
|
|
||||||
|
|
||||||
:param gl: The GitLab connection instance.
|
|
||||||
:param event: The event object containing the note details.
|
|
||||||
:param reply_message: The reply message.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
note_id = event.target_id
|
|
||||||
merge_request_iid = event.note["noteable_iid"]
|
|
||||||
|
|
||||||
project = gl.projects.get(event.project_id)
|
|
||||||
merge_request = project.mergerequests.get(merge_request_iid)
|
|
||||||
|
|
||||||
# Find the discussion to which the note belongs
|
|
||||||
discussions = merge_request.discussions.list(as_list=False)
|
|
||||||
target_discussion = next(
|
|
||||||
(
|
|
||||||
d
|
|
||||||
for d in discussions
|
|
||||||
if any(n["id"] == note_id for n in d.attributes["notes"])
|
|
||||||
),
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
|
|
||||||
if target_discussion is None:
|
|
||||||
raise ValueError("Discussion for the note not found.")
|
|
||||||
|
|
||||||
# Add a reply to the discussion
|
|
||||||
reply = target_discussion.notes.create({"body": reply_message})
|
|
||||||
return reply
|
|
||||||
|
|
||||||
except gitlab.exceptions.GitlabError as e:
|
|
||||||
print(f"Failed to post a reply to '{event.note['body']}': {e}")
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def parse_args() -> None:
|
|
||||||
parser = argparse.ArgumentParser(description="Monitor rejected pipelines by Marge.")
|
|
||||||
parser.add_argument(
|
|
||||||
"--token",
|
|
||||||
metavar="token",
|
|
||||||
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--since",
|
|
||||||
metavar="since",
|
|
||||||
help="consider only events after this date (ISO format), otherwise it's read from ~/.config/last_marge_event",
|
|
||||||
)
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
args = parse_args()
|
|
||||||
|
|
||||||
token = read_token(args.token)
|
|
||||||
|
|
||||||
gl = gitlab.Gitlab(url=GITLAB_URL, private_token=token, retry_transient_errors=True)
|
|
||||||
|
|
||||||
user = gl.users.get(MARGE_USER_ID)
|
|
||||||
last_event_at = args.since if args.since else read_last_event_date_from_file()
|
|
||||||
|
|
||||||
print(f"Retrieving Marge messages since {pretty_time(last_event_at)}\n")
|
|
||||||
|
|
||||||
# the "after" only considers the "2023-10-24" part, it doesn't consider the time
|
|
||||||
events = user.events.list(
|
|
||||||
all=True,
|
|
||||||
target_type="note",
|
|
||||||
after=(datetime.now() - timedelta(days=3)).isoformat(),
|
|
||||||
sort="asc",
|
|
||||||
)
|
|
||||||
|
|
||||||
last_event_at_date = datetime.fromisoformat(
|
|
||||||
last_event_at.replace("Z", "+00:00")
|
|
||||||
).replace(tzinfo=pytz.UTC)
|
|
||||||
|
|
||||||
for event in events:
|
|
||||||
created_at_date = datetime.fromisoformat(
|
|
||||||
event.created_at.replace("Z", "+00:00")
|
|
||||||
).replace(tzinfo=pytz.UTC)
|
|
||||||
if created_at_date <= last_event_at_date:
|
|
||||||
continue
|
|
||||||
last_event_at = event.created_at
|
|
||||||
|
|
||||||
match = re.search(r"https://[^ ]+", event.note["body"])
|
|
||||||
if match:
|
|
||||||
try:
|
|
||||||
print("Found message:", event.note["body"])
|
|
||||||
pipeline_url = match.group(0)[:-1]
|
|
||||||
pipeline, _ = get_gitlab_pipeline_from_url(gl, pipeline_url)
|
|
||||||
print("Generating gantt chart...")
|
|
||||||
fig = generate_gantt_chart(pipeline)
|
|
||||||
file_name = "Gantt.html"
|
|
||||||
fig.write_html(file_name)
|
|
||||||
print("Uploading gantt file...")
|
|
||||||
file_url = gitlab_upload_file_get_url(gl, event.project_id, file_name)
|
|
||||||
print("Posting reply ...\n")
|
|
||||||
message = compose_message(file_name, file_url)
|
|
||||||
gitlab_post_reply_to_note(gl, event, message)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Failed to generate gantt chart, not posting reply.{e}")
|
|
||||||
traceback.print_exc()
|
|
||||||
|
|
||||||
if not args.since:
|
|
||||||
print(
|
|
||||||
f"Updating last event date to {pretty_time(last_event_at)} on {LAST_MARGE_EVENT_FILE}\n"
|
|
||||||
)
|
|
||||||
with open(LAST_MARGE_EVENT_FILE, "w") as f:
|
|
||||||
f.write(last_event_at)
|
|
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
this_dir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")
|
|
||||||
readonly this_dir
|
|
||||||
|
|
||||||
exec \
|
|
||||||
"$this_dir/../python-venv.sh" \
|
|
||||||
"$this_dir/requirements.txt" \
|
|
||||||
"$this_dir/ci_post_gantt.py" "$@"
|
|
@@ -20,27 +20,24 @@ from collections import defaultdict
|
|||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
from subprocess import check_output, CalledProcessError
|
from subprocess import check_output
|
||||||
from typing import TYPE_CHECKING, Iterable, Literal, Optional
|
from typing import TYPE_CHECKING, Iterable, Literal, Optional
|
||||||
|
|
||||||
import gitlab
|
import gitlab
|
||||||
import gitlab.v4.objects
|
|
||||||
from colorama import Fore, Style
|
from colorama import Fore, Style
|
||||||
from gitlab_common import (
|
from gitlab_common import (
|
||||||
GITLAB_URL,
|
|
||||||
TOKEN_DIR,
|
|
||||||
get_gitlab_pipeline_from_url,
|
|
||||||
get_gitlab_project,
|
get_gitlab_project,
|
||||||
get_token_from_default_dir,
|
|
||||||
pretty_duration,
|
|
||||||
read_token,
|
read_token,
|
||||||
wait_for_pipeline,
|
wait_for_pipeline,
|
||||||
|
pretty_duration,
|
||||||
)
|
)
|
||||||
from gitlab_gql import GitlabGQL, create_job_needs_dag, filter_dag, print_dag
|
from gitlab_gql import GitlabGQL, create_job_needs_dag, filter_dag, print_dag
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from gitlab_gql import Dag
|
from gitlab_gql import Dag
|
||||||
|
|
||||||
|
GITLAB_URL = "https://gitlab.freedesktop.org"
|
||||||
|
|
||||||
REFRESH_WAIT_LOG = 10
|
REFRESH_WAIT_LOG = 10
|
||||||
REFRESH_WAIT_JOBS = 6
|
REFRESH_WAIT_JOBS = 6
|
||||||
|
|
||||||
@@ -66,9 +63,6 @@ def print_job_status(job, new_status=False) -> None:
|
|||||||
if job.status == "canceled":
|
if job.status == "canceled":
|
||||||
return
|
return
|
||||||
|
|
||||||
if new_status and job.status == "created":
|
|
||||||
return
|
|
||||||
|
|
||||||
if job.duration:
|
if job.duration:
|
||||||
duration = job.duration
|
duration = job.duration
|
||||||
elif job.started_at:
|
elif job.started_at:
|
||||||
@@ -120,10 +114,10 @@ def monitor_pipeline(
|
|||||||
stress < 0
|
stress < 0
|
||||||
or sum(stress_status_counter[job.name].values()) < stress
|
or sum(stress_status_counter[job.name].values()) < stress
|
||||||
):
|
):
|
||||||
job = enable_job(project, pipeline, job, "retry", force_manual)
|
enable_job(project, job, "retry", force_manual)
|
||||||
stress_status_counter[job.name][job.status] += 1
|
stress_status_counter[job.name][job.status] += 1
|
||||||
else:
|
else:
|
||||||
job = enable_job(project, pipeline, job, "target", force_manual)
|
enable_job(project, job, "target", force_manual)
|
||||||
|
|
||||||
print_job_status(job, job.status not in target_statuses[job.name])
|
print_job_status(job, job.status not in target_statuses[job.name])
|
||||||
target_statuses[job.name] = job.status
|
target_statuses[job.name] = job.status
|
||||||
@@ -136,7 +130,7 @@ def monitor_pipeline(
|
|||||||
|
|
||||||
# run dependencies and cancel the rest
|
# run dependencies and cancel the rest
|
||||||
if job.name in dependencies:
|
if job.name in dependencies:
|
||||||
job = enable_job(project, pipeline, job, "dep", True)
|
enable_job(project, job, "dep", True)
|
||||||
if job.status == "failed":
|
if job.status == "failed":
|
||||||
deps_failed.append(job.name)
|
deps_failed.append(job.name)
|
||||||
else:
|
else:
|
||||||
@@ -191,37 +185,23 @@ def monitor_pipeline(
|
|||||||
pretty_wait(REFRESH_WAIT_JOBS)
|
pretty_wait(REFRESH_WAIT_JOBS)
|
||||||
|
|
||||||
|
|
||||||
def get_pipeline_job(
|
|
||||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
|
||||||
id: int,
|
|
||||||
) -> gitlab.v4.objects.ProjectPipelineJob:
|
|
||||||
pipeline_jobs = pipeline.jobs.list(all=True)
|
|
||||||
return [j for j in pipeline_jobs if j.id == id][0]
|
|
||||||
|
|
||||||
|
|
||||||
def enable_job(
|
def enable_job(
|
||||||
project: gitlab.v4.objects.Project,
|
project, job, action_type: Literal["target", "dep", "retry"], force_manual: bool
|
||||||
pipeline: gitlab.v4.objects.ProjectPipeline,
|
) -> None:
|
||||||
job: gitlab.v4.objects.ProjectPipelineJob,
|
|
||||||
action_type: Literal["target", "dep", "retry"],
|
|
||||||
force_manual: bool,
|
|
||||||
) -> gitlab.v4.objects.ProjectPipelineJob:
|
|
||||||
"""enable job"""
|
"""enable job"""
|
||||||
if (
|
if (
|
||||||
(job.status in ["success", "failed"] and action_type != "retry")
|
(job.status in ["success", "failed"] and action_type != "retry")
|
||||||
or (job.status == "manual" and not force_manual)
|
or (job.status == "manual" and not force_manual)
|
||||||
or job.status in ["skipped", "running", "created", "pending"]
|
or job.status in ["skipped", "running", "created", "pending"]
|
||||||
):
|
):
|
||||||
return job
|
return
|
||||||
|
|
||||||
pjob = project.jobs.get(job.id, lazy=True)
|
pjob = project.jobs.get(job.id, lazy=True)
|
||||||
|
|
||||||
if job.status in ["success", "failed", "canceled"]:
|
if job.status in ["success", "failed", "canceled"]:
|
||||||
new_job = pjob.retry()
|
pjob.retry()
|
||||||
job = get_pipeline_job(pipeline, new_job["id"])
|
|
||||||
else:
|
else:
|
||||||
pjob.play()
|
pjob.play()
|
||||||
job = get_pipeline_job(pipeline, pjob.id)
|
|
||||||
|
|
||||||
if action_type == "target":
|
if action_type == "target":
|
||||||
jtype = "🞋 "
|
jtype = "🞋 "
|
||||||
@@ -232,8 +212,6 @@ def enable_job(
|
|||||||
|
|
||||||
print(Fore.MAGENTA + f"{jtype} job {job.name} manually enabled" + Style.RESET_ALL)
|
print(Fore.MAGENTA + f"{jtype} job {job.name} manually enabled" + Style.RESET_ALL)
|
||||||
|
|
||||||
return job
|
|
||||||
|
|
||||||
|
|
||||||
def cancel_job(project, job) -> None:
|
def cancel_job(project, job) -> None:
|
||||||
"""Cancel GitLab job"""
|
"""Cancel GitLab job"""
|
||||||
@@ -267,7 +245,7 @@ def print_log(project, job_id) -> None:
|
|||||||
job = project.jobs.get(job_id)
|
job = project.jobs.get(job_id)
|
||||||
|
|
||||||
# GitLab's REST API doesn't offer pagination for logs, so we have to refetch it all
|
# GitLab's REST API doesn't offer pagination for logs, so we have to refetch it all
|
||||||
lines = job.trace().decode().splitlines()
|
lines = job.trace().decode("raw_unicode_escape").splitlines()
|
||||||
for line in lines[printed_lines:]:
|
for line in lines[printed_lines:]:
|
||||||
print(line)
|
print(line)
|
||||||
printed_lines = len(lines)
|
printed_lines = len(lines)
|
||||||
@@ -291,15 +269,11 @@ def parse_args() -> None:
|
|||||||
metavar="target-job",
|
metavar="target-job",
|
||||||
help="Target job regex. For multiple targets, separate with pipe | character",
|
help="Target job regex. For multiple targets, separate with pipe | character",
|
||||||
required=True,
|
required=True,
|
||||||
nargs=argparse.ONE_OR_MORE,
|
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--token",
|
"--token",
|
||||||
metavar="token",
|
metavar="token",
|
||||||
type=str,
|
help="force GitLab token, otherwise it's read from ~/.config/gitlab-token",
|
||||||
default=get_token_from_default_dir(),
|
|
||||||
help="Use the provided GitLab token or token file, "
|
|
||||||
f"otherwise it's read from {TOKEN_DIR / 'gitlab-token'}",
|
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--force-manual", action="store_true", help="Force jobs marked as manual"
|
"--force-manual", action="store_true", help="Force jobs marked as manual"
|
||||||
@@ -360,31 +334,8 @@ def print_detected_jobs(
|
|||||||
print_job_set(Fore.BLUE, "target", target_jobs)
|
print_job_set(Fore.BLUE, "target", target_jobs)
|
||||||
|
|
||||||
|
|
||||||
def find_dependencies(token: str | None,
|
def find_dependencies(target_jobs_regex: re.Pattern, project_path: str, iid: int) -> set[str]:
|
||||||
target_jobs_regex: re.Pattern,
|
gql_instance = GitlabGQL()
|
||||||
project_path: str,
|
|
||||||
iid: int) -> set[str]:
|
|
||||||
"""
|
|
||||||
Find the dependencies of the target jobs in a GitLab pipeline.
|
|
||||||
|
|
||||||
This function uses the GitLab GraphQL API to fetch the job dependency graph
|
|
||||||
of a pipeline, filters the graph to only include the target jobs and their
|
|
||||||
dependencies, and returns the names of these jobs.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
token (str | None): The GitLab API token. If None, the API is accessed without
|
|
||||||
authentication.
|
|
||||||
target_jobs_regex (re.Pattern): A regex pattern to match the names of the target jobs.
|
|
||||||
project_path (str): The path of the GitLab project.
|
|
||||||
iid (int): The internal ID of the pipeline.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
set[str]: A set of the names of the target jobs and their dependencies.
|
|
||||||
|
|
||||||
Raises:
|
|
||||||
SystemExit: If no target jobs are found in the pipeline.
|
|
||||||
"""
|
|
||||||
gql_instance = GitlabGQL(token=token)
|
|
||||||
dag = create_job_needs_dag(
|
dag = create_job_needs_dag(
|
||||||
gql_instance, {"projectPath": project_path.path_with_namespace, "iid": iid}
|
gql_instance, {"projectPath": project_path.path_with_namespace, "iid": iid}
|
||||||
)
|
)
|
||||||
@@ -415,7 +366,15 @@ if __name__ == "__main__":
|
|||||||
REV: str = args.rev
|
REV: str = args.rev
|
||||||
|
|
||||||
if args.pipeline_url:
|
if args.pipeline_url:
|
||||||
pipe, cur_project = get_gitlab_pipeline_from_url(gl, args.pipeline_url)
|
assert args.pipeline_url.startswith(GITLAB_URL)
|
||||||
|
url_path = args.pipeline_url[len(GITLAB_URL):]
|
||||||
|
url_path_components = url_path.split("/")
|
||||||
|
project_name = "/".join(url_path_components[1:3])
|
||||||
|
assert url_path_components[3] == "-"
|
||||||
|
assert url_path_components[4] == "pipelines"
|
||||||
|
pipeline_id = int(url_path_components[5])
|
||||||
|
cur_project = gl.projects.get(project_name)
|
||||||
|
pipe = cur_project.pipelines.get(pipeline_id)
|
||||||
REV = pipe.sha
|
REV = pipe.sha
|
||||||
else:
|
else:
|
||||||
mesa_project = gl.projects.get("mesa/mesa")
|
mesa_project = gl.projects.get("mesa/mesa")
|
||||||
@@ -424,58 +383,20 @@ if __name__ == "__main__":
|
|||||||
REV = mesa_project.mergerequests.get(args.mr).sha
|
REV = mesa_project.mergerequests.get(args.mr).sha
|
||||||
else:
|
else:
|
||||||
REV = check_output(['git', 'rev-parse', REV]).decode('ascii').strip()
|
REV = check_output(['git', 'rev-parse', REV]).decode('ascii').strip()
|
||||||
|
|
||||||
if args.rev == 'HEAD':
|
|
||||||
try:
|
|
||||||
branch_name = check_output([
|
|
||||||
'git', 'symbolic-ref', '-q', 'HEAD',
|
|
||||||
]).decode('ascii').strip()
|
|
||||||
except CalledProcessError:
|
|
||||||
branch_name = ""
|
|
||||||
|
|
||||||
# Ignore detached heads
|
|
||||||
if branch_name:
|
|
||||||
tracked_remote = check_output([
|
|
||||||
'git', 'for-each-ref', '--format=%(upstream)',
|
|
||||||
branch_name,
|
|
||||||
]).decode('ascii').strip()
|
|
||||||
|
|
||||||
# Ignore local branches that do not track any remote
|
|
||||||
if tracked_remote:
|
|
||||||
remote_rev = check_output([
|
|
||||||
'git', 'rev-parse', tracked_remote,
|
|
||||||
]).decode('ascii').strip()
|
|
||||||
|
|
||||||
if REV != remote_rev:
|
|
||||||
print(
|
|
||||||
f"Local HEAD commit {REV[:10]} is different than "
|
|
||||||
f"tracked remote HEAD commit {remote_rev[:10]}"
|
|
||||||
)
|
|
||||||
print("Did you forget to `git push` ?")
|
|
||||||
|
|
||||||
projects.append(get_gitlab_project(gl, args.project))
|
projects.append(get_gitlab_project(gl, args.project))
|
||||||
(pipe, cur_project) = wait_for_pipeline(projects, REV)
|
(pipe, cur_project) = wait_for_pipeline(projects, REV)
|
||||||
|
|
||||||
print(f"Revision: {REV}")
|
print(f"Revision: {REV}")
|
||||||
print(f"Pipeline: {pipe.web_url}")
|
print(f"Pipeline: {pipe.web_url}")
|
||||||
|
|
||||||
target = '|'.join(args.target)
|
target_jobs_regex = re.compile(args.target.strip())
|
||||||
target = target.strip()
|
|
||||||
|
|
||||||
deps = set()
|
deps = set()
|
||||||
print("🞋 job: " + Fore.BLUE + target + Style.RESET_ALL)
|
if args.target:
|
||||||
|
print("🞋 job: " + Fore.BLUE + args.target + Style.RESET_ALL)
|
||||||
# Implicitly include `parallel:` jobs
|
deps = find_dependencies(
|
||||||
target = f'({target})' + r'( \d+/\d+)?'
|
target_jobs_regex=target_jobs_regex, iid=pipe.iid, project_path=cur_project
|
||||||
|
)
|
||||||
target_jobs_regex = re.compile(target)
|
|
||||||
|
|
||||||
deps = find_dependencies(
|
|
||||||
token=token,
|
|
||||||
target_jobs_regex=target_jobs_regex,
|
|
||||||
iid=pipe.iid,
|
|
||||||
project_path=cur_project
|
|
||||||
)
|
|
||||||
target_job_id, ret = monitor_pipeline(
|
target_job_id, ret = monitor_pipeline(
|
||||||
cur_project, pipe, target_jobs_regex, deps, args.force_manual, args.stress
|
cur_project, pipe, target_jobs_regex, deps, args.force_manual, args.stress
|
||||||
)
|
)
|
||||||
|
@@ -3,33 +3,13 @@
|
|||||||
# Authors:
|
# Authors:
|
||||||
# Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
# Tomeu Vizoso <tomeu.vizoso@collabora.com>
|
||||||
# David Heidelberg <david.heidelberg@collabora.com>
|
# David Heidelberg <david.heidelberg@collabora.com>
|
||||||
# Guilherme Gallo <guilherme.gallo@collabora.com>
|
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
'''Shared functions between the scripts.'''
|
'''Shared functions between the scripts.'''
|
||||||
|
|
||||||
import logging
|
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import time
|
import time
|
||||||
from pathlib import Path
|
from typing import Optional
|
||||||
|
|
||||||
GITLAB_URL = "https://gitlab.freedesktop.org"
|
|
||||||
TOKEN_DIR = Path(os.getenv("XDG_CONFIG_HOME") or Path.home() / ".config")
|
|
||||||
|
|
||||||
# Known GitLab token prefixes: https://docs.gitlab.com/ee/security/token_overview.html#token-prefixes
|
|
||||||
TOKEN_PREFIXES: dict[str, str] = {
|
|
||||||
"Personal access token": "glpat-",
|
|
||||||
"OAuth Application Secret": "gloas-",
|
|
||||||
"Deploy token": "gldt-",
|
|
||||||
"Runner authentication token": "glrt-",
|
|
||||||
"CI/CD Job token": "glcbt-",
|
|
||||||
"Trigger token": "glptt-",
|
|
||||||
"Feed token": "glft-",
|
|
||||||
"Incoming mail token": "glimt-",
|
|
||||||
"GitLab Agent for Kubernetes token": "glagent-",
|
|
||||||
"SCIM Tokens": "glsoat-"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def pretty_duration(seconds):
|
def pretty_duration(seconds):
|
||||||
@@ -43,19 +23,6 @@ def pretty_duration(seconds):
|
|||||||
return f"{seconds:0.0f}s"
|
return f"{seconds:0.0f}s"
|
||||||
|
|
||||||
|
|
||||||
def get_gitlab_pipeline_from_url(gl, pipeline_url):
|
|
||||||
assert pipeline_url.startswith(GITLAB_URL)
|
|
||||||
url_path = pipeline_url[len(GITLAB_URL) :]
|
|
||||||
url_path_components = url_path.split("/")
|
|
||||||
project_name = "/".join(url_path_components[1:3])
|
|
||||||
assert url_path_components[3] == "-"
|
|
||||||
assert url_path_components[4] == "pipelines"
|
|
||||||
pipeline_id = int(url_path_components[5])
|
|
||||||
cur_project = gl.projects.get(project_name)
|
|
||||||
pipe = cur_project.pipelines.get(pipeline_id)
|
|
||||||
return pipe, cur_project
|
|
||||||
|
|
||||||
|
|
||||||
def get_gitlab_project(glab, name: str):
|
def get_gitlab_project(glab, name: str):
|
||||||
"""Finds a specified gitlab project for given user"""
|
"""Finds a specified gitlab project for given user"""
|
||||||
if "/" in name:
|
if "/" in name:
|
||||||
@@ -67,81 +34,15 @@ def get_gitlab_project(glab, name: str):
|
|||||||
return glab.projects.get(project_path)
|
return glab.projects.get(project_path)
|
||||||
|
|
||||||
|
|
||||||
def get_token_from_default_dir() -> str:
|
def read_token(token_arg: Optional[str]) -> str:
|
||||||
"""
|
"""pick token from args or file"""
|
||||||
Retrieves the GitLab token from the default directory.
|
if token_arg:
|
||||||
|
return token_arg
|
||||||
Returns:
|
return (
|
||||||
str: The path to the GitLab token file.
|
open(os.path.expanduser("~/.config/gitlab-token"), encoding="utf-8")
|
||||||
|
.readline()
|
||||||
Raises:
|
.rstrip()
|
||||||
FileNotFoundError: If the token file is not found.
|
)
|
||||||
"""
|
|
||||||
token_file = TOKEN_DIR / "gitlab-token"
|
|
||||||
try:
|
|
||||||
return str(token_file.resolve())
|
|
||||||
except FileNotFoundError as ex:
|
|
||||||
print(
|
|
||||||
f"Could not find {token_file}, please provide a token file as an argument"
|
|
||||||
)
|
|
||||||
raise ex
|
|
||||||
|
|
||||||
|
|
||||||
def validate_gitlab_token(token: str) -> bool:
|
|
||||||
token_suffix = token.split("-")[-1]
|
|
||||||
# Basic validation of the token suffix based on:
|
|
||||||
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/gems/gitlab-secret_detection/lib/gitleaks.toml
|
|
||||||
if not re.match(r"(\w+-)?[0-9a-zA-Z_\-]{20,64}", token_suffix):
|
|
||||||
return False
|
|
||||||
|
|
||||||
for token_type, token_prefix in TOKEN_PREFIXES.items():
|
|
||||||
if token.startswith(token_prefix):
|
|
||||||
logging.info(f"Found probable token type: {token_type}")
|
|
||||||
return True
|
|
||||||
|
|
||||||
# If the token type is not recognized, return False
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def get_token_from_arg(token_arg: str | Path | None) -> str | None:
|
|
||||||
if not token_arg:
|
|
||||||
logging.info("No token provided.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
token_path = Path(token_arg)
|
|
||||||
if token_path.is_file():
|
|
||||||
return read_token_from_file(token_path)
|
|
||||||
|
|
||||||
return handle_direct_token(token_path, token_arg)
|
|
||||||
|
|
||||||
|
|
||||||
def read_token_from_file(token_path: Path) -> str:
|
|
||||||
token = token_path.read_text().strip()
|
|
||||||
logging.info(f"Token read from file: {token_path}")
|
|
||||||
return token
|
|
||||||
|
|
||||||
|
|
||||||
def handle_direct_token(token_path: Path, token_arg: str | Path) -> str | None:
|
|
||||||
if token_path == Path(get_token_from_default_dir()):
|
|
||||||
logging.warning(
|
|
||||||
f"The default token file {token_path} was not found. "
|
|
||||||
"Please provide a token file or a token directly via --token arg."
|
|
||||||
)
|
|
||||||
return None
|
|
||||||
logging.info("Token provided directly as an argument.")
|
|
||||||
return str(token_arg)
|
|
||||||
|
|
||||||
|
|
||||||
def read_token(token_arg: str | Path | None) -> str | None:
|
|
||||||
token = get_token_from_arg(token_arg)
|
|
||||||
if token and not validate_gitlab_token(token):
|
|
||||||
logging.warning("The provided token is either an old token or does not seem to "
|
|
||||||
"be a valid token.")
|
|
||||||
logging.warning("Newer tokens are the ones created from a Gitlab 14.5+ instance.")
|
|
||||||
logging.warning("See https://about.gitlab.com/releases/2021/11/22/"
|
|
||||||
"gitlab-14-5-released/"
|
|
||||||
"#new-gitlab-access-token-prefix-and-detection")
|
|
||||||
return token
|
|
||||||
|
|
||||||
|
|
||||||
def wait_for_pipeline(projects, sha: str, timeout=None):
|
def wait_for_pipeline(projects, sha: str, timeout=None):
|
||||||
|
@@ -9,6 +9,7 @@ from collections import OrderedDict
|
|||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from itertools import accumulate
|
from itertools import accumulate
|
||||||
|
from os import getenv
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
@@ -16,7 +17,6 @@ from typing import Any, Iterable, Optional, Pattern, TypedDict, Union
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from filecache import DAY, filecache
|
from filecache import DAY, filecache
|
||||||
from gitlab_common import get_token_from_default_dir
|
|
||||||
from gql import Client, gql
|
from gql import Client, gql
|
||||||
from gql.transport.requests import RequestsHTTPTransport
|
from gql.transport.requests import RequestsHTTPTransport
|
||||||
from graphql import DocumentNode
|
from graphql import DocumentNode
|
||||||
@@ -34,6 +34,18 @@ Dag = dict[str, DagNode]
|
|||||||
|
|
||||||
|
|
||||||
StageSeq = OrderedDict[str, set[str]]
|
StageSeq = OrderedDict[str, set[str]]
|
||||||
|
TOKEN_DIR = Path(getenv("XDG_CONFIG_HOME") or Path.home() / ".config")
|
||||||
|
|
||||||
|
|
||||||
|
def get_token_from_default_dir() -> str:
|
||||||
|
token_file = TOKEN_DIR / "gitlab-token"
|
||||||
|
try:
|
||||||
|
return str(token_file.resolve())
|
||||||
|
except FileNotFoundError as ex:
|
||||||
|
print(
|
||||||
|
f"Could not find {token_file}, please provide a token file as an argument"
|
||||||
|
)
|
||||||
|
raise ex
|
||||||
|
|
||||||
|
|
||||||
def get_project_root_dir():
|
def get_project_root_dir():
|
||||||
@@ -229,7 +241,7 @@ def traverse_dag_needs(jobs_metadata: Dag) -> None:
|
|||||||
partial = True
|
partial = True
|
||||||
|
|
||||||
while partial:
|
while partial:
|
||||||
next_depth: set[str] = {n for dn in final_needs if dn in jobs_metadata for n in jobs_metadata[dn]["needs"]}
|
next_depth: set[str] = {n for dn in final_needs for n in jobs_metadata[dn]["needs"]}
|
||||||
partial: bool = not final_needs.issuperset(next_depth)
|
partial: bool = not final_needs.issuperset(next_depth)
|
||||||
final_needs = final_needs.union(next_depth)
|
final_needs = final_needs.union(next_depth)
|
||||||
|
|
||||||
@@ -343,12 +355,8 @@ def fetch_merged_yaml(gl_gql: GitlabGQL, params) -> dict[str, Any]:
|
|||||||
- local: .gitlab-ci.yml
|
- local: .gitlab-ci.yml
|
||||||
""")
|
""")
|
||||||
raw_response = gl_gql.query("job_details.gql", params)
|
raw_response = gl_gql.query("job_details.gql", params)
|
||||||
ci_config = raw_response["ciConfig"]
|
if merged_yaml := raw_response["ciConfig"]["mergedYaml"]:
|
||||||
if merged_yaml := ci_config["mergedYaml"]:
|
|
||||||
return yaml.safe_load(merged_yaml)
|
return yaml.safe_load(merged_yaml)
|
||||||
if "errors" in ci_config:
|
|
||||||
for error in ci_config["errors"]:
|
|
||||||
print(error)
|
|
||||||
|
|
||||||
gl_gql.invalidate_query_cache()
|
gl_gql.invalidate_query_cache()
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
|
@@ -1,10 +1,7 @@
|
|||||||
colorama==0.4.5
|
colorama==0.4.5
|
||||||
filecache==0.81
|
filecache==0.81
|
||||||
gql==3.4.0
|
gql==3.4.0
|
||||||
kaleido==0.2.1
|
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
pandas==2.1.1
|
|
||||||
plotly==5.17.0
|
|
||||||
python-gitlab==3.5.0
|
python-gitlab==3.5.0
|
||||||
PyYAML==6.0.1
|
PyYAML==6.0.1
|
||||||
ruamel.yaml.clib==0.2.8
|
ruamel.yaml.clib==0.2.8
|
||||||
|
@@ -177,8 +177,6 @@ SOURCES = [
|
|||||||
Source('include/vulkan/vulkan_xlib.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib.h'),
|
Source('include/vulkan/vulkan_xlib.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib.h'),
|
||||||
Source('include/vulkan/vulkan_xlib_xrandr.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib_xrandr.h'),
|
Source('include/vulkan/vulkan_xlib_xrandr.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib_xrandr.h'),
|
||||||
Source('include/vulkan/vk_android_native_buffer.h', 'https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/include/vulkan/vk_android_native_buffer.h?format=TEXT'),
|
Source('include/vulkan/vk_android_native_buffer.h', 'https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/include/vulkan/vk_android_native_buffer.h?format=TEXT'),
|
||||||
Source('include/vk_video/vulkan_video_codec_av1std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_av1std.h'),
|
|
||||||
Source('include/vk_video/vulkan_video_codec_av1std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_av1std_decode.h'),
|
|
||||||
Source('include/vk_video/vulkan_video_codec_h264std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std.h'),
|
Source('include/vk_video/vulkan_video_codec_h264std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std.h'),
|
||||||
Source('include/vk_video/vulkan_video_codec_h264std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_decode.h'),
|
Source('include/vk_video/vulkan_video_codec_h264std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_decode.h'),
|
||||||
Source('include/vk_video/vulkan_video_codec_h264std_encode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_encode.h'),
|
Source('include/vk_video/vulkan_video_codec_h264std_encode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_encode.h'),
|
||||||
|
@@ -41,7 +41,7 @@ Then, create your Meson cross file to use it, something like this
|
|||||||
Now, use that cross file for your Android build directory (as in this
|
Now, use that cross file for your Android build directory (as in this
|
||||||
one cross-compiling the turnip driver for a stock Pixel phone)
|
one cross-compiling the turnip driver for a stock Pixel phone)
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup build-android-aarch64 \
|
meson setup build-android-aarch64 \
|
||||||
--cross-file android-aarch64 \
|
--cross-file android-aarch64 \
|
||||||
@@ -61,7 +61,7 @@ read-only disk image on ``/vendor``. To be able to replace them for
|
|||||||
driver development, we need to unlock the device and remount
|
driver development, we need to unlock the device and remount
|
||||||
``/vendor`` read/write.
|
``/vendor`` read/write.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
adb disable-verity
|
adb disable-verity
|
||||||
adb reboot
|
adb reboot
|
||||||
@@ -69,7 +69,7 @@ driver development, we need to unlock the device and remount
|
|||||||
|
|
||||||
Now you can replace drivers as in:
|
Now you can replace drivers as in:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
adb push build-android-aarch64/src/freedreno/vulkan/libvulkan_freedreno.so /vendor/lib64/hw/vulkan.sdm710.so
|
adb push build-android-aarch64/src/freedreno/vulkan/libvulkan_freedreno.so /vendor/lib64/hw/vulkan.sdm710.so
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ using scp from outside the container.
|
|||||||
On your device, you'll want to make ``/`` read-write. ssh in as root
|
On your device, you'll want to make ``/`` read-write. ssh in as root
|
||||||
and run:
|
and run:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
crossystem dev_boot_signed_only=0
|
crossystem dev_boot_signed_only=0
|
||||||
/usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 4
|
/usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 4
|
||||||
@@ -100,7 +100,7 @@ and run:
|
|||||||
Then, we'll switch Android from using an image for ``/vendor`` to using a
|
Then, we'll switch Android from using an image for ``/vendor`` to using a
|
||||||
bind-mount from a directory we control.
|
bind-mount from a directory we control.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
cd /opt/google/containers/android/
|
cd /opt/google/containers/android/
|
||||||
mkdir vendor-ro
|
mkdir vendor-ro
|
||||||
@@ -123,7 +123,7 @@ change it to::
|
|||||||
|
|
||||||
Now, restart the UI to do a full reload:
|
Now, restart the UI to do a full reload:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
restart ui
|
restart ui
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ then the ``mount`` command should show::
|
|||||||
Now, replacing your DRI driver with a new one built for Android should
|
Now, replacing your DRI driver with a new one built for Android should
|
||||||
be a matter of:
|
be a matter of:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
scp msm_dri.so $HOST:/opt/google/containers/android/vendor-rw/lib64/dri/
|
scp msm_dri.so $HOST:/opt/google/containers/android/vendor-rw/lib64/dri/
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ available to the NDK, assuming you're building anything but the
|
|||||||
Freedreno Vulkan driver for KGSL. You can mostly put things in place
|
Freedreno Vulkan driver for KGSL. You can mostly put things in place
|
||||||
with:
|
with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
scp $HOST:/opt/google/containers/android/vendor-rw/lib64/libdrm.so \
|
scp $HOST:/opt/google/containers/android/vendor-rw/lib64/libdrm.so \
|
||||||
NDKDIR/sysroot/usr/lib/aarch64-linux-android/lib/
|
NDKDIR/sysroot/usr/lib/aarch64-linux-android/lib/
|
||||||
@@ -166,6 +166,6 @@ find you need to reload the whole Android container. To do so without
|
|||||||
having to log in to Chrome again every time, you can just kill the
|
having to log in to Chrome again every time, you can just kill the
|
||||||
container and let it restart:
|
container and let it restart:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
kill $(cat /run/containers/android-run_oci/container.pid )
|
kill $(cat /run/containers/android-run_oci/container.pid )
|
||||||
|
@@ -35,7 +35,7 @@ than the given year.
|
|||||||
|
|
||||||
For example, if the game was released in 2001, do
|
For example, if the game was released in 2001, do
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
export MESA_EXTENSION_MAX_YEAR=2001
|
export MESA_EXTENSION_MAX_YEAR=2001
|
||||||
|
|
||||||
|
@@ -138,7 +138,7 @@ Setup
|
|||||||
Each board will be registered in freedesktop.org GitLab. You'll want
|
Each board will be registered in freedesktop.org GitLab. You'll want
|
||||||
something like this to register a fastboot board:
|
something like this to register a fastboot board:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo gitlab-runner register \
|
sudo gitlab-runner register \
|
||||||
--url https://gitlab.freedesktop.org \
|
--url https://gitlab.freedesktop.org \
|
||||||
@@ -194,7 +194,7 @@ Caching downloads
|
|||||||
To improve the runtime for downloading traces during traces job runs, you will
|
To improve the runtime for downloading traces during traces job runs, you will
|
||||||
want a pass-through HTTP cache. On your runner box, install nginx:
|
want a pass-through HTTP cache. On your runner box, install nginx:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo apt install nginx libnginx-mod-http-lua
|
sudo apt install nginx libnginx-mod-http-lua
|
||||||
|
|
||||||
@@ -213,7 +213,7 @@ your devices are on.
|
|||||||
|
|
||||||
Enable the site and restart nginx:
|
Enable the site and restart nginx:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo rm /etc/nginx/sites-enabled/default
|
sudo rm /etc/nginx/sites-enabled/default
|
||||||
sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
|
sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
|
||||||
|
@@ -64,13 +64,13 @@ Farm management
|
|||||||
|
|
||||||
When the farm starts failing for any reason (power, network, out-of-space), it needs to be disabled by pushing separate MR with
|
When the farm starts failing for any reason (power, network, out-of-space), it needs to be disabled by pushing separate MR with
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git mv .ci-farms{,-disabled}/$farm_name
|
git mv .ci-farms{,-disabled}/$farm_name
|
||||||
|
|
||||||
After farm restore functionality can be enabled by pushing a new merge request, which contains
|
After farm restore functionality can be enabled by pushing a new merge request, which contains
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git mv .ci-farms{-disabled,}/$farm_name
|
git mv .ci-farms{-disabled,}/$farm_name
|
||||||
|
|
||||||
@@ -279,7 +279,7 @@ command`` instead of ``run -it $IMAGE bash`` (which you may also find
|
|||||||
useful for debug). Extract your build setup variables from
|
useful for debug). Extract your build setup variables from
|
||||||
.gitlab-ci.yml and run the CI meson build script:
|
.gitlab-ci.yml and run the CI meson build script:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
IMAGE=registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
|
IMAGE=registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
|
||||||
sudo docker pull $IMAGE
|
sudo docker pull $IMAGE
|
||||||
@@ -288,7 +288,7 @@ useful for debug). Extract your build setup variables from
|
|||||||
All you have left over from the build is its output, and a _build
|
All you have left over from the build is its output, and a _build
|
||||||
directory. You can hack on mesa and iterate testing the build with:
|
directory. You can hack on mesa and iterate testing the build with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo docker run --rm -v `pwd`:/mesa $IMAGE meson compile -C /mesa/_build
|
sudo docker run --rm -v `pwd`:/mesa $IMAGE meson compile -C /mesa/_build
|
||||||
|
|
||||||
|
@@ -12,7 +12,7 @@ Running single trace
|
|||||||
--------------------
|
--------------------
|
||||||
A simple run to see the output of the trace can be done with
|
A simple run to see the output of the trace can be done with
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
apitrace replay -w name_of_trace.trace
|
apitrace replay -w name_of_trace.trace
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ For more information, look into the `Apitrace documentation <https://github.com/
|
|||||||
|
|
||||||
For comparing checksums use:
|
For comparing checksums use:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
cd piglit/replayer
|
cd piglit/replayer
|
||||||
export PIGLIT_SOURCE_DIR="../"
|
export PIGLIT_SOURCE_DIR="../"
|
||||||
@@ -34,7 +34,7 @@ Sometimes it's useful to be able to test traces on your local machine instead of
|
|||||||
|
|
||||||
Download the YAML file from your driver's ``ci/`` directory and then change the path in the YAML file from local proxy or MinIO to the local directory (url-like format ``file://``)
|
Download the YAML file from your driver's ``ci/`` directory and then change the path in the YAML file from local proxy or MinIO to the local directory (url-like format ``file://``)
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
# The PIGLIT_REPLAY_DEVICE_NAME has to match name in the YAML file.
|
# The PIGLIT_REPLAY_DEVICE_NAME has to match name in the YAML file.
|
||||||
export PIGLIT_REPLAY_DEVICE_NAME='your_device_name'
|
export PIGLIT_REPLAY_DEVICE_NAME='your_device_name'
|
||||||
|
@@ -126,7 +126,7 @@ Basic formatting guidelines
|
|||||||
- This GNU indent command generally does the right thing for
|
- This GNU indent command generally does the right thing for
|
||||||
formatting:
|
formatting:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
|
indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
|
||||||
|
|
||||||
|
@@ -28,13 +28,13 @@ Mesa releases are available in two formats: ``.tar.xz`` and ``.tar.gz``.
|
|||||||
|
|
||||||
To unpack the tarball:
|
To unpack the tarball:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
tar xf mesa-Y.N.P.tar.xz
|
tar xf mesa-Y.N.P.tar.xz
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
tar xf mesa-Y.N.P.tar.gz
|
tar xf mesa-Y.N.P.tar.gz
|
||||||
|
|
||||||
|
@@ -388,13 +388,3 @@ executed :
|
|||||||
"main-command-buffer":f1 -> "ring-buffer":f1 [color="#0000ff"];
|
"main-command-buffer":f1 -> "ring-buffer":f1 [color="#0000ff"];
|
||||||
"main-command-buffer":f1 -> "ring-buffer":f2 [color="#0000ff"];
|
"main-command-buffer":f1 -> "ring-buffer":f2 [color="#0000ff"];
|
||||||
}
|
}
|
||||||
|
|
||||||
Runtime dependencies
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
Starting with Intel 12th generation/Alder Lake-P and Intel Arc Alchemist, the Intel 3D driver stack requires GuC firmware for proper operation. You have two options to install the firmware:
|
|
||||||
|
|
||||||
- Distro package: Install the pre-packaged firmware included in your Linux distribution's repositories.
|
|
||||||
- Manual download: You can download the firmware from the official repository: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915. Place the downloaded files in the /lib/firmware/i915 directory.
|
|
||||||
|
|
||||||
Important: For optimal performance, we recommend updating the GuC firmware to version 70.6.3 or later.
|
|
@@ -205,7 +205,8 @@ Strided linear images have numerous limitations:
|
|||||||
- Strides must be a multiple of 16 bytes.
|
- Strides must be a multiple of 16 bytes.
|
||||||
- Strides must be nonzero. For 1D images where the stride is logically
|
- Strides must be nonzero. For 1D images where the stride is logically
|
||||||
irrelevant, ail will internally select the minimal stride.
|
irrelevant, ail will internally select the minimal stride.
|
||||||
- Only 1D, 2D, and 2D Array images may be linear. In particular, no 3D or cubemaps.
|
- Only 1D and 2D images may be linear. In particular, no 3D or cubemaps.
|
||||||
|
- Array texture may not be linear. No 2D arrays or cubemap arrays.
|
||||||
- 2D images must not be mipmapped.
|
- 2D images must not be mipmapped.
|
||||||
- Block-compressed formats and multisampled images are unsupported. Elements of
|
- Block-compressed formats and multisampled images are unsupported. Elements of
|
||||||
a strided linear image are simply pixels.
|
a strided linear image are simply pixels.
|
||||||
@@ -306,14 +307,14 @@ useful for exercising the compiler. To build, use options:
|
|||||||
|
|
||||||
Then run an OpenGL workload with environment variable:
|
Then run an OpenGL workload with environment variable:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
LD_PRELOAD=~/mesa/build/src/asahi/drm-shim/libasahi_noop_drm_shim.so
|
LD_PRELOAD=~/mesa/build/src/asahi/drm-shim/libasahi_noop_drm_shim.so
|
||||||
|
|
||||||
For example to compile a shader with shaderdb and print some statistics along
|
For example to compile a shader with shaderdb and print some statistics along
|
||||||
with the IR:
|
with the IR:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
~/shader-db$ AGX_MESA_DEBUG=shaders,shaderdb ASAHI_MESA_DEBUG=precompile LIBGL_DRIVERS_PATH=~/lib/dri/ LD_PRELOAD=~/mesa/build/src/asahi/drm-shim/libasahi_noop_drm_shim.so ./run shaders/glmark/1-12.shader_test
|
~/shader-db$ AGX_MESA_DEBUG=shaders,shaderdb ASAHI_MESA_DEBUG=precompile LIBGL_DRIVERS_PATH=~/lib/dri/ LD_PRELOAD=~/mesa/build/src/asahi/drm-shim/libasahi_noop_drm_shim.so ./run shaders/glmark/1-12.shader_test
|
||||||
|
|
||||||
|
@@ -308,7 +308,7 @@ the GPU (including its internal hang detection). If a fault in GPU address
|
|||||||
space happened, you should expect to find a message from the iommu, with the
|
space happened, you should expect to find a message from the iommu, with the
|
||||||
faulting address and a hardware unit involved:
|
faulting address and a hardware unit involved:
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
*** gpu fault: ttbr0=000000001c941000 iova=000000010066a000 dir=READ type=TRANSLATION source=TP|VFD (0,0,0,1)
|
*** gpu fault: ttbr0=000000001c941000 iova=000000010066a000 dir=READ type=TRANSLATION source=TP|VFD (0,0,0,1)
|
||||||
|
|
||||||
@@ -346,7 +346,7 @@ though going here is the last resort and likely won't be helpful.
|
|||||||
The ``PC`` value is an instruction address in the current firmware.
|
The ``PC`` value is an instruction address in the current firmware.
|
||||||
You would need to disassemble the firmware (/lib/firmware/qcom/aXXX_sqe.fw) via:
|
You would need to disassemble the firmware (/lib/firmware/qcom/aXXX_sqe.fw) via:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
afuc-disasm -v a650_sqe.fw > a650_sqe.fw.disasm
|
afuc-disasm -v a650_sqe.fw > a650_sqe.fw.disasm
|
||||||
|
|
||||||
@@ -369,17 +369,18 @@ Command Stream Capture
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
During Mesa development, it's often useful to look at the command streams we
|
During Mesa development, it's often useful to look at the command streams we
|
||||||
send to the kernel. We have an interface for the kernel to capture all
|
send to the kernel. Mesa itself doesn't implement a way to stream them out
|
||||||
submitted command streams:
|
(though it maybe should!). Instead, we have an interface for the kernel to
|
||||||
|
capture all submitted command streams:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
cat /sys/kernel/debug/dri/0/rd > cmdstream &
|
cat /sys/kernel/debug/dri/0/rd > cmdstream &
|
||||||
|
|
||||||
By default, command stream capture does not capture texture/vertex/etc. data.
|
By default, command stream capture does not capture texture/vertex/etc. data.
|
||||||
You can enable capturing all the BOs with:
|
You can enable capturing all the BOs with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
echo Y > /sys/module/msm/parameters/rd_full
|
echo Y > /sys/module/msm/parameters/rd_full
|
||||||
|
|
||||||
@@ -390,28 +391,6 @@ probably want to cause a crash in the GPU during a frame of interest so that a
|
|||||||
single GPU core dump is generated. Emitting ``0xdeadbeef`` in the CS should be
|
single GPU core dump is generated. Emitting ``0xdeadbeef`` in the CS should be
|
||||||
enough to cause a fault.
|
enough to cause a fault.
|
||||||
|
|
||||||
``fd_rd_output`` facilities provide support for generating the command stream
|
|
||||||
capture from inside Mesa. Different ``FD_RD_DUMP`` options are available:
|
|
||||||
|
|
||||||
- ``enable`` simply enables dumping the command stream on each submit for a
|
|
||||||
given logical device. When a more advanced option is specified, ``enable`` is
|
|
||||||
implied as specified.
|
|
||||||
- ``combine`` will combine all dumps into a single file instead of writing the
|
|
||||||
dump for each submit into a standalone file.
|
|
||||||
- ``full`` will dump every buffer object, which is necessary for replays of
|
|
||||||
command streams (see below).
|
|
||||||
- ``trigger`` will establish a trigger file through which dumps can be better
|
|
||||||
controlled. Writing a positive integer value into the file will enable dumping
|
|
||||||
of that many subsequent submits. Writing -1 will enable dumping of submits
|
|
||||||
until disabled. Writing 0 (or any other value) will disable dumps.
|
|
||||||
|
|
||||||
Output dump files and trigger file (when enabled) are hard-coded to be placed
|
|
||||||
under ``/tmp``, or ``/data/local/tmp`` under Android.
|
|
||||||
|
|
||||||
Functionality is generic to any Freedreno-based backend, but is currently only
|
|
||||||
integrated in the MSM backend of Turnip. Using the existing ``TU_DEBUG=rd``
|
|
||||||
option will translate to ``FD_RD_DUMP=enable``.
|
|
||||||
|
|
||||||
Capturing Hang RD
|
Capturing Hang RD
|
||||||
+++++++++++++++++
|
+++++++++++++++++
|
||||||
|
|
||||||
@@ -421,7 +400,7 @@ Additionally it is geared towards analyzing the GPU state at the moment of the c
|
|||||||
Alternatively, it's possible to obtain the whole submission with all command
|
Alternatively, it's possible to obtain the whole submission with all command
|
||||||
streams via ``/sys/kernel/debug/dri/0/hangrd``:
|
streams via ``/sys/kernel/debug/dri/0/hangrd``:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo cat /sys/kernel/debug/dri/0/hangrd > logfile.rd // Do the cat _before_ the expected hang
|
sudo cat /sys/kernel/debug/dri/0/hangrd > logfile.rd // Do the cat _before_ the expected hang
|
||||||
|
|
||||||
@@ -442,17 +421,17 @@ Dumping rendering results or even just memory is currently unsupported.
|
|||||||
|
|
||||||
Replaying is done via `replay` tool:
|
Replaying is done via `replay` tool:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./replay test_replay.rd
|
./replay test_replay.rd
|
||||||
|
|
||||||
More examples:
|
More examples:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./replay --first=start_submit_n --last=last_submit_n test_replay.rd
|
./replay --first=start_submit_n --last=last_submit_n test_replay.rd
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./replay --override=0 --generator=./generate_rd test_replay.rd
|
./replay --override=0 --generator=./generate_rd test_replay.rd
|
||||||
|
|
||||||
@@ -474,7 +453,7 @@ The workflow would look like this:
|
|||||||
1. Find the cmdstream № you want to edit;
|
1. Find the cmdstream № you want to edit;
|
||||||
2. Decompile it:
|
2. Decompile it:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./rddecompiler -s %cmd_stream_n% example.rd > generate_rd.c
|
./rddecompiler -s %cmd_stream_n% example.rd > generate_rd.c
|
||||||
|
|
||||||
@@ -482,7 +461,7 @@ The workflow would look like this:
|
|||||||
4. Compile it back, see rdcompiler-meson.build for the instructions;
|
4. Compile it back, see rdcompiler-meson.build for the instructions;
|
||||||
5. Plug the generator into cmdstream replay:
|
5. Plug the generator into cmdstream replay:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./replay --override=%cmd_stream_№% --generator=~/generate_rd
|
./replay --override=%cmd_stream_№% --generator=~/generate_rd
|
||||||
|
|
||||||
@@ -550,7 +529,7 @@ because it would require much less breadcrumb writes and syncs.
|
|||||||
|
|
||||||
Breadcrumbs settings:
|
Breadcrumbs settings:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
TU_BREADCRUMBS=%IP%:%PORT%,break=%BREAKPOINT%:%BREAKPOINT_HITS%
|
TU_BREADCRUMBS=%IP%:%PORT%,break=%BREAKPOINT%:%BREAKPOINT_HITS%
|
||||||
|
|
||||||
@@ -565,26 +544,26 @@ A typical work flow would be:
|
|||||||
|
|
||||||
- Start listening for breadcrumbs on a remote host:
|
- Start listening for breadcrumbs on a remote host:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
nc -lvup $PORT | stdbuf -o0 xxd -pc -c 4 | awk -Wposix '{printf("%u:%u\n", "0x" $0, a[$0]++)}'
|
nc -lvup $PORT | stdbuf -o0 xxd -pc -c 4 | awk -Wposix '{printf("%u:%u\n", "0x" $0, a[$0]++)}'
|
||||||
|
|
||||||
- Start capturing command stream;
|
- Start capturing command stream;
|
||||||
- Replay the hanging trace with:
|
- Replay the hanging trace with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
TU_BREADCRUMBS=$IP:$PORT,break=-1:0
|
TU_BREADCRUMBS=$IP:$PORT,break=-1:0
|
||||||
|
|
||||||
- Increase hangcheck period:
|
- Increase hangcheck period:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
echo -n 60000 > /sys/kernel/debug/dri/0/hangcheck_period_ms
|
echo -n 60000 > /sys/kernel/debug/dri/0/hangcheck_period_ms
|
||||||
|
|
||||||
- After GPU hang note the last breadcrumb and relaunch trace with:
|
- After GPU hang note the last breadcrumb and relaunch trace with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
TU_BREADCRUMBS=%IP%:%PORT%,break=%LAST_BREADCRUMB%:%HITS%
|
TU_BREADCRUMBS=%IP%:%PORT%,break=%LAST_BREADCRUMB%:%HITS%
|
||||||
|
|
||||||
@@ -610,7 +589,7 @@ Finding instances of stale reg reads
|
|||||||
Turnip has a debug option to stomp the registers with invalid values to catch
|
Turnip has a debug option to stomp the registers with invalid values to catch
|
||||||
the cases where stale data is read.
|
the cases where stale data is read.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
MESA_VK_ABORT_ON_DEVICE_LOSS=1 \
|
MESA_VK_ABORT_ON_DEVICE_LOSS=1 \
|
||||||
TU_DEBUG_STALE_REGS_RANGE=0x00000c00,0x0000be01 \
|
TU_DEBUG_STALE_REGS_RANGE=0x00000c00,0x0000be01 \
|
||||||
|
@@ -55,7 +55,6 @@ These are some display drivers that have been tested with Lima:
|
|||||||
- Exynos: ``exynos``
|
- Exynos: ``exynos``
|
||||||
- Rockchip: ``rockchip``
|
- Rockchip: ``rockchip``
|
||||||
- Tiny DRM: ``tinydrm``
|
- Tiny DRM: ``tinydrm``
|
||||||
- Xilinx ZynqMP: ``zynqmp-dpsub``
|
|
||||||
|
|
||||||
Environment variables
|
Environment variables
|
||||||
---------------------
|
---------------------
|
||||||
|
@@ -31,7 +31,7 @@ Requirements
|
|||||||
|
|
||||||
For Linux, on a recent Debian based distribution do:
|
For Linux, on a recent Debian based distribution do:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
aptitude install llvm-dev
|
aptitude install llvm-dev
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ Requirements
|
|||||||
|
|
||||||
For a RPM-based distribution do:
|
For a RPM-based distribution do:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
yum install llvm-devel
|
yum install llvm-devel
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Building
|
|||||||
|
|
||||||
To build everything on Linux invoke meson as:
|
To build everything on Linux invoke meson as:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
|
@@ -18,8 +18,9 @@ NVK requires at least a Linux 6.6 kernel
|
|||||||
Conformance status:
|
Conformance status:
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
NVK is a conformant Vulkan 1.3 implementation for all Turing (RTX 20XX and
|
NVK is not currently conformant on any hardware. As of the writing of this
|
||||||
GTX 16XX) and later GPUs.
|
documentation, it was failing about 2000 tests with the current feature
|
||||||
|
set.
|
||||||
|
|
||||||
Debugging
|
Debugging
|
||||||
---------
|
---------
|
||||||
@@ -27,35 +28,16 @@ Debugging
|
|||||||
Here are a few environment variable debug environment variables
|
Here are a few environment variable debug environment variables
|
||||||
specific to NVK:
|
specific to NVK:
|
||||||
|
|
||||||
:envvar:`NAK_DEBUG`:
|
|
||||||
a comma-separated list of named flags affecting the NVK back-end shader
|
|
||||||
compiler:
|
|
||||||
|
|
||||||
``print``
|
|
||||||
Prints the shader at various stages of the compile pipeline
|
|
||||||
``serial``
|
|
||||||
Forces serial instruction execution; this is often useful for
|
|
||||||
debugging or working around dependency bugs
|
|
||||||
``spill``
|
|
||||||
Forces the GPR file to a minimal size to test the spilling code
|
|
||||||
``annotate``
|
|
||||||
Adds extra annotation instructions to the IR to track information
|
|
||||||
from various compile passes
|
|
||||||
|
|
||||||
:envvar:`NVK_DEBUG`:
|
:envvar:`NVK_DEBUG`:
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
|
||||||
``push``
|
``push_dump``
|
||||||
Dumps all pusbufs to stderr on submit. This requires that
|
Dumps all pusbufs to stderr on submit. This requires that
|
||||||
``push_sync`` also be set.
|
``push_sync`` also be set.
|
||||||
``push_sync``
|
``push_sync``
|
||||||
Waits for submit to complete before continuing
|
Waits for submit to complete before continuing
|
||||||
``zero_memory``
|
``zero_memory``
|
||||||
Zeros all VkDeviceMemory objects upon creation
|
Zeros all VkDeviceMemory objects upon creation
|
||||||
``vm``
|
|
||||||
Logs VM binds and unbinds
|
|
||||||
``no_cbuf``
|
|
||||||
Disables automatic promotion of UBOs to constant buffers
|
|
||||||
|
|
||||||
:envvar:`NVK_I_WANT_A_BROKEN_VULKAN_DRIVER`
|
:envvar:`NVK_I_WANT_A_BROKEN_VULKAN_DRIVER`
|
||||||
If defined to ``1`` or ``true``, this will enable enumeration of all
|
If defined to ``1`` or ``true``, this will enable enumeration of all
|
||||||
|
@@ -6,28 +6,25 @@ GPUs based on the Midgard and Bifrost microarchitectures. It is **conformant**
|
|||||||
on Mali-G52 and Mali-G57 but **non-conformant** on other GPUs. The following
|
on Mali-G52 and Mali-G57 but **non-conformant** on other GPUs. The following
|
||||||
hardware is currently supported:
|
hardware is currently supported:
|
||||||
|
|
||||||
========= ============= ============ =======
|
========= ============ ============ =======
|
||||||
Product Architecture OpenGL ES OpenGL
|
Product Architecture OpenGL ES OpenGL
|
||||||
========= ============= ============ =======
|
========= ============ ============ =======
|
||||||
Mali T600 Midgard (v4) 2.0 2.1
|
Mali T620 Midgard (v4) 2.0 2.1
|
||||||
Mali T620 Midgard (v4) 2.0 2.1
|
Mali T720 Midgard (v4) 2.0 2.1
|
||||||
Mali T720 Midgard (v4) 2.0 2.1
|
Mali T760 Midgard (v5) 3.1 3.1
|
||||||
Mali T760 Midgard (v5) 3.1 3.1
|
Mali T820 Midgard (v5) 3.1 3.1
|
||||||
Mali T820 Midgard (v5) 3.1 3.1
|
Mali T830 Midgard (v5) 3.1 3.1
|
||||||
Mali T830 Midgard (v5) 3.1 3.1
|
Mali T860 Midgard (v5) 3.1 3.1
|
||||||
Mali T860 Midgard (v5) 3.1 3.1
|
Mali T880 Midgard (v5) 3.1 3.1
|
||||||
Mali T880 Midgard (v5) 3.1 3.1
|
Mali G72 Bifrost (v6) 3.1 3.1
|
||||||
Mali G72 Bifrost (v6) 3.1 3.1
|
Mali G31 Bifrost (v7) 3.1 3.1
|
||||||
Mali G31 Bifrost (v7) 3.1 3.1
|
Mali G51 Bifrost (v7) 3.1 3.1
|
||||||
Mali G51 Bifrost (v7) 3.1 3.1
|
Mali G52 Bifrost (v7) 3.1 3.1
|
||||||
Mali G52 Bifrost (v7) 3.1 3.1
|
Mali G76 Bifrost (v7) 3.1 3.1
|
||||||
Mali G76 Bifrost (v7) 3.1 3.1
|
Mali G57 Valhall (v9) 3.1 3.1
|
||||||
Mali G57 Valhall (v9) 3.1 3.1
|
========= ============ ============ =======
|
||||||
Mali G310 Valhall (v10) 3.1 3.1
|
|
||||||
Mali G610 Valhall (v10) 3.1 3.1
|
|
||||||
========= ============= ============ =======
|
|
||||||
|
|
||||||
Other Midgard and Bifrost chips (e.g. G71) are not yet supported.
|
Other Midgard and Bifrost chips (T604, G71) are not yet supported.
|
||||||
|
|
||||||
Older Mali chips based on the Utgard architecture (Mali 400, Mali 450) are
|
Older Mali chips based on the Utgard architecture (Mali 400, Mali 450) are
|
||||||
supported in the :doc:`Lima <lima>` driver, not Panfrost. Lima is also
|
supported in the :doc:`Lima <lima>` driver, not Panfrost. Lima is also
|
||||||
@@ -105,16 +102,15 @@ was installed.
|
|||||||
By default, drm-shim mocks a Mali-G52 system. To select a specific Mali GPU,
|
By default, drm-shim mocks a Mali-G52 system. To select a specific Mali GPU,
|
||||||
set the ``PAN_GPU_ID`` environment variable to the desired GPU ID:
|
set the ``PAN_GPU_ID`` environment variable to the desired GPU ID:
|
||||||
|
|
||||||
========= ============= =======
|
========= ============ =======
|
||||||
Product Architecture GPU ID
|
Product Architecture GPU ID
|
||||||
========= ============= =======
|
========= ============ =======
|
||||||
Mali-T720 Midgard (v4) 720
|
Mali-T720 Midgard (v4) 720
|
||||||
Mali-T860 Midgard (v5) 860
|
Mali-T860 Midgard (v5) 860
|
||||||
Mali-G72 Bifrost (v6) 6221
|
Mali-G72 Bifrost (v6) 6221
|
||||||
Mali-G52 Bifrost (v7) 7212
|
Mali-G52 Bifrost (v7) 7212
|
||||||
Mali-G57 Valhall (v9) 9093
|
Mali-G57 Valhall (v9) 9093
|
||||||
Mali-G610 Valhall (v10) a867
|
========= ============ =======
|
||||||
========= ============= =======
|
|
||||||
|
|
||||||
Additional GPU IDs are enumerated in the ``panfrost_model_list`` list in
|
Additional GPU IDs are enumerated in the ``panfrost_model_list`` list in
|
||||||
``src/panfrost/lib/pan_props.c``.
|
``src/panfrost/lib/pan_props.c``.
|
||||||
@@ -122,7 +118,7 @@ Additional GPU IDs are enumerated in the ``panfrost_model_list`` list in
|
|||||||
As an example: assuming Mesa is installed to a local path ``~/lib`` and Mesa's
|
As an example: assuming Mesa is installed to a local path ``~/lib`` and Mesa's
|
||||||
build directory is ``~/mesa/build``, a shader can be compiled for Mali-G52 as:
|
build directory is ``~/mesa/build``, a shader can be compiled for Mali-G52 as:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
~/shader-db$ BIFROST_MESA_DEBUG=shaders \
|
~/shader-db$ BIFROST_MESA_DEBUG=shaders \
|
||||||
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
||||||
@@ -132,7 +128,7 @@ build directory is ``~/mesa/build``, a shader can be compiled for Mali-G52 as:
|
|||||||
|
|
||||||
The same shader can be compiled for Mali-T720 as:
|
The same shader can be compiled for Mali-T720 as:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
~/shader-db$ MIDGARD_MESA_DEBUG=shaders \
|
~/shader-db$ MIDGARD_MESA_DEBUG=shaders \
|
||||||
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
||||||
@@ -152,7 +148,7 @@ and various flags to dEQP mimic the surfaceless environment that our
|
|||||||
continuous integration (CI) uses. This eliminates window system dependencies,
|
continuous integration (CI) uses. This eliminates window system dependencies,
|
||||||
although it requires a specially built CTS:
|
although it requires a specially built CTS:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
~/VK-GL-CTS/build/external/openglcts/modules$ PAN_MESA_DEBUG=trace,dump \
|
~/VK-GL-CTS/build/external/openglcts/modules$ PAN_MESA_DEBUG=trace,dump \
|
||||||
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
LIBGL_DRIVERS_PATH=~/lib/dri/ \
|
||||||
|
@@ -51,7 +51,7 @@ vtest
|
|||||||
The simplest way to test Venus is to use virglrenderer's vtest server. To
|
The simplest way to test Venus is to use virglrenderer's vtest server. To
|
||||||
build virglrenderer with Venus support and to start the vtest server,
|
build virglrenderer with Venus support and to start the vtest server,
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git
|
$ git clone https://gitlab.freedesktop.org/virgl/virglrenderer.git
|
||||||
$ cd virglrenderer
|
$ cd virglrenderer
|
||||||
@@ -63,7 +63,7 @@ build virglrenderer with Venus support and to start the vtest server,
|
|||||||
|
|
||||||
In another shell,
|
In another shell,
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ export VK_ICD_FILENAMES=<path-to-virtio_icd.x86_64.json>
|
$ export VK_ICD_FILENAMES=<path-to-virtio_icd.x86_64.json>
|
||||||
$ export VN_DEBUG=vtest
|
$ export VN_DEBUG=vtest
|
||||||
@@ -84,7 +84,7 @@ driver, which was upstreamed in kernel 5.16.
|
|||||||
crosvm is written in Rust. To build crosvm, make sure Rust has been installed
|
crosvm is written in Rust. To build crosvm, make sure Rust has been installed
|
||||||
and
|
and
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone --recurse-submodules \
|
$ git clone --recurse-submodules \
|
||||||
https://chromium.googlesource.com/chromiumos/platform/crosvm
|
https://chromium.googlesource.com/chromiumos/platform/crosvm
|
||||||
@@ -97,7 +97,7 @@ Note that crosvm must be built with ``default-no-sandbox`` or started with
|
|||||||
|
|
||||||
This is how one might want to start crosvm
|
This is how one might want to start crosvm
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ sudo LD_LIBRARY_PATH=<...> VK_ICD_FILENAMES=<...> ./target/debug/crosvm run \
|
$ sudo LD_LIBRARY_PATH=<...> VK_ICD_FILENAMES=<...> ./target/debug/crosvm run \
|
||||||
--gpu vulkan=true \
|
--gpu vulkan=true \
|
||||||
@@ -126,7 +126,7 @@ the `Chrome OS kernel
|
|||||||
|
|
||||||
To build minigbm and to enable minigbm support in virglrenderer,
|
To build minigbm and to enable minigbm support in virglrenderer,
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone https://chromium.googlesource.com/chromiumos/platform/minigbm
|
$ git clone https://chromium.googlesource.com/chromiumos/platform/minigbm
|
||||||
$ cd minigbm
|
$ cd minigbm
|
||||||
@@ -141,7 +141,7 @@ Make sure a host Wayland compositor is running. Replace
|
|||||||
|
|
||||||
In the guest, build and start sommelier, the special Wayland compositor,
|
In the guest, build and start sommelier, the special Wayland compositor,
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ git clone https://chromium.googlesource.com/chromiumos/platform2
|
$ git clone https://chromium.googlesource.com/chromiumos/platform2
|
||||||
$ cd platform2/vm_tools/sommelier
|
$ cd platform2/vm_tools/sommelier
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
EGL
|
EGL
|
||||||
===
|
===
|
||||||
|
|
||||||
The current version of EGL in Mesa implements EGL 1.4. More information
|
The current version of EGL in Mesa implements EGL 1.5. More information
|
||||||
about EGL can be found at https://www.khronos.org/egl/.
|
about EGL can be found at https://www.khronos.org/egl/.
|
||||||
|
|
||||||
The Mesa's implementation of EGL uses a driver architecture. The main
|
The Mesa's implementation of EGL uses a driver architecture. The main
|
||||||
@@ -18,7 +18,7 @@ Build EGL
|
|||||||
#. Configure your build with the desired client APIs and enable the
|
#. Configure your build with the desired client APIs and enable the
|
||||||
driver for your hardware. For example:
|
driver for your hardware. For example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ meson configure \
|
$ meson configure \
|
||||||
-D egl=enabled \
|
-D egl=enabled \
|
||||||
|
@@ -349,9 +349,6 @@ Core Mesa environment variables
|
|||||||
* - ``rra``
|
* - ``rra``
|
||||||
- Radeon Raytracing Analyzer
|
- Radeon Raytracing Analyzer
|
||||||
- ``RADV``
|
- ``RADV``
|
||||||
* - ``ctxroll``
|
|
||||||
- Context rolls
|
|
||||||
- ``RADV``
|
|
||||||
|
|
||||||
- Creating RMV captures requires the ``scripts/setup.sh`` script in the
|
- Creating RMV captures requires the ``scripts/setup.sh`` script in the
|
||||||
Radeon Developer Tools folder to be run beforehand
|
Radeon Developer Tools folder to be run beforehand
|
||||||
@@ -1067,7 +1064,6 @@ Rusticl environment variables
|
|||||||
- ``clc`` dumps all OpenCL C source being compiled
|
- ``clc`` dumps all OpenCL C source being compiled
|
||||||
- ``program`` dumps compilation logs to stderr
|
- ``program`` dumps compilation logs to stderr
|
||||||
- ``sync`` waits on the GPU to complete after every event
|
- ``sync`` waits on the GPU to complete after every event
|
||||||
- ``validate`` validates any internally generated SPIR-Vs, e.g. through compiling OpenCL C code
|
|
||||||
|
|
||||||
.. _clc-env-var:
|
.. _clc-env-var:
|
||||||
|
|
||||||
@@ -1269,8 +1265,6 @@ RADV driver environment variables
|
|||||||
disable FMASK compression on MSAA images (GFX6-GFX10.3)
|
disable FMASK compression on MSAA images (GFX6-GFX10.3)
|
||||||
``nogpl``
|
``nogpl``
|
||||||
disable VK_EXT_graphics_pipeline_library
|
disable VK_EXT_graphics_pipeline_library
|
||||||
``nogsfastlaunch2``
|
|
||||||
disable GS_FAST_LAUNCH=2 for Mesh shaders (GFX11 only)
|
|
||||||
``nohiz``
|
``nohiz``
|
||||||
disable HIZ for depthstencil images
|
disable HIZ for depthstencil images
|
||||||
``noibs``
|
``noibs``
|
||||||
@@ -1282,9 +1276,7 @@ RADV driver environment variables
|
|||||||
``nongg``
|
``nongg``
|
||||||
disable NGG for GFX10 and GFX10.3
|
disable NGG for GFX10 and GFX10.3
|
||||||
``nonggc``
|
``nonggc``
|
||||||
disable NGG culling on GPUs where it's enabled by default (GFX10.3 only).
|
disable NGG culling on GPUs where it's enabled by default (GFX10.3+ only).
|
||||||
``nongg_gs``
|
|
||||||
disable NGG GS for GFX10 and GFX10.3
|
|
||||||
``nort``
|
``nort``
|
||||||
skip executing vkCmdTraceRays and ray queries (RT extensions will still be
|
skip executing vkCmdTraceRays and ray queries (RT extensions will still be
|
||||||
advertised)
|
advertised)
|
||||||
@@ -1350,26 +1342,22 @@ RADV driver environment variables
|
|||||||
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
enable wave32 for vertex/tess/geometry shaders (GFX10+)
|
||||||
``localbos``
|
``localbos``
|
||||||
enable local BOs
|
enable local BOs
|
||||||
``nggc``
|
|
||||||
enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
|
|
||||||
``nircache``
|
|
||||||
cache per-stage NIR for graphics pipelines
|
|
||||||
``nosam``
|
``nosam``
|
||||||
disable optimizations that get enabled when all VRAM is CPU visible.
|
disable optimizations that get enabled when all VRAM is CPU visible.
|
||||||
``pswave32``
|
``pswave32``
|
||||||
enable wave32 for pixel shaders (GFX10+)
|
enable wave32 for pixel shaders (GFX10+)
|
||||||
``rtwave32``
|
``nggc``
|
||||||
enable wave32 for ray tracing shaders (GFX11+)
|
enable NGG culling on GPUs where it's not enabled by default (GFX10.1 only).
|
||||||
``rtwave64``
|
|
||||||
enable wave64 for ray tracing shaders (GFX10-10.3)
|
|
||||||
``sam``
|
``sam``
|
||||||
enable optimizations to move more driver internal objects to VRAM.
|
enable optimizations to move more driver internal objects to VRAM.
|
||||||
``shader_object``
|
``rtwave64``
|
||||||
enable experimental implementation of VK_EXT_shader_object
|
enable wave64 for ray tracing shaders (GFX10+)
|
||||||
``transfer_queue``
|
``transfer_queue``
|
||||||
enable experimental transfer queue support (GFX9+, not yet spec compliant)
|
enable experimental transfer queue support (GFX9+, not yet spec compliant)
|
||||||
``video_decode``
|
``video_decode``
|
||||||
enable experimental video decoding support
|
enable experimental video decoding support
|
||||||
|
``gsfastlaunch2``
|
||||||
|
use GS_FAST_LAUNCH=2 for Mesh shaders (GFX11+ dGPUs only)
|
||||||
|
|
||||||
.. envvar:: RADV_TEX_ANISO
|
.. envvar:: RADV_TEX_ANISO
|
||||||
|
|
||||||
@@ -1397,16 +1385,6 @@ RADV driver environment variables
|
|||||||
enable validation of captured acceleration structures. Can be
|
enable validation of captured acceleration structures. Can be
|
||||||
useful if RRA crashes upon opening a trace.
|
useful if RRA crashes upon opening a trace.
|
||||||
|
|
||||||
.. envvar:: RADV_RRA_TRACE_HISTORY_SIZE
|
|
||||||
|
|
||||||
set the ray history buffer size when capturing RRA traces (default value is 100MiB,
|
|
||||||
small buffers may result in incomplete traces)
|
|
||||||
|
|
||||||
.. envvar:: RADV_RRA_TRACE_RESOLUTION_SCALE
|
|
||||||
|
|
||||||
decrease the resolution used for dumping the ray history resolution when capturing
|
|
||||||
RRA traces. This allows for dumping every Nth invocation along each dispatch dimension.
|
|
||||||
|
|
||||||
.. envvar:: ACO_DEBUG
|
.. envvar:: ACO_DEBUG
|
||||||
|
|
||||||
a comma-separated list of named flags, which do various things:
|
a comma-separated list of named flags, which do various things:
|
||||||
|
@@ -91,7 +91,7 @@ GL 3.2, GLSL 1.50 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
|||||||
GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima, crocus)
|
GL_ARB_fragment_coord_conventions (Frag shader coord) DONE (v3d, vc4, panfrost, lima, crocus)
|
||||||
GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima, crocus)
|
GL_ARB_provoking_vertex (Provoking vertex) DONE (v3d, vc4, panfrost, lima, crocus)
|
||||||
GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost, crocus)
|
GL_ARB_seamless_cube_map (Seamless cubemaps) DONE (panfrost, crocus)
|
||||||
GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost)
|
GL_ARB_texture_multisample (Multisample textures) DONE (freedreno/a5xx+, v3d, vc4, panfrost, asahi)
|
||||||
GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost, crocus)
|
GL_ARB_depth_clamp (Frag depth clamp) DONE (panfrost, crocus)
|
||||||
GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima, crocus)
|
GL_ARB_sync (Fence objects) DONE (v3d, vc4, panfrost, lima, crocus)
|
||||||
GLX_ARB_create_context_profile DONE
|
GLX_ARB_create_context_profile DONE
|
||||||
@@ -111,43 +111,43 @@ GL 3.3, GLSL 3.30 --- all DONE: freedreno, nv50, nvc0, r600, radeonsi, llvmpipe,
|
|||||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (v3d, panfrost)
|
GL_ARB_vertex_type_2_10_10_10_rev DONE (v3d, panfrost)
|
||||||
|
|
||||||
|
|
||||||
GL 4.0, GLSL 4.00 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
GL 4.0, GLSL 4.00 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+
|
||||||
|
|
||||||
GL_ARB_draw_buffers_blend DONE (freedreno, nv50, softpipe, panfrost, v3d, crocus/gen6+)
|
GL_ARB_draw_buffers_blend DONE (freedreno, nv50, softpipe, panfrost, v3d, asahi, crocus/gen6+)
|
||||||
GL_ARB_draw_indirect DONE (freedreno, softpipe, v3d)
|
GL_ARB_draw_indirect DONE (freedreno, softpipe, v3d, asahi)
|
||||||
GL_ARB_gpu_shader5 DONE (freedreno/a6xx)
|
GL_ARB_gpu_shader5 DONE (freedreno/a6xx, asahi)
|
||||||
- 'precise' qualifier DONE (softpipe)
|
- 'precise' qualifier DONE (softpipe, asahi)
|
||||||
- Dynamically uniform sampler array indices DONE (softpipe)
|
- Dynamically uniform sampler array indices DONE (softpipe, asahi)
|
||||||
- Dynamically uniform UBO array indices DONE (freedreno, softpipe)
|
- Dynamically uniform UBO array indices DONE (freedreno, softpipe, asahi)
|
||||||
- Implicit signed -> unsigned conversions DONE (softpipe)
|
- Implicit signed -> unsigned conversions DONE (softpipe, asahi)
|
||||||
- Fused multiply-add DONE (softpipe)
|
- Fused multiply-add DONE (softpipe, asahi)
|
||||||
- Packing/bitfield/conversion functions DONE (freedreno, softpipe, panfrost)
|
- Packing/bitfield/conversion functions DONE (freedreno, softpipe, panfrost, asahi)
|
||||||
- Enhanced textureGather DONE (freedreno, softpipe, panfrost)
|
- Enhanced textureGather DONE (freedreno, softpipe, panfrost, asahi)
|
||||||
- Geometry shader instancing DONE (softpipe)
|
- Geometry shader instancing DONE (softpipe, asahi)
|
||||||
- Geometry shader multiple streams DONE (softpipe)
|
- Geometry shader multiple streams DONE (softpipe, asahi)
|
||||||
- Enhanced per-sample shading DONE ()
|
- Enhanced per-sample shading DONE (asahi)
|
||||||
- Interpolation functions DONE (softpipe)
|
- Interpolation functions DONE (softpipe, asahi)
|
||||||
- New overload resolution rules DONE (softpipe)
|
- New overload resolution rules DONE (softpipe, asahi)
|
||||||
GL_ARB_gpu_shader_fp64 DONE (freedreno/a6xx, softpipe)
|
GL_ARB_gpu_shader_fp64 DONE (freedreno/a6xx, softpipe)
|
||||||
GL_ARB_sample_shading DONE (freedreno/a6xx, nv50, panfrost, crocus/gen6+)
|
GL_ARB_sample_shading DONE (freedreno/a6xx, nv50, panfrost, crocus/gen6+, asahi)
|
||||||
GL_ARB_shader_subroutine DONE (freedreno, nv50, softpipe, crocus/gen6+)
|
GL_ARB_shader_subroutine DONE (freedreno, nv50, softpipe, crocus/gen6+)
|
||||||
GL_ARB_tessellation_shader DONE (freedreno/a6xx)
|
GL_ARB_tessellation_shader DONE (freedreno/a6xx)
|
||||||
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, softpipe, panfrost, crocus/gen6+)
|
GL_ARB_texture_buffer_object_rgb32 DONE (freedreno, softpipe, panfrost, asahi, crocus/gen6+)
|
||||||
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, nv50, softpipe, v3d, crocus/gen6+)
|
GL_ARB_texture_cube_map_array DONE (freedreno/a4xx+, nv50, softpipe, v3d, crocus/gen6+, asahi)
|
||||||
GL_ARB_texture_gather DONE (freedreno, nv50, softpipe, v3d, panfrost)
|
GL_ARB_texture_gather DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi)
|
||||||
GL_ARB_texture_query_lod DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus/gen5+)
|
GL_ARB_texture_query_lod DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus/gen5+)
|
||||||
GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, nv50, softpipe, v3d, panfrost, crocus/gen6+)
|
GL_ARB_transform_feedback2 DONE (freedreno/a3xx+, nv50, softpipe, v3d, panfrost, asahi, crocus/gen6+)
|
||||||
GL_ARB_transform_feedback3 DONE (freedreno/a3xx+, softpipe)
|
GL_ARB_transform_feedback3 DONE (freedreno/a3xx+, softpipe, asahi)
|
||||||
|
|
||||||
|
|
||||||
GL 4.1, GLSL 4.10 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
GL 4.1, GLSL 4.10 --- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+
|
||||||
|
|
||||||
GL_ARB_ES2_compatibility DONE (freedreno, nv50, softpipe, v3d, vc4, panfrost, lima, crocus)
|
GL_ARB_ES2_compatibility DONE (freedreno, nv50, softpipe, v3d, vc4, panfrost, lima, asahi, crocus)
|
||||||
GL_ARB_get_program_binary DONE (freedreno, v3d, 0 or 1 binary formats)
|
GL_ARB_get_program_binary DONE (freedreno, v3d, asahi, 0 or 1 binary formats)
|
||||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||||
GL_ARB_shader_precision DONE (freedreno/a6xx, all drivers that support GLSL 4.10)
|
GL_ARB_shader_precision DONE (freedreno/a6xx, all drivers that support GLSL 4.10, asahi)
|
||||||
GL_ARB_vertex_attrib_64bit DONE (freedreno/a6xx, softpipe)
|
GL_ARB_vertex_attrib_64bit DONE (freedreno/a6xx, softpipe)
|
||||||
GL_ARB_viewport_array DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+)
|
GL_ARB_viewport_array DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+, asahi)
|
||||||
|
|
||||||
|
|
||||||
GL 4.2, GLSL 4.20 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
GL 4.2, GLSL 4.20 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7+, asahi
|
||||||
@@ -166,38 +166,38 @@ GL 4.2, GLSL 4.20 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, v
|
|||||||
GL_ARB_map_buffer_alignment DONE (all drivers)
|
GL_ARB_map_buffer_alignment DONE (all drivers)
|
||||||
|
|
||||||
|
|
||||||
GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7.5+, asahi
|
GL 4.3, GLSL 4.30 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, d3d12, iris, crocus/gen7.5+
|
||||||
|
|
||||||
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
|
GL_ARB_arrays_of_arrays DONE (all drivers that support GLSL 1.30)
|
||||||
GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
|
GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
|
||||||
GL_ARB_clear_buffer_object DONE (all drivers)
|
GL_ARB_clear_buffer_object DONE (all drivers)
|
||||||
GL_ARB_compute_shader DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+)
|
GL_ARB_compute_shader DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+, asahi)
|
||||||
GL_ARB_copy_image DONE (freedreno/a6xx, nv50, softpipe, v3d, crocus)
|
GL_ARB_copy_image DONE (freedreno/a6xx, nv50, softpipe, v3d, crocus)
|
||||||
GL_KHR_debug DONE (all drivers)
|
GL_KHR_debug DONE (all drivers)
|
||||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||||
GL_ARB_fragment_layer_viewport DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+)
|
GL_ARB_fragment_layer_viewport DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+, asahi)
|
||||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, v3d, crocus/gen7+)
|
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, v3d, asahi, crocus/gen7+)
|
||||||
GL_ARB_internalformat_query2 DONE (all drivers)
|
GL_ARB_internalformat_query2 DONE (all drivers)
|
||||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||||
GL_ARB_multi_draw_indirect DONE (freedreno, softpipe, v3d, crocus/gen7+)
|
GL_ARB_multi_draw_indirect DONE (freedreno, softpipe, v3d, crocus/gen7+, asahi)
|
||||||
GL_ARB_program_interface_query DONE (all drivers)
|
GL_ARB_program_interface_query DONE (all drivers)
|
||||||
GL_ARB_robust_buffer_access_behavior DONE (freedreno)
|
GL_ARB_robust_buffer_access_behavior DONE (freedreno)
|
||||||
GL_ARB_shader_image_size DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+)
|
GL_ARB_shader_image_size DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+, asahi)
|
||||||
GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+)
|
GL_ARB_shader_storage_buffer_object DONE (freedreno/a5xx+, softpipe, v3d, panfrost, crocus/gen7+, asahi)
|
||||||
GL_ARB_stencil_texturing DONE (freedreno, nv50, softpipe, v3d, panfrost)
|
GL_ARB_stencil_texturing DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi)
|
||||||
GL_ARB_texture_buffer_range DONE (freedreno, nv50, softpipe, v3d, crocus)
|
GL_ARB_texture_buffer_range DONE (freedreno, nv50, softpipe, v3d, crocus)
|
||||||
GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
|
GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
|
||||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||||
GL_ARB_texture_view DONE (freedreno, nv50, softpipe, v3d, crocus/gen7+)
|
GL_ARB_texture_view DONE (freedreno, nv50, softpipe, v3d, asahi, crocus/gen7+)
|
||||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||||
|
|
||||||
|
|
||||||
GL 4.4, GLSL 4.40 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12, asahi
|
GL 4.4, GLSL 4.40 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12
|
||||||
|
|
||||||
GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
|
GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
|
||||||
GL_ARB_buffer_storage DONE (freedreno, nv50, v3d, vc4, lima, panfrost, softpipe, etnaviv, crocus)
|
GL_ARB_buffer_storage DONE (freedreno, nv50, v3d, vc4, lima, panfrost, asahi, softpipe, etnaviv, crocus)
|
||||||
GL_ARB_clear_texture DONE (all drivers)
|
GL_ARB_clear_texture DONE (all drivers)
|
||||||
GL_ARB_enhanced_layouts DONE (freedreno/a3xx+, nv50, softpipe, crocus)
|
GL_ARB_enhanced_layouts DONE (freedreno/a3xx+, nv50, softpipe, crocus, asahi)
|
||||||
- compile-time constant expressions DONE
|
- compile-time constant expressions DONE
|
||||||
- explicit byte offsets for blocks DONE
|
- explicit byte offsets for blocks DONE
|
||||||
- forced alignment within blocks DONE
|
- forced alignment within blocks DONE
|
||||||
@@ -206,37 +206,37 @@ GL 4.4, GLSL 4.40 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, v
|
|||||||
- input/output block locations DONE
|
- input/output block locations DONE
|
||||||
GL_ARB_multi_bind DONE (all drivers)
|
GL_ARB_multi_bind DONE (all drivers)
|
||||||
GL_ARB_query_buffer_object DONE (freedreno/a6xx)
|
GL_ARB_query_buffer_object DONE (freedreno/a6xx)
|
||||||
GL_ARB_texture_mirror_clamp_to_edge DONE (freedreno, nv50, softpipe, v3d, panfrost, crocus)
|
GL_ARB_texture_mirror_clamp_to_edge DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi, crocus)
|
||||||
GL_ARB_texture_stencil8 DONE (freedreno, nv50, softpipe, v3d, panfrost)
|
GL_ARB_texture_stencil8 DONE (freedreno, nv50, softpipe, v3d, panfrost, asahi)
|
||||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (freedreno, nv50, softpipe, panfrost, crocus)
|
GL_ARB_vertex_type_10f_11f_11f_rev DONE (freedreno, nv50, softpipe, panfrost, asahi, crocus)
|
||||||
|
|
||||||
GL 4.5, GLSL 4.50 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12, asahi
|
GL 4.5, GLSL 4.50 -- all DONE: freedreno/a6xx, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7.5+, d3d12
|
||||||
|
|
||||||
GL_ARB_ES3_1_compatibility DONE (freedreno/a6xx, softpipe)
|
GL_ARB_ES3_1_compatibility DONE (freedreno/a6xx, softpipe)
|
||||||
GL_ARB_clip_control DONE (freedreno, nv50, softpipe, lima, crocus)
|
GL_ARB_clip_control DONE (freedreno, nv50, softpipe, lima, crocus, asahi)
|
||||||
GL_ARB_conditional_render_inverted DONE (freedreno, nv50, softpipe, panfrost, crocus/gen6+)
|
GL_ARB_conditional_render_inverted DONE (freedreno, nv50, softpipe, panfrost, asahi, crocus/gen6+)
|
||||||
GL_ARB_cull_distance DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+)
|
GL_ARB_cull_distance DONE (freedreno/a6xx, nv50, softpipe, crocus/gen6+, asahi)
|
||||||
GL_ARB_derivative_control DONE (freedreno/a3xx+, nv50, softpipe, crocus/gen7+)
|
GL_ARB_derivative_control DONE (freedreno/a3xx+, nv50, softpipe, asahi, crocus/gen7+)
|
||||||
GL_ARB_direct_state_access DONE (all drivers)
|
GL_ARB_direct_state_access DONE (all drivers)
|
||||||
GL_ARB_get_texture_sub_image DONE (all drivers)
|
GL_ARB_get_texture_sub_image DONE (all drivers)
|
||||||
GL_ARB_shader_texture_image_samples DONE (freedreno/a3xx+, nv50, crocus/gen7+)
|
GL_ARB_shader_texture_image_samples DONE (freedreno/a3xx+, nv50, crocus/gen7+, asahi)
|
||||||
GL_ARB_texture_barrier DONE (freedreno, nv50, v3d, vc4, lima, crocus)
|
GL_ARB_texture_barrier DONE (freedreno, nv50, vc4, lima, crocus)
|
||||||
GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
|
GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
|
||||||
GL_KHR_robustness DONE (freedreno)
|
GL_KHR_robustness DONE (freedreno)
|
||||||
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
||||||
|
|
||||||
GL 4.6, GLSL 4.60 -- all DONE: radeonsi, virgl, zink, iris, crocus/gen7+, d3d12, asahi
|
GL 4.6, GLSL 4.60 -- all DONE: radeonsi, virgl, zink, iris, crocus/gen7+, d3d12
|
||||||
|
|
||||||
GL_ARB_gl_spirv DONE (freedreno, llvmpipe)
|
GL_ARB_gl_spirv DONE (freedreno, llvmpipe)
|
||||||
GL_ARB_indirect_parameters DONE (freedreno/a6xx+, nvc0, llvmpipe, virgl)
|
GL_ARB_indirect_parameters DONE (freedreno/a6xx+, nvc0, llvmpipe, virgl, asahi)
|
||||||
GL_ARB_pipeline_statistics_query DONE (freedreno/a6xx+, nvc0, r600, llvmpipe, softpipe, crocus/gen6+)
|
GL_ARB_pipeline_statistics_query DONE (freedreno/a6xx+, nvc0, r600, llvmpipe, softpipe, crocus/gen6+)
|
||||||
GL_ARB_polygon_offset_clamp DONE (freedreno, nv50, nvc0, r600, llvmpipe, v3d, panfrost, crocus)
|
GL_ARB_polygon_offset_clamp DONE (freedreno, nv50, nvc0, r600, llvmpipe, v3d, panfrost, crocus)
|
||||||
GL_ARB_shader_atomic_counter_ops DONE (freedreno/a5xx+, nvc0, r600, llvmpipe, softpipe, v3d)
|
GL_ARB_shader_atomic_counter_ops DONE (freedreno/a5xx+, nvc0, r600, llvmpipe, softpipe, v3d)
|
||||||
GL_ARB_shader_draw_parameters DONE (freedreno/a6xx+, llvmpipe, nvc0, crocus/gen6+)
|
GL_ARB_shader_draw_parameters DONE (freedreno/a6xx+, llvmpipe, nvc0, crocus/gen6+)
|
||||||
GL_ARB_shader_group_vote DONE (freedreno/a6xx, nvc0, llvmpipe, crocus)
|
GL_ARB_shader_group_vote DONE (freedreno/a6xx, nvc0, llvmpipe, crocus)
|
||||||
GL_ARB_spirv_extensions DONE (freedreno, llvmpipe)
|
GL_ARB_spirv_extensions DONE (freedreno, llvmpipe)
|
||||||
GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, nv50, nvc0, r600, softpipe, llvmpipe, v3d, panfrost/g72+, crocus)
|
GL_ARB_texture_filter_anisotropic DONE (etnaviv/HALTI0, freedreno, nv50, nvc0, r600, softpipe, llvmpipe, v3d, panfrost/g72+, asahi, crocus)
|
||||||
GL_ARB_transform_feedback_overflow_query DONE (freedreno/a6xx+, nvc0, llvmpipe, softpipe, crocus/gen6+)
|
GL_ARB_transform_feedback_overflow_query DONE (freedreno/a6xx+, nvc0, llvmpipe, softpipe, crocus/gen6+, asahi)
|
||||||
GL_KHR_no_error DONE (all drivers)
|
GL_KHR_no_error DONE (all drivers)
|
||||||
|
|
||||||
These are the extensions cherry-picked to make GLES 3.1
|
These are the extensions cherry-picked to make GLES 3.1
|
||||||
@@ -246,7 +246,7 @@ GLES3.1, GLSL ES 3.1 -- all DONE: freedreno/a5xx+, nvc0, r600, radeonsi, virgl,
|
|||||||
GL_ARB_compute_shader DONE (freedreno/a5xx+, crocus/gen7+)
|
GL_ARB_compute_shader DONE (freedreno/a5xx+, crocus/gen7+)
|
||||||
GL_ARB_draw_indirect DONE (freedreno, crocus/gen7+)
|
GL_ARB_draw_indirect DONE (freedreno, crocus/gen7+)
|
||||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||||
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, crocus/gen7+)
|
GL_ARB_framebuffer_no_attachments DONE (freedreno, softpipe, asahi, crocus/gen7+)
|
||||||
GL_ARB_program_interface_query DONE (all drivers)
|
GL_ARB_program_interface_query DONE (all drivers)
|
||||||
GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, crocus/gen7+)
|
GL_ARB_shader_atomic_counters DONE (freedreno/a5xx+, crocus/gen7+)
|
||||||
GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, crocus/gen7+)
|
GL_ARB_shader_image_load_store DONE (freedreno/a5xx+, crocus/gen7+)
|
||||||
@@ -268,28 +268,28 @@ GLES3.1, GLSL ES 3.1 -- all DONE: freedreno/a5xx+, nvc0, r600, radeonsi, virgl,
|
|||||||
glGetBooleani_v - restrict to GLES enums
|
glGetBooleani_v - restrict to GLES enums
|
||||||
gl_HelperInvocation support DONE (r600, panfrost, crocus)
|
gl_HelperInvocation support DONE (r600, panfrost, crocus)
|
||||||
|
|
||||||
GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zink, iris, crocus/gen7.5+, asahi
|
GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zink, iris, crocus/gen7.5+
|
||||||
|
|
||||||
GL_EXT_color_buffer_float DONE (all drivers)
|
GL_EXT_color_buffer_float DONE (all drivers)
|
||||||
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, nvc0, panfrost, crocus/gen4.5+)
|
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, nvc0, panfrost, asahi, crocus/gen4.5+)
|
||||||
GL_KHR_debug DONE (all drivers)
|
GL_KHR_debug DONE (all drivers)
|
||||||
GL_KHR_robustness DONE (freedreno, nvc0, r600)
|
GL_KHR_robustness DONE (freedreno, nvc0, r600)
|
||||||
GL_KHR_texture_compression_astc_ldr DONE (freedreno, r600, v3d, vc4, panfrost, softpipe, lima, crocus/gen6+)
|
GL_KHR_texture_compression_astc_ldr DONE (freedreno, r600, v3d, vc4, panfrost, softpipe, lima, asahi, crocus/gen6+)
|
||||||
GL_OES_copy_image DONE (all drivers)
|
GL_OES_copy_image DONE (all drivers)
|
||||||
GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend)
|
GL_OES_draw_buffers_indexed DONE (all drivers that support GL_ARB_draw_buffers_blend)
|
||||||
GL_OES_draw_elements_base_vertex DONE (all drivers)
|
GL_OES_draw_elements_base_vertex DONE (all drivers)
|
||||||
GL_OES_geometry_shader DONE (freedreno/a6xx, nvc0, r600, softpipe, v3d)
|
GL_OES_geometry_shader DONE (freedreno/a6xx, nvc0, r600, softpipe, v3d, asahi)
|
||||||
GL_OES_gpu_shader5 DONE (freedreno/a6xx, all drivers that support GL_ARB_gpu_shader5)
|
GL_OES_gpu_shader5 DONE (freedreno/a6xx, asahi, all drivers that support GL_ARB_gpu_shader5)
|
||||||
GL_OES_primitive_bounding_box DONE (freedreno/a5xx+, nvc0, r600, softpipe, v3d)
|
GL_OES_primitive_bounding_box DONE (freedreno/a5xx+, nvc0, r600, softpipe, v3d)
|
||||||
GL_OES_sample_shading DONE (freedreno/a6xx, nvc0, r600, panfrost, d3d12)
|
GL_OES_sample_shading DONE (freedreno/a6xx, asahi, nvc0, r600, panfrost, d3d12)
|
||||||
GL_OES_sample_variables DONE (freedreno/a6xx, nvc0, r600, panfrost/bifrost, crocus/gen7+)
|
GL_OES_sample_variables DONE (freedreno/a6xx, asahi, nvc0, r600, panfrost/bifrost, crocus/gen7+)
|
||||||
GL_OES_shader_image_atomic DONE (v3d, all drivers that support GL_ARB_shader_image_load_store)
|
GL_OES_shader_image_atomic DONE (asahi, v3d, all drivers that support GL_ARB_shader_image_load_store)
|
||||||
GL_OES_shader_io_blocks DONE (All drivers that support GLES 3.1)
|
GL_OES_shader_io_blocks DONE (All drivers that support GLES 3.1)
|
||||||
GL_OES_shader_multisample_interpolation DONE (freedreno/a6xx, nvc0, r600)
|
GL_OES_shader_multisample_interpolation DONE (freedreno/a6xx, nvc0, r600, asahi)
|
||||||
GL_OES_tessellation_shader DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader)
|
GL_OES_tessellation_shader DONE (freedreno/a6xx, all drivers that support GL_ARB_tessellation_shader)
|
||||||
GL_OES_texture_border_clamp DONE (all drivers)
|
GL_OES_texture_border_clamp DONE (all drivers)
|
||||||
GL_OES_texture_buffer DONE (freedreno, nvc0, r600, softpipe, panfrost, crocus/gen6+)
|
GL_OES_texture_buffer DONE (freedreno, nvc0, r600, softpipe, panfrost, asahi, crocus/gen6+)
|
||||||
GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, nvc0, r600, softpipe)
|
GL_OES_texture_cube_map_array DONE (freedreno/a4xx+, nvc0, r600, softpipe, asahi)
|
||||||
GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
|
GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
|
||||||
GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
|
GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
|
||||||
|
|
||||||
@@ -297,19 +297,19 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||||||
|
|
||||||
GL_ARB_bindless_texture DONE (nvc0, radeonsi, zink)
|
GL_ARB_bindless_texture DONE (nvc0, radeonsi, zink)
|
||||||
GL_ARB_cl_event not started
|
GL_ARB_cl_event not started
|
||||||
GL_ARB_compute_variable_group_size DONE (freedreno/a4xx+, nvc0, radeonsi, zink, iris, crocus/gen7+, asahi)
|
GL_ARB_compute_variable_group_size DONE (freedreno/a4xx+, nvc0, radeonsi, zink, iris, crocus/gen7+)
|
||||||
GL_ARB_ES3_2_compatibility DONE (freedreno/a6xx, radeonsi, virgl, zink, iris, crocus/gen7.5+, asahi)
|
GL_ARB_ES3_2_compatibility DONE (freedreno/a6xx, radeonsi, virgl, zink, iris, crocus/gen7.5+)
|
||||||
GL_ARB_fragment_shader_interlock DONE (zink, iris/gen9+)
|
GL_ARB_fragment_shader_interlock DONE (zink, iris/gen9+)
|
||||||
GL_ARB_gpu_shader_int64 DONE (freedreno/a6xx, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12, iris, crocus/gen8, asahi)
|
GL_ARB_gpu_shader_int64 DONE (freedreno/a6xx, nvc0, radeonsi, softpipe, llvmpipe, zink, d3d12, iris, crocus/gen8)
|
||||||
GL_ARB_parallel_shader_compile DONE (freedreno, radeonsi, etnaviv, zink, iris, crocus/gen6+, asahi)
|
GL_ARB_parallel_shader_compile DONE (freedreno, radeonsi, etnaviv, zink, iris, crocus/gen6+)
|
||||||
GL_ARB_post_depth_coverage DONE (freedreno/a6xx, nvc0, radeonsi, llvmpipe, zink, iris/gen9+)
|
GL_ARB_post_depth_coverage DONE (freedreno/a6xx, nvc0, radeonsi, llvmpipe, zink, iris/gen9+)
|
||||||
GL_ARB_robustness_isolation not started
|
GL_ARB_robustness_isolation not started
|
||||||
GL_ARB_sample_locations DONE (freedreno/a6xx, nvc0, zink)
|
GL_ARB_sample_locations DONE (freedreno/a6xx, nvc0, zink)
|
||||||
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, nvc0, r600, radeonsi, softpipe, virgl, zink, asahi, iris, crocus)
|
GL_ARB_seamless_cubemap_per_texture DONE (etnaviv/SEAMLESS_CUBE_MAP, freedreno, nvc0, r600, radeonsi, softpipe, virgl, zink, asahi, iris, crocus)
|
||||||
GL_ARB_shader_ballot DONE (nvc0, radeonsi, zink, iris, crocus/gen8, d3d12, asahi)
|
GL_ARB_shader_ballot DONE (nvc0, radeonsi, zink, iris, crocus/gen8)
|
||||||
GL_ARB_shader_clock DONE (nv50, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7+)
|
GL_ARB_shader_clock DONE (nv50, nvc0, r600, radeonsi, llvmpipe, virgl, zink, iris, crocus/gen7+)
|
||||||
GL_ARB_shader_stencil_export DONE (r600, radeonsi, softpipe, llvmpipe, virgl, panfrost, zink, asahi, iris/gen9+)
|
GL_ARB_shader_stencil_export DONE (r600, radeonsi, softpipe, llvmpipe, virgl, panfrost, zink, asahi, iris/gen9+)
|
||||||
GL_ARB_shader_viewport_layer_array DONE (freedreno/a6xx, nvc0, radeonsi, zink, iris, crocus/gen6+, asahi)
|
GL_ARB_shader_viewport_layer_array DONE (freedreno/a6xx, nvc0, radeonsi, zink, iris, crocus/gen6+)
|
||||||
GL_ARB_shading_language_include DONE
|
GL_ARB_shading_language_include DONE
|
||||||
GL_ARB_sparse_buffer DONE (radeonsi/gfx9+, zink)
|
GL_ARB_sparse_buffer DONE (radeonsi/gfx9+, zink)
|
||||||
GL_ARB_sparse_texture DONE (radeonsi/gfx9+, zink)
|
GL_ARB_sparse_texture DONE (radeonsi/gfx9+, zink)
|
||||||
@@ -319,13 +319,13 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||||||
GL_ARM_shader_framebuffer_fetch_depth_stencil DONE (llvmpipe)
|
GL_ARM_shader_framebuffer_fetch_depth_stencil DONE (llvmpipe)
|
||||||
GL_EXT_shader_framebuffer_fetch DONE (freedreno/a6xx, iris/gen9+, llvmpipe, panfrost, virgl, zink, asahi)
|
GL_EXT_shader_framebuffer_fetch DONE (freedreno/a6xx, iris/gen9+, llvmpipe, panfrost, virgl, zink, asahi)
|
||||||
GL_EXT_shader_framebuffer_fetch_non_coherent DONE (freedreno/a6xx, iris, llvmpipe, panfrost, virgl, zink, asahi)
|
GL_EXT_shader_framebuffer_fetch_non_coherent DONE (freedreno/a6xx, iris, llvmpipe, panfrost, virgl, zink, asahi)
|
||||||
GL_EXT_color_buffer_half_float DONE (freedreno, iris, llvmpipe, nv50, nvc0, radeonsi, zink, crocus, asahi)
|
GL_EXT_color_buffer_half_float DONE (freedreno, iris, llvmpipe, nv50, nvc0, radeonsi, zink, crocus)
|
||||||
GL_EXT_depth_bounds_test DONE (freedreno/a6xx, nv50, nvc0, radeonsi, softpipe, zink, iris/gen12+)
|
GL_EXT_depth_bounds_test DONE (freedreno/a6xx, nv50, nvc0, radeonsi, softpipe, zink, iris/gen12+)
|
||||||
GL_EXT_memory_object DONE (freedreno, radeonsi, llvmpipe, zink, d3d12, iris, crocus/gen7+)
|
GL_EXT_memory_object DONE (freedreno, radeonsi, llvmpipe, zink, d3d12, iris, crocus/gen7+)
|
||||||
GL_EXT_memory_object_fd DONE (freedreno, radeonsi, llvmpipe, zink, iris, crocus/gen7+)
|
GL_EXT_memory_object_fd DONE (freedreno, radeonsi, llvmpipe, zink, iris, crocus/gen7+)
|
||||||
GL_EXT_memory_object_win32 DONE (zink, d3d12)
|
GL_EXT_memory_object_win32 DONE (zink, d3d12)
|
||||||
GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink, lima)
|
GL_EXT_multisampled_render_to_texture DONE (freedreno/a6xx, panfrost, zink, lima)
|
||||||
GL_EXT_render_snorm DONE (freedreno/a6xx, r600, radeonsi, softpipe, zink, panfrost/bifrost+, iris, asahi)
|
GL_EXT_render_snorm DONE (freedreno/a6xx, r600, radeonsi, softpipe, zink, panfrost/bifrost+, iris)
|
||||||
GL_EXT_semaphore DONE (radeonsi, zink, d3d12, iris, crocus)
|
GL_EXT_semaphore DONE (radeonsi, zink, d3d12, iris, crocus)
|
||||||
GL_EXT_semaphore_fd DONE (radeonsi, zink, iris, crocus)
|
GL_EXT_semaphore_fd DONE (radeonsi, zink, iris, crocus)
|
||||||
GL_EXT_semaphore_win32 DONE (zink, d3d12)
|
GL_EXT_semaphore_win32 DONE (zink, d3d12)
|
||||||
@@ -400,7 +400,7 @@ GL_EXT_direct_state_access additions from other extensions (complete list):
|
|||||||
GL_EXT_external_buffer n/a
|
GL_EXT_external_buffer n/a
|
||||||
GL_EXT_separate_shader_objects n/a
|
GL_EXT_separate_shader_objects n/a
|
||||||
GL_EXT_sparse_texture n/a
|
GL_EXT_sparse_texture n/a
|
||||||
GL_EXT_texture_storage DONE
|
GL_EXT_texture_storage n/a
|
||||||
GL_EXT_vertex_attrib_64bit DONE
|
GL_EXT_vertex_attrib_64bit DONE
|
||||||
GL_EXT_EGL_image_storage n/a
|
GL_EXT_EGL_image_storage n/a
|
||||||
GL_NV_bindless_texture n/a
|
GL_NV_bindless_texture n/a
|
||||||
@@ -420,9 +420,9 @@ we DO NOT WANT implementations of these extensions for Mesa.
|
|||||||
|
|
||||||
Vulkan 1.0 -- all DONE: anv, dzn, lvp, nvk, radv, tu, v3dv, vn
|
Vulkan 1.0 -- all DONE: anv, dzn, lvp, nvk, radv, tu, v3dv, vn
|
||||||
|
|
||||||
Vulkan 1.1 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
Vulkan 1.1 -- all DONE: anv, lvp, radv, tu, vn
|
||||||
|
|
||||||
VK_KHR_16bit_storage DONE (anv, dzn, hasvk, lvp, nvk, radv, tu/a650, v3dv, vn)
|
VK_KHR_16bit_storage DONE (anv/gen8+, dzn, hasvk, lvp, nvk, radv, tu/a650, v3dv, vn)
|
||||||
VK_KHR_bind_memory2 DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_bind_memory2 DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_dedicated_allocation DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_dedicated_allocation DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_descriptor_update_template DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_descriptor_update_template DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
@@ -446,10 +446,10 @@ Vulkan 1.1 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
|||||||
VK_KHR_storage_buffer_storage_class DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_storage_buffer_storage_class DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_variable_pointers DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_variable_pointers DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
|
|
||||||
Vulkan 1.2 -- all DONE: anv, nvk, tu, vn
|
Vulkan 1.2 -- all DONE: anv, tu, vn
|
||||||
|
|
||||||
VK_KHR_8bit_storage DONE (anv, dzn, hasvk, lvp, nvk, radv, v3dv, vn)
|
VK_KHR_8bit_storage DONE (anv/gen8+, dzn, hasvk, lvp, nvk, radv, v3dv, vn)
|
||||||
VK_KHR_buffer_device_address DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_buffer_device_address DONE (anv/gen8+, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
@@ -458,32 +458,32 @@ Vulkan 1.2 -- all DONE: anv, nvk, tu, vn
|
|||||||
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_separate_depth_stencil_layouts DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_separate_depth_stencil_layouts DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_atomic_int64 DONE (anv, lvp, nvk, radv, vn)
|
VK_KHR_shader_atomic_int64 DONE (anv/gen9+, lvp, nvk, radv, vn)
|
||||||
VK_KHR_shader_float16_int8 DONE (anv, dzn, hasvk, lvp, radv, tu, vn)
|
VK_KHR_shader_float16_int8 DONE (anv/gen8+, dzn, hasvk, lvp, radv, tu, vn)
|
||||||
VK_KHR_shader_float_controls DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_float_controls DONE (anv/gen8+, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_subgroup_extended_types DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_KHR_shader_subgroup_extended_types DONE (anv/gen8+, hasvk, lvp, radv, tu, vn)
|
||||||
VK_KHR_spirv_1_4 DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_spirv_1_4 DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_timeline_semaphore DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_timeline_semaphore DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_uniform_buffer_standard_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_vulkan_memory_model DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_vulkan_memory_model DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_descriptor_indexing DONE (anv, dzn, lvp, nvk, radv, tu, vn)
|
VK_EXT_descriptor_indexing DONE (anv/gen9+, dzn, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_host_query_reset DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_sampler_filter_minmax DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_EXT_sampler_filter_minmax DONE (anv/gen9+, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv/gfx7+, tu, vn)
|
VK_EXT_scalar_block_layout DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv/gfx7+, tu, vn)
|
||||||
VK_EXT_separate_stencil_usage DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_separate_stencil_usage DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_shader_viewport_index_layer DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_shader_viewport_index_layer DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
|
|
||||||
Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
Vulkan 1.3 -- all DONE: anv, radv, tu, lvp, vn
|
||||||
|
|
||||||
VK_KHR_copy_commands2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_copy_commands2 DONE (anv, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_dynamic_rendering DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_KHR_format_feature_flags2 DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_format_feature_flags2 DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_maintenance4 DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_maintenance4 DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_integer_dot_product DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, nvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_non_semantic_info DONE (anv, hasvk, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_shader_terminate_invocation DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_synchronization2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_zero_initialize_workgroup_memory DONE (anv, hasvk, lvp, radv, tu, v3dv, vn)
|
||||||
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_4444_formats DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_extended_dynamic_state DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_extended_dynamic_state2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
@@ -501,14 +501,13 @@ Vulkan 1.3 -- all DONE: anv, lvp, nvk, radv, tu, vn
|
|||||||
|
|
||||||
Khronos extensions that are not part of any Vulkan version:
|
Khronos extensions that are not part of any Vulkan version:
|
||||||
|
|
||||||
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, lvp, radv/gfx10.3+)
|
VK_KHR_acceleration_structure DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||||
VK_KHR_android_surface not started
|
VK_KHR_android_surface not started
|
||||||
VK_KHR_calibrated_timestamps DONE (anv, radv)
|
VK_KHR_calibrated_timestamps DONE (radv)
|
||||||
VK_KHR_cooperative_matrix DONE (anv, radv/gfx11+)
|
VK_KHR_cooperative_matrix DONE (radv/gfx11+)
|
||||||
VK_KHR_deferred_host_operations DONE (anv, hasvk, lvp, radv)
|
VK_KHR_deferred_host_operations DONE (anv, hasvk, radv)
|
||||||
VK_KHR_display DONE (anv, nvk, pvr, radv, tu, v3dv)
|
VK_KHR_display DONE (anv, pvr, radv, tu, v3dv)
|
||||||
VK_KHR_display_swapchain not started
|
VK_KHR_display_swapchain not started
|
||||||
VK_KHR_dynamic_rendering_local_read DONE (lvp)
|
|
||||||
VK_KHR_external_fence_fd DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_external_fence_fd DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_external_fence_win32 not started
|
VK_KHR_external_fence_win32 not started
|
||||||
VK_KHR_external_memory_fd DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_external_memory_fd DONE (anv, dzn, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
@@ -516,37 +515,30 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_KHR_external_semaphore_fd DONE (anv, dzn, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_external_semaphore_fd DONE (anv, dzn, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_external_semaphore_win32 DONE (dzn)
|
VK_KHR_external_semaphore_win32 DONE (dzn)
|
||||||
VK_KHR_fragment_shader_barycentric DONE (nvk/Turing+, radv/gfx10.3+)
|
VK_KHR_fragment_shader_barycentric DONE (nvk/Turing+, radv/gfx10.3+)
|
||||||
VK_KHR_fragment_shading_rate DONE (anv/gen11+, radv/gfx10.3+, vn)
|
VK_KHR_fragment_shading_rate DONE (anv/gen11+, radv/gfx10.3+)
|
||||||
VK_KHR_get_display_properties2 DONE (anv, nvk, pvr, radv, tu, v3dv)
|
VK_KHR_get_display_properties2 DONE (anv, pvr, radv, tu, v3dv)
|
||||||
VK_KHR_get_surface_capabilities2 DONE (anv, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_get_surface_capabilities2 DONE (anv, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_global_priority DONE (anv, radv, tu)
|
VK_KHR_global_priority DONE (radv, tu)
|
||||||
VK_KHR_incremental_present DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_incremental_present DONE (anv, hasvk, lvp, radv, tu, v3dv, vn)
|
||||||
VK_KHR_index_type_uint8 DONE (anv, nvk, radv, tu, v3dv)
|
VK_KHR_maintenance5 DONE (anv, lvp, radv, tu)
|
||||||
VK_KHR_line_rasterization DONE (anv, nvk, radv, tu, v3dv)
|
VK_KHR_maintenance6 DONE (lvp)
|
||||||
VK_KHR_load_store_op_none DONE (anv, nvk, radv, tu, v3dv)
|
VK_KHR_performance_query DONE (anv/gen8+, radv/gfx10.3+, tu, v3dv)
|
||||||
VK_KHR_maintenance5 DONE (anv, lvp, nvk, radv, tu)
|
|
||||||
VK_KHR_maintenance6 DONE (anv, lvp)
|
|
||||||
VK_KHR_performance_query DONE (anv, radv/gfx10.3+, tu, v3dv)
|
|
||||||
VK_KHR_pipeline_executable_properties DONE (anv, nvk, hasvk, radv, tu, v3dv)
|
VK_KHR_pipeline_executable_properties DONE (anv, nvk, hasvk, radv, tu, v3dv)
|
||||||
VK_KHR_pipeline_library DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_KHR_pipeline_library DONE (anv, lvp, radv, tu, vn)
|
||||||
VK_KHR_present_wait DONE (anv, nvk, radv, tu, x11/display)
|
VK_KHR_present_wait DONE (anv, radv, tu, x11/display)
|
||||||
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_KHR_ray_query DONE (anv/gfx12.5+, lvp, radv/gfx10.3+)
|
VK_KHR_ray_query DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||||
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+)
|
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||||
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, radv/gfx10.3+)
|
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, radv/gfx10.3+)
|
||||||
VK_KHR_ray_tracing_position_fetch DONE (anv, radv/gfx10.3+)
|
VK_KHR_ray_tracing_position_fetch DONE (radv/gfx10.3+)
|
||||||
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, vn)
|
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, vn)
|
||||||
VK_KHR_shader_expect_assume DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
|
||||||
VK_KHR_shader_maximal_reconvergence DONE (lvp, radv)
|
|
||||||
VK_KHR_shader_subgroup_rotate DONE (anv, radv)
|
|
||||||
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, radv)
|
VK_KHR_shader_subgroup_uniform_control_flow DONE (anv, hasvk, radv)
|
||||||
VK_KHR_shader_quad_control DONE (radv)
|
|
||||||
VK_KHR_shared_presentable_image not started
|
VK_KHR_shared_presentable_image not started
|
||||||
VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_surface_protected_capabilities DONE (anv, lvp, nvk, radv, v3dv, vn)
|
VK_KHR_surface_protected_capabilities DONE (anv, lvp, nvk, radv, v3dv, vn)
|
||||||
VK_KHR_swapchain DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
VK_KHR_swapchain DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_swapchain_mutable_format DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_vertex_attribute_divisor DONE (anv, nvk, radv, tu, v3dv)
|
VK_KHR_vertex_attribute_divisor DONE (radv)
|
||||||
VK_KHR_wayland_surface DONE (anv, dzn, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_KHR_wayland_surface DONE (anv, dzn, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, v3dv)
|
VK_KHR_workgroup_memory_explicit_layout DONE (anv, nvk, hasvk, radv, v3dv)
|
||||||
VK_KHR_win32_keyed_mutex not started
|
VK_KHR_win32_keyed_mutex not started
|
||||||
@@ -554,39 +546,38 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_KHR_xcb_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_xcb_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_KHR_xlib_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_KHR_xlib_surface DONE (anv, dzn, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_acquire_xlib_display DONE (anv, lvp, nvk, radv, tu, v3dv)
|
VK_EXT_acquire_xlib_display DONE (anv, lvp, nvk, radv, tu, v3dv)
|
||||||
VK_EXT_attachment_feedback_loop_dynamic_state DONE (anv, lvp, radv)
|
VK_EXT_attachment_feedback_loop_dynamic_state DONE (lvp, radv)
|
||||||
VK_EXT_attachment_feedback_loop_layout DONE (anv, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_attachment_feedback_loop_layout DONE (lvp, nvk, radv, tu, v3dv)
|
||||||
VK_EXT_border_color_swizzle DONE (anv, hasvk, lvp, nvk, radv/gfx10+, tu, v3dv, vn)
|
VK_EXT_border_color_swizzle DONE (anv, hasvk, lvp, nvk, radv/gfx10+, tu, v3dv, vn)
|
||||||
VK_EXT_buffer_device_address DONE (anv, hasvk, nvk, radv)
|
VK_EXT_buffer_device_address DONE (anv/gen8+, hasvk, nvk, radv)
|
||||||
VK_EXT_calibrated_timestamps DONE (anv, hasvk, lvp, radv, vn)
|
VK_EXT_calibrated_timestamps DONE (anv, hasvk, lvp, radv, vn)
|
||||||
VK_EXT_color_write_enable DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_color_write_enable DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_conditional_rendering DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_conditional_rendering DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_conservative_rasterization DONE (anv, radv, vn)
|
VK_EXT_conservative_rasterization DONE (anv/gen9+, radv, vn)
|
||||||
VK_EXT_custom_border_color DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_custom_border_color DONE (anv, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_debug_marker DONE (radv)
|
VK_EXT_debug_marker DONE (radv)
|
||||||
VK_EXT_debug_report DONE (anv, dzn, lvp, nvk, pvr, radv, tu, v3dv)
|
VK_EXT_debug_report DONE (anv, dzn, lvp, nvk, pvr, radv, tu, v3dv)
|
||||||
VK_EXT_depth_bias_control DONE (anv, nvk, radv)
|
VK_EXT_depth_bias_control DONE (anv, nvk, radv)
|
||||||
VK_EXT_depth_clip_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_depth_clip_control DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_depth_clip_enable DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_depth_range_unrestricted DONE (anv/gen20+, radv, lvp)
|
VK_EXT_depth_range_unrestricted DONE (anv/gen20+, radv, lvp)
|
||||||
VK_EXT_descriptor_buffer DONE (anv, lvp, radv, tu)
|
VK_EXT_descriptor_buffer DONE (lvp, radv, tu)
|
||||||
VK_EXT_device_fault DONE (radv)
|
VK_EXT_device_fault DONE (radv)
|
||||||
VK_EXT_device_memory_report DONE (vn)
|
VK_EXT_device_memory_report DONE (vn)
|
||||||
VK_EXT_direct_mode_display DONE (anv, lvp, nvk, radv, tu, v3dv)
|
VK_EXT_direct_mode_display DONE (anv, lvp, radv, tu, v3dv)
|
||||||
VK_EXT_discard_rectangles DONE (radv)
|
VK_EXT_discard_rectangles DONE (radv)
|
||||||
VK_EXT_display_control DONE (anv, hasvk, nvk, radv, tu)
|
VK_EXT_display_control DONE (anv, hasvk, radv, tu)
|
||||||
VK_EXT_display_surface_counter DONE (anv, lvp, nvk, radv, tu)
|
VK_EXT_display_surface_counter DONE (anv, lvp, radv, tu)
|
||||||
VK_EXT_dynamic_rendering_unused_attachments DONE (anv, nvk, radv, vn)
|
VK_EXT_dynamic_rendering_unused_attachments DONE (anv, nvk, radv, vn)
|
||||||
VK_EXT_extended_dynamic_state3 DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_EXT_extended_dynamic_state3 DONE (anv, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_external_memory_acquire_unmodified DONE (radv)
|
VK_EXT_external_memory_acquire_unmodified DONE (radv)
|
||||||
VK_EXT_external_memory_dma_buf DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_external_memory_dma_buf DONE (anv, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_EXT_external_memory_host DONE (anv, hasvk, lvp, radv)
|
VK_EXT_external_memory_host DONE (anv, hasvk, lvp, radv)
|
||||||
VK_EXT_filter_cubic DONE (tu/a650)
|
VK_EXT_filter_cubic DONE (tu/a650)
|
||||||
VK_EXT_fragment_shader_interlock DONE (anv, radv/gfx9+, vn)
|
VK_EXT_fragment_shader_interlock DONE (anv/gen9+, radv/gfx9+, vn)
|
||||||
VK_EXT_global_priority DONE (anv, hasvk, radv, tu)
|
VK_EXT_global_priority DONE (anv, hasvk, radv, tu)
|
||||||
VK_EXT_global_priority_query DONE (anv, hasvk, radv, tu)
|
VK_EXT_global_priority_query DONE (anv, hasvk, radv, tu)
|
||||||
VK_EXT_graphics_pipeline_library DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_EXT_graphics_pipeline_library DONE (anv, lvp, radv, tu, vn)
|
||||||
VK_EXT_headless_surface DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
|
||||||
VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_image_compression_control DONE (radv)
|
VK_EXT_image_compression_control DONE (radv)
|
||||||
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, radv/gfx9+, tu, v3dv, vn)
|
VK_EXT_image_drm_format_modifier DONE (anv, hasvk, radv/gfx9+, tu, v3dv, vn)
|
||||||
@@ -595,19 +586,19 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_EXT_index_type_uint8 DONE (anv, hasvk, nvk, lvp, panvk, radv/gfx8+, tu, v3dv, vn)
|
VK_EXT_index_type_uint8 DONE (anv, hasvk, nvk, lvp, panvk, radv/gfx8+, tu, v3dv, vn)
|
||||||
VK_EXT_line_rasterization DONE (anv, hasvk, nvk, lvp, radv, tu, v3dv, vn)
|
VK_EXT_line_rasterization DONE (anv, hasvk, nvk, lvp, radv, tu, v3dv, vn)
|
||||||
VK_EXT_load_store_op_none DONE (anv, nvk, radv, tu, v3dv, vn)
|
VK_EXT_load_store_op_none DONE (anv, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_memory_budget DONE (anv, hasvk, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
VK_EXT_memory_budget DONE (anv, hasvk, lvp, radv, tu, v3dv, vn)
|
||||||
VK_EXT_memory_priority DONE (lvp, radv)
|
VK_EXT_memory_priority DONE (lvp, radv)
|
||||||
VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv)
|
VK_EXT_mesh_shader DONE (anv/gfx12.5+, lvp, radv)
|
||||||
VK_EXT_multi_draw DONE (anv, hasvk, lvp, nvk, radv, tu, vn, v3dv)
|
VK_EXT_multi_draw DONE (anv, hasvk, lvp, nvk, radv, tu, vn, v3dv)
|
||||||
VK_EXT_multisampled_render_to_single_sampled DONE (lvp)
|
VK_EXT_multisampled_render_to_single_sampled DONE (lvp)
|
||||||
VK_EXT_nested_command_buffer DONE (anv, lvp)
|
VK_EXT_nested_command_buffer DONE (lvp)
|
||||||
VK_EXT_non_seamless_cube_map DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_non_seamless_cube_map DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_pageable_device_local_memory DONE (lvp)
|
VK_EXT_pageable_device_local_memory DONE (lvp)
|
||||||
VK_EXT_pci_bus_info DONE (anv, hasvk, nvk, radv, vn)
|
VK_EXT_pci_bus_info DONE (anv, hasvk, nvk, radv, vn)
|
||||||
VK_EXT_physical_device_drm DONE (anv, hasvk, nvk, radv, tu, v3dv, vn)
|
VK_EXT_physical_device_drm DONE (anv, hasvk, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_pipeline_library_group_handles DONE (anv, radv)
|
VK_EXT_pipeline_library_group_handles DONE (anv, radv)
|
||||||
VK_EXT_pipeline_robustness DONE (anv, radv, v3dv)
|
VK_EXT_pipeline_robustness DONE (anv, radv, v3dv)
|
||||||
VK_EXT_post_depth_coverage DONE (anv/gfx11+, lvp, radv/gfx10+)
|
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv/gfx10+)
|
||||||
VK_EXT_primitive_topology_list_restart DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_primitive_topology_list_restart DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_primitives_generated_query DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_primitives_generated_query DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_provoking_vertex DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
VK_EXT_provoking_vertex DONE (anv, hasvk, lvp, nvk, radv, tu, v3dv, vn)
|
||||||
@@ -616,15 +607,13 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_EXT_robustness2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_robustness2 DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_sample_locations DONE (anv, hasvk, nvk, radv/gfx9-, tu/a650)
|
VK_EXT_sample_locations DONE (anv, hasvk, nvk, radv/gfx9-, tu/a650)
|
||||||
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv)
|
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv)
|
||||||
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv)
|
VK_EXT_shader_atomic_float2 DONE (anv/gen9+, lvp, radv)
|
||||||
VK_EXT_shader_image_atomic_int64 DONE (nvk, radv)
|
VK_EXT_shader_image_atomic_int64 DONE (nvk, radv)
|
||||||
VK_EXT_shader_object DONE (lvp, nvk)
|
VK_EXT_shader_object DONE (lvp)
|
||||||
VK_EXT_shader_stencil_export DONE (anv, lvp, radv, tu, vn)
|
VK_EXT_shader_stencil_export DONE (anv/gen9+, lvp, radv, tu, vn)
|
||||||
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
VK_EXT_shader_subgroup_ballot DONE (anv, dzn, hasvk, lvp, nvk, radv, vn)
|
||||||
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv)
|
VK_EXT_shader_subgroup_vote DONE (anv, dzn, hasvk, lvp, nvk, radv)
|
||||||
VK_EXT_shader_module_identifier DONE (anv, hasvk, nvk, radv, tu, v3dv)
|
VK_EXT_shader_module_identifier DONE (anv, hasvk, nvk, radv, tu, v3dv)
|
||||||
VK_EXT_surface_maintenance1 DONE (nvk, radv)
|
|
||||||
VK_EXT_swapchain_maintenance1 DONE (nvk, radv)
|
|
||||||
VK_EXT_transform_feedback DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
VK_EXT_transform_feedback DONE (anv, hasvk, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
VK_EXT_vertex_attribute_divisor DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||||
VK_EXT_vertex_input_dynamic_state DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_EXT_vertex_input_dynamic_state DONE (anv, lvp, nvk, radv, tu, vn)
|
||||||
@@ -636,9 +625,9 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_GOOGLE_user_type DONE (anv, hasvk, radv)
|
VK_GOOGLE_user_type DONE (anv, hasvk, radv)
|
||||||
VK_IMG_filter_cubic DONE (tu/a650)
|
VK_IMG_filter_cubic DONE (tu/a650)
|
||||||
VK_NV_compute_shader_derivatives DONE (anv, hasvk, radv)
|
VK_NV_compute_shader_derivatives DONE (anv, hasvk, radv)
|
||||||
VK_EXT_acquire_drm_display DONE (anv, nvk, radv, tu, v3dv)
|
VK_EXT_acquire_drm_display DONE (anv, radv, tu, v3dv)
|
||||||
VK_VALVE_mutable_descriptor_type DONE (anv, hasvk, radv, tu, vn)
|
VK_VALVE_mutable_descriptor_type DONE (anv, hasvk, radv, tu, vn)
|
||||||
VK_AMD_buffer_marker DONE (anv, radv, tu)
|
VK_AMD_buffer_marker DONE (radv, tu)
|
||||||
VK_AMD_device_coherent_memory DONE (radv)
|
VK_AMD_device_coherent_memory DONE (radv)
|
||||||
VK_AMD_draw_indirect_count DONE (radv)
|
VK_AMD_draw_indirect_count DONE (radv)
|
||||||
VK_AMD_gcn_shader DONE (radv)
|
VK_AMD_gcn_shader DONE (radv)
|
||||||
@@ -655,13 +644,13 @@ Khronos extensions that are not part of any Vulkan version:
|
|||||||
VK_AMD_shader_fragment_mask DONE (radv/gfx10.3-)
|
VK_AMD_shader_fragment_mask DONE (radv/gfx10.3-)
|
||||||
VK_AMD_shader_image_load_store_lod DONE (radv)
|
VK_AMD_shader_image_load_store_lod DONE (radv)
|
||||||
VK_AMD_shader_trinary_minmax DONE (radv)
|
VK_AMD_shader_trinary_minmax DONE (radv)
|
||||||
VK_AMD_texture_gather_bias_lod DONE (anv, radv)
|
VK_AMD_texture_gather_bias_lod DONE (radv)
|
||||||
VK_ARM_rasterization_order_attachment_access DONE (lvp, tu)
|
VK_ARM_rasterization_order_attachment_access DONE (lvp, tu)
|
||||||
VK_EXT_mutable_descriptor_type DONE (anv, lvp, nvk, radv, tu, vn)
|
VK_EXT_mutable_descriptor_type DONE (anv, lvp, nvk, radv, tu, vn)
|
||||||
VK_EXT_swapchain_colorspace DONE (anv, nvk, radv, tu)
|
VK_EXT_swapchain_colorspace DONE (radv, anv, tu)
|
||||||
VK_EXT_depth_clamp_zero_one DONE (anv, radv)
|
VK_EXT_depth_clamp_zero_one DONE (anv, radv)
|
||||||
VK_INTEL_shader_integer_functions2 DONE (anv, hasvk, radv)
|
VK_INTEL_shader_integer_functions2 DONE (anv, hasvk, radv)
|
||||||
VK_KHR_map_memory2 DONE (anv, nvk, radv, tu)
|
VK_KHR_map_memory2 DONE (anv, nvk, radv)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -964,7 +953,7 @@ Rusticl extensions that are not part of any OpenCL version:
|
|||||||
cl_khr_subgroup_rotate not started
|
cl_khr_subgroup_rotate not started
|
||||||
cl_khr_subgroup_shuffle DONE (iris, llvmpipe, radeonsi)
|
cl_khr_subgroup_shuffle DONE (iris, llvmpipe, radeonsi)
|
||||||
cl_khr_subgroup_shuffle_relative DONE (iris, llvmpipe, radeonsi)
|
cl_khr_subgroup_shuffle_relative DONE (iris, llvmpipe, radeonsi)
|
||||||
cl_khr_suggested_local_work_size DONE
|
cl_khr_suggested_local_work_size not started
|
||||||
cl_khr_terminate_context not started
|
cl_khr_terminate_context not started
|
||||||
cl_khr_throttle_hints not started
|
cl_khr_throttle_hints not started
|
||||||
cl_khr_work_group_uniform_arithmetic not started
|
cl_khr_work_group_uniform_arithmetic not started
|
||||||
|
@@ -20,7 +20,7 @@ Build
|
|||||||
|
|
||||||
Beware: Most Direct3D games are 32-bit, and thus need a 32-bit version of Mesa.
|
Beware: Most Direct3D games are 32-bit, and thus need a 32-bit version of Mesa.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ meson configure \
|
$ meson configure \
|
||||||
-D gallium-nine=true \
|
-D gallium-nine=true \
|
||||||
@@ -43,6 +43,6 @@ Run
|
|||||||
|
|
||||||
Before running your application in Wine, verify that everything works as expected by running:
|
Before running your application in Wine, verify that everything works as expected by running:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
$ wine ninewinecfg
|
$ wine ninewinecfg
|
||||||
|
@@ -20,7 +20,7 @@ behavior.
|
|||||||
Portal 2
|
Portal 2
|
||||||
========
|
========
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
1030842 glXSwapBuffers(dpy = 0x82a8000, drawable = 20971540)
|
1030842 glXSwapBuffers(dpy = 0x82a8000, drawable = 20971540)
|
||||||
1030876 glBufferDataARB(target = GL_ELEMENT_ARRAY_BUFFER, size = 65536, data = NULL, usage = GL_DYNAMIC_DRAW)
|
1030876 glBufferDataARB(target = GL_ELEMENT_ARRAY_BUFFER, size = 65536, data = NULL, usage = GL_DYNAMIC_DRAW)
|
||||||
@@ -54,7 +54,7 @@ the GPU access from the previous frame has completed. This pattern of
|
|||||||
incrementing ``glBufferSubData()`` offsets interleaved with draws from that data
|
incrementing ``glBufferSubData()`` offsets interleaved with draws from that data
|
||||||
is common among newer Valve games.
|
is common among newer Valve games.
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
[ during setup ]
|
[ during setup ]
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ during setup.
|
|||||||
Terraria
|
Terraria
|
||||||
========
|
========
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
167581 glXSwapBuffers(dpy = 0x3004630, drawable = 25165844)
|
167581 glXSwapBuffers(dpy = 0x3004630, drawable = 25165844)
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ synchronization.
|
|||||||
Don't Starve
|
Don't Starve
|
||||||
============
|
============
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
7251917 glGenBuffers(n = 1, buffers = &115052)
|
7251917 glGenBuffers(n = 1, buffers = &115052)
|
||||||
7251918 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 115052)
|
7251918 glBindBuffer(target = GL_ARRAY_BUFFER, buffer = 115052)
|
||||||
@@ -142,7 +142,7 @@ always happen at the end of the next frame.
|
|||||||
Euro Truck Simulator
|
Euro Truck Simulator
|
||||||
====================
|
====================
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
[usage of VBO 14,15]
|
[usage of VBO 14,15]
|
||||||
[...]
|
[...]
|
||||||
@@ -199,7 +199,7 @@ different buffer.
|
|||||||
Plague Inc
|
Plague Inc
|
||||||
==========
|
==========
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
1640732 glXSwapBuffers(dpy = 0xb218f20, drawable = 23068674)
|
1640732 glXSwapBuffers(dpy = 0xb218f20, drawable = 23068674)
|
||||||
1640733 glClientWaitSync(sync = 0xb4141430, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
1640733 glClientWaitSync(sync = 0xb4141430, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
||||||
@@ -246,7 +246,7 @@ ranges when in explicit mode.
|
|||||||
Darkest Dungeon
|
Darkest Dungeon
|
||||||
===============
|
===============
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
938384 glXSwapBuffers(dpy = 0x377fcd0, drawable = 23068692)
|
938384 glXSwapBuffers(dpy = 0x377fcd0, drawable = 23068692)
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ frame.
|
|||||||
Tabletop Simulator
|
Tabletop Simulator
|
||||||
==================
|
==================
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
1287594 glXSwapBuffers(dpy = 0x3e10810, drawable = 23068692)
|
1287594 glXSwapBuffers(dpy = 0x3e10810, drawable = 23068692)
|
||||||
1287595 glClientWaitSync(sync = 0x7abf554e37b0, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
1287595 glClientWaitSync(sync = 0x7abf554e37b0, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
||||||
@@ -306,7 +306,7 @@ the current frame, so the unsynchronized access to the buffers is safe.
|
|||||||
Hollow Knight
|
Hollow Knight
|
||||||
=============
|
=============
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
1873034 glXSwapBuffers(dpy = 0x28609d0, drawable = 23068692)
|
1873034 glXSwapBuffers(dpy = 0x28609d0, drawable = 23068692)
|
||||||
1873035 glClientWaitSync(sync = 0x7b1a5ca6e130, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
1873035 glClientWaitSync(sync = 0x7b1a5ca6e130, flags = 0x0, timeout = 0) = GL_ALREADY_SIGNALED
|
||||||
@@ -344,7 +344,7 @@ frame's buffer.
|
|||||||
Borderlands 2
|
Borderlands 2
|
||||||
=============
|
=============
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
3561998 glFlush()
|
3561998 glFlush()
|
||||||
3562004 glXSwapBuffers(dpy = 0xbaf0f90, drawable = 23068705)
|
3562004 glXSwapBuffers(dpy = 0xbaf0f90, drawable = 23068705)
|
||||||
|
@@ -426,7 +426,6 @@ The integer capabilities:
|
|||||||
* ``PIPE_CAP_LEGACY_MATH_RULES``: Whether NIR shaders support the
|
* ``PIPE_CAP_LEGACY_MATH_RULES``: Whether NIR shaders support the
|
||||||
``shader_info.use_legacy_math_rules`` flag (see documentation there), and
|
``shader_info.use_legacy_math_rules`` flag (see documentation there), and
|
||||||
TGSI shaders support the corresponding ``TGSI_PROPERTY_LEGACY_MATH_RULES``.
|
TGSI shaders support the corresponding ``TGSI_PROPERTY_LEGACY_MATH_RULES``.
|
||||||
* ``PIPE_CAP_FP16``: Whether 16-bit float operations are supported.
|
|
||||||
* ``PIPE_CAP_DOUBLES``: Whether double precision floating-point operations
|
* ``PIPE_CAP_DOUBLES``: Whether double precision floating-point operations
|
||||||
are supported.
|
are supported.
|
||||||
* ``PIPE_CAP_INT64``: Whether 64-bit integer operations are supported.
|
* ``PIPE_CAP_INT64``: Whether 64-bit integer operations are supported.
|
||||||
@@ -564,8 +563,6 @@ The integer capabilities:
|
|||||||
1. ``DRM_PRIME_CAP_IMPORT``: resource_from_handle is supported
|
1. ``DRM_PRIME_CAP_IMPORT``: resource_from_handle is supported
|
||||||
2. ``DRM_PRIME_CAP_EXPORT``: resource_get_handle is supported
|
2. ``DRM_PRIME_CAP_EXPORT``: resource_get_handle is supported
|
||||||
|
|
||||||
* ``PIPE_CAP_CL_GL_SHARING``: True if driver supports everything required by a frontend implementing the CL extension, and
|
|
||||||
also supports importing/exporting all of pipe_texture_target via dma buffers.
|
|
||||||
* ``PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA``: Whether VDPAU, VAAPI, and
|
* ``PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA``: Whether VDPAU, VAAPI, and
|
||||||
OpenMAX should use a compute-based blit instead of pipe_context::blit and compute pipeline for compositing images.
|
OpenMAX should use a compute-based blit instead of pipe_context::blit and compute pipeline for compositing images.
|
||||||
* ``PIPE_CAP_FRAGMENT_SHADER_INTERLOCK``: True if fragment shader interlock
|
* ``PIPE_CAP_FRAGMENT_SHADER_INTERLOCK``: True if fragment shader interlock
|
||||||
|
@@ -14,7 +14,7 @@ Any traces can be made with trace-cmd. The Gpuvis repository contains
|
|||||||
`scripts <https://github.com/mikesart/gpuvis/tree/master/sample>`__ for
|
`scripts <https://github.com/mikesart/gpuvis/tree/master/sample>`__ for
|
||||||
configuring the markers needed for GPU events. To start tracing:
|
configuring the markers needed for GPU events. To start tracing:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sh trace-cmd-setup.sh && sh trace-cmd-start-tracing.sh
|
sh trace-cmd-setup.sh && sh trace-cmd-start-tracing.sh
|
||||||
# Start your game etc. Then to capture a trace
|
# Start your game etc. Then to capture a trace
|
||||||
@@ -30,7 +30,7 @@ Run on Steamos
|
|||||||
Steamos includes a script (`gpu-trace <https://github.com/lostgoat/gpu-trace>`__)
|
Steamos includes a script (`gpu-trace <https://github.com/lostgoat/gpu-trace>`__)
|
||||||
to capture traces.
|
to capture traces.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo gpu-trace
|
sudo gpu-trace
|
||||||
# Press Ctrl+C to stop capture and open report in gpuvis
|
# Press Ctrl+C to stop capture and open report in gpuvis
|
||||||
@@ -39,7 +39,7 @@ Note that on Steamos gpuvis is actually not installed by default, but the
|
|||||||
script does write a gpu-trace.zip file in the current working directory. To
|
script does write a gpu-trace.zip file in the current working directory. To
|
||||||
open it you'll want to do the following on your development machine:
|
open it you'll want to do the following on your development machine:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
scp sd-host:gpu-trace.zip ./
|
scp sd-host:gpu-trace.zip ./
|
||||||
unzip gpu-trace.zip
|
unzip gpu-trace.zip
|
||||||
@@ -60,7 +60,7 @@ PRESSURE_VESSEL_DEVEL=1 to set up the tracing filesystem so the trace marker
|
|||||||
can be written. This can e.g. be done by going to the game properties in
|
can be written. This can e.g. be done by going to the game properties in
|
||||||
Steam and setting the command line to
|
Steam and setting the command line to
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
PRESSURE_VESSEL_DEVEL=1 %command%
|
PRESSURE_VESSEL_DEVEL=1 %command%
|
||||||
|
|
||||||
|
@@ -76,7 +76,6 @@ Linux, FreeBSD, and other operating systems.
|
|||||||
gallium-nine
|
gallium-nine
|
||||||
viewperf
|
viewperf
|
||||||
xlibdriver
|
xlibdriver
|
||||||
teflon
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
@@ -46,7 +46,7 @@ Third party/extra tools.
|
|||||||
respectively, (or later) should work. On Windows with MinGW, install
|
respectively, (or later) should work. On Windows with MinGW, install
|
||||||
Flex and Bison with:
|
Flex and Bison with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
mingw-get install msys-flex msys-bison
|
mingw-get install msys-flex msys-bison
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ configure error message.
|
|||||||
Here are some common ways to retrieve most/all of the dependencies based
|
Here are some common ways to retrieve most/all of the dependencies based
|
||||||
on the packaging tool used by your distro.
|
on the packaging tool used by your distro.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
|
zypper source-install --build-deps-only Mesa # openSUSE/SLED/SLES
|
||||||
yum-builddep mesa # yum Fedora, OpenSuse(?)
|
yum-builddep mesa # yum Fedora, OpenSuse(?)
|
||||||
@@ -84,7 +84,7 @@ for \*nix systems like Linux and BSD, macOS, Haiku, and Windows.
|
|||||||
|
|
||||||
The general approach is:
|
The general approach is:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir/
|
meson setup builddir/
|
||||||
meson compile -C builddir/
|
meson compile -C builddir/
|
||||||
@@ -92,7 +92,7 @@ The general approach is:
|
|||||||
|
|
||||||
On Windows you can also use the Visual Studio backend
|
On Windows you can also use the Visual Studio backend
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir --backend=vs
|
meson setup builddir --backend=vs
|
||||||
cd builddir
|
cd builddir
|
||||||
@@ -108,7 +108,7 @@ It's often necessary or useful when debugging driver issues or testing new
|
|||||||
branches to run against a local build of Mesa without doing a system-wide
|
branches to run against a local build of Mesa without doing a system-wide
|
||||||
install. Meson has built-in support for this with its ``devenv`` subcommand:
|
install. Meson has built-in support for this with its ``devenv`` subcommand:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson devenv -C builddir glxinfo
|
meson devenv -C builddir glxinfo
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ assume ``$MESA_INSTALLDIR`` is an absolute path to this location.
|
|||||||
|
|
||||||
First, configure Mesa and install in the temporary location:
|
First, configure Mesa and install in the temporary location:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir/ -Dprefix="$MESA_INSTALLDIR" OTHER_OPTIONS
|
meson setup builddir/ -Dprefix="$MESA_INSTALLDIR" OTHER_OPTIONS
|
||||||
meson install -C builddir/
|
meson install -C builddir/
|
||||||
@@ -135,7 +135,7 @@ where ``OTHER_OPTIONS`` is replaced by any meson configuration options you may
|
|||||||
want. For instance, if you want to build the LLVMpipe drivers, it would look
|
want. For instance, if you want to build the LLVMpipe drivers, it would look
|
||||||
like this:
|
like this:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir/ -Dprefix="$MESA_INSTALLDIR" \
|
meson setup builddir/ -Dprefix="$MESA_INSTALLDIR" \
|
||||||
-Dgallium-drivers=swrast -Dvulkan-drivers=swrast
|
-Dgallium-drivers=swrast -Dvulkan-drivers=swrast
|
||||||
@@ -148,7 +148,7 @@ Which variable you have to set depends on the API.
|
|||||||
OpenGL
|
OpenGL
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
LD_LIBRARY_PATH="$MESA_INSTALLDIR/lib64" glxinfo
|
LD_LIBRARY_PATH="$MESA_INSTALLDIR/lib64" glxinfo
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ contains ``libGL.so`` and use that one.
|
|||||||
Vulkan
|
Vulkan
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
VK_ICD_FILENAMES="$MESA_INSTALLDIR/share/vulkan/icd/my_icd.json" vulkaninfo
|
VK_ICD_FILENAMES="$MESA_INSTALLDIR/share/vulkan/icd/my_icd.json" vulkaninfo
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ is named ``lvp_icd.x86_64.json``.
|
|||||||
OpenCL
|
OpenCL
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
OCL_ICD_VENDORS="$MESA_INSTALLDIR/etc/OpenCL/vendors" clinfo
|
OCL_ICD_VENDORS="$MESA_INSTALLDIR/etc/OpenCL/vendors" clinfo
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@ When compilation has finished, look in the top-level ``lib/`` (or
|
|||||||
``lib64/``) directory. You'll see a set of library files similar to
|
``lib64/``) directory. You'll see a set of library files similar to
|
||||||
this:
|
this:
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
|
lrwxrwxrwx 1 brian users 10 Mar 26 07:53 libGL.so -> libGL.so.1*
|
||||||
lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
|
lrwxrwxrwx 1 brian users 19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
|
||||||
@@ -226,7 +226,7 @@ the OSMesa (Off-Screen) interface library.
|
|||||||
|
|
||||||
If you built the DRI hardware drivers, you'll also see the DRI drivers:
|
If you built the DRI hardware drivers, you'll also see the DRI drivers:
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
|
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
|
||||||
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so
|
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i965_dri.so
|
||||||
@@ -247,6 +247,6 @@ determine the proper compiler and linker flags.
|
|||||||
|
|
||||||
For example, compiling and linking a GLUT application can be done with:
|
For example, compiling and linking a GLUT application can be done with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
|
gcc `pkg-config --cflags --libs glut` mydemo.c -o mydemo
|
||||||
|
@@ -25,13 +25,13 @@ Unix-like OSes
|
|||||||
If Meson is not already installed on your system, you can typically
|
If Meson is not already installed on your system, you can typically
|
||||||
install it with your package installer. For example:
|
install it with your package installer. For example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo apt-get install meson # Ubuntu
|
sudo apt-get install meson # Ubuntu
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo dnf install meson # Fedora
|
sudo dnf install meson # Fedora
|
||||||
|
|
||||||
@@ -51,20 +51,20 @@ modules (Mako). You also need pkg-config (a hard dependency of Meson),
|
|||||||
Flex, and Bison. The easiest way to install everything you need is with
|
Flex, and Bison. The easiest way to install everything you need is with
|
||||||
`Chocolatey <https://chocolatey.org/>`__.
|
`Chocolatey <https://chocolatey.org/>`__.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
choco install python3 winflexbison pkgconfiglite
|
choco install python3 winflexbison pkgconfiglite
|
||||||
|
|
||||||
You can even use Chocolatey to install MinGW and Ninja (Ninja can be
|
You can even use Chocolatey to install MinGW and Ninja (Ninja can be
|
||||||
used with MSVC as well)
|
used with MSVC as well)
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
choco install ninja mingw
|
choco install ninja mingw
|
||||||
|
|
||||||
Then install Meson using pip
|
Then install Meson using pip
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
py -3 -m pip install meson packaging mako
|
py -3 -m pip install meson packaging mako
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ for each configuration you might want to use.
|
|||||||
|
|
||||||
Basic configuration is done with:
|
Basic configuration is done with:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup build/
|
meson setup build/
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ build options at the end.
|
|||||||
|
|
||||||
To review the options which Meson chose, run:
|
To review the options which Meson chose, run:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson configure build/
|
meson configure build/
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ With additional arguments ``meson configure`` can be used to change
|
|||||||
options for a previously configured build directory. All options passed
|
options for a previously configured build directory. All options passed
|
||||||
to this command are in the form ``-D "option"="value"``. For example:
|
to this command are in the form ``-D "option"="value"``. For example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson configure build/ -Dprefix=/tmp/install -Dglx=true
|
meson configure build/ -Dprefix=/tmp/install -Dglx=true
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ an empty list (``-D platforms=[]``).
|
|||||||
Once you've run the initial ``meson`` command successfully you can use
|
Once you've run the initial ``meson`` command successfully you can use
|
||||||
your configured backend to build the project in your build directory:
|
your configured backend to build the project in your build directory:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
ninja -C build/
|
ninja -C build/
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ The next step is to install the Mesa libraries, drivers, etc. This also
|
|||||||
finishes up some final steps of the build process (such as creating
|
finishes up some final steps of the build process (such as creating
|
||||||
symbolic links for drivers). To install:
|
symbolic links for drivers). To install:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
ninja -C build/ install
|
ninja -C build/ install
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ Developers will often want to install Mesa to a testing directory rather
|
|||||||
than the system library directory. This can be done with the --prefix
|
than the system library directory. This can be done with the --prefix
|
||||||
option. For example:
|
option. For example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson --prefix="${PWD}/build/install" build/
|
meson --prefix="${PWD}/build/install" build/
|
||||||
|
|
||||||
@@ -191,7 +191,7 @@ they are guaranteed to persist across rebuilds and reconfigurations.
|
|||||||
This example sets -fmax-errors for compiling C sources and -DMAGIC=123
|
This example sets -fmax-errors for compiling C sources and -DMAGIC=123
|
||||||
for C++ sources:
|
for C++ sources:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir/ -Dc_args=-fmax-errors=10 -Dcpp_args=-DMAGIC=123
|
meson setup builddir/ -Dc_args=-fmax-errors=10 -Dcpp_args=-DMAGIC=123
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ a new build dir for a different compiler.
|
|||||||
This is an example of specifying the Clang compilers and cleaning the
|
This is an example of specifying the Clang compilers and cleaning the
|
||||||
build directory before reconfiguring with an extra C option:
|
build directory before reconfiguring with an extra C option:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
CC=clang CXX=clang++ meson setup build-clang
|
CC=clang CXX=clang++ meson setup build-clang
|
||||||
ninja -C build-clang
|
ninja -C build-clang
|
||||||
@@ -230,7 +230,7 @@ CMake finder it will only find static libraries, it will never find
|
|||||||
which points to the root of an alternative installation (the prefix).
|
which points to the root of an alternative installation (the prefix).
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir -Dcmake_module_path=/home/user/mycmake/prefix
|
meson setup builddir -Dcmake_module_path=/home/user/mycmake/prefix
|
||||||
|
|
||||||
@@ -248,7 +248,7 @@ to find llvm-config:
|
|||||||
|
|
||||||
Then configure Meson:
|
Then configure Meson:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir/ --native-file custom-llvm.ini
|
meson setup builddir/ --native-file custom-llvm.ini
|
||||||
|
|
||||||
@@ -268,7 +268,7 @@ Obviously, only CMake or llvm-config is required.
|
|||||||
|
|
||||||
Then configure Meson:
|
Then configure Meson:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir/ --cross-file cross-llvm.ini
|
meson setup builddir/ --cross-file cross-llvm.ini
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@ Building OSMesa
|
|||||||
|
|
||||||
Configure and build Mesa with something like:
|
Configure and build Mesa with something like:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
meson setup builddir -Dosmesa=true -Dgallium-drivers=swrast -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install
|
meson setup builddir -Dosmesa=true -Dgallium-drivers=swrast -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install
|
||||||
meson install -C builddir
|
meson install -C builddir
|
||||||
|
@@ -61,7 +61,7 @@ To capture a trace with Perfetto you need to take the following steps:
|
|||||||
`convenience script <https://perfetto.dev/docs/quickstart/linux-tracing#capturing-a-trace>`__
|
`convenience script <https://perfetto.dev/docs/quickstart/linux-tracing#capturing-a-trace>`__
|
||||||
to start the tracing service:
|
to start the tracing service:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
cd subprojects/perfetto
|
cd subprojects/perfetto
|
||||||
CONFIG=<path/to/gpu.cfg> OUT=out/linux_clang_release ./tools/tmux -n
|
CONFIG=<path/to/gpu.cfg> OUT=out/linux_clang_release ./tools/tmux -n
|
||||||
@@ -83,7 +83,7 @@ To capture a trace with Perfetto you need to take the following steps:
|
|||||||
To be a bit more explicit, here is a listing of commands reproducing
|
To be a bit more explicit, here is a listing of commands reproducing
|
||||||
the steps above :
|
the steps above :
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
# Configure Mesa with perfetto
|
# Configure Mesa with perfetto
|
||||||
mesa $ meson . build -Dperfetto=true -Dvulkan-drivers=intel,broadcom -Dgallium-drivers=
|
mesa $ meson . build -Dperfetto=true -Dvulkan-drivers=intel,broadcom -Dgallium-drivers=
|
||||||
@@ -124,7 +124,7 @@ actually collecting traces.
|
|||||||
This can be achieved by setting the :envvar:`MESA_GPU_TRACES`
|
This can be achieved by setting the :envvar:`MESA_GPU_TRACES`
|
||||||
environment variable before starting a Vulkan application :
|
environment variable before starting a Vulkan application :
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
MESA_GPU_TRACES=perfetto ./build/my_vulkan_app
|
MESA_GPU_TRACES=perfetto ./build/my_vulkan_app
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ Freedreno / Turnip
|
|||||||
The Freedreno PPS driver needs root access to read system-wide
|
The Freedreno PPS driver needs root access to read system-wide
|
||||||
performance counters, so you can simply run it with sudo:
|
performance counters, so you can simply run it with sudo:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo ./build/src/tool/pps/pps-producer
|
sudo ./build/src/tool/pps/pps-producer
|
||||||
|
|
||||||
@@ -150,13 +150,13 @@ The Intel PPS driver needs root access to read system-wide
|
|||||||
`RenderBasic <https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2023-0/gpu-metrics-reference.html>`__
|
`RenderBasic <https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2023-0/gpu-metrics-reference.html>`__
|
||||||
performance counters, so you can simply run it with sudo:
|
performance counters, so you can simply run it with sudo:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo ./build/src/tool/pps/pps-producer
|
sudo ./build/src/tool/pps/pps-producer
|
||||||
|
|
||||||
Another option to enable access wide data without root permissions would be running the following:
|
Another option to enable access wide data without root permissions would be running the following:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
sudo sysctl dev.i915.perf_stream_paranoid=0
|
sudo sysctl dev.i915.perf_stream_paranoid=0
|
||||||
|
|
||||||
@@ -165,7 +165,7 @@ Alternatively using the ``CAP_PERFMON`` permission on the binary should work too
|
|||||||
A particular metric set can also be selected to capture a different
|
A particular metric set can also be selected to capture a different
|
||||||
set of HW counters :
|
set of HW counters :
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
INTEL_PERFETTO_METRIC_SET=RasterizerAndPixelBackend ./build/src/tool/pps/pps-producer
|
INTEL_PERFETTO_METRIC_SET=RasterizerAndPixelBackend ./build/src/tool/pps/pps-producer
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ Vulkan applications can also be instrumented to be Perfetto producers.
|
|||||||
To enable this for given application, set the environment variable as
|
To enable this for given application, set the environment variable as
|
||||||
follow :
|
follow :
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
PERFETTO_TRACE=1 my_vulkan_app
|
PERFETTO_TRACE=1 my_vulkan_app
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ To run the producer, follow these two simple steps:
|
|||||||
|
|
||||||
1. Enable Panfrost unstable ioctls via kernel parameter:
|
1. Enable Panfrost unstable ioctls via kernel parameter:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
modprobe panfrost unstable_ioctls=1
|
modprobe panfrost unstable_ioctls=1
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ To run the producer, follow these two simple steps:
|
|||||||
|
|
||||||
2. Run the producer:
|
2. Run the producer:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./build/pps-producer
|
./build/pps-producer
|
||||||
|
|
||||||
@@ -210,7 +210,7 @@ If the convenience script ``tools/tmux`` keeps copying artifacts to your
|
|||||||
``SSH_TARGET`` without starting the tmux session, make sure you have ``tmux``
|
``SSH_TARGET`` without starting the tmux session, make sure you have ``tmux``
|
||||||
installed in your system.
|
installed in your system.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
apt install tmux
|
apt install tmux
|
||||||
|
|
||||||
|
@@ -1,9 +1,7 @@
|
|||||||
24.0,2024-03-13,24.0.3,Eric Engestrom
|
23.3,2024-01-24,23.3.4,Eric Engestrom
|
||||||
,2024-03-27,24.0.4,Eric Engestrom
|
,2024-02-07,23.3.5,Eric Engestrom
|
||||||
,2024-04-10,24.0.5,Eric Engestrom
|
,2024-02-21,23.3.6,Eric Engestrom
|
||||||
,2024-04-24,24.0.6,Eric Engestrom
|
24.0,2024-01-10,24.0.0-rc1,Eric Engestrom,24.0 branchpoint
|
||||||
,2024-05-08,24.0.7,Eric Engestrom
|
,2024-01-17,24.0.0-rc2,Eric Engestrom
|
||||||
24.1,2024-04-24,24.1.0-rc1,Eric Engestrom,24.1 branchpoint
|
,2024-01-24,24.0.0-rc3,Eric Engestrom
|
||||||
,2024-05-01,24.1.0-rc2,Eric Engestrom
|
,2024-01-31,24.0.0-rc4,Eric Engestrom,or 24.0.0 final
|
||||||
,2024-05-08,24.1.0-rc3,Eric Engestrom
|
|
||||||
,2024-05-15,24.1.0-rc4,Eric Engestrom,or 24.1.0 final
|
|
||||||
|
|
@@ -112,7 +112,7 @@ good contact point.
|
|||||||
then they should be squashed together. The commit messages and the
|
then they should be squashed together. The commit messages and the
|
||||||
"``cherry picked from``"-tags must be preserved.
|
"``cherry picked from``"-tags must be preserved.
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: console
|
||||||
|
|
||||||
git show b10859ec41d09c57663a258f43fe57c12332698e
|
git show b10859ec41d09c57663a258f43fe57c12332698e
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ to stabilization and bugfixing.
|
|||||||
|
|
||||||
Setup the branchpoint:
|
Setup the branchpoint:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
# Make sure main can carry on at the new version
|
# Make sure main can carry on at the new version
|
||||||
$EDITOR VERSION # bump the version number, keeping in mind the wrap around at the end of the year
|
$EDITOR VERSION # bump the version number, keeping in mind the wrap around at the end of the year
|
||||||
@@ -194,7 +194,7 @@ Once it has been merged, note the last commit *before* your "VERSION:
|
|||||||
bump to X.Y" as this is the branchpoint. This is ``$LAST_COMMIT`` in the
|
bump to X.Y" as this is the branchpoint. This is ``$LAST_COMMIT`` in the
|
||||||
command below:
|
command below:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
VERSION=X.Y
|
VERSION=X.Y
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ command below:
|
|||||||
Now that we have an official branchpoint, let's push the tag and create
|
Now that we have an official branchpoint, let's push the tag and create
|
||||||
the branches:
|
the branches:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git push origin $VERSION-branchpoint
|
git push origin $VERSION-branchpoint
|
||||||
git checkout $VERSION-branchpoint
|
git checkout $VERSION-branchpoint
|
||||||
@@ -220,7 +220,7 @@ and altered in way necessary, with the caveat that anything pushed to
|
|||||||
the ``X.Y`` branch must not be altered anymore. A convenient command
|
the ``X.Y`` branch must not be altered anymore. A convenient command
|
||||||
to perform an interactive rebase over everything since the last release is:
|
to perform an interactive rebase over everything since the last release is:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git rebase -i mesa-$(cat VERSION)
|
git rebase -i mesa-$(cat VERSION)
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ Most of the testing should already be done during the
|
|||||||
|
|
||||||
Here is one solution:
|
Here is one solution:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"'
|
__glxgears_cmd='glxgears 2>&1 | grep -v "configuration file"'
|
||||||
__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
|
__es2info_cmd='es2_info 2>&1 | egrep "GL_VERSION|GL_RENDERER|.*dri\.so"'
|
||||||
@@ -307,7 +307,7 @@ Use the release.sh script from X.Org `util-modular <https://gitlab.freedesktop.o
|
|||||||
|
|
||||||
Start the release process.
|
Start the release process.
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
../relative/path/to/release.sh . # append --dist if you've already done distcheck above
|
../relative/path/to/release.sh . # append --dist if you've already done distcheck above
|
||||||
|
|
||||||
@@ -329,7 +329,7 @@ in the ``mesa-X.Y.Z.announce`` template. Commit this change.
|
|||||||
Don't forget to push the commits to both the ``staging/X.Y`` branch and
|
Don't forget to push the commits to both the ``staging/X.Y`` branch and
|
||||||
the ``X.Y`` branch:
|
the ``X.Y`` branch:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git push origin HEAD:staging/X.Y
|
git push origin HEAD:staging/X.Y
|
||||||
git push origin HEAD:X.Y
|
git push origin HEAD:X.Y
|
||||||
@@ -340,14 +340,14 @@ Back on mesa main, add the new release notes into the tree
|
|||||||
|
|
||||||
Something like the following steps will do the trick:
|
Something like the following steps will do the trick:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git cherry-pick -x X.Y~1
|
git cherry-pick -x X.Y~1
|
||||||
git cherry-pick -x X.Y
|
git cherry-pick -x X.Y
|
||||||
|
|
||||||
Then run the
|
Then run the
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
./bin/post_version.py X.Y.Z
|
./bin/post_version.py X.Y.Z
|
||||||
|
|
||||||
@@ -356,7 +356,7 @@ docs/relnotes.rst and docs/release-calendar.csv. It will then generate
|
|||||||
a Git commit automatically. Check that everything looks correct and
|
a Git commit automatically. Check that everything looks correct and
|
||||||
push:
|
push:
|
||||||
|
|
||||||
.. code-block:: sh
|
.. code-block:: console
|
||||||
|
|
||||||
git push origin main X.Y
|
git push origin main X.Y
|
||||||
|
|
||||||
|
@@ -3,13 +3,15 @@ Release Notes
|
|||||||
|
|
||||||
The release notes summarize what's new or changed in each Mesa release.
|
The release notes summarize what's new or changed in each Mesa release.
|
||||||
|
|
||||||
|
- :doc:`24.0.8 release notes <relnotes/24.0.8>`
|
||||||
|
- :doc:`24.0.7 release notes <relnotes/24.0.7>`
|
||||||
|
- :doc:`24.0.6 release notes <relnotes/24.0.6>`
|
||||||
|
- :doc:`24.0.5 release notes <relnotes/24.0.5>`
|
||||||
|
- :doc:`24.0.4 release notes <relnotes/24.0.4>`
|
||||||
- :doc:`24.0.3 release notes <relnotes/24.0.3>`
|
- :doc:`24.0.3 release notes <relnotes/24.0.3>`
|
||||||
- :doc:`24.0.2 release notes <relnotes/24.0.2>`
|
- :doc:`24.0.2 release notes <relnotes/24.0.2>`
|
||||||
- :doc:`23.3.6 release notes <relnotes/23.3.6>`
|
|
||||||
- :doc:`24.0.1 release notes <relnotes/24.0.1>`
|
- :doc:`24.0.1 release notes <relnotes/24.0.1>`
|
||||||
- :doc:`24.0.0 release notes <relnotes/24.0.0>`
|
- :doc:`24.0.0 release notes <relnotes/24.0.0>`
|
||||||
- :doc:`23.3.5 release notes <relnotes/23.3.5>`
|
|
||||||
- :doc:`23.3.4 release notes <relnotes/23.3.4>`
|
|
||||||
- :doc:`23.3.3 release notes <relnotes/23.3.3>`
|
- :doc:`23.3.3 release notes <relnotes/23.3.3>`
|
||||||
- :doc:`23.3.2 release notes <relnotes/23.3.2>`
|
- :doc:`23.3.2 release notes <relnotes/23.3.2>`
|
||||||
- :doc:`23.3.1 release notes <relnotes/23.3.1>`
|
- :doc:`23.3.1 release notes <relnotes/23.3.1>`
|
||||||
@@ -414,13 +416,15 @@ The release notes summarize what's new or changed in each Mesa release.
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
|
24.0.8 <relnotes/24.0.8>
|
||||||
|
24.0.7 <relnotes/24.0.7>
|
||||||
|
24.0.6 <relnotes/24.0.6>
|
||||||
|
24.0.5 <relnotes/24.0.5>
|
||||||
|
24.0.4 <relnotes/24.0.4>
|
||||||
24.0.3 <relnotes/24.0.3>
|
24.0.3 <relnotes/24.0.3>
|
||||||
24.0.2 <relnotes/24.0.2>
|
24.0.2 <relnotes/24.0.2>
|
||||||
23.3.6 <relnotes/23.3.6>
|
|
||||||
24.0.1 <relnotes/24.0.1>
|
24.0.1 <relnotes/24.0.1>
|
||||||
24.0.0 <relnotes/24.0.0>
|
24.0.0 <relnotes/24.0.0>
|
||||||
23.3.5 <relnotes/23.3.5>
|
|
||||||
23.3.4 <relnotes/23.3.4>
|
|
||||||
23.3.3 <relnotes/23.3.3>
|
23.3.3 <relnotes/23.3.3>
|
||||||
23.3.2 <relnotes/23.3.2>
|
23.3.2 <relnotes/23.3.2>
|
||||||
23.3.1 <relnotes/23.3.1>
|
23.3.1 <relnotes/23.3.1>
|
||||||
|
@@ -1,199 +0,0 @@
|
|||||||
Mesa 23.3.4 Release Notes / 2024-01-24
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Mesa 23.3.4 is a bug fix release which fixes bugs found since the 23.3.3 release.
|
|
||||||
|
|
||||||
Mesa 23.3.4 implements the OpenGL 4.6 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 4.6. OpenGL
|
|
||||||
4.6 is **only** available if requested at context creation.
|
|
||||||
Compatibility contexts may report a lower version depending on each driver.
|
|
||||||
|
|
||||||
Mesa 23.3.4 implements the Vulkan 1.3 API, but the version reported by
|
|
||||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
|
||||||
depends on the particular driver being used.
|
|
||||||
|
|
||||||
SHA256 checksum
|
|
||||||
---------------
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
df12d765be4650fe532860b18aa18e6da1d0b07d1a21dfdfe04660e6b7bac39a mesa-23.3.4.tar.xz
|
|
||||||
|
|
||||||
|
|
||||||
New features
|
|
||||||
------------
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
|
|
||||||
Bug fixes
|
|
||||||
---------
|
|
||||||
|
|
||||||
- [AMDGPU RDNA3] Antialiasing is broken in Blender
|
|
||||||
- Assassin's Creed Odyssey wrong colors on Arc A770
|
|
||||||
- The Finals fails to launch with DX12 on Intel Arc unless "force_vk_vendor" is set to -1.
|
|
||||||
- zink crashes on nvidia
|
|
||||||
- radv: games render with garbage output on RX5600M through PRIME with DCC
|
|
||||||
- radv: RGP reports for mesh shaders are confusing
|
|
||||||
- d3d10umd: Build failure regression with MSVC during 23.3 development cycle
|
|
||||||
- VA-API CI tests freeze
|
|
||||||
- Radeon: YUYV DMA BUF eglCreateImageKHR fails
|
|
||||||
|
|
||||||
|
|
||||||
Changes
|
|
||||||
-------
|
|
||||||
|
|
||||||
Alessandro Astone (1):
|
|
||||||
|
|
||||||
- zink: Fix resizable BAR detection logic
|
|
||||||
|
|
||||||
Boris Brezillon (3):
|
|
||||||
|
|
||||||
- panvk: Fix tracing
|
|
||||||
- panvk: Fix access to unitialized panvk_pipeline_layout::num_sets field
|
|
||||||
- panfrost: Clamp the render area to the damage region
|
|
||||||
|
|
||||||
Daniel Schürmann (1):
|
|
||||||
|
|
||||||
- aco: give spiller more room to assign spilled SGPRs to VGPRs
|
|
||||||
|
|
||||||
Dave Airlie (2):
|
|
||||||
|
|
||||||
- radv/video: refactor sq start/end code to avoid decode hangs.
|
|
||||||
- radv: don't submit empty command buffers on encoder ring.
|
|
||||||
|
|
||||||
David Rosca (1):
|
|
||||||
|
|
||||||
- radeonsi/vcn: Fix H264 slice header when encoding I frames
|
|
||||||
|
|
||||||
Eric Engestrom (7):
|
|
||||||
|
|
||||||
- docs: add sha256sum for 23.3.3
|
|
||||||
- .pick_status.json: Update to 68f5277887aae1cdc202f45ecd44df2c3c59ba7d
|
|
||||||
- .pick_status.json: Update to 4fe5f06d400a7310ffc280761c27b036aec86646
|
|
||||||
- .pick_status.json: Update to ff84aef116f9d0d13440fd13edf2ac0b69a8c132
|
|
||||||
- .pick_status.json: Update to 6e4bb8253ed36f911a0a45dfecf89c237a8cd362
|
|
||||||
- .pick_status.json: Update to d0a3bac163ca803eda03feb3afea80e516568caf
|
|
||||||
- .pick_status.json: Update to eca4f0f632b1e3e6e24bd12ee5f00522eb7d0fdb
|
|
||||||
|
|
||||||
Friedrich Vock (4):
|
|
||||||
|
|
||||||
- radv/rt: Add workaround to make leaves always active
|
|
||||||
- radv: Fix shader replay allocation condition
|
|
||||||
- nir: Make is_trivial_deref_cast public
|
|
||||||
- nir: Handle casts in nir_opt_copy_prop_vars
|
|
||||||
|
|
||||||
Georg Lehmann (1):
|
|
||||||
|
|
||||||
- aco: stop scheduling at p_logical_end
|
|
||||||
|
|
||||||
Hans-Kristian Arntzen (1):
|
|
||||||
|
|
||||||
- wsi/x11: Add workaround for Detroit Become Human.
|
|
||||||
|
|
||||||
Ian Romanick (1):
|
|
||||||
|
|
||||||
- intel/compiler: Track mue_compaction and mue_header_packing flags in brw_get_compiler_config_value
|
|
||||||
|
|
||||||
Jesse Natalie (1):
|
|
||||||
|
|
||||||
- mesa: Consider mesa format in addition to internal format for mip/cube completeness
|
|
||||||
|
|
||||||
Karol Herbst (3):
|
|
||||||
|
|
||||||
- rusticl/kernel: run opt/lower_memcpy later to fix a crash
|
|
||||||
- nir: rework and fix rotate lowering
|
|
||||||
- rusticl/kernel: check that local size on dispatch doesn't exceed limits
|
|
||||||
|
|
||||||
Konstantin Seurer (4):
|
|
||||||
|
|
||||||
- ac/llvm: Enable helper invocations for quad OPs
|
|
||||||
- lavapipe: Fix DGC vertex buffer handling
|
|
||||||
- lavapipe: Mark vertex elements dirty if the stride changed
|
|
||||||
- lavapipe: Report the correct preprocess buffer size
|
|
||||||
|
|
||||||
Lionel Landwerlin (4):
|
|
||||||
|
|
||||||
- anv: fix disabled Wa_14017076903/18022508906
|
|
||||||
- anv: hide vendor ID for The Finals
|
|
||||||
- anv: fix pipeline executable properties with graphics libraries
|
|
||||||
- anv: implement undocumented tile cache flush requirements
|
|
||||||
|
|
||||||
Lucas Stach (1):
|
|
||||||
|
|
||||||
- etnaviv: disable 64bpp render/sampler formats
|
|
||||||
|
|
||||||
Matt Turner (4):
|
|
||||||
|
|
||||||
- symbols-check: Add _GLOBAL_OFFSET_TABLE_
|
|
||||||
- nir: Fix cast
|
|
||||||
- util: Add DETECT_ARCH_HPPA macro
|
|
||||||
- util/tests: Disable half-float NaN test on hppa/old-mips
|
|
||||||
|
|
||||||
Max R (1):
|
|
||||||
|
|
||||||
- d3d10umd: Fix compilation
|
|
||||||
|
|
||||||
Mike Blumenkrantz (5):
|
|
||||||
|
|
||||||
- lavapipe: fix devenv icd filename
|
|
||||||
- zink: always force flushes when originating from api frontend
|
|
||||||
- zink: ignore tc buffer replacement info
|
|
||||||
- zink: fix buffer rebind early-out check
|
|
||||||
- zink: fix separate shader patch variable location adjustment
|
|
||||||
|
|
||||||
Patrick Lerda (1):
|
|
||||||
|
|
||||||
- glsl/nir: fix gl_nir_cross_validate_outputs_to_inputs() memory leak
|
|
||||||
|
|
||||||
Pavel Ondračka (1):
|
|
||||||
|
|
||||||
- r300: fix reusing of color varying slots for generic ones
|
|
||||||
|
|
||||||
Pierre-Eric Pelloux-Prayer (2):
|
|
||||||
|
|
||||||
- ac/surface: don't oversize surf_size
|
|
||||||
- radeonsi: compute epitch when modifying surf_pitch
|
|
||||||
|
|
||||||
Rhys Perry (3):
|
|
||||||
|
|
||||||
- radv: do nir_shader_gather_info after radv_nir_lower_rt_abi
|
|
||||||
- nir/lower_non_uniform: set non_uniform=false when lowering is not needed
|
|
||||||
- nir/lower_shader_calls: remove CF before nir_opt_if
|
|
||||||
|
|
||||||
Samuel Pitoiset (2):
|
|
||||||
|
|
||||||
- radv: do not issue SQTT marker with DISPATCH_MESH_INDIRECT_MULTI
|
|
||||||
- radv: fix indirect dispatches on the compute queue on GFX7
|
|
||||||
|
|
||||||
Sviatoslav Peleshko (1):
|
|
||||||
|
|
||||||
- nir: Use alu source components count in nir_alu_srcs_negative_equal
|
|
||||||
|
|
||||||
Tapani Pälli (4):
|
|
||||||
|
|
||||||
- anv: check for wa 16013994831 in emit_so_memcpy_end
|
|
||||||
- iris: expand pre-hiz data cache flush to gfx >= 125
|
|
||||||
- anv: expand pre-hiz data cache flush to gfx >= 125
|
|
||||||
- iris: replace constant cache invalidate with hdc flush
|
|
||||||
|
|
||||||
Tatsuyuki Ishi (1):
|
|
||||||
|
|
||||||
- radv: never set DISABLE_WR_CONFIRM for CP DMA clears and copies
|
|
||||||
|
|
||||||
Timur Kristóf (1):
|
|
||||||
|
|
||||||
- radv: Correctly select SDMA support for PRIME blit.
|
|
||||||
|
|
||||||
Yiwei Zhang (4):
|
|
||||||
|
|
||||||
- vulkan/wsi/wayland: fix returns and avoid leaks for failed swapchain
|
|
||||||
- venus: fix pipeline layout lifetime
|
|
||||||
- venus: fix pipeline derivatives
|
|
||||||
- venus: fix to respect the final pipeline layout
|
|
||||||
|
|
||||||
Yonggang Luo (1):
|
|
||||||
|
|
||||||
- compiler/spirv: The spirv shader is binary, should write in binary mode
|
|
@@ -1,154 +0,0 @@
|
|||||||
Mesa 23.3.5 Release Notes / 2024-01-31
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Mesa 23.3.5 is a bug fix release which fixes bugs found since the 23.3.4 release.
|
|
||||||
|
|
||||||
Mesa 23.3.5 implements the OpenGL 4.6 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 4.6. OpenGL
|
|
||||||
4.6 is **only** available if requested at context creation.
|
|
||||||
Compatibility contexts may report a lower version depending on each driver.
|
|
||||||
|
|
||||||
Mesa 23.3.5 implements the Vulkan 1.3 API, but the version reported by
|
|
||||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
|
||||||
depends on the particular driver being used.
|
|
||||||
|
|
||||||
SHA256 checksum
|
|
||||||
---------------
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
69ccb1278641ff5bad71ca0f866188aeb1a92aadc4dbb9d35f50aebec5b8b50f mesa-23.3.5.tar.xz
|
|
||||||
|
|
||||||
|
|
||||||
New features
|
|
||||||
------------
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
|
|
||||||
Bug fixes
|
|
||||||
---------
|
|
||||||
|
|
||||||
- [radeonsi] Regression: graphical artifacting on water texture in OpenGOAL
|
|
||||||
- VAAPI: EFC on VCN2 produces broken H264 video and crashes the HEVC encoder
|
|
||||||
|
|
||||||
|
|
||||||
Changes
|
|
||||||
-------
|
|
||||||
|
|
||||||
Antoine Coutant (1):
|
|
||||||
|
|
||||||
- clc: retrieve libclang path at runtime.
|
|
||||||
|
|
||||||
Daniel Schürmann (1):
|
|
||||||
|
|
||||||
- aco/insert_exec_mask: Fix unconditional demote at top-level control flow.
|
|
||||||
|
|
||||||
David Heidelberg (1):
|
|
||||||
|
|
||||||
- ci/freedreno: timestamp-get no longer fails on Adreno
|
|
||||||
|
|
||||||
Dmitry Baryshkov (1):
|
|
||||||
|
|
||||||
- freedreno/drm: don't crash for unsupported devices
|
|
||||||
|
|
||||||
Eric Engestrom (8):
|
|
||||||
|
|
||||||
- docs: add sha256sum for 23.3.4
|
|
||||||
- .pick_status.json: Update to b75ee1a0670a3207dfd99917e4f47d064a44197f
|
|
||||||
- .pick_status.json: Update to 4cd5b2b5426e8d670fc3657eee040a79e3f9df1e
|
|
||||||
- util: rename __check_suid() to __normal_user()
|
|
||||||
- tree-wide: use __normal_user() everywhere instead of writing the check manually
|
|
||||||
- util: simplify logic in __normal_user()
|
|
||||||
- util: check for setgid() as well in __normal_user()
|
|
||||||
- .pick_status.json: Mark 321e2cee5315e94c050f8659a8cd55e0e7cd9076 as denominated
|
|
||||||
|
|
||||||
Faith Ekstrand (1):
|
|
||||||
|
|
||||||
- nvk: Don't exnore ExternalImageFormatInfo
|
|
||||||
|
|
||||||
Friedrich Vock (7):
|
|
||||||
|
|
||||||
- util: Provide a secure_getenv fallback for platforms without it
|
|
||||||
- aux/trace: Guard triggers behind __normal_user
|
|
||||||
- mesa/main: Use secure_getenv for shader dumping
|
|
||||||
- radv: Use secure_getenv in radv_builtin_cache_path
|
|
||||||
- radv: Use secure_getenv for RADV_THREAD_TRACE_TRIGGER
|
|
||||||
- util/disk_cache: Use secure_getenv to determine cache directories
|
|
||||||
- vulkan: Use secure_getenv for trigger files
|
|
||||||
|
|
||||||
Gert Wollny (5):
|
|
||||||
|
|
||||||
- r600: lower dround_even also on hardware that supports fp64
|
|
||||||
- virgl: Use better reporting for mirror_clamp features
|
|
||||||
- radv: Fix compilation with gcc-13 and tsan enabled
|
|
||||||
- nir/lower_int64: Fix compilation with gcc-13 and tsan enabled
|
|
||||||
- nir/builder: Fix compilation with gcc-13 when tsan is enabled
|
|
||||||
|
|
||||||
Haihao Xiang (1):
|
|
||||||
|
|
||||||
- anv: Fix typo in transition_color_buffer
|
|
||||||
|
|
||||||
Hyunjun Ko (1):
|
|
||||||
|
|
||||||
- anv/video: fix out-of-bounds read
|
|
||||||
|
|
||||||
Iago Toral Quiroga (3):
|
|
||||||
|
|
||||||
- broadcom/compiler: fix incorrect flags setup in non-uniform if path
|
|
||||||
- broadcom/compiler: fix incorrect flags update for subgroup elect
|
|
||||||
- broadcom/compiler: be more careful with unifa in non-uniform control flow
|
|
||||||
|
|
||||||
Karol Herbst (1):
|
|
||||||
|
|
||||||
- clc: force fPIC for every user when using shared LLVM
|
|
||||||
|
|
||||||
Lionel Landwerlin (2):
|
|
||||||
|
|
||||||
- anv: don't prevent L1 untyped cache flush in 3D mode
|
|
||||||
- anv: fix transfer barriers flushes with compute queue
|
|
||||||
|
|
||||||
Louis-Francis Ratté-Boulianne (4):
|
|
||||||
|
|
||||||
- panfrost: factor out method to check whether we can discard resource
|
|
||||||
- panfrost: add copy_resource flag to pan_resource_modifier_convert
|
|
||||||
- panfrost: add can_discard flag to pan_legalize_afbc_format
|
|
||||||
- panfrost: Legalize before updating part of a AFBC-packed texture
|
|
||||||
|
|
||||||
Mike Blumenkrantz (3):
|
|
||||||
|
|
||||||
- zink: set more dynamic states when using shader objects
|
|
||||||
- zink: always map descriptor buffers as COHERENT
|
|
||||||
- zink: fix descriptor buffer unmaps on screen destroy
|
|
||||||
|
|
||||||
Pierre-Eric Pelloux-Prayer (1):
|
|
||||||
|
|
||||||
- radeonsi: emit cache flushes before draw registers
|
|
||||||
|
|
||||||
Rhys Perry (1):
|
|
||||||
|
|
||||||
- aco: fix labelling of s_not with constant
|
|
||||||
|
|
||||||
Rob Clark (3):
|
|
||||||
|
|
||||||
- freedreno: De-duplicate 19.2MHz RBBM tick conversion
|
|
||||||
- freedreno: Fix timestamp conversion
|
|
||||||
- freedreno: Implement PIPE_CAP_TIMER_RESOLUTION
|
|
||||||
|
|
||||||
Rohan Garg (1):
|
|
||||||
|
|
||||||
- anv: untyped data port flush required when a pipeline sets the VK_ACCESS_2_SHADER_STORAGE_READ_BIT
|
|
||||||
|
|
||||||
Sebastian Wick (1):
|
|
||||||
|
|
||||||
- radeonsi: Destroy queues before the aux contexts
|
|
||||||
|
|
||||||
Tapani Pälli (1):
|
|
||||||
|
|
||||||
- anv: move \*bits_for_access_flags to genX_cmd_buffer
|
|
||||||
|
|
||||||
Thong Thai (1):
|
|
||||||
|
|
||||||
- radeonsi/vcn: remove EFC support for renoir
|
|
@@ -1,192 +0,0 @@
|
|||||||
Mesa 23.3.6 Release Notes / 2024-02-15
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Mesa 23.3.6 is a bug fix release which fixes bugs found since the 23.3.5 release.
|
|
||||||
|
|
||||||
Mesa 23.3.6 implements the OpenGL 4.6 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 4.6. OpenGL
|
|
||||||
4.6 is **only** available if requested at context creation.
|
|
||||||
Compatibility contexts may report a lower version depending on each driver.
|
|
||||||
|
|
||||||
Mesa 23.3.6 implements the Vulkan 1.3 API, but the version reported by
|
|
||||||
the apiVersion property of the VkPhysicalDeviceProperties struct
|
|
||||||
depends on the particular driver being used.
|
|
||||||
|
|
||||||
SHA256 checksum
|
|
||||||
---------------
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
cd3d6c60121dea73abbae99d399dc2facaecde1a8c6bd647e6d85410ff4b577b mesa-23.3.6.tar.xz
|
|
||||||
|
|
||||||
|
|
||||||
New features
|
|
||||||
------------
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
|
|
||||||
Bug fixes
|
|
||||||
---------
|
|
||||||
|
|
||||||
- zink: flickering artifacts in Selaco
|
|
||||||
- Intermittent compiler failures when building valhall tests
|
|
||||||
- panfrost: graphical artifacts on T604 (T600)
|
|
||||||
- Dying Light native artifacts on Intel A770
|
|
||||||
- r300: Amnesia: The Dark Descent heavy corruption
|
|
||||||
- [ANV/DG2] Age of Empires IV fullscreen "banding" artefacts
|
|
||||||
- [mtl][anv] dEQP-VK.pipeline.monolithic.depth.format.d32_sfloat.compare_ops.* failures when run multithreaded
|
|
||||||
- [mtl][anv] flaky tests in pipeline.monolithic.extended_dynamic_state*stencil_state_face* series
|
|
||||||
- Broken colors/dual-source blending on PinePhone (Pro) since 23.1.0
|
|
||||||
- Regression between 23.0.4 and 23.1.0: texture glitches in osgEarth
|
|
||||||
- radeonsi unsynchronized flips/tearing with KMS DRM rendering on 780M
|
|
||||||
|
|
||||||
|
|
||||||
Changes
|
|
||||||
-------
|
|
||||||
|
|
||||||
Blisto (1):
|
|
||||||
|
|
||||||
- driconf: set vk_x11_strict_image_count for Atlas Fallen Vulkan
|
|
||||||
|
|
||||||
Boris Brezillon (2):
|
|
||||||
|
|
||||||
- panfrost: Pad compute jobs with zeros on v4
|
|
||||||
- pan/va: Add missing valhall_enums dep to valhall_disasm
|
|
||||||
|
|
||||||
Christian Duerr (1):
|
|
||||||
|
|
||||||
- panfrost: Fix dual-source blending
|
|
||||||
|
|
||||||
Connor Abbott (1):
|
|
||||||
|
|
||||||
- ir3/ra: Fix bug with collect source handling
|
|
||||||
|
|
||||||
Corentin Noël (1):
|
|
||||||
|
|
||||||
- zink: Only call reapply_color_write if EXT_color_write_enable is available
|
|
||||||
|
|
||||||
Dave Airlie (5):
|
|
||||||
|
|
||||||
- zink: use sparse residency for buffers.
|
|
||||||
- radv: fix correct padding on uvd
|
|
||||||
- radv: init decoder ip block earlier.
|
|
||||||
- radv/uvd: uvd kernel checks for full dpb allocation.
|
|
||||||
- radv: don't submit 0 length on UVD either.
|
|
||||||
|
|
||||||
David Heidelberg (1):
|
|
||||||
|
|
||||||
- meson: upgrade zlib wrap to 1.3.1
|
|
||||||
|
|
||||||
David Rosca (2):
|
|
||||||
|
|
||||||
- frontends/va: Fix updating AV1 rate control parameters
|
|
||||||
- radeonsi/vcn: Don't reinitialize encode session on bitrate/fps change
|
|
||||||
|
|
||||||
Eric Engestrom (10):
|
|
||||||
|
|
||||||
- docs: add sha256sum for 23.3.5
|
|
||||||
- .pick_status.json: Update to 5d293f01cc718af0ea5db3309605cf49dcbf8cca
|
|
||||||
- vk/util: fix 'beta' check for physical device features
|
|
||||||
- vk/util: fix 'beta' check for physical device properties
|
|
||||||
- .pick_status.json: Mark 62508856401e082486f2ff0dc80f17ac852f4882 as denominated
|
|
||||||
- .pick_status.json: Mark 7b7a581a52db21ed8826d6f2986ea6dfc208fb2a as denominated
|
|
||||||
- .pick_status.json: Mark 46f5a226d6613e0a4c7b3a3496e745090fc14429 as denominated
|
|
||||||
- .pick_status.json: Mark 38e92556a041cc421dadb95aaac43a4619311a87 as denominated
|
|
||||||
- .pick_status.json: Update to fa8e0ba3f739cb46cf7bb709903c0206f240c584
|
|
||||||
- .pick_status.json: Update to 90eae30bcb84d54dc871ddbb8355f729cf8fa900
|
|
||||||
|
|
||||||
Friedrich Vock (2):
|
|
||||||
|
|
||||||
- radv/rt: Write inactive node data in ALWAYS_ACTIVE workaround
|
|
||||||
- radv,driconf: Enable active AS leaf workaround for Jedi Survivor
|
|
||||||
|
|
||||||
Georg Lehmann (3):
|
|
||||||
|
|
||||||
- aco/gfx11+: disable v_pk_fmac_f16_dpp
|
|
||||||
- aco: don't remove branches that skip v_writelane_b32
|
|
||||||
- aco/gfx11+: limit hard clauses to 32 instructions
|
|
||||||
|
|
||||||
José Roberto de Souza (2):
|
|
||||||
|
|
||||||
- iris: Fix return of iris_wait_syncobj()
|
|
||||||
- intel: Fix intel_get_mesh_urb_config()
|
|
||||||
|
|
||||||
Juston Li (1):
|
|
||||||
|
|
||||||
- venus: refactor query feedback cmds
|
|
||||||
|
|
||||||
Karol Herbst (1):
|
|
||||||
|
|
||||||
- nir/lower_cl_images: record image_buffers and msaa_images
|
|
||||||
|
|
||||||
Kenneth Graunke (1):
|
|
||||||
|
|
||||||
- driconf: Advertise GL_EXT_shader_image_load_store on iris for SVP13
|
|
||||||
|
|
||||||
Konstantin Seurer (2):
|
|
||||||
|
|
||||||
- zink: Always set mfence->submit_count to the fence submit_count
|
|
||||||
- Revert "zink: always force flushes when originating from api frontend"
|
|
||||||
|
|
||||||
Lepton Wu (1):
|
|
||||||
|
|
||||||
- llvmpipe: Set "+64bit" for X86_64
|
|
||||||
|
|
||||||
Lionel Landwerlin (1):
|
|
||||||
|
|
||||||
- vulkan/runtime: add helper to query attachment layout
|
|
||||||
|
|
||||||
M Henning (1):
|
|
||||||
|
|
||||||
- nvk: Don't clobber vb0 after repeated blits
|
|
||||||
|
|
||||||
Mark Janes (1):
|
|
||||||
|
|
||||||
- hasvk: add missing linker arguments
|
|
||||||
|
|
||||||
Mike Blumenkrantz (7):
|
|
||||||
|
|
||||||
- zink: fix sparse bo placement
|
|
||||||
- zink: zero allocate resident_defs array in ntv
|
|
||||||
- zink: move sparse lowering up in file
|
|
||||||
- zink: run sparse lowering after all optimization passes
|
|
||||||
- mesa: plumb errors through to texture allocation
|
|
||||||
- zink: adjust swizzled deref loads by the variable component offset
|
|
||||||
- nir/lower_io: fix handling for compact arrays with indirect derefs
|
|
||||||
|
|
||||||
Pavel Ondračka (1):
|
|
||||||
|
|
||||||
- r300: fix vs output register indexing
|
|
||||||
|
|
||||||
Pierre-Eric Pelloux-Prayer (1):
|
|
||||||
|
|
||||||
- egl/drm: flush before calling get_back_bo
|
|
||||||
|
|
||||||
Rhys Perry (1):
|
|
||||||
|
|
||||||
- aco: fix >8 byte linear vgpr copies
|
|
||||||
|
|
||||||
Rob Clark (1):
|
|
||||||
|
|
||||||
- freedreno: Fix MSAA z/s layout in GMEM
|
|
||||||
|
|
||||||
Samuel Pitoiset (1):
|
|
||||||
|
|
||||||
- radv: fix RGP barrier reason for RP barriers inserted by the runtime
|
|
||||||
|
|
||||||
Sviatoslav Peleshko (2):
|
|
||||||
|
|
||||||
- anv,driconf: Add sampler coordinate precision workaround for AoE 4
|
|
||||||
- driconf: Apply dual color blending workaround to Dying Light
|
|
||||||
|
|
||||||
Tapani Pälli (1):
|
|
||||||
|
|
||||||
- anv: flush tile cache independent of format with HIZ-CCS flush
|
|
||||||
|
|
||||||
Timothy Arceri (2):
|
|
||||||
|
|
||||||
- glsl: don't tree graft globals
|
|
||||||
- Revert "ci: Enable GALLIUM_DUMP_CPU=true only in the clang job"
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user