mirror of
https://salsa.debian.org/xorg-team/lib/pixman
synced 2025-08-30 08:18:46 +00:00
Compare commits
1514 Commits
pixman-0.1
...
debian-uns
Author | SHA1 | Date | |
---|---|---|---|
![]() |
b85678a8de | ||
![]() |
7d26aad890 | ||
![]() |
07627e9f31 | ||
![]() |
dc43d37962 | ||
![]() |
c05da7d917 | ||
![]() |
e55fd151a2 | ||
![]() |
7d5149536f | ||
![]() |
2ad078304f | ||
![]() |
7cca9d2d9a | ||
![]() |
c8cb00a5ad | ||
![]() |
b87363cd49 | ||
![]() |
2e58ff85bd | ||
![]() |
31b00cc770 | ||
![]() |
ae6646f159 | ||
![]() |
126d61e796 | ||
![]() |
a987256be8 | ||
![]() |
0e424031bd | ||
![]() |
643f098a39 | ||
![]() |
90f9cf1726 | ||
![]() |
bc2ec45d3b | ||
![]() |
de59d1a9fb | ||
![]() |
15336dc7cd | ||
![]() |
0476eda33a | ||
![]() |
11e51bc72f | ||
![]() |
277f485a9c | ||
![]() |
126b083142 | ||
![]() |
a3d297fa46 | ||
![]() |
9176847f1d | ||
![]() |
76b133f293 | ||
![]() |
b7ac7cd122 | ||
![]() |
ffa5645a2d | ||
![]() |
51dcfb8027 | ||
![]() |
c0ee08aab0 | ||
![]() |
44927bf1e1 | ||
![]() |
19b1a98e8d | ||
![]() |
028213b588 | ||
![]() |
05b5ecd934 | ||
![]() |
726d77f6fe | ||
![]() |
0cb4fbe324 | ||
![]() |
4047a553d9 | ||
![]() |
cbf9d7e0d3 | ||
![]() |
c35e47bd88 | ||
![]() |
e7ef051a6d | ||
![]() |
2d35a8769c | ||
![]() |
15af6fd0bc | ||
![]() |
a7263190c2 | ||
![]() |
b753a6f49b | ||
![]() |
6410ec79bd | ||
![]() |
5b8e928139 | ||
![]() |
2e29b7c43d | ||
![]() |
e5f8efc4c7 | ||
![]() |
7ed0f8d04d | ||
![]() |
3a32506877 | ||
![]() |
865e6ce00b | ||
![]() |
b252d40714 | ||
![]() |
54cad71674 | ||
![]() |
add7c8db45 | ||
![]() |
63ae6af9a6 | ||
![]() |
033716e99a | ||
![]() |
74130e84c5 | ||
![]() |
63332b4e72 | ||
![]() |
8c6d59a9f8 | ||
![]() |
ac485a9b66 | ||
![]() |
fdd7161097 | ||
![]() |
91b8526c1e | ||
![]() |
e8bb34e302 | ||
![]() |
43773c69db | ||
![]() |
8c39ce2437 | ||
![]() |
8e4be8c2db | ||
![]() |
6c2e4a0dd9 | ||
![]() |
396e1a76ed | ||
![]() |
7e76c96281 | ||
![]() |
af101d3c21 | ||
![]() |
20cc4ee0e9 | ||
![]() |
7883ab8d63 | ||
![]() |
86f9162332 | ||
![]() |
b4b789df5b | ||
![]() |
08115a4217 | ||
![]() |
47a1c3d330 | ||
![]() |
634b8196d2 | ||
![]() |
753f5e095e | ||
![]() |
7aeeb501ad | ||
![]() |
7169c0404f | ||
![]() |
f1072b07eb | ||
![]() |
2cf9ae1cea | ||
![]() |
72c4245b2e | ||
![]() |
55eb680a1f | ||
![]() |
593a970266 | ||
![]() |
67490a8bc1 | ||
![]() |
47d3fbe38f | ||
![]() |
55845c3dd3 | ||
![]() |
672f67db96 | ||
![]() |
48d5df1f37 | ||
![]() |
e4c878d179 | ||
![]() |
ee145e53d1 | ||
![]() |
eb998d7b65 | ||
![]() |
a7a919b881 | ||
![]() |
a4e8d8901f | ||
![]() |
590b8eb08f | ||
![]() |
dbe5c715e6 | ||
![]() |
e71a54d0f0 | ||
![]() |
713077d0a3 | ||
![]() |
618e3d4283 | ||
![]() |
40d6c9b256 | ||
![]() |
83ba024483 | ||
![]() |
37216a3283 | ||
![]() |
a1f88e842e | ||
![]() |
c3bbb94b4c | ||
![]() |
ca7bb8894e | ||
![]() |
1a0d50ce70 | ||
![]() |
0cf92877a9 | ||
![]() |
4ee322c4e2 | ||
![]() |
b5b3243792 | ||
![]() |
7df9e162c6 | ||
![]() |
8d6d7f44f4 | ||
![]() |
421fc252ab | ||
![]() |
7989483929 | ||
![]() |
b4a105d772 | ||
![]() |
285b9a907c | ||
![]() |
adc07d4618 | ||
![]() |
3563dfe436 | ||
![]() |
c6e1af995e | ||
![]() |
eadb82866b | ||
![]() |
36001032b7 | ||
![]() |
bd4e7a9b9e | ||
![]() |
e0d4403e78 | ||
![]() |
5f5e752f15 | ||
![]() |
aaf59b0338 | ||
![]() |
4251202d9d | ||
![]() |
e93eaff517 | ||
![]() |
52a3693957 | ||
![]() |
16f9268369 | ||
![]() |
ad3904afb6 | ||
![]() |
8b58485eb3 | ||
![]() |
4772386a28 | ||
![]() |
d93ec57138 | ||
![]() |
9b49f4e087 | ||
![]() |
606f5c15b0 | ||
![]() |
15e0668616 | ||
![]() |
0ba6cbe1ac | ||
![]() |
c2fe1568ff | ||
![]() |
3b1fefda7f | ||
![]() |
10a057e27f | ||
![]() |
244383bf9f | ||
![]() |
405f26068c | ||
![]() |
88b167d18c | ||
![]() |
54a13221ee | ||
![]() |
eb0c3d26ed | ||
![]() |
9976d2c099 | ||
![]() |
5330640025 | ||
![]() |
348e99b52f | ||
![]() |
ba5d794515 | ||
![]() |
6fe0131394 | ||
![]() |
3344f507dd | ||
![]() |
127d9525d6 | ||
![]() |
e8321503c6 | ||
![]() |
8992d5b4fc | ||
![]() |
364760cd3d | ||
![]() |
7331d2b4e3 | ||
![]() |
1dd3bc0a35 | ||
![]() |
3bceb3a9d3 | ||
![]() |
c608e9663e | ||
![]() |
9d8dd17ada | ||
![]() |
21d8ded566 | ||
![]() |
b7eea54028 | ||
![]() |
06a3f6e60b | ||
![]() |
7661b1fae9 | ||
![]() |
e9db26898b | ||
![]() |
f251c12f8a | ||
![]() |
32a55aa8ac | ||
![]() |
47bec681d9 | ||
![]() |
baed75faa9 | ||
![]() |
85acb0a933 | ||
![]() |
1f5b20c4aa | ||
![]() |
bcfb3490db | ||
![]() |
fef82109eb | ||
![]() |
7d6b71b315 | ||
![]() |
880f48b2b4 | ||
![]() |
4897ad0a3f | ||
![]() |
7eb9c8c004 | ||
![]() |
81c87543d1 | ||
![]() |
6d0a930b14 | ||
![]() |
a09bcc062f | ||
![]() |
f6040f56da | ||
![]() |
52c27c82de | ||
![]() |
d60b0af5e3 | ||
![]() |
afc6c935f1 | ||
![]() |
c558647fdf | ||
![]() |
fd5c0da579 | ||
![]() |
4851d4e20f | ||
![]() |
be0d3e6994 | ||
![]() |
0ee0ad23de | ||
![]() |
cb2ec4268f | ||
![]() |
98b5ec74ca | ||
![]() |
37d2e681b3 | ||
![]() |
ddcc41b999 | ||
![]() |
85bfa8b4f9 | ||
![]() |
8256c235d9 | ||
![]() |
e21ebfb13f | ||
![]() |
e8df10eea9 | ||
![]() |
23f036d461 | ||
![]() |
e7058fe49d | ||
![]() |
8888e752bf | ||
![]() |
a7ffb3e617 | ||
![]() |
4c4753c407 | ||
![]() |
72959837ab | ||
![]() |
ef4fb03248 | ||
![]() |
55d8f956c2 | ||
![]() |
0ea37df428 | ||
![]() |
2065a07e98 | ||
![]() |
6e206cf7fc | ||
![]() |
9ed0576a73 | ||
![]() |
d13f6a8b1d | ||
![]() |
e7ac62c3c7 | ||
![]() |
5d2cf8fc21 | ||
![]() |
6240ad15c6 | ||
![]() |
a32fc4faf9 | ||
![]() |
b40d5495ec | ||
![]() |
16eacf19a3 | ||
![]() |
60eec33554 | ||
![]() |
431e754de7 | ||
![]() |
8c5411a23b | ||
![]() |
ea26aeb957 | ||
![]() |
da6e874f81 | ||
![]() |
2d7f5e5831 | ||
![]() |
c8e824af7b | ||
![]() |
a26c93f936 | ||
![]() |
51baef77fb | ||
![]() |
0c08dcfc0c | ||
![]() |
146fa64351 | ||
![]() |
0202f0d89d | ||
![]() |
eb0dfaa0c6 | ||
![]() |
199a3bd275 | ||
![]() |
761f36c3c8 | ||
![]() |
0313f35ab9 | ||
![]() |
8a5d44c420 | ||
![]() |
489fa0df11 | ||
![]() |
a4b8a26d2b | ||
![]() |
018bf2f230 | ||
![]() |
bd2b49185b | ||
![]() |
a75c69f122 | ||
![]() |
9034d0cc32 | ||
![]() |
ddf42d627c | ||
![]() |
8b95e0e460 | ||
![]() |
31381b7057 | ||
![]() |
f0178c049c | ||
![]() |
9684e88c21 | ||
![]() |
397047255e | ||
![]() |
34c1784503 | ||
![]() |
87934b6b4f | ||
![]() |
4daa9a4c6b | ||
![]() |
85467ec308 | ||
![]() |
17c4ce2e39 | ||
![]() |
d286078b28 | ||
![]() |
133142449b | ||
![]() |
3b46fce6fe | ||
![]() |
8855b3a2a2 | ||
![]() |
6ae281fbb7 | ||
![]() |
6acaf2bcb1 | ||
![]() |
d0e6c9f4f6 | ||
![]() |
375f5ec5c5 | ||
![]() |
afee2adc1e | ||
![]() |
1e1af34d3b | ||
![]() |
99b574109d | ||
![]() |
b9ead7ddf7 | ||
![]() |
7612369013 | ||
![]() |
eb4a832ec2 | ||
![]() |
0f4e087031 | ||
![]() |
5672fa0f82 | ||
![]() |
1727aa4ab6 | ||
![]() |
7c6066b700 | ||
![]() |
af451ab328 | ||
![]() |
cae8b2a893 | ||
![]() |
e22e142165 | ||
![]() |
5e030aac41 | ||
![]() |
342cbf1644 | ||
![]() |
af0689716a | ||
![]() |
93b876c110 | ||
![]() |
cc35d01980 | ||
![]() |
ceb49cbda9 | ||
![]() |
ba1868a854 | ||
![]() |
0e72e78086 | ||
![]() |
65f35270e4 | ||
![]() |
a566f627db | ||
![]() |
d24b415f3e | ||
![]() |
312e381523 | ||
![]() |
017a59ec26 | ||
![]() |
c193730083 | ||
![]() |
51c330400f | ||
![]() |
3a50806cbe | ||
![]() |
fa71d08a81 | ||
![]() |
9728241bd0 | ||
![]() |
7de61d8d14 | ||
![]() |
90e62c0867 | ||
![]() |
2876d8d3dd | ||
![]() |
0e2e975128 | ||
![]() |
23525b4ea5 | ||
![]() |
8b49d4b6b4 | ||
![]() |
4297e9058d | ||
![]() |
8189fad961 | ||
![]() |
6b1b8b2b90 | ||
![]() |
8d8caa55a3 | ||
![]() |
857880f0e4 | ||
![]() |
73e586efb3 | ||
![]() |
9eb6889b15 | ||
![]() |
4c71f595e3 | ||
![]() |
f9a49b3783 | ||
![]() |
4b4898e073 | ||
![]() |
812c9c9758 | ||
![]() |
e9ef2cc4de | ||
![]() |
82f8c997df | ||
![]() |
42fab57651 | ||
![]() |
56432ef5e5 | ||
![]() |
c0f98e1cf4 | ||
![]() |
03e2d2138b | ||
![]() |
e6fce5e4e4 | ||
![]() |
7bc925aa50 | ||
![]() |
2fb4da778c | ||
![]() |
e47fb32ae3 | ||
![]() |
18e4bdcadf | ||
![]() |
40eb5d8140 | ||
![]() |
266eaac369 | ||
![]() |
0700685382 | ||
![]() |
13d93aa120 | ||
![]() |
c70ddd5c9e | ||
![]() |
a82e519944 | ||
![]() |
fd59569294 | ||
![]() |
69611473c5 | ||
![]() |
ee790044b0 | ||
![]() |
8d9be3619a | ||
![]() |
47f74ca946 | ||
![]() |
fcbb97d445 | ||
![]() |
ad612c4205 | ||
![]() |
fafc1d403b | ||
![]() |
a3e914407e | ||
![]() |
d5b5343c7d | ||
![]() |
339eeaf095 | ||
![]() |
0cc8a2e971 | ||
![]() |
c12ee95089 | ||
![]() |
034149537b | ||
![]() |
7441340256 | ||
![]() |
e2d211ac49 | ||
![]() |
31cb0d4267 | ||
![]() |
9a7e0bc6d0 | ||
![]() |
6e9c48c579 | ||
![]() |
9e8f2bcaf5 | ||
![]() |
a33c2e6853 | ||
![]() |
3ac7ae2017 | ||
![]() |
56d8b365f5 | ||
![]() |
bddff993ed | ||
![]() |
2be523b204 | ||
![]() |
8d379ad88e | ||
![]() |
ff66a4a3ce | ||
![]() |
f6a26d0925 | ||
![]() |
b3a61703f4 | ||
![]() |
eebc1b7820 | ||
![]() |
7f66928079 | ||
![]() |
dee5000abb | ||
![]() |
4c70d18acc | ||
![]() |
de255e6a5e | ||
![]() |
62a772f2ea | ||
![]() |
82f9b4faaf | ||
![]() |
cf086d4949 | ||
![]() |
6f14bae79e | ||
![]() |
e0c0153d8e | ||
![]() |
58e21d3e45 | ||
![]() |
be49f929b6 | ||
![]() |
5b27912108 | ||
![]() |
1f45bd6565 | ||
![]() |
ef9c28a0e4 | ||
![]() |
f1f6cc23ce | ||
![]() |
2c5fac9320 | ||
![]() |
f122907dc1 | ||
![]() |
9bc025f7cd | ||
![]() |
978dd9fc65 | ||
![]() |
594e6a6c93 | ||
![]() |
a8669137b9 | ||
![]() |
f078727f39 | ||
![]() |
f868ff5e34 | ||
![]() |
b483955605 | ||
![]() |
c03d98f8d1 | ||
![]() |
b16d4c7ed7 | ||
![]() |
f9c2d54a62 | ||
![]() |
cd23302b1a | ||
![]() |
98eadfa08b | ||
![]() |
9e8362a51f | ||
![]() |
6a7a144be1 | ||
![]() |
fd99d1a9c8 | ||
![]() |
87eea99e44 | ||
![]() |
9f18ea3483 | ||
![]() |
50d7b5fa8e | ||
![]() |
6d2cf40166 | ||
![]() |
c42824ebb5 | ||
![]() |
5a2edb3f2c | ||
![]() |
9cd283b2eb | ||
![]() |
f5f5dbbbc6 | ||
![]() |
91f32ce961 | ||
![]() |
5f661ee719 | ||
![]() |
ab587b444c | ||
![]() |
68d2f7b486 | ||
![]() |
4ad769cbec | ||
![]() |
73d2f8b61a | ||
![]() |
857e40f3d2 | ||
![]() |
4b76bbfda6 | ||
![]() |
4ee85b0083 | ||
![]() |
56622140e3 | ||
![]() |
840912b311 | ||
![]() |
c343846625 | ||
![]() |
898859f3d3 | ||
![]() |
38317cbfde | ||
![]() |
763a6d3e67 | ||
![]() |
82d094654a | ||
![]() |
ccb1df0c5e | ||
![]() |
94244b0c40 | ||
![]() |
15aa37adec | ||
![]() |
8f38243163 | ||
![]() |
89662adf77 | ||
![]() |
e7a99b3b0f | ||
![]() |
fe3504d03f | ||
![]() |
bd94c17937 | ||
![]() |
c2fd65dba3 | ||
![]() |
a692e01600 | ||
![]() |
779ca46e98 | ||
![]() |
a42af27fc0 | ||
![]() |
b29d74ef0c | ||
![]() |
08ff9fa402 | ||
![]() |
e66148cda6 | ||
![]() |
9c9f210896 | ||
![]() |
945ab7a6f3 | ||
![]() |
9ba3a34797 | ||
![]() |
166899c913 | ||
![]() |
7d8317abd4 | ||
![]() |
f740a26fe1 | ||
![]() |
f4acde9c71 | ||
![]() |
dae5a758e2 | ||
![]() |
4b3a66b05e | ||
![]() |
97a655d5ca | ||
![]() |
5a313af74e | ||
![]() |
f473fd1e75 | ||
![]() |
8487dfbcd0 | ||
![]() |
917a52003d | ||
![]() |
a980f83a68 | ||
![]() |
7410073110 | ||
![]() |
e2e3817021 | ||
![]() |
950d1310f7 | ||
![]() |
9bab46e9b8 | ||
![]() |
7a00965d7a | ||
![]() |
ca5a4dec44 | ||
![]() |
895e7e05b7 | ||
![]() |
8cbc7da4e5 | ||
![]() |
99e8605be0 | ||
![]() |
5e14da97f1 | ||
![]() |
2f876cf867 | ||
![]() |
8ef7e0d18e | ||
![]() |
3c2f4b6517 | ||
![]() |
3dce229772 | ||
![]() |
9e81419ed5 | ||
![]() |
a863bbcce0 | ||
![]() |
8f75f638ab | ||
![]() |
09a62d4dbc | ||
![]() |
9367243801 | ||
![]() |
105fa74fad | ||
![]() |
2527a72432 | ||
![]() |
eaa4778c42 | ||
![]() |
4bf1502fe8 | ||
![]() |
54be1a52f7 | ||
![]() |
0af2fcaebc | ||
![]() |
e4d9c623d3 | ||
![]() |
96ad6ebd8b | ||
![]() |
31ac784f34 | ||
![]() |
c89f4c8266 | ||
![]() |
7d05a7f4dc | ||
![]() |
b6c5ba06f0 | ||
![]() |
0438435b9c | ||
![]() |
6582950407 | ||
![]() |
b513b3dffe | ||
![]() |
fa0559eb71 | ||
![]() |
ff682089ce | ||
![]() |
ec0e38cbb7 | ||
![]() |
96e163d2fd | ||
![]() |
8d465c2a5d | ||
![]() |
aa5c45254e | ||
![]() |
4312f07736 | ||
![]() |
51d7135456 | ||
![]() |
75506e6367 | ||
![]() |
9899a7bae8 | ||
![]() |
58a79dfe6d | ||
![]() |
f1792b3221 | ||
![]() |
f10b5449a8 | ||
![]() |
700db9d872 | ||
![]() |
e43cc9c902 | ||
![]() |
a4c79d695d | ||
![]() |
80a232db68 | ||
![]() |
8ad63f90cd | ||
![]() |
02906e57bd | ||
![]() |
d4898ac139 | ||
![]() |
105c249996 | ||
![]() |
9b844940ba | ||
![]() |
2fc06503f6 | ||
![]() |
a781ff50e7 | ||
![]() |
3518a0dafa | ||
![]() |
146116eff4 | ||
![]() |
1be9208e04 | ||
![]() |
fedd6b192d | ||
![]() |
f8a0812b1c | ||
![]() |
b5167b8a54 | ||
![]() |
d87601ffc3 | ||
![]() |
bbb3765faf | ||
![]() |
2e13b569cb | ||
![]() |
a82b95a264 | ||
![]() |
4c04a86c68 | ||
![]() |
6300452952 | ||
![]() |
02869a1229 | ||
![]() |
35da06c828 | ||
![]() |
e14f5a739f | ||
![]() |
3f0d759608 | ||
![]() |
3c4dac9a7c | ||
![]() |
3473a947da | ||
![]() |
dc29515934 | ||
![]() |
2084b2d3bd | ||
![]() |
317b3c3eea | ||
![]() |
73ff58c119 | ||
![]() |
d2fbfbc23c | ||
![]() |
5de927bd3e | ||
![]() |
0ef6350c3d | ||
![]() |
07473e703e | ||
![]() |
be9bb76118 | ||
![]() |
1e49329333 | ||
![]() |
279bdcda7e | ||
![]() |
889f118946 | ||
![]() |
2acfac5f8e | ||
![]() |
533f54430a | ||
![]() |
125a4fd36f | ||
![]() |
245d0090c5 | ||
![]() |
9c15afb105 | ||
![]() |
71c2d519d0 | ||
![]() |
78f437d61e | ||
![]() |
c7b0da8a96 | ||
![]() |
3b96ee4e77 | ||
![]() |
52ff5f0cd9 | ||
![]() |
e8a180797c | ||
![]() |
2320f0520b | ||
![]() |
d77d75cc6e | ||
![]() |
a74be759a1 | ||
![]() |
cb5d131ff4 | ||
![]() |
d70141955e | ||
![]() |
41daf50aae | ||
![]() |
5a7179191d | ||
![]() |
2714b5d201 | ||
![]() |
7fc2654a1f | ||
![]() |
cb928a77c0 | ||
![]() |
c6a6fbdcd3 | ||
![]() |
f69335d529 | ||
![]() |
3dc9e3827e | ||
![]() |
44174ce51d | ||
![]() |
5858f09d26 | ||
![]() |
311d55b6d8 | ||
![]() |
bd487ee34c | ||
![]() |
66def909ad | ||
![]() |
d768558ce1 | ||
![]() |
59109f3293 | ||
![]() |
a99147d1ea | ||
![]() |
9d0bb10312 | ||
![]() |
d8ac35af12 | ||
![]() |
a1c2331e0e | ||
![]() |
2c953e572f | ||
![]() |
460faaa411 | ||
![]() |
aaae3d8eef | ||
![]() |
5feda20fc3 | ||
![]() |
43914d68d1 | ||
![]() |
259f681187 | ||
![]() |
6dfdd8534f | ||
![]() |
2156fb51b3 | ||
![]() |
5e207f825b | ||
![]() |
d26f922dc1 | ||
![]() |
dc80eb09e2 | ||
![]() |
4dced81c91 | ||
![]() |
f4c9492c12 | ||
![]() |
5ebb5ac380 | ||
![]() |
f2ba7fe1d8 | ||
![]() |
6781636740 | ||
![]() |
d1434d112c | ||
![]() |
1820131fe6 | ||
![]() |
5eb61f72ea | ||
![]() |
3ae717f71a | ||
![]() |
958bd334b3 | ||
![]() |
a56707e23b | ||
![]() |
349015e1fc | ||
![]() |
afde862928 | ||
![]() |
69a7a9b6b6 | ||
![]() |
1fa67f499d | ||
![]() |
7e53e58664 | ||
![]() |
f87dfd6f37 | ||
![]() |
a0f59f3b28 | ||
![]() |
3cff56c5b0 | ||
![]() |
2e173326aa | ||
![]() |
65fc1adb65 | ||
![]() |
ed39992564 | ||
![]() |
5a78d74ccc | ||
![]() |
09600ae7e3 | ||
![]() |
c3deb8334a | ||
![]() |
a47ed2c311 | ||
![]() |
e66fd5ccb6 | ||
![]() |
a9f6669416 | ||
![]() |
794033ed43 | ||
![]() |
a59f081df4 | ||
![]() |
520230914b | ||
![]() |
b283c864a3 | ||
![]() |
d00ce40912 | ||
![]() |
7ced3beec9 | ||
![]() |
b7f523e3bc | ||
![]() |
24e83cae64 | ||
![]() |
b527a0e615 | ||
![]() |
4eb9a24aba | ||
![]() |
1676b49389 | ||
![]() |
8d85311143 | ||
![]() |
61dacffaf4 | ||
![]() |
c7c28f440d | ||
![]() |
2c6577476e | ||
![]() |
a67b0e24d7 | ||
![]() |
01c2431ef8 | ||
![]() |
d6b69d4f63 | ||
![]() |
0f8c56fe52 | ||
![]() |
818af795d4 | ||
![]() |
35cc965514 | ||
![]() |
58526cfc72 | ||
![]() |
480dd38fd1 | ||
![]() |
1abde88ae6 | ||
![]() |
c1fd5a4243 | ||
![]() |
66c4292822 | ||
![]() |
4dfda2adfe | ||
![]() |
2734071d7b | ||
![]() |
f9a41703b2 | ||
![]() |
3922e90c40 | ||
![]() |
e4519360c1 | ||
![]() |
6a6c8c51ed | ||
![]() |
c2cb303d33 | ||
![]() |
1f0c02811e | ||
![]() |
526dc06e56 | ||
![]() |
6402b2aa0c | ||
![]() |
e382e52d67 | ||
![]() |
b0a6504122 | ||
![]() |
54aca22058 | ||
![]() |
fdab3c1b6c | ||
![]() |
2bc59006d7 | ||
![]() |
a5e5179b56 | ||
![]() |
6e270a7968 | ||
![]() |
d91f550b2a | ||
![]() |
2092aa0d92 | ||
![]() |
9029026edd | ||
![]() |
8ca4e14472 | ||
![]() |
4f18ba30ce | ||
![]() |
3a98787bdd | ||
![]() |
97491ed26c | ||
![]() |
7f5bb22d17 | ||
![]() |
6915f3e24f | ||
![]() |
68760d3fe1 | ||
![]() |
6fd480b17c | ||
![]() |
7e39861da3 | ||
![]() |
ebedd9a2ad | ||
![]() |
b31a696263 | ||
![]() |
309e66f047 | ||
![]() |
d6545a2fc6 | ||
![]() |
41f98a07fc | ||
![]() |
97a117ef1d | ||
![]() |
e33dbc6c69 | ||
![]() |
978bab253d | ||
![]() |
74319e9d39 | ||
![]() |
f0816ddaf4 | ||
![]() |
44dd746bb6 | ||
![]() |
5f96022d3b | ||
![]() |
a96efd02d6 | ||
![]() |
899e0d6052 | ||
![]() |
a432bdce66 | ||
![]() |
e33e9d3f55 | ||
![]() |
d881e1f580 | ||
![]() |
614e7aaf14 | ||
![]() |
b2e0e240fe | ||
![]() |
400436dc52 | ||
![]() |
f2ada9e63f | ||
![]() |
8a2ff3e0ef | ||
![]() |
4b91f6ca72 | ||
![]() |
0de3f33449 | ||
![]() |
f075025845 | ||
![]() |
ca83717c63 | ||
![]() |
52d20e692e | ||
![]() |
9df645dfb0 | ||
![]() |
31e5a0a393 | ||
![]() |
65db2362e2 | ||
![]() |
2d9cb563b4 | ||
![]() |
af803be17b | ||
![]() |
6e56098c03 | ||
![]() |
90bcafa495 | ||
![]() |
d5f2f39319 | ||
![]() |
cb4f325ec0 | ||
![]() |
15b153d633 | ||
![]() |
3d81d89c29 | ||
![]() |
ec7aa11a6e | ||
![]() |
8ccda2be30 | ||
![]() |
4afd20cc71 | ||
![]() |
5ff0bbd972 | ||
![]() |
e75bacc5f9 | ||
![]() |
23252393a2 | ||
![]() |
4760599ff3 | ||
![]() |
a5b459114e | ||
![]() |
7a9c2d586b | ||
![]() |
600a06c81d | ||
![]() |
2e17b6dd4e | ||
![]() |
183afcf1d9 | ||
![]() |
d4b72eb6cc | ||
![]() |
aff796d6ce | ||
![]() |
05560828c4 | ||
![]() |
de60e2e0e3 | ||
![]() |
aa311a4641 | ||
![]() |
d5c721768c | ||
![]() |
292fce7a23 | ||
![]() |
28c9bd4866 | ||
![]() |
b660eb30b4 | ||
![]() |
37e3368e20 | ||
![]() |
f580c4c5b2 | ||
![]() |
58f8704664 | ||
![]() |
550dfc5e7e | ||
![]() |
2ab77c97a5 | ||
![]() |
c4b69e706e | ||
![]() |
35be7acb66 | ||
![]() |
9decb9a979 | ||
![]() |
b96599ccf3 | ||
![]() |
9539a18832 | ||
![]() |
ee6af72dad | ||
![]() |
c710d0fae2 | ||
![]() |
534507ba3b | ||
![]() |
7ef4436abb | ||
![]() |
3124a51abb | ||
![]() |
46e4faf8ef | ||
![]() |
c89efdd211 | ||
![]() |
1e3e569b04 | ||
![]() |
8577daba04 | ||
![]() |
62eb6e5e05 | ||
![]() |
384846b38c | ||
![]() |
09cb1ae10b | ||
![]() |
04e878c231 | ||
![]() |
8db9ec9814 | ||
![]() |
da5268cc19 | ||
![]() |
e8ddef78b6 | ||
![]() |
c214ca51a0 | ||
![]() |
98617b3796 | ||
![]() |
5b0563f39e | ||
![]() |
38fe7cd7be | ||
![]() |
24d83cbf3d | ||
![]() |
72ba0b9555 | ||
![]() |
a161a6ba23 | ||
![]() |
7460457f80 | ||
![]() |
1dcca0f7ae | ||
![]() |
1713a099d6 | ||
![]() |
9026e61d84 | ||
![]() |
56321eff65 | ||
![]() |
0c81957e9b | ||
![]() |
4d641c3803 | ||
![]() |
86ad09b548 | ||
![]() |
707a8be112 | ||
![]() |
6aac8e8570 | ||
![]() |
4b78d78537 | ||
![]() |
8b795a9c17 | ||
![]() |
16502dd3ae | ||
![]() |
5813bb96ae | ||
![]() |
4ac0a1d60f | ||
![]() |
8590415f0e | ||
![]() |
39ac18570a | ||
![]() |
1a3b7614a9 | ||
![]() |
d4aa82fb91 | ||
![]() |
f9c91ee2f2 | ||
![]() |
cd7ecf548a | ||
![]() |
7b20ad39f7 | ||
![]() |
4cdf8e9f3a | ||
![]() |
ef99f9e972 | ||
![]() |
9aa8e3a260 | ||
![]() |
1ad6ae6ee8 | ||
![]() |
c43de364cb | ||
![]() |
9209cd746b | ||
![]() |
51f27d7364 | ||
![]() |
b0855f095a | ||
![]() |
c430b1dba7 | ||
![]() |
ccd31896bc | ||
![]() |
ad9f1d0201 | ||
![]() |
ff5d041b88 | ||
![]() |
fc162bad56 | ||
![]() |
387e9bcddb | ||
![]() |
4cbeb0aedc | ||
![]() |
21077e1b83 | ||
![]() |
3acc1ffc32 | ||
![]() |
1952e2a77b | ||
![]() |
1701defb49 | ||
![]() |
8940c5222e | ||
![]() |
0181d422ab | ||
![]() |
f53c40a739 | ||
![]() |
7db07cb731 | ||
![]() |
45946c5fa1 | ||
![]() |
eadb442b5c | ||
![]() |
492dac7593 | ||
![]() |
40a0d10eea | ||
![]() |
619a60d201 | ||
![]() |
f80e7ad3cb | ||
![]() |
fd175f9d02 | ||
![]() |
367b78fd5c | ||
![]() |
31a6563ec5 | ||
![]() |
706bf8264c | ||
![]() |
934c9d8546 | ||
![]() |
a162189dc0 | ||
![]() |
d9710442b4 | ||
![]() |
dc92374727 | ||
![]() |
43e029d525 | ||
![]() |
fce31a5ef8 | ||
![]() |
a3ae88b71b | ||
![]() |
c2230fe2af | ||
![]() |
c1065a9cb4 | ||
![]() |
da6193b1fc | ||
![]() |
62c4bdc94f | ||
![]() |
17acc7a4c7 | ||
![]() |
d551dc0494 | ||
![]() |
f8dc0e9834 | ||
![]() |
51681a052f | ||
![]() |
6491c70e3a | ||
![]() |
b1a401e6c9 | ||
![]() |
f71e3dba97 | ||
![]() |
1e59e18d73 | ||
![]() |
30816e3068 | ||
![]() |
aea0522f6f | ||
![]() |
74bf5dc2f9 | ||
![]() |
ae5a109768 | ||
![]() |
a2283057a6 | ||
![]() |
5cb7202a34 | ||
![]() |
4ed6f63c09 | ||
![]() |
55698584be | ||
![]() |
3682b61515 | ||
![]() |
1e1a00e964 | ||
![]() |
b2c16aaadf | ||
![]() |
50d3088d78 | ||
![]() |
a0a40cb822 | ||
![]() |
618a08e6aa | ||
![]() |
7d4beedc61 | ||
![]() |
2beabd9fed | ||
![]() |
dadb9a318b | ||
![]() |
3c57ec471e | ||
![]() |
2d431b53d3 | ||
![]() |
2ddd1c498b | ||
![]() |
3e8fe65a08 | ||
![]() |
c2b1630d96 | ||
![]() |
20bad64d9a | ||
![]() |
c136e535ad | ||
![]() |
facceb4a1f | ||
![]() |
6d29b7d755 | ||
![]() |
ee75003425 | ||
![]() |
10c77b339f | ||
![]() |
e06947d101 | ||
![]() |
c78e986085 | ||
![]() |
4e0c7902b2 | ||
![]() |
2e54b76a2d | ||
![]() |
084e3f2f4b | ||
![]() |
e24c1c849d | ||
![]() |
4d2fee1406 | ||
![]() |
e291764584 | ||
![]() |
b87cd1f605 | ||
![]() |
e927d23971 | ||
![]() |
0531170436 | ||
![]() |
b950bb12dc | ||
![]() |
87ecec8d72 | ||
![]() |
d1ec1467f6 | ||
![]() |
b16ddf1782 | ||
![]() |
b9ca23a9c7 | ||
![]() |
746291a19e | ||
![]() |
451b25ae90 | ||
![]() |
3aa45d62e4 | ||
![]() |
e1b8969e78 | ||
![]() |
41863fbabb | ||
![]() |
cf0d0d6364 | ||
![]() |
8a8aabf05c | ||
![]() |
ee6bac11c2 | ||
![]() |
21eeecffa9 | ||
![]() |
94aea2e868 | ||
![]() |
d2ee5631ae | ||
![]() |
a069da6c66 | ||
![]() |
61d999b910 | ||
![]() |
ad4b6922f2 | ||
![]() |
bb5ff26878 | ||
![]() |
c6b4daedbc | ||
![]() |
b3db603f91 | ||
![]() |
e6c37e621b | ||
![]() |
e4e7b8fcb8 | ||
![]() |
44abaa5132 | ||
![]() |
a6ad5120f7 | ||
![]() |
f73f798531 | ||
![]() |
62df04eb25 | ||
![]() |
85943733cb | ||
![]() |
304f57644a | ||
![]() |
999e72b80b | ||
![]() |
c0cb48aae0 | ||
![]() |
5adf569317 | ||
![]() |
3c3c70fa0b | ||
![]() |
fcea053561 | ||
![]() |
e7574d336b | ||
![]() |
1364c91bd1 | ||
![]() |
e43d65d49d | ||
![]() |
9f60704995 | ||
![]() |
5eb4c12a79 | ||
![]() |
350e231b3f | ||
![]() |
ab68316eda | ||
![]() |
57a245a6e0 | ||
![]() |
51ae3f2d7f | ||
![]() |
bbd1e6941b | ||
![]() |
4fc586c3df | ||
![]() |
84221f4c16 | ||
![]() |
1420834496 | ||
![]() |
69ed71fad1 | ||
![]() |
a14f0f66bb | ||
![]() |
fced5c82c2 | ||
![]() |
e27bdcd968 | ||
![]() |
82a3980701 | ||
![]() |
46fc4eb234 | ||
![]() |
b60708fb0e | ||
![]() |
20446ebc6b | ||
![]() |
00e59db614 | ||
![]() |
8bff730a98 | ||
![]() |
c5c866a394 | ||
![]() |
1ceb66750c | ||
![]() |
e5555d7a74 | ||
![]() |
3557787697 | ||
![]() |
11ddc57db9 | ||
![]() |
cbde497236 | ||
![]() |
ed216c187b | ||
![]() |
7ccb0c45e5 | ||
![]() |
08070759c3 | ||
![]() |
a9b4fa378b | ||
![]() |
7dd2b8ee7e | ||
![]() |
ee500cb2b1 | ||
![]() |
1398a2fae4 | ||
![]() |
419820cce6 | ||
![]() |
5bd74a7c96 | ||
![]() |
dbb6148158 | ||
![]() |
b14fd2ad60 | ||
![]() |
3c87d862d9 | ||
![]() |
c19a09b314 | ||
![]() |
86ce180882 | ||
![]() |
f57034f678 | ||
![]() |
0053a9f869 | ||
![]() |
55a010bf31 | ||
![]() |
065666f33c | ||
![]() |
ab584ab500 | ||
![]() |
4613f2caac | ||
![]() |
8bd63634cd | ||
![]() |
007d8b1813 | ||
![]() |
3757245586 | ||
![]() |
2437ae80e5 | ||
![]() |
6a8192b6dd | ||
![]() |
33ac0a9084 | ||
![]() |
d788f76278 | ||
![]() |
4f3fe9c909 | ||
![]() |
3e93bba3b0 | ||
![]() |
ae651e7e73 | ||
![]() |
89498a1178 | ||
![]() |
d0091a33fc | ||
![]() |
9db9805515 | ||
![]() |
6b9d6a91ed | ||
![]() |
84450c411c | ||
![]() |
9985febd78 | ||
![]() |
b31da39f6f | ||
![]() |
1662c94348 | ||
![]() |
97b9fa090c | ||
![]() |
06760f5cb0 | ||
![]() |
cbd88a9416 | ||
![]() |
70dac03d59 | ||
![]() |
9c9bf5de9c | ||
![]() |
1e5a59c905 | ||
![]() |
8d72d35b29 | ||
![]() |
973dc7d319 | ||
![]() |
6bf590f385 | ||
![]() |
5d7f5bc8ee | ||
![]() |
afde156de5 | ||
![]() |
39102f8b3e | ||
![]() |
bfad5455b6 | ||
![]() |
eae1bc3667 | ||
![]() |
697cfe1537 | ||
![]() |
a0f1b56581 | ||
![]() |
498138c293 | ||
![]() |
40a04cb1b6 | ||
![]() |
6131707e8f | ||
![]() |
bdfdaaff5d | ||
![]() |
bccb9afc56 | ||
![]() |
3d4d705d2f | ||
![]() |
19f118f41f | ||
![]() |
4db9e2bc13 | ||
![]() |
26659de6cd | ||
![]() |
4481920f40 | ||
![]() |
1cd916f3a5 | ||
![]() |
6682b2b359 | ||
![]() |
b5e4355fa4 | ||
![]() |
ec7c9c2b68 | ||
![]() |
2d0da8ab8d | ||
![]() |
84d6ca7c89 | ||
![]() |
ace225b53d | ||
![]() |
bb7142d361 | ||
![]() |
e20ac40bd3 | ||
![]() |
a43946a51f | ||
![]() |
eaff774a3f | ||
![]() |
a258e33fcb | ||
![]() |
fc62785aab | ||
![]() |
fa6523d13a | ||
![]() |
7272e2fcd2 | ||
![]() |
4dcf1b0107 | ||
![]() |
81050f2784 | ||
![]() |
d67c0b883d | ||
![]() |
741eb8462c | ||
![]() |
0a34277180 | ||
![]() |
879b7c21e4 | ||
![]() |
01c2dcbe69 | ||
![]() |
100f16eae9 | ||
![]() |
d1313febbe | ||
![]() |
7ab94c5f99 | ||
![]() |
f66887d9ea | ||
![]() |
7c6d5d1999 | ||
![]() |
5d98abb14c | ||
![]() |
02c1f1a022 | ||
![]() |
57fd8c37aa | ||
![]() |
38a7aae1d9 | ||
![]() |
b6b77488a0 | ||
![]() |
9126f36b96 | ||
![]() |
ad5c6bbb36 | ||
![]() |
eb2e7ed81b | ||
![]() |
2a9f88430e | ||
![]() |
054922e2fc | ||
![]() |
577b6c46fd | ||
![]() |
5064f18031 | ||
![]() |
dbcb4af60d | ||
![]() |
c82c2c3853 | ||
![]() |
2114dd8aa1 | ||
![]() |
f19f5daa1b | ||
![]() |
af78fe24e4 | ||
![]() |
5e1b9f8975 | ||
![]() |
a77597bcb8 | ||
![]() |
814af33df3 | ||
![]() |
5cae7a3fe6 | ||
![]() |
22f54dde6b | ||
![]() |
d842669a46 | ||
![]() |
3432e1a344 | ||
![]() |
f9faf4df44 | ||
![]() |
9623b478f7 | ||
![]() |
479d094485 | ||
![]() |
d46a9f3ace | ||
![]() |
a76b78c2da | ||
![]() |
efdf65c0c4 | ||
![]() |
a4f95d083b | ||
![]() |
25bd96a3d0 | ||
![]() |
9882d832f6 | ||
![]() |
99a53667da | ||
![]() |
1e1ae0bf6e | ||
![]() |
f901e3b58b | ||
![]() |
f5da52b677 | ||
![]() |
7ef44cae6b | ||
![]() |
6aa82b7a72 | ||
![]() |
4ffa077487 | ||
![]() |
a1ebff0dcb | ||
![]() |
2644d5a947 | ||
![]() |
12ad42dd32 | ||
![]() |
2f443466bb | ||
![]() |
e58b208958 | ||
![]() |
bdfb5944ff | ||
![]() |
e5d85ce662 | ||
![]() |
04bd4bdca6 | ||
![]() |
795ec5af2f | ||
![]() |
842591d9d1 | ||
![]() |
12da53f81c | ||
![]() |
b395c3c5a2 | ||
![]() |
b8d6babc91 | ||
![]() |
5754e5689d | ||
![]() |
c06af10454 | ||
![]() |
69b4ffdbc9 | ||
![]() |
351ed700c3 | ||
![]() |
af6efdfd20 | ||
![]() |
ff92434b39 | ||
![]() |
e814b50877 | ||
![]() |
ed6d2f1cec | ||
![]() |
6c4001a0e1 | ||
![]() |
eff7c8efab | ||
![]() |
828794d328 | ||
![]() |
1161b3f9ed | ||
![]() |
ebd2f06d96 | ||
![]() |
7e22b2f782 | ||
![]() |
2f025bad43 | ||
![]() |
4d4d1760e8 | ||
![]() |
ece8d13bf7 | ||
![]() |
5715a394c4 | ||
![]() |
d815a1c54a | ||
![]() |
a89f8cfaf1 | ||
![]() |
99e7d8fab5 | ||
![]() |
4d713e3120 | ||
![]() |
9d5bef2fcf | ||
![]() |
90f71ced40 | ||
![]() |
045dd15b6a | ||
![]() |
105c2e8664 | ||
![]() |
3bb65959ee | ||
![]() |
f7a60c64ac | ||
![]() |
94b5f3b6a4 | ||
![]() |
6aceb767aa | ||
![]() |
4abe76432a | ||
![]() |
5c60e1855b | ||
![]() |
827e613338 | ||
![]() |
65b63728cc | ||
![]() |
dd449a2a8e | ||
![]() |
ba480882aa | ||
![]() |
a4e984de19 | ||
![]() |
d4fff4a959 | ||
![]() |
13ce88f800 | ||
![]() |
8c76235f41 | ||
![]() |
0f6a4d4588 | ||
![]() |
838c2b593e | ||
![]() |
c53625a36e | ||
![]() |
918a544406 | ||
![]() |
2296b15c9d | ||
![]() |
c48a9b8035 | ||
![]() |
fa956ebd6b | ||
![]() |
d06147d984 | ||
![]() |
71b2e2745b | ||
![]() |
89868e93bd | ||
![]() |
33f1652b95 | ||
![]() |
e8185f1cb4 | ||
![]() |
00939d3562 | ||
![]() |
b455496890 | ||
![]() |
e75e6a4ef5 | ||
![]() |
1670b95214 | ||
![]() |
b9e8f7fb74 | ||
![]() |
caae4e82ff | ||
![]() |
d080d59b80 | ||
![]() |
b496a8b279 | ||
![]() |
34ca9cf03f | ||
![]() |
0f7be9f72e | ||
![]() |
9638af9583 | ||
![]() |
8bba3a0e1e | ||
![]() |
eade7b4dbd | ||
![]() |
a215322267 | ||
![]() |
44f99735d9 | ||
![]() |
c6ce22e73a | ||
![]() |
ad3cbfb073 | ||
![]() |
b514e63cfc | ||
![]() |
f05a90e5f8 | ||
![]() |
7eb0abb5e8 | ||
![]() |
6b27768d81 | ||
![]() |
74d0f44b6d | ||
![]() |
be4eaa0e4f | ||
![]() |
70a923882c | ||
![]() |
fe99673719 | ||
![]() |
29003c3bef | ||
![]() |
2ee27e7d79 | ||
![]() |
11a0c5badb | ||
![]() |
34098dba67 | ||
![]() |
66f4ee1b3b | ||
![]() |
5921c17639 | ||
![]() |
f3e17872f5 | ||
![]() |
bb3d1b67fd | ||
![]() |
3503f7956f | ||
![]() |
19f2d3d9c1 | ||
![]() |
bec6320b0e | ||
![]() |
43375c5d66 | ||
![]() |
d3975d7ff9 | ||
![]() |
b03a2e477b | ||
![]() |
61363cc614 | ||
![]() |
b98292b4d5 | ||
![]() |
1e6491fdde | ||
![]() |
1d60bb92f7 | ||
![]() |
a0ab0aecb2 | ||
![]() |
84e361c8e3 | ||
![]() |
84f3c5a71a | ||
![]() |
17feaa9c50 | ||
![]() |
350029396d | ||
![]() |
0df43b8ae5 | ||
![]() |
d506bf68fd | ||
![]() |
9ebde285fa | ||
![]() |
8868778ea1 | ||
![]() |
72f5e5f608 | ||
![]() |
11305b4ecd | ||
![]() |
20ed723a5a | ||
![]() |
48e951000c | ||
![]() |
8b33321660 | ||
![]() |
2cb67d2a0b | ||
![]() |
3cdf74257b | ||
![]() |
65919ad17f | ||
![]() |
34a7ac0474 | ||
![]() |
10f69e5ec8 | ||
![]() |
984be4def2 | ||
![]() |
33d9890226 | ||
![]() |
87cd6b8056 | ||
![]() |
e7fe5e35e9 | ||
![]() |
f88ae14c15 | ||
![]() |
7fb75bb3e6 | ||
![]() |
510c0d088a | ||
![]() |
7feb710e60 | ||
![]() |
3598ec26ec | ||
![]() |
964c7e7cd2 | ||
![]() |
0bc03482f1 | ||
![]() |
79e69aac8c | ||
![]() |
4e6dd4928d | ||
![]() |
803272e38c | ||
![]() |
1feaf6bea7 | ||
![]() |
1237fd9bc8 | ||
![]() |
7dfe845786 | ||
![]() |
8e4100260b | ||
![]() |
39b86b032d | ||
![]() |
9a90c1c90f | ||
![]() |
cd1062ded4 | ||
![]() |
b099957887 | ||
![]() |
14f82083a1 | ||
![]() |
e83cee5aac | ||
![]() |
97447f440f | ||
![]() |
8d359b00c5 | ||
![]() |
e0c7948c97 | ||
![]() |
3b68c295fd | ||
![]() |
56f173f0af | ||
![]() |
fc1b85f258 | ||
![]() |
84bb9a7605 | ||
![]() |
7fd4897730 | ||
![]() |
8414aa76c2 | ||
![]() |
08e855f15c | ||
![]() |
2b6b0cf359 | ||
![]() |
13aed37758 | ||
![]() |
2de397c272 | ||
![]() |
ed781df1cc | ||
![]() |
fead9eb82a | ||
![]() |
32e556df33 | ||
![]() |
b61ec0a686 | ||
![]() |
e8a1b1c4e5 | ||
![]() |
a8e4677ecc | ||
![]() |
8aeb637bb5 | ||
![]() |
461dacfb5e | ||
![]() |
e581626827 | ||
![]() |
f5216c99bc | ||
![]() |
a6a04c07c3 | ||
![]() |
4e56cec564 | ||
![]() |
1d7195dd6c | ||
![]() |
2ac4ae1ae2 | ||
![]() |
7f4eabbeec | ||
![]() |
9489c2e04a | ||
![]() |
fffeda703e | ||
![]() |
3e635d6491 | ||
![]() |
0f1a5c4a27 | ||
![]() |
b66cabb884 | ||
![]() |
cf14189c69 | ||
![]() |
0a6360a7ee | ||
![]() |
34b5633105 | ||
![]() |
d6b13f99b4 | ||
![]() |
51a5e949f3 | ||
![]() |
6503c6edcc | ||
![]() |
23c6e1d2c0 | ||
![]() |
b2c9eaa502 | ||
![]() |
15b1645c7b | ||
![]() |
255d624e50 | ||
![]() |
2bbd553bd2 | ||
![]() |
55bbccf84e | ||
![]() |
ae70b38d40 | ||
![]() |
ab3809f4da | ||
![]() |
f5c0a60ac8 | ||
![]() |
c71e24c9fc | ||
![]() |
29439bd772 | ||
![]() |
a484a9c49c | ||
![]() |
2610323545 | ||
![]() |
3479050216 | ||
![]() |
45a2d01077 | ||
![]() |
303de045ff | ||
![]() |
f914cf4486 | ||
![]() |
7d7b03c091 | ||
![]() |
d41522113e | ||
![]() |
337f0bff0d | ||
![]() |
2444b2265a | ||
![]() |
de2e51dacb | ||
![]() |
a2afcc9ba4 | ||
![]() |
4d8d2fa47e | ||
![]() |
3d094997b1 | ||
![]() |
985e59a82f | ||
![]() |
733f68912f | ||
![]() |
af7a69d90e | ||
![]() |
f6843e3797 | ||
![]() |
b066b520df | ||
![]() |
1fba779036 | ||
![]() |
c3f48b6aa2 | ||
![]() |
6d2f7f981b | ||
![]() |
3990931bf6 | ||
![]() |
a7c36681c0 | ||
![]() |
e6814837a6 | ||
![]() |
3be86a92cc | ||
![]() |
98d08b37f1 | ||
![]() |
4b5b5a2a83 | ||
![]() |
654961efe4 | ||
![]() |
e7ee43c39d | ||
![]() |
149ed6b1f0 | ||
![]() |
865e06cab0 | ||
![]() |
868ed1e2a0 | ||
![]() |
bed147b523 | ||
![]() |
c59db8af66 | ||
![]() |
4646c23858 | ||
![]() |
536cf4dd3b | ||
![]() |
da0176e853 | ||
![]() |
151f2554fc | ||
![]() |
19ed415b74 | ||
![]() |
d8fe87a626 | ||
![]() |
b8007d0423 | ||
![]() |
2e855a2b4a | ||
![]() |
4a09e472b8 | ||
![]() |
67a4991f33 | ||
![]() |
0b56244ac8 | ||
![]() |
6e76af0d4b | ||
![]() |
88014a0e6f | ||
![]() |
324712e48c | ||
![]() |
cb3f183025 | ||
![]() |
85950507f1 | ||
![]() |
23b9668233 | ||
![]() |
7374af53e1 | ||
![]() |
fed4a2fde5 | ||
![]() |
99699771cd | ||
![]() |
f405b40798 | ||
![]() |
9c19a85b00 | ||
![]() |
56748ea9a6 | ||
![]() |
ecc3612995 | ||
![]() |
c993cd9614 | ||
![]() |
2da37f260e | ||
![]() |
d890b684f6 | ||
![]() |
3a4ab94548 | ||
![]() |
a74572e2e1 | ||
![]() |
c5e048d46c | ||
![]() |
990c9e2447 | ||
![]() |
6a6d9758af | ||
![]() |
6cba95bcd3 | ||
![]() |
4504e5e3e2 | ||
![]() |
ebabb2f2ce | ||
![]() |
7cad3fd3f3 | ||
![]() |
865f80fd77 | ||
![]() |
3389b86e1f | ||
![]() |
3193481ee6 | ||
![]() |
00fdb3d8e8 | ||
![]() |
1c23142efa | ||
![]() |
d105134015 | ||
![]() |
a966cd04c1 | ||
![]() |
70658f0a6b | ||
![]() |
741c30d9d9 | ||
![]() |
9b72fd1b85 | ||
![]() |
1d4f2d71fa | ||
![]() |
f6ab20ca66 | ||
![]() |
1ca715ed1e | ||
![]() |
e46be417ce | ||
![]() |
6ed7164de5 | ||
![]() |
233b27257b | ||
![]() |
3f7da59352 | ||
![]() |
a10ccc9f30 | ||
![]() |
55e4065cbb | ||
![]() |
fe411cf2ac | ||
![]() |
4e89a5b7f3 | ||
![]() |
8d76c1b339 | ||
![]() |
c748650d70 | ||
![]() |
a520c15e11 | ||
![]() |
d8820360f7 | ||
![]() |
2f6c7b4f9d | ||
![]() |
b924bb1f81 | ||
![]() |
73c1fefa1b | ||
![]() |
a4d1c9d383 | ||
![]() |
10e13135c3 | ||
![]() |
ba693d2e88 | ||
![]() |
77d3e5f6ff | ||
![]() |
ba69989374 | ||
![]() |
56777f3f67 | ||
![]() |
39524a4687 | ||
![]() |
e97da21049 | ||
![]() |
19ea0e16b9 | ||
![]() |
edd1733966 | ||
![]() |
e5b3a6e710 | ||
![]() |
0742ba4164 | ||
![]() |
7cd4f2fa20 | ||
![]() |
eab3a77877 | ||
![]() |
cab3261c0d | ||
![]() |
fd3c87d460 | ||
![]() |
f474783607 | ||
![]() |
91521d30ab | ||
![]() |
372d7b954a | ||
![]() |
a826ae0e3a | ||
![]() |
c5238bd180 | ||
![]() |
d12daefcdb | ||
![]() |
9388be3293 | ||
![]() |
8e4d4e8d11 | ||
![]() |
ce1f6c50b4 | ||
![]() |
83f2ee3e95 | ||
![]() |
be37ae331c | ||
![]() |
5f8a9bebc0 | ||
![]() |
c59584cb86 | ||
![]() |
2292cff304 | ||
![]() |
8b29162693 | ||
![]() |
e8555874e1 | ||
![]() |
f9778c15e9 | ||
![]() |
6d1e10a8b5 | ||
![]() |
4fa33537d7 | ||
![]() |
c97881fe3c | ||
![]() |
3411f9399c | ||
![]() |
add0fd1bac | ||
![]() |
af2f0080fe | ||
![]() |
0afc613415 | ||
![]() |
ae77548f0d | ||
![]() |
dc9fe269ea | ||
![]() |
f4dc73bad4 | ||
![]() |
517a77a992 | ||
![]() |
abc90dad57 | ||
![]() |
45833d5b19 | ||
![]() |
3db0cc5c75 | ||
![]() |
e9b0740af7 | ||
![]() |
066ce191a6 | ||
![]() |
fb819c0e93 | ||
![]() |
ba6c98fc4b | ||
![]() |
e470c0dc5b | ||
![]() |
a5bf7c3b1a | ||
![]() |
8e299702f3 | ||
![]() |
e29d9dfcb5 | ||
![]() |
27f7852b5a | ||
![]() |
df6dbc9024 | ||
![]() |
f42419a3e4 | ||
![]() |
a4f6c93016 | ||
![]() |
765bde32e0 | ||
![]() |
8596408261 | ||
![]() |
5b99710042 | ||
![]() |
5530bcab26 | ||
![]() |
a8ea889e5e | ||
![]() |
4d8fb1bc01 | ||
![]() |
5ff359b8a0 | ||
![]() |
39308ed3b0 | ||
![]() |
393ccab74e | ||
![]() |
dbc6d202d7 | ||
![]() |
637f4b5907 | ||
![]() |
97336fad32 | ||
![]() |
da6f33a798 | ||
![]() |
32509aa4da | ||
![]() |
052c5b819c | ||
![]() |
91cb142177 | ||
![]() |
a9a084c85c | ||
![]() |
4e5d6f00bf | ||
![]() |
9fe7d32c4b | ||
![]() |
8a5d1be1da | ||
![]() |
731e9feaa6 | ||
![]() |
41584f8fe1 | ||
![]() |
8e33643f44 | ||
![]() |
6f62231d15 | ||
![]() |
807fd3c084 | ||
![]() |
e213d5fd62 | ||
![]() |
cbb2a0d792 | ||
![]() |
6480c92312 | ||
![]() |
1cc750ed92 | ||
![]() |
5b289d39cf | ||
![]() |
71ff55a3e5 | ||
![]() |
cb50e9cc95 | ||
![]() |
664132128e | ||
![]() |
cc9221ce96 | ||
![]() |
b243a66041 | ||
![]() |
d6a7b15424 | ||
![]() |
226a6df4f9 | ||
![]() |
af3eeaeb13 | ||
![]() |
90483fcabb | ||
![]() |
bf125fbbb7 | ||
![]() |
16ae3285e6 | ||
![]() |
e0b430a13e | ||
![]() |
16bae83475 | ||
![]() |
9399b1a5af | ||
![]() |
5537e51cd0 | ||
![]() |
1d9c6fa623 | ||
![]() |
d95ae70604 | ||
![]() |
eb247ac377 | ||
![]() |
dbf35f1f27 | ||
![]() |
9897bb4eee | ||
![]() |
ce3d9fca73 | ||
![]() |
839326e471 | ||
![]() |
e13d9f9684 | ||
![]() |
2e7fb66553 | ||
![]() |
2df6dac0be | ||
![]() |
5dd59c8b7c | ||
![]() |
98d19d9abd | ||
![]() |
f18bcf1f6e | ||
![]() |
5c935473d8 | ||
![]() |
7114b2d63b | ||
![]() |
a92e4a6a94 | ||
![]() |
ca846806cb | ||
![]() |
3074d57b56 | ||
![]() |
66365b5ef1 | ||
![]() |
4e1d4847c9 | ||
![]() |
445eb6385f | ||
![]() |
de03202581 | ||
![]() |
32bd31d677 | ||
![]() |
78778e5963 | ||
![]() |
cfc4e38852 | ||
![]() |
f905ebb03d | ||
![]() |
be387701a5 | ||
![]() |
9ed9abd154 | ||
![]() |
30c3e91c3f | ||
![]() |
872c915dcb | ||
![]() |
164fe215f2 | ||
![]() |
e1594f204d | ||
![]() |
2f4f2fb485 | ||
![]() |
5158d6740c | ||
![]() |
582fa58bba | ||
![]() |
95d4026866 | ||
![]() |
d539e0c661 | ||
![]() |
2d65fb033b | ||
![]() |
19459672ce | ||
![]() |
a3d29157b4 | ||
![]() |
c0d0d20bd2 | ||
![]() |
1f0cba3bdc | ||
![]() |
526132fa65 | ||
![]() |
8f7cc5e438 | ||
![]() |
2b1cae1ef6 | ||
![]() |
15f5868f63 | ||
![]() |
a652d5c154 | ||
![]() |
714559dccd | ||
![]() |
634ba33b5b | ||
![]() |
bc11545a1b | ||
![]() |
0345c343e5 |
11
.editorconfig
Normal file
11
.editorconfig
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# To use this config on you editor, follow the instructions at:
|
||||||
|
# http://editorconfig.org
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
tab_width = 8
|
||||||
|
|
||||||
|
[meson.build,meson_options.txt]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
36
.gitignore
vendored
36
.gitignore
vendored
@ -26,29 +26,31 @@ stamp-h?
|
|||||||
config.h
|
config.h
|
||||||
config.h.in
|
config.h.in
|
||||||
.*.swp
|
.*.swp
|
||||||
pixman/pixman-combine32.c
|
demos/*-test
|
||||||
pixman/pixman-combine32.h
|
demos/checkerboard
|
||||||
pixman/pixman-combine64.c
|
demos/clip-in
|
||||||
pixman/pixman-combine64.h
|
demos/linear-gradient
|
||||||
|
demos/quad2quad
|
||||||
|
demos/scale
|
||||||
|
demos/dither
|
||||||
|
pixman/pixman-srgb.c
|
||||||
pixman/pixman-version.h
|
pixman/pixman-version.h
|
||||||
test/alpha-test
|
test/*-test
|
||||||
test/blitters-test
|
test/affine-bench
|
||||||
|
test/alpha-loop
|
||||||
|
test/alphamap
|
||||||
|
test/check-formats
|
||||||
test/clip-in
|
test/clip-in
|
||||||
test/clip-test
|
|
||||||
test/composite
|
test/composite
|
||||||
test/composite-test
|
test/infinite-loop
|
||||||
test/convolution-test
|
test/lowlevel-blt-bench
|
||||||
test/fetch-test
|
test/radial-invalid
|
||||||
test/gradient-test
|
test/region-translate
|
||||||
test/oob-test
|
test/scaling-bench
|
||||||
test/region-test
|
|
||||||
test/scaling-test
|
|
||||||
test/screen-test
|
|
||||||
test/trap-crasher
|
test/trap-crasher
|
||||||
test/trap-test
|
|
||||||
test/window-test
|
|
||||||
*.pdb
|
*.pdb
|
||||||
*.dll
|
*.dll
|
||||||
*.lib
|
*.lib
|
||||||
*.ilk
|
*.ilk
|
||||||
*.obj
|
*.obj
|
||||||
|
*.exe
|
||||||
|
80
.gitlab-ci.d/01-docker.yml
Normal file
80
.gitlab-ci.d/01-docker.yml
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# Docker build stage
|
||||||
|
#
|
||||||
|
# It builds a multi-arch image for all required architectures. Each image can be
|
||||||
|
# later easily used with properly configured Docker (which uses binfmt and QEMU
|
||||||
|
# underneath).
|
||||||
|
|
||||||
|
docker:
|
||||||
|
stage: docker
|
||||||
|
image: quay.io/buildah/stable
|
||||||
|
rules:
|
||||||
|
- if: "$CI_PIPELINE_SOURCE == 'merge_request_event' && $TARGET =~ $ACTIVE_TARGET_PATTERN"
|
||||||
|
changes:
|
||||||
|
paths:
|
||||||
|
- .gitlab-ci.d/01-docker.yml
|
||||||
|
- .gitlab-ci.d/01-docker/**/*
|
||||||
|
variables:
|
||||||
|
DOCKER_TAG: $CI_COMMIT_REF_SLUG
|
||||||
|
DOCKER_IMAGE_NAME: ${CI_REGISTRY_IMAGE}/pixman:${DOCKER_TAG}
|
||||||
|
- if: "$CI_PIPELINE_SOURCE == 'schedule' && $TARGET =~ $ACTIVE_TARGET_PATTERN"
|
||||||
|
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $TARGET =~ $ACTIVE_TARGET_PATTERN"
|
||||||
|
- if: "$CI_COMMIT_TAG && $TARGET =~ $ACTIVE_TARGET_PATTERN"
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Use vfs with buildah. Docker offers overlayfs as a default, but Buildah
|
||||||
|
# cannot stack overlayfs on top of another overlayfs filesystem.
|
||||||
|
STORAGE_DRIVER: vfs
|
||||||
|
|
||||||
|
# Write all image metadata in the docker format, not the standard OCI
|
||||||
|
# format. Newer versions of docker can handle the OCI format, but older
|
||||||
|
# versions, like the one shipped with Fedora 30, cannot handle the format.
|
||||||
|
BUILDAH_FORMAT: docker
|
||||||
|
|
||||||
|
BUILDAH_ISOLATION: chroot
|
||||||
|
CACHE_IMAGE: ${CI_REGISTRY_IMAGE}/cache
|
||||||
|
CACHE_ARGS: --cache-from ${CACHE_IMAGE} --cache-to ${CACHE_IMAGE}
|
||||||
|
before_script:
|
||||||
|
# Login to the target registry.
|
||||||
|
- echo "${CI_REGISTRY_PASSWORD}" |
|
||||||
|
buildah login -u "${CI_REGISTRY_USER}" --password-stdin ${CI_REGISTRY}
|
||||||
|
|
||||||
|
# Docker Hub login is optional, and can be used to circumvent image pull
|
||||||
|
# quota for anonymous pulls for base images.
|
||||||
|
- echo "${DOCKERHUB_PASSWORD}" |
|
||||||
|
buildah login -u "${DOCKERHUB_USER}" --password-stdin docker.io ||
|
||||||
|
echo "Failed to login to Docker Hub."
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
- TARGET:
|
||||||
|
- linux-386
|
||||||
|
- linux-amd64
|
||||||
|
- linux-arm-v5
|
||||||
|
- linux-arm-v7
|
||||||
|
- linux-arm64-v8
|
||||||
|
- linux-mips
|
||||||
|
- linux-mips64el
|
||||||
|
- linux-mipsel
|
||||||
|
- linux-ppc
|
||||||
|
- linux-ppc64
|
||||||
|
- linux-ppc64le
|
||||||
|
- linux-riscv64
|
||||||
|
- windows-686
|
||||||
|
- windows-amd64
|
||||||
|
- windows-arm64-v8
|
||||||
|
script:
|
||||||
|
# Prepare environment.
|
||||||
|
- ${LOAD_TARGET_ENV}
|
||||||
|
- FULL_IMAGE_NAME=${DOCKER_IMAGE_NAME}-${TARGET}
|
||||||
|
|
||||||
|
# Build and push the image.
|
||||||
|
- buildah bud
|
||||||
|
--tag ${FULL_IMAGE_NAME}
|
||||||
|
--layers ${CACHE_ARGS}
|
||||||
|
--target ${TARGET}
|
||||||
|
--platform=${DOCKER_PLATFORM}
|
||||||
|
--build-arg BASE_IMAGE=${BASE_IMAGE}
|
||||||
|
--build-arg BASE_IMAGE_TAG=${BASE_IMAGE_TAG}
|
||||||
|
--build-arg LLVM_VERSION=${LLVM_VERSION}
|
||||||
|
-f Dockerfile .gitlab-ci.d/01-docker/
|
||||||
|
- buildah images
|
||||||
|
- buildah push ${FULL_IMAGE_NAME}
|
150
.gitlab-ci.d/01-docker/Dockerfile
Normal file
150
.gitlab-ci.d/01-docker/Dockerfile
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
ARG BASE_IMAGE=docker.io/debian
|
||||||
|
ARG BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
FROM ${BASE_IMAGE}:${BASE_IMAGE_TAG} AS base
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.title="Pixman build environment for platform coverage" \
|
||||||
|
org.opencontainers.image.authors="Marek Pikuła <m.pikula@partner.samsung.com>"
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV APT_UPDATE="apt-get update" \
|
||||||
|
APT_INSTALL="apt-get install -y --no-install-recommends" \
|
||||||
|
APT_CLEANUP="rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*"
|
||||||
|
|
||||||
|
ARG GCOVR_VERSION="~=7.2"
|
||||||
|
ARG MESON_VERSION="~=1.6"
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} \
|
||||||
|
# Build dependencies.
|
||||||
|
build-essential \
|
||||||
|
ninja-build \
|
||||||
|
pkg-config \
|
||||||
|
qemu-user \
|
||||||
|
# pipx dependencies.
|
||||||
|
python3-argcomplete \
|
||||||
|
python3-packaging \
|
||||||
|
python3-pip \
|
||||||
|
python3-platformdirs \
|
||||||
|
python3-userpath \
|
||||||
|
python3-venv \
|
||||||
|
# gcovr dependencies.
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt-dev \
|
||||||
|
python3-dev \
|
||||||
|
&& ${APT_CLEANUP} \
|
||||||
|
# Install pipx using pip to have a more recent version of pipx, which
|
||||||
|
# supports the `--global` flag.
|
||||||
|
&& pip install pipx --break-system-packages \
|
||||||
|
# Install a recent version of meson and gcovr using pipx to have the same
|
||||||
|
# version across all variants regardless of base.
|
||||||
|
&& pipx install --global \
|
||||||
|
gcovr${GCOVR_VERSION} \
|
||||||
|
meson${MESON_VERSION} \
|
||||||
|
&& gcovr --version \
|
||||||
|
&& echo Meson version: \
|
||||||
|
&& meson --version
|
||||||
|
|
||||||
|
FROM base AS llvm-base
|
||||||
|
# LLVM 16 is the highest available in Bookworm. Preferably, we should use the
|
||||||
|
# same version for all platforms, but it's not possible at the moment.
|
||||||
|
ARG LLVM_VERSION=16
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} \
|
||||||
|
clang-${LLVM_VERSION} \
|
||||||
|
libclang-rt-${LLVM_VERSION}-dev \
|
||||||
|
lld-${LLVM_VERSION} \
|
||||||
|
llvm-${LLVM_VERSION} \
|
||||||
|
&& ${APT_CLEANUP} \
|
||||||
|
&& ln -f /usr/bin/clang-${LLVM_VERSION} /usr/bin/clang \
|
||||||
|
&& ln -f /usr/bin/lld-${LLVM_VERSION} /usr/bin/lld \
|
||||||
|
&& ln -f /usr/bin/llvm-ar-${LLVM_VERSION} /usr/bin/llvm-ar \
|
||||||
|
&& ln -f /usr/bin/llvm-strip-${LLVM_VERSION} /usr/bin/llvm-strip
|
||||||
|
|
||||||
|
FROM llvm-base AS native-base
|
||||||
|
ARG LLVM_VERSION=16
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} \
|
||||||
|
# Runtime library dependencies.
|
||||||
|
libglib2.0-dev \
|
||||||
|
libgtk-3-dev \
|
||||||
|
libpng-dev \
|
||||||
|
# Install libomp-dev if available (OpenMP support for LLVM). It's done only
|
||||||
|
# for the native images, as OpenMP support in cross-build environment is
|
||||||
|
# tricky for LLVM.
|
||||||
|
&& (${APT_INSTALL} libomp-${LLVM_VERSION}-dev \
|
||||||
|
|| echo "OpenMP not available on this platform.") \
|
||||||
|
&& ${APT_CLEANUP}
|
||||||
|
|
||||||
|
# The following targets differ in BASE_IMAGE.
|
||||||
|
FROM native-base AS linux-386
|
||||||
|
FROM native-base AS linux-amd64
|
||||||
|
FROM native-base AS linux-arm-v5
|
||||||
|
FROM native-base AS linux-arm-v7
|
||||||
|
FROM native-base AS linux-arm64-v8
|
||||||
|
FROM native-base AS linux-mips64el
|
||||||
|
FROM native-base AS linux-mipsel
|
||||||
|
FROM native-base AS linux-ppc64le
|
||||||
|
FROM native-base AS linux-riscv64
|
||||||
|
|
||||||
|
# The following targets should have a common BASE_IMAGE.
|
||||||
|
FROM llvm-base AS linux-mips
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} gcc-multilib-mips-linux-gnu \
|
||||||
|
&& ${APT_CLEANUP}
|
||||||
|
|
||||||
|
FROM llvm-base AS linux-ppc
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} gcc-multilib-powerpc-linux-gnu \
|
||||||
|
&& ${APT_CLEANUP}
|
||||||
|
|
||||||
|
FROM llvm-base AS linux-ppc64
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} gcc-multilib-powerpc64-linux-gnu \
|
||||||
|
&& ${APT_CLEANUP}
|
||||||
|
|
||||||
|
# We use a common image for Windows i686 and amd64, as it doesn't make sense to
|
||||||
|
# make them separate in terms of build time and image size. After two runs they
|
||||||
|
# should use the same cache layers, so in the end it makes the collective image
|
||||||
|
# size smaller.
|
||||||
|
FROM base AS windows-base
|
||||||
|
ARG LLVM_MINGW_RELEASE=20240619
|
||||||
|
ARG LLVM_MINGW_VARIANT=llvm-mingw-${LLVM_MINGW_RELEASE}-msvcrt-ubuntu-20.04-x86_64
|
||||||
|
RUN ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} wget \
|
||||||
|
&& ${APT_CLEANUP} \
|
||||||
|
&& cd /opt \
|
||||||
|
&& wget https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_RELEASE}/${LLVM_MINGW_VARIANT}.tar.xz \
|
||||||
|
&& tar -xf ${LLVM_MINGW_VARIANT}.tar.xz \
|
||||||
|
&& rm -f ${LLVM_MINGW_VARIANT}.tar.xz
|
||||||
|
ENV PATH=${PATH}:/opt/${LLVM_MINGW_VARIANT}/bin
|
||||||
|
|
||||||
|
FROM windows-base AS windows-x86-base
|
||||||
|
RUN dpkg --add-architecture i386 \
|
||||||
|
&& ${APT_UPDATE} \
|
||||||
|
&& ${APT_INSTALL} \
|
||||||
|
gcc-mingw-w64-i686 \
|
||||||
|
gcc-mingw-w64-x86-64 \
|
||||||
|
mingw-w64-tools \
|
||||||
|
procps \
|
||||||
|
wine \
|
||||||
|
wine32 \
|
||||||
|
wine64 \
|
||||||
|
&& ${APT_CLEANUP} \
|
||||||
|
# Inspired by https://code.videolan.org/videolan/docker-images
|
||||||
|
&& wine wineboot --init \
|
||||||
|
&& while pgrep wineserver > /dev/null; do \
|
||||||
|
echo "waiting ..."; \
|
||||||
|
sleep 1; \
|
||||||
|
done \
|
||||||
|
&& rm -rf /tmp/wine-*
|
||||||
|
|
||||||
|
FROM windows-x86-base AS windows-686
|
||||||
|
FROM windows-x86-base AS windows-amd64
|
||||||
|
|
||||||
|
# aarch64 image requires linaro/wine-arm64 as a base.
|
||||||
|
FROM windows-base AS windows-arm64-v8
|
||||||
|
RUN wine-arm64 wineboot --init \
|
||||||
|
&& while pgrep wineserver > /dev/null; do \
|
||||||
|
echo "waiting ..."; \
|
||||||
|
sleep 1; \
|
||||||
|
done \
|
||||||
|
&& rm -rf /tmp/wine-*
|
4
.gitlab-ci.d/01-docker/target-env/linux-386.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-386.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/386
|
||||||
|
BASE_IMAGE=docker.io/i386/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-amd64.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-amd64.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/amd64
|
||||||
|
BASE_IMAGE=docker.io/amd64/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-arm-v5.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-arm-v5.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/arm/v5
|
||||||
|
BASE_IMAGE=docker.io/arm32v5/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-arm-v7.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-arm-v7.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/arm/v7
|
||||||
|
BASE_IMAGE=docker.io/arm32v7/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-arm64-v8.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-arm64-v8.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/arm64/v8
|
||||||
|
BASE_IMAGE=docker.io/arm64v8/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-mips.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-mips.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/amd64
|
||||||
|
BASE_IMAGE=docker.io/amd64/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-mips64el.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-mips64el.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/mips64el
|
||||||
|
BASE_IMAGE=docker.io/mips64le/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-mipsel.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-mipsel.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/mipsel
|
||||||
|
BASE_IMAGE=docker.io/serenitycode/debian-debootstrap
|
||||||
|
BASE_IMAGE_TAG=mipsel-bookworm-slim
|
||||||
|
LLVM_VERSION=14
|
1
.gitlab-ci.d/01-docker/target-env/linux-ppc.env
Symbolic link
1
.gitlab-ci.d/01-docker/target-env/linux-ppc.env
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
linux-amd64.env
|
1
.gitlab-ci.d/01-docker/target-env/linux-ppc64.env
Symbolic link
1
.gitlab-ci.d/01-docker/target-env/linux-ppc64.env
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
linux-amd64.env
|
4
.gitlab-ci.d/01-docker/target-env/linux-ppc64le.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-ppc64le.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/ppc64le
|
||||||
|
BASE_IMAGE=docker.io/ppc64le/debian
|
||||||
|
BASE_IMAGE_TAG=bookworm-slim
|
||||||
|
LLVM_VERSION=16
|
4
.gitlab-ci.d/01-docker/target-env/linux-riscv64.env
Normal file
4
.gitlab-ci.d/01-docker/target-env/linux-riscv64.env
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
DOCKER_PLATFORM=linux/riscv64
|
||||||
|
BASE_IMAGE=docker.io/riscv64/debian
|
||||||
|
BASE_IMAGE_TAG=sid-slim
|
||||||
|
LLVM_VERSION=18
|
1
.gitlab-ci.d/01-docker/target-env/windows-686.env
Symbolic link
1
.gitlab-ci.d/01-docker/target-env/windows-686.env
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
linux-amd64.env
|
1
.gitlab-ci.d/01-docker/target-env/windows-amd64.env
Symbolic link
1
.gitlab-ci.d/01-docker/target-env/windows-amd64.env
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
linux-amd64.env
|
3
.gitlab-ci.d/01-docker/target-env/windows-arm64-v8.env
Normal file
3
.gitlab-ci.d/01-docker/target-env/windows-arm64-v8.env
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
DOCKER_PLATFORM=linux/amd64
|
||||||
|
BASE_IMAGE=docker.io/linaro/wine-arm64
|
||||||
|
BASE_IMAGE_TAG=latest
|
107
.gitlab-ci.d/02-build.yml
Normal file
107
.gitlab-ci.d/02-build.yml
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
# Build stage
|
||||||
|
#
|
||||||
|
# This stage builds pixman with enabled coverage for all supported
|
||||||
|
# architectures.
|
||||||
|
#
|
||||||
|
# Some targets don't support atomic profile update, so to decrease the number of
|
||||||
|
# gcov errors, they need to be built without OpenMP (single threaded) by adding
|
||||||
|
# `-Dopenmp=disabled` Meson argument.
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Used in test stage as well.
|
||||||
|
BUILD_DIR: build-${TOOLCHAIN}
|
||||||
|
|
||||||
|
# Applicable to all build targets.
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-386
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-amd64
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm-v5
|
||||||
|
qemu_cpu: arm1136
|
||||||
|
# Disable coverage, as the tests take too long to run with a single thread.
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm-v7
|
||||||
|
qemu_cpu: max
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm64-v8
|
||||||
|
qemu_cpu: max
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mips
|
||||||
|
toolchain: [gnu]
|
||||||
|
qemu_cpu: 74Kf
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
# TODO: Merge with the one above once the following issue is resolved:
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/issues/105).
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mips
|
||||||
|
toolchain: [llvm]
|
||||||
|
qemu_cpu: 74Kf
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mips64el
|
||||||
|
qemu_cpu: Loongson-3A4000
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mipsel
|
||||||
|
toolchain: [gnu]
|
||||||
|
qemu_cpu: 74Kf
|
||||||
|
# Disable coverage, as the tests take too long to run with a single thread.
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
# TODO: Merge with the one above once the following issue is resolved:
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/issues/105).
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mipsel
|
||||||
|
toolchain: [llvm]
|
||||||
|
qemu_cpu: 74Kf
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc
|
||||||
|
qemu_cpu: g4
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc64
|
||||||
|
qemu_cpu: ppc64
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc64le
|
||||||
|
qemu_cpu: power10
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-riscv64
|
||||||
|
qemu_cpu: rv64
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: windows-686
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: windows-amd64
|
||||||
|
enable_gnu_coverage: false
|
||||||
|
- local: .gitlab-ci.d/templates/build.yml
|
||||||
|
inputs:
|
||||||
|
target: windows-arm64-v8
|
||||||
|
toolchain: [llvm] # GNU toolchain doesn't seem to support Windows on ARM.
|
||||||
|
qemu_cpu: max
|
||||||
|
enable_gnu_coverage: false
|
175
.gitlab-ci.d/03-test.yml
Normal file
175
.gitlab-ci.d/03-test.yml
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
# Test stage
|
||||||
|
#
|
||||||
|
# This stage executes the test suite for pixman for all architectures in
|
||||||
|
# different configurations. Build and test is split, as some architectures can
|
||||||
|
# have different QEMU configuration or have multiple supported pixman backends,
|
||||||
|
# which are executed as job matrix.
|
||||||
|
#
|
||||||
|
# Mind that `PIXMAN_ENABLE` variable in matrix runs does nothing, but it looks
|
||||||
|
# better in CI to indicate what is actually being tested.
|
||||||
|
#
|
||||||
|
# Some emulated targets are really slow or cannot be run in multithreaded mode
|
||||||
|
# (mipsel, arm-v5). Thus coverage reporting is disabled for them.
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Used in summary stage as well.
|
||||||
|
COVERAGE_BASE_DIR: coverage
|
||||||
|
COVERAGE_OUT: ${COVERAGE_BASE_DIR}/${CI_JOB_ID}
|
||||||
|
TEST_NAME: "" # Allow to specify a set of tests to run with run variables.
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-386
|
||||||
|
toolchain: [gnu]
|
||||||
|
pixman_disable:
|
||||||
|
- "sse2 ssse3" # Testing "mmx"
|
||||||
|
- "mmx ssse3" # Testing "sse2"
|
||||||
|
- "mmx sse2" # Testing "ssse3"
|
||||||
|
# TODO: Merge up after resolving
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/issues/106
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-386
|
||||||
|
toolchain: [llvm]
|
||||||
|
pixman_disable:
|
||||||
|
# Same as above.
|
||||||
|
- "sse2 ssse3"
|
||||||
|
- "mmx ssse3"
|
||||||
|
- "mmx sse2"
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-amd64
|
||||||
|
pixman_disable:
|
||||||
|
- ""
|
||||||
|
- "fast"
|
||||||
|
- "wholeops"
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm-v5
|
||||||
|
toolchain: [gnu]
|
||||||
|
qemu_cpu: [arm1136]
|
||||||
|
pixman_disable: ["arm-neon"] # Test only arm-simd.
|
||||||
|
timeout: 3h
|
||||||
|
test_timeout_multiplier: 40
|
||||||
|
# TODO: Merge up after resolving
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/issues/107
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm-v5
|
||||||
|
toolchain: [llvm]
|
||||||
|
qemu_cpu: [arm1136]
|
||||||
|
pixman_disable: ["arm-neon"] # Test only arm-simd.
|
||||||
|
timeout: 3h
|
||||||
|
test_timeout_multiplier: 40
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm-v7
|
||||||
|
qemu_cpu: [max]
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-arm64-v8
|
||||||
|
qemu_cpu: [max]
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mips
|
||||||
|
toolchain: [gnu] # TODO: Add llvm once the build is fixed.
|
||||||
|
qemu_cpu: [74Kf]
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true # Some tests seem to fail.
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mips64el
|
||||||
|
toolchain: [gnu]
|
||||||
|
qemu_cpu: [Loongson-3A4000]
|
||||||
|
# TODO: Merge up after resolving
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/issues/108
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mips64el
|
||||||
|
toolchain: [llvm]
|
||||||
|
qemu_cpu: [Loongson-3A4000]
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-mipsel
|
||||||
|
toolchain: [gnu] # TODO: Add llvm once the build is fixed.
|
||||||
|
qemu_cpu: [74Kf]
|
||||||
|
timeout: 2h
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc
|
||||||
|
qemu_cpu: [g4]
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true # SIGILL for some tests
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc64
|
||||||
|
qemu_cpu: [ppc64]
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true # SIGSEGV for some tests
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc64le
|
||||||
|
toolchain: [gnu]
|
||||||
|
qemu_cpu: [power10]
|
||||||
|
# TODO: Merge up after resolving
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/issues/109
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-ppc64le
|
||||||
|
toolchain: [llvm]
|
||||||
|
qemu_cpu: [power10]
|
||||||
|
job_name_prefix: "."
|
||||||
|
job_name_suffix: ":failing"
|
||||||
|
allow_failure: true
|
||||||
|
retry: 0
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: linux-riscv64
|
||||||
|
qemu_cpu:
|
||||||
|
# Test on target without RVV (verify no autovectorization).
|
||||||
|
- rv64,v=false
|
||||||
|
# Test correctness for different VLENs.
|
||||||
|
- rv64,v=true,vext_spec=v1.0,vlen=128,elen=64
|
||||||
|
- rv64,v=true,vext_spec=v1.0,vlen=256,elen=64
|
||||||
|
- rv64,v=true,vext_spec=v1.0,vlen=512,elen=64
|
||||||
|
- rv64,v=true,vext_spec=v1.0,vlen=1024,elen=64
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: windows-686
|
||||||
|
pixman_disable:
|
||||||
|
# The same as for linux-386.
|
||||||
|
- "sse2 ssse3"
|
||||||
|
- "mmx ssse3"
|
||||||
|
- "mmx sse2"
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: windows-amd64
|
||||||
|
pixman_disable:
|
||||||
|
# The same as for linux-amd64.
|
||||||
|
- ""
|
||||||
|
- "fast"
|
||||||
|
- "wholeops"
|
||||||
|
- local: .gitlab-ci.d/templates/test.yml
|
||||||
|
inputs:
|
||||||
|
target: windows-arm64-v8
|
||||||
|
toolchain: [llvm]
|
||||||
|
qemu_cpu: [max]
|
47
.gitlab-ci.d/04-summary.yml
Normal file
47
.gitlab-ci.d/04-summary.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# Summary stage
|
||||||
|
#
|
||||||
|
# This stage takes coverage reports from test runs for all architectures, and
|
||||||
|
# merges it into a single report, with GitLab visualization. There is also an
|
||||||
|
# HTML report generated as a separate artifact.
|
||||||
|
|
||||||
|
summary:
|
||||||
|
extends: .target:all
|
||||||
|
stage: summary
|
||||||
|
variables:
|
||||||
|
TARGET: linux-amd64
|
||||||
|
COVERAGE_SUMMARY_DIR: ${COVERAGE_BASE_DIR}/summary
|
||||||
|
needs:
|
||||||
|
- job: test:linux-386
|
||||||
|
optional: true
|
||||||
|
- job: test:linux-amd64
|
||||||
|
optional: true
|
||||||
|
- job: test:linux-arm-v7
|
||||||
|
optional: true
|
||||||
|
- job: test:linux-arm64-v8
|
||||||
|
optional: true
|
||||||
|
- job: test:linux-mips64el
|
||||||
|
optional: true
|
||||||
|
- job: test:linux-ppc64le
|
||||||
|
optional: true
|
||||||
|
- job: test:linux-riscv64
|
||||||
|
optional: true
|
||||||
|
script:
|
||||||
|
- echo "Input coverage reports:" && ls ${COVERAGE_BASE_DIR}/*.json || (echo "No coverage reports available." && exit)
|
||||||
|
- |
|
||||||
|
args=( )
|
||||||
|
for f in ${COVERAGE_BASE_DIR}/*.json; do
|
||||||
|
args+=( "-a" "$f" )
|
||||||
|
done
|
||||||
|
- mkdir -p ${COVERAGE_SUMMARY_DIR}
|
||||||
|
- gcovr "${args[@]}"
|
||||||
|
--cobertura-pretty --cobertura ${COVERAGE_SUMMARY_DIR}/coverage.xml
|
||||||
|
--html-details ${COVERAGE_SUMMARY_DIR}/coverage.html
|
||||||
|
--txt --print-summary
|
||||||
|
coverage: '/^TOTAL.*\s+(\d+\%)$/'
|
||||||
|
artifacts:
|
||||||
|
reports:
|
||||||
|
coverage_report:
|
||||||
|
coverage_format: cobertura
|
||||||
|
path: ${COVERAGE_SUMMARY_DIR}/coverage.xml
|
||||||
|
paths:
|
||||||
|
- ${COVERAGE_SUMMARY_DIR}/
|
1
.gitlab-ci.d/meson-cross/linux-386-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-386-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu.meson
|
1
.gitlab-ci.d/meson-cross/linux-386-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-386-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm.meson
|
1
.gitlab-ci.d/meson-cross/linux-amd64-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-amd64-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu.meson
|
1
.gitlab-ci.d/meson-cross/linux-amd64-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-amd64-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm.meson
|
1
.gitlab-ci.d/meson-cross/linux-arm-v5-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-arm-v5-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu-noopenmp.meson
|
1
.gitlab-ci.d/meson-cross/linux-arm-v5-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-arm-v5-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm-noopenmp.meson
|
1
.gitlab-ci.d/meson-cross/linux-arm-v7-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-arm-v7-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu.meson
|
1
.gitlab-ci.d/meson-cross/linux-arm-v7-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-arm-v7-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm.meson
|
1
.gitlab-ci.d/meson-cross/linux-arm64-v8-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-arm64-v8-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu.meson
|
1
.gitlab-ci.d/meson-cross/linux-arm64-v8-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-arm64-v8-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm.meson
|
11
.gitlab-ci.d/meson-cross/linux-mips-gnu.meson
Normal file
11
.gitlab-ci.d/meson-cross/linux-mips-gnu.meson
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['mips-linux-gnu-gcc', '-DCI_HAS_ALL_MIPS_CPU_FEATURES']
|
||||||
|
ar = 'mips-linux-gnu-ar'
|
||||||
|
strip = 'mips-linux-gnu-strip'
|
||||||
|
exe_wrapper = ['qemu-mips', '-L', '/usr/mips-linux-gnu/']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'linux'
|
||||||
|
cpu_family = 'mips32'
|
||||||
|
cpu = 'mips32'
|
||||||
|
endian = 'big'
|
14
.gitlab-ci.d/meson-cross/linux-mips-llvm.meson
Normal file
14
.gitlab-ci.d/meson-cross/linux-mips-llvm.meson
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['clang', '-target', 'mips-linux-gnu', '-fPIC', '-DCI_HAS_ALL_MIPS_CPU_FEATURES']
|
||||||
|
ar = 'llvm-ar'
|
||||||
|
strip = 'llvm-strip'
|
||||||
|
exe_wrapper = ['qemu-mips', '-L', '/usr/mips-linux-gnu/']
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
c_link_args = ['-target', 'mips-linux-gnu', '-fuse-ld=lld']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'linux'
|
||||||
|
cpu_family = 'mips32'
|
||||||
|
cpu = 'mips32'
|
||||||
|
endian = 'big'
|
8
.gitlab-ci.d/meson-cross/linux-mips64el-gnu.meson
Normal file
8
.gitlab-ci.d/meson-cross/linux-mips64el-gnu.meson
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['gcc', '-DCI_HAS_ALL_MIPS_CPU_FEATURES']
|
||||||
|
ar = 'ar'
|
||||||
|
strip = 'strip'
|
||||||
|
pkg-config = 'pkg-config'
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
mips-dspr2 = 'disabled'
|
8
.gitlab-ci.d/meson-cross/linux-mips64el-llvm.meson
Normal file
8
.gitlab-ci.d/meson-cross/linux-mips64el-llvm.meson
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['clang', '-DCI_HAS_ALL_MIPS_CPU_FEATURES']
|
||||||
|
ar = 'llvm-ar'
|
||||||
|
strip = 'llvm-strip'
|
||||||
|
pkg-config = 'pkg-config'
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
mips-dspr2 = 'disabled'
|
1
.gitlab-ci.d/meson-cross/linux-mipsel-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-mipsel-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu-noopenmp.meson
|
1
.gitlab-ci.d/meson-cross/linux-mipsel-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-mipsel-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm-noopenmp.meson
|
11
.gitlab-ci.d/meson-cross/linux-ppc-gnu.meson
Normal file
11
.gitlab-ci.d/meson-cross/linux-ppc-gnu.meson
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'powerpc-linux-gnu-gcc'
|
||||||
|
ar = 'powerpc-linux-gnu-ar'
|
||||||
|
strip = 'powerpc-linux-gnu-strip'
|
||||||
|
exe_wrapper = ['qemu-ppc', '-L', '/usr/powerpc-linux-gnu']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'linux'
|
||||||
|
cpu_family = 'ppc'
|
||||||
|
cpu = 'ppc'
|
||||||
|
endian = 'big'
|
15
.gitlab-ci.d/meson-cross/linux-ppc-llvm.meson
Normal file
15
.gitlab-ci.d/meson-cross/linux-ppc-llvm.meson
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['clang', '-target', 'powerpc-linux-gnu']
|
||||||
|
ar = 'llvm-ar'
|
||||||
|
strip = 'llvm-strip'
|
||||||
|
exe_wrapper = ['qemu-ppc', '-L', '/usr/powerpc-linux-gnu/']
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
# We cannot use LLD, as it doesn't support big-endian PPC.
|
||||||
|
c_link_args = ['-target', 'powerpc-linux-gnu']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'linux'
|
||||||
|
cpu_family = 'ppc'
|
||||||
|
cpu = 'ppc'
|
||||||
|
endian = 'big'
|
11
.gitlab-ci.d/meson-cross/linux-ppc64-gnu.meson
Normal file
11
.gitlab-ci.d/meson-cross/linux-ppc64-gnu.meson
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'powerpc64-linux-gnu-gcc'
|
||||||
|
ar = 'powerpc64-linux-gnu-ar'
|
||||||
|
strip = 'powerpc64-linux-gnu-strip'
|
||||||
|
exe_wrapper = ['qemu-ppc64', '-L', '/usr/powerpc64-linux-gnu/']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'linux'
|
||||||
|
cpu_family = 'ppc64'
|
||||||
|
cpu = 'ppc64'
|
||||||
|
endian = 'big'
|
15
.gitlab-ci.d/meson-cross/linux-ppc64-llvm.meson
Normal file
15
.gitlab-ci.d/meson-cross/linux-ppc64-llvm.meson
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['clang', '-target', 'powerpc64-linux-gnu']
|
||||||
|
ar = 'llvm-ar'
|
||||||
|
strip = 'llvm-strip'
|
||||||
|
exe_wrapper = ['qemu-ppc64', '-L', '/usr/powerpc64-linux-gnu/']
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
# We cannot use LLD, as it doesn't support big-endian PPC.
|
||||||
|
c_link_args = ['-target', 'powerpc64-linux-gnu']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'linux'
|
||||||
|
cpu_family = 'ppc64'
|
||||||
|
cpu = 'ppc64'
|
||||||
|
endian = 'big'
|
1
.gitlab-ci.d/meson-cross/linux-ppc64le-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-ppc64le-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu.meson
|
1
.gitlab-ci.d/meson-cross/linux-ppc64le-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-ppc64le-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm.meson
|
1
.gitlab-ci.d/meson-cross/linux-riscv64-gnu.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-riscv64-gnu.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-gnu.meson
|
1
.gitlab-ci.d/meson-cross/linux-riscv64-llvm.meson
Symbolic link
1
.gitlab-ci.d/meson-cross/linux-riscv64-llvm.meson
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
native-llvm.meson
|
8
.gitlab-ci.d/meson-cross/native-gnu-noopenmp.meson
Normal file
8
.gitlab-ci.d/meson-cross/native-gnu-noopenmp.meson
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['gcc', '-DCI_HAS_ALL_MIPS_CPU_FEATURES']
|
||||||
|
ar = 'ar'
|
||||||
|
strip = 'strip'
|
||||||
|
pkg-config = 'pkg-config'
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
openmp = 'disabled'
|
5
.gitlab-ci.d/meson-cross/native-gnu.meson
Normal file
5
.gitlab-ci.d/meson-cross/native-gnu.meson
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'gcc'
|
||||||
|
ar = 'ar'
|
||||||
|
strip = 'strip'
|
||||||
|
pkg-config = 'pkg-config'
|
8
.gitlab-ci.d/meson-cross/native-llvm-noopenmp.meson
Normal file
8
.gitlab-ci.d/meson-cross/native-llvm-noopenmp.meson
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[binaries]
|
||||||
|
c = ['clang', '-DCI_HAS_ALL_MIPS_CPU_FEATURES']
|
||||||
|
ar = 'llvm-ar'
|
||||||
|
strip = 'llvm-strip'
|
||||||
|
pkg-config = 'pkg-config'
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
openmp = 'disabled'
|
5
.gitlab-ci.d/meson-cross/native-llvm.meson
Normal file
5
.gitlab-ci.d/meson-cross/native-llvm.meson
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'clang'
|
||||||
|
ar = 'llvm-ar'
|
||||||
|
strip = 'llvm-strip'
|
||||||
|
pkg-config = 'pkg-config'
|
18
.gitlab-ci.d/meson-cross/windows-686-gnu.meson
Normal file
18
.gitlab-ci.d/meson-cross/windows-686-gnu.meson
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'i686-w64-mingw32-gcc'
|
||||||
|
ar = 'i686-w64-mingw32-ar'
|
||||||
|
strip = 'i686-w64-mingw32-strip'
|
||||||
|
windres = 'i686-w64-mingw32-windres'
|
||||||
|
exe_wrapper = 'wine'
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
c_link_args = ['-static-libgcc']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86'
|
||||||
|
cpu = 'i686'
|
||||||
|
endian = 'little'
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
openmp = 'disabled'
|
18
.gitlab-ci.d/meson-cross/windows-686-llvm.meson
Normal file
18
.gitlab-ci.d/meson-cross/windows-686-llvm.meson
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'i686-w64-mingw32-clang'
|
||||||
|
ar = 'i686-w64-mingw32-llvm-ar'
|
||||||
|
strip = 'i686-w64-mingw32-strip'
|
||||||
|
windres = 'i686-w64-mingw32-windres'
|
||||||
|
exe_wrapper = 'wine'
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
c_link_args = ['-static']
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
openmp = 'disabled'
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86'
|
||||||
|
cpu = 'i686'
|
||||||
|
endian = 'little'
|
15
.gitlab-ci.d/meson-cross/windows-amd64-gnu.meson
Normal file
15
.gitlab-ci.d/meson-cross/windows-amd64-gnu.meson
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'x86_64-w64-mingw32-gcc'
|
||||||
|
ar = 'x86_64-w64-mingw32-ar'
|
||||||
|
strip = 'x86_64-w64-mingw32-strip'
|
||||||
|
windres = 'x86_64-w64-mingw32-windres'
|
||||||
|
exe_wrapper = 'wine'
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
c_link_args = ['-static-libgcc']
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86_64'
|
||||||
|
cpu = 'x86_64'
|
||||||
|
endian = 'little'
|
20
.gitlab-ci.d/meson-cross/windows-amd64-llvm.meson
Normal file
20
.gitlab-ci.d/meson-cross/windows-amd64-llvm.meson
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'x86_64-w64-mingw32-clang'
|
||||||
|
ar = 'x86_64-w64-mingw32-llvm-ar'
|
||||||
|
strip = 'x86_64-w64-mingw32-strip'
|
||||||
|
windres = 'x86_64-w64-mingw32-windres'
|
||||||
|
exe_wrapper = 'wine'
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
# Static linking is a workaround around `libwinpthread-1` not being discovered correctly.
|
||||||
|
c_link_args = ['-static']
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
# OpenMP is disabled as it is not being discovered correctly during tests.
|
||||||
|
openmp = 'disabled'
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'x86_64'
|
||||||
|
cpu = 'x86_64'
|
||||||
|
endian = 'little'
|
18
.gitlab-ci.d/meson-cross/windows-arm64-v8-llvm.meson
Normal file
18
.gitlab-ci.d/meson-cross/windows-arm64-v8-llvm.meson
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[binaries]
|
||||||
|
c = 'aarch64-w64-mingw32-clang'
|
||||||
|
ar = 'aarch64-w64-mingw32-llvm-ar'
|
||||||
|
strip = 'aarch64-w64-mingw32-strip'
|
||||||
|
windres = 'aarch64-w64-mingw32-windres'
|
||||||
|
exe_wrapper = 'wine-arm64'
|
||||||
|
|
||||||
|
[built-in options]
|
||||||
|
c_link_args = ['-static']
|
||||||
|
|
||||||
|
[project options]
|
||||||
|
openmp = 'disabled'
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = 'windows'
|
||||||
|
cpu_family = 'aarch64'
|
||||||
|
cpu = 'aarch64'
|
||||||
|
endian = 'little'
|
65
.gitlab-ci.d/pixman-project.yml
Normal file
65
.gitlab-ci.d/pixman-project.yml
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# This file contains the set of jobs run by the pixman project:
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/pipelines
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- docker
|
||||||
|
- build
|
||||||
|
- test
|
||||||
|
- summary
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Make it possible to change RUNNER_TAG from GitLab variables. The default
|
||||||
|
# `kvm` tag has been tested with FDO infrastructure.
|
||||||
|
RUNNER_TAG: kvm
|
||||||
|
|
||||||
|
# Docker image global configuration.
|
||||||
|
DOCKER_TAG: latest
|
||||||
|
DOCKER_IMAGE_NAME: registry.freedesktop.org/pixman/pixman/pixman:${DOCKER_TAG}
|
||||||
|
|
||||||
|
# Execute to load a target-specific environment.
|
||||||
|
LOAD_TARGET_ENV: source .gitlab-ci.d/01-docker/target-env/${TARGET}.env
|
||||||
|
|
||||||
|
# Enable/disable specific targets for code and platform coverage targets.
|
||||||
|
ACTIVE_TARGET_PATTERN: '/linux-386|linux-amd64|linux-arm-v5|linux-arm-v7|linux-arm64-v8|linux-mips|linux-mips64el|linux-mipsel|linux-ppc|linux-ppc64|linux-ppc64le|linux-riscv64|windows-686|windows-amd64|windows-arm64-v8/i'
|
||||||
|
|
||||||
|
workflow:
|
||||||
|
rules:
|
||||||
|
# Use modified Docker image if building in MR and Docker image is affected
|
||||||
|
# by the MR.
|
||||||
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
||||||
|
changes:
|
||||||
|
paths:
|
||||||
|
- .gitlab-ci.d/01-docker.yml
|
||||||
|
- .gitlab-ci.d/01-docker/**/*
|
||||||
|
variables:
|
||||||
|
DOCKER_TAG: $CI_COMMIT_REF_SLUG
|
||||||
|
DOCKER_IMAGE_NAME: ${CI_REGISTRY_IMAGE}/pixman:${DOCKER_TAG}
|
||||||
|
|
||||||
|
# A standard set of GitLab CI triggers (i.e., MR, schedule, default branch,
|
||||||
|
# and tag).
|
||||||
|
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
||||||
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
|
||||||
|
when: never
|
||||||
|
- if: $CI_PIPELINE_SOURCE == 'schedule'
|
||||||
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
||||||
|
- if: $CI_COMMIT_BRANCH
|
||||||
|
- if: $CI_COMMIT_TAG
|
||||||
|
|
||||||
|
auto_cancel:
|
||||||
|
on_new_commit: conservative
|
||||||
|
on_job_failure: all
|
||||||
|
|
||||||
|
default:
|
||||||
|
tags:
|
||||||
|
- $RUNNER_TAG
|
||||||
|
|
||||||
|
# Retry in case the runner is misconfigured for multi-arch builds or some
|
||||||
|
# random unexpected runner error occurs (it happened during testing).
|
||||||
|
retry: 1
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: "/.gitlab-ci.d/templates/targets.yml"
|
||||||
|
- local: "/.gitlab-ci.d/01-docker.yml"
|
||||||
|
- local: "/.gitlab-ci.d/02-build.yml"
|
||||||
|
- local: "/.gitlab-ci.d/03-test.yml"
|
||||||
|
- local: "/.gitlab-ci.d/04-summary.yml"
|
80
.gitlab-ci.d/templates/build.yml
Normal file
80
.gitlab-ci.d/templates/build.yml
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
spec:
|
||||||
|
inputs:
|
||||||
|
target:
|
||||||
|
description:
|
||||||
|
Build target in form of "OS-ARCH" pair (e.g., linux-amd64). Mostly the
|
||||||
|
same as platform string for Docker but with a hyphen instead of slash.
|
||||||
|
toolchain:
|
||||||
|
description:
|
||||||
|
An array of toolchains to test with. Each toolchain should have an
|
||||||
|
appropriate Meson cross file.
|
||||||
|
type: array
|
||||||
|
default: [gnu, llvm]
|
||||||
|
qemu_cpu:
|
||||||
|
description:
|
||||||
|
QEMU_CPU environmental variable used by Docker (which uses QEMU
|
||||||
|
underneath). It is not used by x86 targets, as they are executed
|
||||||
|
natively on the host.
|
||||||
|
default: ""
|
||||||
|
enable_gnu_coverage:
|
||||||
|
description:
|
||||||
|
Enable coverage build flags. It can be later used to compile a coverage
|
||||||
|
report for all the jobs. Should be enabled only for native build
|
||||||
|
environments as they have all the optional dependencies, and are the
|
||||||
|
most reliable and uniform (so disable for cross environments).
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
job_name_prefix:
|
||||||
|
description:
|
||||||
|
Additional prefix for the job name. Can be used to disable a job with a
|
||||||
|
"." prefix.
|
||||||
|
default: ""
|
||||||
|
job_name_suffix:
|
||||||
|
description:
|
||||||
|
Additional suffix for the job name. Can be used to prevent job
|
||||||
|
duplication for jobs for the same target.
|
||||||
|
default: ""
|
||||||
|
allow_failure:
|
||||||
|
description:
|
||||||
|
Set the `allow_failure` flag for jobs that are expected to fail.
|
||||||
|
Remember to set `retry` argument to 0 to prevent unnecessary retries.
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
retry:
|
||||||
|
description:
|
||||||
|
Set the `retry` flag for a job. Usually used together with
|
||||||
|
`allow_failure`.
|
||||||
|
type: number
|
||||||
|
default: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
"$[[ inputs.job_name_prefix ]]build:$[[ inputs.target ]]$[[ inputs.job_name_suffix ]]":
|
||||||
|
extends: .target:all
|
||||||
|
stage: build
|
||||||
|
allow_failure: $[[ inputs.allow_failure ]]
|
||||||
|
retry: $[[ inputs.retry ]]
|
||||||
|
needs:
|
||||||
|
- job: docker
|
||||||
|
optional: true
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
- TARGET: $[[ inputs.target ]]
|
||||||
|
variables:
|
||||||
|
TARGET: $[[ inputs.target ]]
|
||||||
|
QEMU_CPU: $[[ inputs.qemu_cpu ]]
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
- TOOLCHAIN: $[[ inputs.toolchain ]]
|
||||||
|
script:
|
||||||
|
- |
|
||||||
|
if [ "$[[ inputs.enable_gnu_coverage ]]" == "true" ] && [ "${TOOLCHAIN}" == "gnu" ]; then
|
||||||
|
COV_C_ARGS=-fprofile-update=atomic
|
||||||
|
COV_MESON_BUILD_ARGS=-Db_coverage=true
|
||||||
|
fi
|
||||||
|
- meson setup ${BUILD_DIR}
|
||||||
|
--cross-file .gitlab-ci.d/meson-cross/${TARGET}-${TOOLCHAIN}.meson
|
||||||
|
-Dc_args="${COV_C_ARGS}" ${COV_MESON_BUILD_ARGS}
|
||||||
|
- meson compile -C ${BUILD_DIR}
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ${BUILD_DIR}/
|
9
.gitlab-ci.d/templates/targets.yml
Normal file
9
.gitlab-ci.d/templates/targets.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# General target templates.
|
||||||
|
|
||||||
|
.target:all:
|
||||||
|
image:
|
||||||
|
name: $DOCKER_IMAGE_NAME-$TARGET
|
||||||
|
rules:
|
||||||
|
- if: "$TARGET =~ $ACTIVE_TARGET_PATTERN"
|
||||||
|
before_script:
|
||||||
|
- ${LOAD_TARGET_ENV}
|
112
.gitlab-ci.d/templates/test.yml
Normal file
112
.gitlab-ci.d/templates/test.yml
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
spec:
|
||||||
|
inputs:
|
||||||
|
target:
|
||||||
|
description:
|
||||||
|
Build target in form of "OS-ARCH" pair (e.g., linux-amd64). Mostly the
|
||||||
|
same as platform string for Docker but with a hyphen instead of slash.
|
||||||
|
toolchain:
|
||||||
|
description:
|
||||||
|
An array of toolchains to test with. Each toolchain should have an
|
||||||
|
appropriate Meson cross file.
|
||||||
|
type: array
|
||||||
|
default: [gnu, llvm]
|
||||||
|
qemu_cpu:
|
||||||
|
description:
|
||||||
|
An array of QEMU_CPU environmental variables used as a job matrix
|
||||||
|
variable, and in turn by Docker (which uses QEMU underneath). It is not
|
||||||
|
used by x86 targets, as they are executed natively on the host.
|
||||||
|
type: array
|
||||||
|
default: [""]
|
||||||
|
pixman_disable:
|
||||||
|
description:
|
||||||
|
An array of PIXMAN_DISABLE targets used as a job matrix variable.
|
||||||
|
type: array
|
||||||
|
default: [""]
|
||||||
|
timeout:
|
||||||
|
description:
|
||||||
|
GitLab job timeout property. May need to be increased for slow
|
||||||
|
targets.
|
||||||
|
default: 1h
|
||||||
|
test_timeout_multiplier:
|
||||||
|
description:
|
||||||
|
Test timeout multiplier flag used for Meson test execution. May need to
|
||||||
|
be increased for slow targets.
|
||||||
|
type: number
|
||||||
|
default: 20
|
||||||
|
meson_testthreads:
|
||||||
|
description:
|
||||||
|
Sets MESON_TESTTHREADS environmental variable. For some platforms, the
|
||||||
|
tests should be executed one by one (without multithreading) to prevent
|
||||||
|
gcovr errors.
|
||||||
|
type: number
|
||||||
|
default: 0
|
||||||
|
gcovr_flags:
|
||||||
|
description:
|
||||||
|
Additional flags passed to gcovr tool.
|
||||||
|
default: ""
|
||||||
|
job_name_prefix:
|
||||||
|
description:
|
||||||
|
Additional prefix for the job name. Can be used to disable a job with a
|
||||||
|
"." prefix.
|
||||||
|
default: ""
|
||||||
|
job_name_suffix:
|
||||||
|
description:
|
||||||
|
Additional suffix for the job name. Can be used to prevent job
|
||||||
|
duplication for jobs for the same target.
|
||||||
|
default: ""
|
||||||
|
allow_failure:
|
||||||
|
description:
|
||||||
|
Set the `allow_failure` flag for jobs that are expected to fail.
|
||||||
|
Remember to set `retry` argument to 0 to prevent unnecessary retries.
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
retry:
|
||||||
|
description:
|
||||||
|
Set the `retry` flag for a job. Usually used together with
|
||||||
|
`allow_failure`.
|
||||||
|
type: number
|
||||||
|
default: 1
|
||||||
|
---
|
||||||
|
|
||||||
|
"$[[ inputs.job_name_prefix ]]test:$[[ inputs.target ]]$[[ inputs.job_name_suffix ]]":
|
||||||
|
extends: .target:all
|
||||||
|
stage: test
|
||||||
|
allow_failure: $[[ inputs.allow_failure ]]
|
||||||
|
retry: $[[ inputs.retry ]]
|
||||||
|
timeout: $[[ inputs.timeout ]]
|
||||||
|
needs:
|
||||||
|
- job: docker
|
||||||
|
optional: true
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
- TARGET: $[[ inputs.target ]]
|
||||||
|
- job: build:$[[ inputs.target ]]
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
- TOOLCHAIN: $[[ inputs.toolchain ]]
|
||||||
|
variables:
|
||||||
|
TARGET: $[[ inputs.target ]]
|
||||||
|
TEST_TIMEOUT_MULTIPLIER: $[[ inputs.test_timeout_multiplier ]]
|
||||||
|
GCOVR_FLAGS: $[[ inputs.gcovr_flags ]]
|
||||||
|
MESON_ARGS: -t ${TEST_TIMEOUT_MULTIPLIER} --no-rebuild -v ${TEST_NAME}
|
||||||
|
MESON_TESTTHREADS: $[[ inputs.meson_testthreads ]]
|
||||||
|
parallel:
|
||||||
|
matrix:
|
||||||
|
- TOOLCHAIN: $[[ inputs.toolchain ]]
|
||||||
|
PIXMAN_DISABLE: $[[ inputs.pixman_disable ]]
|
||||||
|
QEMU_CPU: $[[ inputs.qemu_cpu ]]
|
||||||
|
script:
|
||||||
|
- meson test -C ${BUILD_DIR} ${MESON_ARGS}
|
||||||
|
after_script:
|
||||||
|
- mkdir -p ${COVERAGE_OUT}
|
||||||
|
- gcovr ${GCOVR_FLAGS} -r ./ ${BUILD_DIR} -e ./subprojects
|
||||||
|
--json ${COVERAGE_OUT}.json
|
||||||
|
--html-details ${COVERAGE_OUT}/coverage.html
|
||||||
|
--print-summary || echo "No coverage data available."
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- ${BUILD_DIR}/meson-logs/testlog.txt
|
||||||
|
- ${COVERAGE_BASE_DIR}/
|
||||||
|
reports:
|
||||||
|
junit:
|
||||||
|
- ${BUILD_DIR}/meson-logs/testlog.junit.xml
|
16
.gitlab-ci.yml
Normal file
16
.gitlab-ci.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#
|
||||||
|
# This is the GitLab CI configuration file for the mainstream pixman project:
|
||||||
|
# https://gitlab.freedesktop.org/pixman/pixman/-/pipelines
|
||||||
|
#
|
||||||
|
# !!! DO NOT ADD ANY NEW CONFIGURATION TO THIS FILE !!!
|
||||||
|
#
|
||||||
|
# Only documentation or comments is accepted.
|
||||||
|
#
|
||||||
|
# To use a different set of jobs than the mainstream project, you need to set
|
||||||
|
# the location of your custom yml file at "custom CI/CD configuration path", on
|
||||||
|
# your GitLab CI namespace:
|
||||||
|
# https://docs.gitlab.com/ee/ci/pipelines/settings.html#custom-cicd-configuration-path
|
||||||
|
#
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: '/.gitlab-ci.d/pixman-project.yml'
|
23
CODING_STYLE
23
CODING_STYLE
@ -19,9 +19,6 @@ not
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Specific guidelines:
|
|
||||||
|
|
||||||
|
|
||||||
Indentation
|
Indentation
|
||||||
===========
|
===========
|
||||||
|
|
||||||
@ -93,7 +90,7 @@ or like this:
|
|||||||
* It extends over multiple lines
|
* It extends over multiple lines
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Generally comments should say things that is clear from the code
|
Generally comments should say things that aren't clear from the code
|
||||||
itself. If too many comments say obvious things, then people will just
|
itself. If too many comments say obvious things, then people will just
|
||||||
stop reading all comments, including the good ones.
|
stop reading all comments, including the good ones.
|
||||||
|
|
||||||
@ -152,21 +149,6 @@ Whitespace
|
|||||||
|
|
||||||
if (condition) foo (); else bar (); /* Yuck! */
|
if (condition) foo (); else bar (); /* Yuck! */
|
||||||
|
|
||||||
* Do eliminate trailing whitespace (space or tab characters) on any
|
|
||||||
line. Also, avoid putting initial or final blank lines into any
|
|
||||||
file, and never use multiple blank lines instead of a single blank
|
|
||||||
line.
|
|
||||||
|
|
||||||
* Do enable the default git pre-commit hook that detect trailing
|
|
||||||
whitespace for you and help you to avoid corrupting cairo's tree
|
|
||||||
with it. Do that as follows:
|
|
||||||
|
|
||||||
chmod a+x .git/hooks/pre-commit
|
|
||||||
|
|
||||||
* You might also find the git-stripspace utility helpful which acts as
|
|
||||||
a filter to remove trailing whitespace as well as initial, final,
|
|
||||||
and duplicate blank lines.
|
|
||||||
|
|
||||||
|
|
||||||
Function Definitions
|
Function Definitions
|
||||||
====================
|
====================
|
||||||
@ -174,7 +156,7 @@ Function Definitions
|
|||||||
Function definitions should take the following form:
|
Function definitions should take the following form:
|
||||||
|
|
||||||
void
|
void
|
||||||
my_function (argument)
|
my_function (int argument)
|
||||||
{
|
{
|
||||||
do_my_things ();
|
do_my_things ();
|
||||||
}
|
}
|
||||||
@ -214,3 +196,4 @@ popular editors:
|
|||||||
* vim:sw=4:sts=4:ts=8:tw=78:fo=tcroq:cindent:cino=\:0,(0
|
* vim:sw=4:sts=4:ts=8:tw=78:fo=tcroq:cindent:cino=\:0,(0
|
||||||
* vim:isk=a-z,A-Z,48-57,_,.,-,>
|
* vim:isk=a-z,A-Z,48-57,_,.,-,>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
80
COPYING
80
COPYING
@ -1,40 +1,42 @@
|
|||||||
The following is the 'standard copyright' agreed upon by most contributors,
|
The following is the MIT license, agreed upon by most contributors.
|
||||||
and is currently the canonical license, though a modification is currently
|
Copyright holders of new code should use this license statement where
|
||||||
under discussion. Copyright holders of new code should use this license
|
possible. They may also add themselves to the list below.
|
||||||
statement where possible, and append their name to this list.
|
|
||||||
|
|
||||||
Copyright 1987, 1988, 1989, 1998 The Open Group
|
/*
|
||||||
Copyright 1987, 1988, 1989 Digital Equipment Corporation
|
* Copyright 1987, 1988, 1989, 1998 The Open Group
|
||||||
Copyright 1999, 2004, 2008 Keith Packard
|
* Copyright 1987, 1988, 1989 Digital Equipment Corporation
|
||||||
Copyright 2000 SuSE, Inc.
|
* Copyright 1999, 2004, 2008 Keith Packard
|
||||||
Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
|
* Copyright 2000 SuSE, Inc.
|
||||||
Copyright 2004, 2005, 2007, 2008 Red Hat, Inc.
|
* Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
|
||||||
Copyright 2004 Nicholas Miell
|
* Copyright 2004, 2005, 2007, 2008, 2009, 2010 Red Hat, Inc.
|
||||||
Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
|
* Copyright 2004 Nicholas Miell
|
||||||
Copyright 2005 Trolltech AS
|
* Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
|
||||||
Copyright 2007 Luca Barbato
|
* Copyright 2005 Trolltech AS
|
||||||
Copyright 2008 Aaron Plattner, NVIDIA Corporation
|
* Copyright 2007 Luca Barbato
|
||||||
Copyright 2008 Rodrigo Kumpera
|
* Copyright 2008 Aaron Plattner, NVIDIA Corporation
|
||||||
Copyright 2008 André Tupinambá
|
* Copyright 2008 Rodrigo Kumpera
|
||||||
Copyright 2008 Mozilla Corporation
|
* Copyright 2008 André Tupinambá
|
||||||
Copyright 2008 Frederic Plourde
|
* Copyright 2008 Mozilla Corporation
|
||||||
Copyright 2009 Sun Microsystems, Inc.
|
* Copyright 2008 Frederic Plourde
|
||||||
|
* Copyright 2009, Oracle and/or its affiliates. All rights reserved.
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
* Copyright 2009, 2010 Nokia Corporation
|
||||||
copy of this software and associated documentation files (the "Software"),
|
*
|
||||||
to deal in the Software without restriction, including without limitation
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
* to deal in the Software without restriction, including without limitation
|
||||||
Software is furnished to do so, subject to the following conditions:
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
The above copyright notice and this permission notice (including the next
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
paragraph) shall be included in all copies or substantial portions of the
|
*
|
||||||
Software.
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
* Software.
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
*
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
DEALINGS IN THE SOFTWARE.
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
132
Makefile.am
132
Makefile.am
@ -1,132 +0,0 @@
|
|||||||
SUBDIRS = pixman test
|
|
||||||
|
|
||||||
pkgconfigdir=$(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA=pixman-1.pc
|
|
||||||
|
|
||||||
$(pkgconfig_DATA): pixman-1.pc.in
|
|
||||||
|
|
||||||
snapshot:
|
|
||||||
distdir="$(distdir)-`date '+%Y%m%d'`"; \
|
|
||||||
test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git rev-parse HEAD | cut -c 1-6`; \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist
|
|
||||||
|
|
||||||
GPGKEY=6FF7C1A8
|
|
||||||
USERNAME=$$USER
|
|
||||||
RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi)
|
|
||||||
RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org
|
|
||||||
RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/releases
|
|
||||||
RELEASE_CAIRO_URL = http://cairographics.org/releases
|
|
||||||
RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib
|
|
||||||
RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org
|
|
||||||
RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib
|
|
||||||
RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org
|
|
||||||
|
|
||||||
tar_gz = $(PACKAGE)-$(VERSION).tar.gz
|
|
||||||
tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2
|
|
||||||
|
|
||||||
sha1_tgz = $(tar_gz).sha1
|
|
||||||
md5_tgz = $(tar_gz).md5
|
|
||||||
|
|
||||||
sha1_tbz2 = $(tar_bz2).sha1
|
|
||||||
md5_tbz2 = $(tar_bz2).md5
|
|
||||||
|
|
||||||
gpg_file = $(sha1_tgz).asc
|
|
||||||
|
|
||||||
$(sha1_tgz): $(tar_gz)
|
|
||||||
sha1sum $^ > $@
|
|
||||||
|
|
||||||
$(md5_tgz): $(tar_gz)
|
|
||||||
md5sum $^ > $@
|
|
||||||
|
|
||||||
$(sha1_tbz2): $(tar_bz2)
|
|
||||||
sha1sum $^ > $@
|
|
||||||
|
|
||||||
$(md5_tbz2): $(tar_bz2)
|
|
||||||
md5sum $^ > $@
|
|
||||||
|
|
||||||
$(gpg_file): $(sha1_tgz)
|
|
||||||
@echo "Please enter your GPG password to sign the checksum."
|
|
||||||
gpg --armor --sign $^
|
|
||||||
|
|
||||||
HASHFILES = $(sha1_tgz) $(sha1_tbz2) $(md5_tgz) $(md5_tbz2)
|
|
||||||
|
|
||||||
release-verify-newer:
|
|
||||||
@echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..."
|
|
||||||
@ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \
|
|
||||||
|| (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \
|
|
||||||
&& echo "Refusing to try to generate a new release of the same name." \
|
|
||||||
&& false)
|
|
||||||
@ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \
|
|
||||||
|| (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \
|
|
||||||
&& echo "Refusing to try to generate a new release of the same name." \
|
|
||||||
&& false)
|
|
||||||
@echo "Good."
|
|
||||||
|
|
||||||
release-remove-old:
|
|
||||||
$(RM) $(tar_gz) $(tar_bz2) $(HASHFILES) $(gpg_file)
|
|
||||||
|
|
||||||
ensure-prev:
|
|
||||||
@if [[ "$(PREV)" == "" ]]; then \
|
|
||||||
echo "" && \
|
|
||||||
echo "You must set the PREV variable on the make command line to" && \
|
|
||||||
echo "the last version." && \
|
|
||||||
echo "" && \
|
|
||||||
echo "For example:" && \
|
|
||||||
echo " make PREV=0.7.3" && \
|
|
||||||
echo "" && \
|
|
||||||
false; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
release-check: ensure-prev release-verify-newer release-remove-old distcheck
|
|
||||||
|
|
||||||
release-tag:
|
|
||||||
git tag -u $(GPGKEY) -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION)
|
|
||||||
|
|
||||||
release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(sha1_tbz2) $(md5_tgz) $(gpg_file)
|
|
||||||
mkdir -p releases
|
|
||||||
scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)
|
|
||||||
scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)
|
|
||||||
ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)"
|
|
||||||
|
|
||||||
release-publish-message: $(HASHFILES) ensure-prev
|
|
||||||
@echo "Please follow the instructions in RELEASING to push stuff out and"
|
|
||||||
@echo "send out the announcement mails. Here is the excerpt you need:"
|
|
||||||
@echo ""
|
|
||||||
@echo "Lists: $(RELEASE_ANNOUNCE_LIST)"
|
|
||||||
@echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available"
|
|
||||||
@echo "============================== CUT HERE =============================="
|
|
||||||
@echo "A new $(PACKAGE) release $(VERSION) is now available"
|
|
||||||
@echo ""
|
|
||||||
@echo "tar.gz:"
|
|
||||||
@echo " $(RELEASE_CAIRO_URL)/$(tar_gz)"
|
|
||||||
@echo " $(RELEASE_XORG_URL)/$(tar_gz)"
|
|
||||||
@echo ""
|
|
||||||
@echo "tar.bz2:"
|
|
||||||
@echo " $(RELEASE_XORG_URL)/$(tar_bz2)"
|
|
||||||
@echo ""
|
|
||||||
@echo "Hashes:"
|
|
||||||
@echo -n " MD5: "
|
|
||||||
@cat $(md5_tgz)
|
|
||||||
@echo -n " MD5: "
|
|
||||||
@cat $(md5_tbz2)
|
|
||||||
@echo -n " SHA1: "
|
|
||||||
@cat $(sha1_tgz)
|
|
||||||
@echo -n " SHA1: "
|
|
||||||
@cat $(sha1_tbz2)
|
|
||||||
@echo ""
|
|
||||||
@echo "GPG signature:"
|
|
||||||
@echo " $(RELEASE_CAIRO_URL)/$(gpg_file)"
|
|
||||||
@echo " (signed by `git config --get user.name` <`git config --get user.email`>)"
|
|
||||||
@echo ""
|
|
||||||
@echo "Git:"
|
|
||||||
@echo " git://git.freedesktop.org/git/pixman"
|
|
||||||
@echo " tag: $(PACKAGE)-$(VERSION)"
|
|
||||||
@echo ""
|
|
||||||
@echo "Log:"
|
|
||||||
@git log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b1-80
|
|
||||||
@echo "============================== CUT HERE =============================="
|
|
||||||
@echo ""
|
|
||||||
|
|
||||||
release-publish: release-upload release-tag release-publish-message
|
|
||||||
|
|
||||||
.PHONY: release-upload release-publish release-publish-message release-tag
|
|
134
README
134
README
@ -1,22 +1,134 @@
|
|||||||
pixman is a library that provides low-level pixel manipulation
|
Pixman
|
||||||
|
======
|
||||||
|
|
||||||
|
Pixman is a library that provides low-level pixel manipulation
|
||||||
features such as image compositing and trapezoid rasterization.
|
features such as image compositing and trapezoid rasterization.
|
||||||
|
|
||||||
Please submit bugs & patches to the libpixman bugzilla:
|
Questions should be directed to the pixman mailing list:
|
||||||
|
|
||||||
https://bugs.freedesktop.org/enter_bug.cgi?product=pixman
|
https://lists.freedesktop.org/mailman/listinfo/pixman
|
||||||
|
|
||||||
All questions regarding this software should be directed to the pixman
|
You can also file bugs at
|
||||||
mailing list:
|
|
||||||
|
|
||||||
http://lists.freedesktop.org/mailman/listinfo/pixman
|
https://gitlab.freedesktop.org/pixman/pixman/-/issues/new
|
||||||
|
|
||||||
The master development code repository can be found at:
|
or submit improvements in form of a Merge Request via
|
||||||
|
|
||||||
git://anongit.freedesktop.org/git/pixman
|
https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests
|
||||||
|
|
||||||
http://gitweb.freedesktop.org/?p=pixman;a=summary
|
For real time discussions about pixman, feel free to join the IRC
|
||||||
|
channels #cairo and #xorg-devel on the FreeNode IRC network.
|
||||||
|
|
||||||
For more information on the git code manager, see:
|
|
||||||
|
|
||||||
http://wiki.x.org/wiki/GitPage
|
Contributing
|
||||||
|
------------
|
||||||
|
|
||||||
|
In order to contribute to pixman, you will need a working knowledge of
|
||||||
|
the git version control system. For a quick getting started guide,
|
||||||
|
there is the "Everyday Git With 20 Commands Or So guide"
|
||||||
|
|
||||||
|
https://www.kernel.org/pub/software/scm/git/docs/everyday.html
|
||||||
|
|
||||||
|
from the Git homepage. For more in depth git documentation, see the
|
||||||
|
resources on the Git community documentation page:
|
||||||
|
|
||||||
|
https://git-scm.com/documentation
|
||||||
|
|
||||||
|
Pixman uses the infrastructure from the freedesktop.org umbrella
|
||||||
|
project. For instructions about how to use the git service on
|
||||||
|
freedesktop.org, see:
|
||||||
|
|
||||||
|
https://www.freedesktop.org/wiki/Infrastructure/git/Developers
|
||||||
|
|
||||||
|
The Pixman master repository can be found at:
|
||||||
|
|
||||||
|
https://gitlab.freedesktop.org/pixman/pixman
|
||||||
|
|
||||||
|
|
||||||
|
Sending patches
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Patches should be submitted in form of Merge Requests via Gitlab.
|
||||||
|
|
||||||
|
You will first need to create a fork of the main pixman repository at
|
||||||
|
|
||||||
|
https://gitlab.freedesktop.org/pixman/pixman
|
||||||
|
|
||||||
|
via the Fork button on the top right. Once that is done you can add your
|
||||||
|
personal repository as a remote to your local pixman development git checkout:
|
||||||
|
|
||||||
|
git remote add my-gitlab git@gitlab.freedesktop.org:YOURUSERNAME/pixman.git
|
||||||
|
|
||||||
|
git fetch my-gitlab
|
||||||
|
|
||||||
|
Make sure to have added ssh keys to your gitlab profile at
|
||||||
|
|
||||||
|
https://gitlab.freedesktop.org/profile/keys
|
||||||
|
|
||||||
|
Once that is set up, the general workflow for sending patches is to create a
|
||||||
|
new local branch with your improvements and once it's ready push it to your
|
||||||
|
personal pixman fork:
|
||||||
|
|
||||||
|
git checkout -b fix-some-bug
|
||||||
|
...
|
||||||
|
git push my-gitlab
|
||||||
|
|
||||||
|
The output of the `git push` command will include a link that allows you to
|
||||||
|
create a Merge Request against the official pixman repository.
|
||||||
|
|
||||||
|
Whenever you make changes to your branch (add new commits or fix up commits)
|
||||||
|
you push them back to your personal pixman fork:
|
||||||
|
|
||||||
|
git push -f my-gitlab
|
||||||
|
|
||||||
|
If there is an open Merge Request Gitlab will automatically pick up the
|
||||||
|
changes from your branch and pixman developers can review them anew.
|
||||||
|
|
||||||
|
In order for your patches to be accepted, please consider the
|
||||||
|
following guidelines:
|
||||||
|
|
||||||
|
- At each point in the series, pixman should compile and the test
|
||||||
|
suite should pass.
|
||||||
|
|
||||||
|
The exception here is if you are changing the test suite to
|
||||||
|
demonstrate a bug. In this case, make one commit that makes the
|
||||||
|
test suite fail due to the bug, and then another commit that fixes
|
||||||
|
the bug.
|
||||||
|
|
||||||
|
You can run the test suite with
|
||||||
|
|
||||||
|
meson test -C builddir
|
||||||
|
|
||||||
|
It will take around two minutes to run on a modern PC.
|
||||||
|
|
||||||
|
- Follow the coding style described in the CODING_STYLE file
|
||||||
|
|
||||||
|
- For bug fixes, include an update to the test suite to make sure
|
||||||
|
the bug doesn't reappear.
|
||||||
|
|
||||||
|
- For new features, add tests of the feature to the test
|
||||||
|
suite. Also, add a program demonstrating the new feature to the
|
||||||
|
demos/ directory.
|
||||||
|
|
||||||
|
- Write descriptive commit messages. Useful information to include:
|
||||||
|
- Benchmark results, before and after
|
||||||
|
- Description of the bug that was fixed
|
||||||
|
- Detailed rationale for any new API
|
||||||
|
- Alternative approaches that were rejected (and why they
|
||||||
|
don't work)
|
||||||
|
- If review comments were incorporated, a brief version
|
||||||
|
history describing what those changes were.
|
||||||
|
|
||||||
|
- For big patch series, write an introductory post with an overall
|
||||||
|
description of the patch series, including benchmarks and
|
||||||
|
motivation. Each commit message should still be descriptive and
|
||||||
|
include enough information to understand why this particular commit
|
||||||
|
was necessary.
|
||||||
|
|
||||||
|
Pixman has high standards for code quality and so almost everybody
|
||||||
|
should expect to have the first versions of their patches rejected.
|
||||||
|
|
||||||
|
If you think that the reviewers are wrong about something, or that the
|
||||||
|
guidelines above are wrong, feel free to discuss the issue. The purpose
|
||||||
|
of the guidelines and code review is to ensure high code quality; it is
|
||||||
|
not an exercise in compliance.
|
||||||
|
@ -10,12 +10,11 @@ Here are the steps to follow to create a new pixman release:
|
|||||||
|
|
||||||
git log master...origin (no output; note: *3* dots)
|
git log master...origin (no output; note: *3* dots)
|
||||||
|
|
||||||
2) Increment pixman_(major|minor|micro) in configure.ac according to
|
2) Increment the version in meson.build.
|
||||||
the directions in that file. Use git commit to record this.
|
|
||||||
|
|
||||||
3) Make sure that new version works, including
|
3) Make sure that new version works, including
|
||||||
|
|
||||||
- make distcheck passes
|
- meson test passes
|
||||||
|
|
||||||
- the X server still works with the new pixman version
|
- the X server still works with the new pixman version
|
||||||
installed
|
installed
|
||||||
@ -23,7 +22,7 @@ Here are the steps to follow to create a new pixman release:
|
|||||||
- the cairo test suite hasn't gained any new failures compared
|
- the cairo test suite hasn't gained any new failures compared
|
||||||
to last pixman version.
|
to last pixman version.
|
||||||
|
|
||||||
4) Use "git commit" to record any changes made in step 3.
|
4) Use "git commit" to record the changes made in step 2 and 3.
|
||||||
|
|
||||||
5) Generate and publish the tar files by running
|
5) Generate and publish the tar files by running
|
||||||
|
|
||||||
@ -55,3 +54,5 @@ Here are the steps to follow to create a new pixman release:
|
|||||||
You must use "--tags" here; otherwise the new tag will not
|
You must use "--tags" here; otherwise the new tag will not
|
||||||
be pushed out.
|
be pushed out.
|
||||||
|
|
||||||
|
8) Change the topic of the #cairo IRC channel on freenode to advertise
|
||||||
|
the new version.
|
||||||
|
271
TODO
271
TODO
@ -1,271 +0,0 @@
|
|||||||
- Testing
|
|
||||||
- Test implementations against each other
|
|
||||||
- Test both with and without the operator strength reduction.
|
|
||||||
They shold be identical.
|
|
||||||
|
|
||||||
- SSE 2 issues:
|
|
||||||
|
|
||||||
- Use MM_HINT_NTA instead of MM_HINT_T0
|
|
||||||
|
|
||||||
- Use of fbCompositeOver_x888x8x8888sse2()
|
|
||||||
|
|
||||||
- Update the RLEASING file
|
|
||||||
|
|
||||||
- Things to keep in mind if breaking ABI:
|
|
||||||
|
|
||||||
- There should be a guard #ifndef I_AM_EITHER_CAIRO_OR_THE_X_SERVER
|
|
||||||
|
|
||||||
- X server will require 16.16 essentially forever. Can we get
|
|
||||||
the required precision by simply adding offset_x/y to the
|
|
||||||
relevant rendering API?
|
|
||||||
|
|
||||||
- Get rid of workaround for X server bug.
|
|
||||||
|
|
||||||
- pixman_image_set_indexed() should copy its argument, and X
|
|
||||||
should be ported over to use a pixman_image as the
|
|
||||||
representation of a Picture, rather than creating one on each
|
|
||||||
operation.
|
|
||||||
|
|
||||||
- We should get rid of pixman_set_static_pointers()
|
|
||||||
|
|
||||||
- We should get rid of the various trapezoid helper functions().
|
|
||||||
(They only exist because they are theoretically available to
|
|
||||||
drivers).
|
|
||||||
|
|
||||||
- 16 bit regions should be deleted
|
|
||||||
|
|
||||||
- There should only be one trap rasterization API.
|
|
||||||
|
|
||||||
- The PIXMAN_g8/c8/etc formats should use the A channel
|
|
||||||
to indicate the actual depth. That way PIXMAN_x4c4 and PIXMAN_c8
|
|
||||||
won't collide.
|
|
||||||
|
|
||||||
- Maybe bite the bullet and make configure.ac generate a pixman-types.h
|
|
||||||
file that can be included from pixman.h to avoid the #ifdef magic
|
|
||||||
in pixman.h
|
|
||||||
|
|
||||||
- Make pixman_region_point_in() survive a NULL box, then fix up
|
|
||||||
pixman-compose.c
|
|
||||||
|
|
||||||
- Possibly look into inlining the fetch functions
|
|
||||||
|
|
||||||
- There is a bug with source clipping demonstrated by clip-test in the
|
|
||||||
test directory. If we interprete source clipping as given in
|
|
||||||
destination coordinates, which is probably the only sane choice,
|
|
||||||
then the result should have two red bars down the sides.
|
|
||||||
|
|
||||||
- Test suite
|
|
||||||
|
|
||||||
- Add a general way of dealing with architecture specific
|
|
||||||
fast-paths. The current idea is to have each operation that can
|
|
||||||
be optimized is called through a function pointer that is
|
|
||||||
initially set to an initialization function that is responsible for
|
|
||||||
setting the function pointer to the appropriate fast-path.
|
|
||||||
|
|
||||||
- Go through things marked FIXME
|
|
||||||
|
|
||||||
- Add calls to prepare and finish access where necessary. grep for
|
|
||||||
ACCESS_MEM, and make sure they are correctly wrapped in prepare
|
|
||||||
and finish.
|
|
||||||
|
|
||||||
- restore READ/WRITE in the fbcompose combiners since they sometimes
|
|
||||||
store directly to destination drawables.
|
|
||||||
|
|
||||||
- It probably makes sense to move the more strange X region API
|
|
||||||
into pixman as well, but guarded with PIXMAN_XORG_COMPATIBILITY
|
|
||||||
|
|
||||||
- Reinstate the FbBits typedef? At the moment we don't
|
|
||||||
even have the FbBits type; we just use uint32_t everywhere.
|
|
||||||
|
|
||||||
Keith says in bug 2335:
|
|
||||||
|
|
||||||
The 64-bit code in fb (pixman) is probably broken; it hasn't been
|
|
||||||
used in quite some time as PCI (and AGP) is 32-bits wide, so
|
|
||||||
doing things 64-bits at a time is a net loss. To quickly fix
|
|
||||||
this, I suggest just using 32-bit datatypes by setting
|
|
||||||
IC_SHIFT to 5 for all machines.
|
|
||||||
|
|
||||||
- Consider optimizing the 8/16 bit solid fills in pixman-util.c by
|
|
||||||
storing more than one value at a time.
|
|
||||||
|
|
||||||
- Add an image cache to prevent excessive malloc/free. Note that pixman
|
|
||||||
needs to be thread safe when used from cairo.
|
|
||||||
|
|
||||||
- Moving to 24.8 coordinates. This is tricky because X is still
|
|
||||||
defined as 16.16 and will be basically forever. It's possible we
|
|
||||||
could do this by adding extra offset_x/y parameters to the
|
|
||||||
trapezoid calls. The X server could then just call the API with
|
|
||||||
(0, 0). Cairo would have to make sure that the delta *within* a
|
|
||||||
batch of trapezoids does not exceed 16 bit.
|
|
||||||
|
|
||||||
- Consider adding actual backends. Brain dump:
|
|
||||||
|
|
||||||
A backend is something that knows how to
|
|
||||||
|
|
||||||
- Create images
|
|
||||||
- Composite three images
|
|
||||||
- Rasterize trapezoids
|
|
||||||
- Do solid fills and blits
|
|
||||||
|
|
||||||
These operations are provided by a vtable that the backend will
|
|
||||||
create when it is initialized. Initial backends:
|
|
||||||
|
|
||||||
- VMX
|
|
||||||
- SSE2
|
|
||||||
- MMX
|
|
||||||
- Plain Old C
|
|
||||||
|
|
||||||
When the SIMD backends are initialized, they will be passed a
|
|
||||||
pointer to the Plain Old C backend that they can use for fallback
|
|
||||||
purposes.
|
|
||||||
|
|
||||||
Images would gain a vtable as well that would contain things like
|
|
||||||
|
|
||||||
- Read scanline
|
|
||||||
- Write scanline
|
|
||||||
|
|
||||||
(Or even read_patch/write_patch as suggested by Keith a while
|
|
||||||
back).
|
|
||||||
|
|
||||||
This could simplify the compositing code considerably.
|
|
||||||
|
|
||||||
- Review the pixman_format_code_t enum to make sure it will support
|
|
||||||
future formats. Some formats we will probably need:
|
|
||||||
|
|
||||||
ARGB/ABGR with 16/32/64 bit integer/floating channels
|
|
||||||
YUV2,
|
|
||||||
YV12
|
|
||||||
|
|
||||||
Also we may need the ability to distinguish between PICT_c8 and
|
|
||||||
PICT_x4c4. (This could be done by interpreting the A channel as
|
|
||||||
the depth for TYPE_COLOR and TYPE_GRAY formats).
|
|
||||||
|
|
||||||
A possibility may be to reserve the two top bits and make them
|
|
||||||
encode "number of places to shift the channel widths given" Since
|
|
||||||
these bits are 00 at the moment everything will continue to work,
|
|
||||||
but these additional widths will be allowed:
|
|
||||||
|
|
||||||
All even widths between 18-32
|
|
||||||
All multiples of four widths between 33 and 64
|
|
||||||
All multiples of eight between 64 and 128
|
|
||||||
|
|
||||||
This means things like r21g22b21 won't work - is that worth
|
|
||||||
worrying about? I don't think so. And of course the bpp field
|
|
||||||
can't handle a depth of over 256, so > 64 bit channels arent'
|
|
||||||
really all that useful.
|
|
||||||
|
|
||||||
We could reserve one extra bit to indicate floating point, but
|
|
||||||
we may also just add
|
|
||||||
|
|
||||||
PIXMAN_TYPE_ARGB_FLOAT
|
|
||||||
PIXMAN_TYPE_BGRA_FLOAT
|
|
||||||
PIXMAN_TYPE_A_FLOAT
|
|
||||||
|
|
||||||
image types. With five bits we can support up to 32 different
|
|
||||||
format types, which should be enough for everybody, even if we
|
|
||||||
decide to support all the various video formats here:
|
|
||||||
|
|
||||||
http://www.fourcc.org/yuv.php
|
|
||||||
|
|
||||||
It may make sense to have a PIXMAN_TYPE_YUV, and then use the
|
|
||||||
channel bits to specify the exact subtype.
|
|
||||||
|
|
||||||
Another possibility is to add
|
|
||||||
|
|
||||||
PIXMAN_TYPE_ARGB_W
|
|
||||||
PIXMAN_TYPE_ARGB_WW
|
|
||||||
|
|
||||||
where the channel widths would get 16 and 32 added to them,
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
What about color spaces such a linear vs. srGB etc.?
|
|
||||||
|
|
||||||
|
|
||||||
done:
|
|
||||||
|
|
||||||
- Use pixmanFillsse2 and pixmanBltsse2
|
|
||||||
|
|
||||||
- Be consistent about calling sse2 sse2
|
|
||||||
|
|
||||||
- Rename "SSE" to "MMX_EXTENSIONS". (Deleted mmx extensions).
|
|
||||||
|
|
||||||
- Commented-out uses of fbCompositeCopyAreasse2()
|
|
||||||
|
|
||||||
- Consider whether calling regions region16 is really such a great
|
|
||||||
idea. Vlad wants 32 bit regions for Cairo. This will break X server
|
|
||||||
ABI, but should otherwise be mostly harmless, though a
|
|
||||||
pixman_region_get_boxes16() may be useful.
|
|
||||||
|
|
||||||
- Altivec signal issue (Company has fix, there is also a patch by
|
|
||||||
dwmw2 in rawhide).
|
|
||||||
|
|
||||||
- Behdad's MMX issue - see list
|
|
||||||
|
|
||||||
- SSE2 issues:
|
|
||||||
- Crashes in Mozilla because of unaligned stack. Possible fixes
|
|
||||||
- Make use of gcc 4.2 feature to align the stack
|
|
||||||
- Write some sort of trampoline that aligns the stack
|
|
||||||
before calling SSE functions.
|
|
||||||
|
|
||||||
- Get rid of the switch-of-doom; replace it with a big table
|
|
||||||
describing the various fast paths.
|
|
||||||
|
|
||||||
- Make source clipping optional.
|
|
||||||
- done: source clipping happens through an indirection.
|
|
||||||
still needs to make the indirection settable. (And call it
|
|
||||||
from X)
|
|
||||||
|
|
||||||
- Run cairo test suite; fix bugs
|
|
||||||
- one bug in source-scale-clip
|
|
||||||
|
|
||||||
- Remove the warning suppression in the ACCESS_MEM macro and fix the
|
|
||||||
warnings that are real
|
|
||||||
- irrelevant now.
|
|
||||||
|
|
||||||
- make the wrapper functions global instead of image specific
|
|
||||||
- this won't work since pixman is linked to both fb and wfb
|
|
||||||
|
|
||||||
- Add non-mmx solid fill
|
|
||||||
|
|
||||||
- Make sure the endian-ness macros are defined correctly.
|
|
||||||
|
|
||||||
- The rectangles in a region probably shouldn't be returned const as
|
|
||||||
the X server will be changing them.
|
|
||||||
|
|
||||||
- Right now we _always_ have a clip region, which is empty by default.
|
|
||||||
Why does this work at all? It probably doesn't. The server
|
|
||||||
distinguishes two cases, one where nothing is clipped (CT_NONE), and
|
|
||||||
one where there is a clip region (CT_REGION).
|
|
||||||
|
|
||||||
- Default clip region should be the full image
|
|
||||||
|
|
||||||
- Test if pseudo color still works. It does, but it also shows that
|
|
||||||
copying a pixman_indexed_t on every composite operation is not
|
|
||||||
going to fly. So, for now set_indexed() does not copy the
|
|
||||||
indexed table.
|
|
||||||
|
|
||||||
Also just the malloc() to allocate a pixman image shows up pretty
|
|
||||||
high.
|
|
||||||
|
|
||||||
Options include
|
|
||||||
|
|
||||||
- Make all the setters not copy their arguments
|
|
||||||
|
|
||||||
- Possibly combined with going back to the stack allocated
|
|
||||||
approach that we already use for regions.
|
|
||||||
|
|
||||||
- Keep a cached pixman_image_t around for every picture. It would
|
|
||||||
have to be kept uptodate every time something changes about the
|
|
||||||
picture.
|
|
||||||
|
|
||||||
- Break the X server ABI and simply have the relevant parameter
|
|
||||||
stored in the pixman image. This would have the additional benefits
|
|
||||||
that:
|
|
||||||
|
|
||||||
- We can get rid of the annoying repeat field which is duplicated
|
|
||||||
elsewhere.
|
|
||||||
|
|
||||||
- We can use pixman_color_t and pixman_gradient_stop_t
|
|
||||||
etc. instead of the types that are defined in
|
|
||||||
renderproto.h
|
|
||||||
|
|
5
a64-neon-test.S
Normal file
5
a64-neon-test.S
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
.text
|
||||||
|
.arch armv8-a
|
||||||
|
.altmacro
|
||||||
|
prfm pldl2strm, [x0]
|
||||||
|
xtn v0.8b, v0.8h
|
10
arm-simd-test.S
Normal file
10
arm-simd-test.S
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.text
|
||||||
|
.arch armv6
|
||||||
|
.object_arch armv4
|
||||||
|
.arm
|
||||||
|
.altmacro
|
||||||
|
#ifndef __ARM_EABI__
|
||||||
|
#error EABI is required (to be sure that calling conventions are compatible)
|
||||||
|
#endif
|
||||||
|
pld [r0]
|
||||||
|
uqadd8 r0, r0, r0
|
12
autogen.sh
12
autogen.sh
@ -1,12 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
srcdir=`dirname $0`
|
|
||||||
test -z "$srcdir" && srcdir=.
|
|
||||||
|
|
||||||
ORIGDIR=`pwd`
|
|
||||||
cd $srcdir
|
|
||||||
|
|
||||||
autoreconf -v --install || exit 1
|
|
||||||
cd $ORIGDIR || exit $?
|
|
||||||
|
|
||||||
$srcdir/configure "$@"
|
|
608
configure.ac
608
configure.ac
@ -1,608 +0,0 @@
|
|||||||
dnl Copyright 2005 Red Hat, Inc.
|
|
||||||
dnl
|
|
||||||
dnl Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
dnl documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
dnl the above copyright notice appear in all copies and that both that
|
|
||||||
dnl copyright notice and this permission notice appear in supporting
|
|
||||||
dnl documentation, and that the name of Red Hat not be used in
|
|
||||||
dnl advertising or publicity pertaining to distribution of the software without
|
|
||||||
dnl specific, written prior permission. Red Hat makes no
|
|
||||||
dnl representations about the suitability of this software for any purpose. It
|
|
||||||
dnl is provided "as is" without express or implied warranty.
|
|
||||||
dnl
|
|
||||||
dnl RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
||||||
dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
||||||
dnl EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
||||||
dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
||||||
dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
||||||
dnl PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
dnl
|
|
||||||
dnl Process this file with autoconf to create configure.
|
|
||||||
|
|
||||||
AC_PREREQ([2.57])
|
|
||||||
|
|
||||||
# Pixman versioning scheme
|
|
||||||
#
|
|
||||||
# - The version in git has an odd MICRO version number
|
|
||||||
#
|
|
||||||
# - Released versions both development and stable have an even MICRO
|
|
||||||
# version number
|
|
||||||
#
|
|
||||||
# - Released development versions have an odd MINOR number
|
|
||||||
#
|
|
||||||
# - Released stable versions have an even MINOR number
|
|
||||||
#
|
|
||||||
# - Versions that break ABI must have a new MAJOR number
|
|
||||||
#
|
|
||||||
# - If you break the ABI, then at least this must be done:
|
|
||||||
#
|
|
||||||
# - increment MAJOR
|
|
||||||
#
|
|
||||||
# - In the first development release where you break ABI, find
|
|
||||||
# all instances of "pixman-n" and change them to pixman-(n+1)
|
|
||||||
#
|
|
||||||
# This needs to be done at least in
|
|
||||||
# configure.ac
|
|
||||||
# all Makefile.am's
|
|
||||||
# pixman-n.pc.in
|
|
||||||
#
|
|
||||||
# This ensures that binary incompatible versions can be installed
|
|
||||||
# in parallel. See http://www106.pair.com/rhp/parallel.html for
|
|
||||||
# more information
|
|
||||||
#
|
|
||||||
|
|
||||||
m4_define([pixman_major], 0)
|
|
||||||
m4_define([pixman_minor], 18)
|
|
||||||
m4_define([pixman_micro], 2)
|
|
||||||
|
|
||||||
m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
|
|
||||||
|
|
||||||
AC_INIT(pixman, pixman_version, "pixman@lists.freedesktop.org", pixman)
|
|
||||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
|
||||||
|
|
||||||
# Suppress verbose compile lines
|
|
||||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
||||||
|
|
||||||
AM_CONFIG_HEADER(config.h)
|
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
|
||||||
|
|
||||||
test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS.
|
|
||||||
|
|
||||||
AC_PROG_CC
|
|
||||||
AM_PROG_AS
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
AC_CHECK_FUNCS([getisax])
|
|
||||||
AC_C_BIGENDIAN
|
|
||||||
AC_C_INLINE
|
|
||||||
|
|
||||||
AC_CHECK_SIZEOF(long)
|
|
||||||
|
|
||||||
# Checks for Sun Studio compilers
|
|
||||||
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
|
|
||||||
AC_CHECK_DECL([__amd64], [AMD64_ABI="yes"], [AMD64_ABI="no"])
|
|
||||||
|
|
||||||
# Default CFLAGS to -O -g rather than just the -g from AC_PROG_CC
|
|
||||||
# if we're using Sun Studio and neither the user nor a config.site
|
|
||||||
# has set CFLAGS.
|
|
||||||
if test $SUNCC = yes && \
|
|
||||||
test "$test_CFLAGS" == "" && \
|
|
||||||
test "$CFLAGS" = "-g"
|
|
||||||
then
|
|
||||||
CFLAGS="-O -g"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# We ignore pixman_major in the version here because the major version should
|
|
||||||
# always be encoded in the actual library name. Ie., the soname is:
|
|
||||||
#
|
|
||||||
# pixman-$(pixman_major).0.minor.micro
|
|
||||||
#
|
|
||||||
m4_define([lt_current], [pixman_minor])
|
|
||||||
m4_define([lt_revision], [pixman_micro])
|
|
||||||
m4_define([lt_age], [pixman_minor])
|
|
||||||
|
|
||||||
LT_VERSION_INFO="lt_current:lt_revision:lt_age"
|
|
||||||
|
|
||||||
PIXMAN_VERSION_MAJOR=pixman_major()
|
|
||||||
AC_SUBST(PIXMAN_VERSION_MAJOR)
|
|
||||||
PIXMAN_VERSION_MINOR=pixman_minor()
|
|
||||||
AC_SUBST(PIXMAN_VERSION_MINOR)
|
|
||||||
PIXMAN_VERSION_MICRO=pixman_micro()
|
|
||||||
AC_SUBST(PIXMAN_VERSION_MICRO)
|
|
||||||
|
|
||||||
AC_SUBST(LT_VERSION_INFO)
|
|
||||||
|
|
||||||
# Check for dependencies
|
|
||||||
#PKG_CHECK_MODULES(DEP, x11)
|
|
||||||
|
|
||||||
changequote(,)dnl
|
|
||||||
if test "x$GCC" = "xyes"; then
|
|
||||||
|
|
||||||
case " $CFLAGS " in
|
|
||||||
*[\ \ ]-Wall[\ \ ]*) ;;
|
|
||||||
*) CFLAGS="$CFLAGS -Wall" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case " $CFLAGS " in
|
|
||||||
*[\ \ ]-fno-strict-aliasing[\ \ ]*) ;;
|
|
||||||
*) CFLAGS="$CFLAGS -fno-strict-aliasing" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
fi changequote([,])dnl
|
|
||||||
|
|
||||||
AC_PATH_PROG(PERL, perl, no)
|
|
||||||
if test "x$PERL" = xno; then
|
|
||||||
AC_MSG_ERROR([Perl is required to build pixman.])
|
|
||||||
fi
|
|
||||||
AC_SUBST(PERL)
|
|
||||||
|
|
||||||
dnl =========================================================================
|
|
||||||
dnl -fvisibility stuff
|
|
||||||
|
|
||||||
have_gcc4=no
|
|
||||||
AC_MSG_CHECKING(for -fvisibility)
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ >= 4)
|
|
||||||
#else
|
|
||||||
error Need GCC 4.0 for visibility
|
|
||||||
#endif
|
|
||||||
int main () { return 0; }
|
|
||||||
], have_gcc4=yes)
|
|
||||||
|
|
||||||
if test "x$have_gcc4" = "xyes"; then
|
|
||||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($have_gcc4)
|
|
||||||
|
|
||||||
have_sunstudio8=no
|
|
||||||
AC_MSG_CHECKING([for -xldscope (Sun compilers)])
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
|
|
||||||
#else
|
|
||||||
error Need Sun Studio 8 for visibility
|
|
||||||
#endif
|
|
||||||
int main () { return 0; }
|
|
||||||
], have_sunstudio8=yes)
|
|
||||||
|
|
||||||
if test "x$have_sunstudio8" = "xyes"; then
|
|
||||||
CFLAGS="$CFLAGS -xldscope=hidden"
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($have_sunstudio8)
|
|
||||||
|
|
||||||
dnl ===========================================================================
|
|
||||||
dnl Check for MMX
|
|
||||||
|
|
||||||
if test "x$MMX_CFLAGS" = "x" ; then
|
|
||||||
if test "x$SUNCC" = "xyes"; then
|
|
||||||
# Sun Studio doesn't have an -xarch=mmx flag, so we have to use sse
|
|
||||||
# but if we're building 64-bit, mmx & sse support is on by default and
|
|
||||||
# -xarch=sse throws an error instead
|
|
||||||
if test "$AMD64_ABI" = "no" ; then
|
|
||||||
MMX_CFLAGS="-xarch=sse"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MMX_CFLAGS="-mmmx -Winline"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
have_mmx_intrinsics=no
|
|
||||||
AC_MSG_CHECKING(whether to use MMX intrinsics)
|
|
||||||
xserver_save_CFLAGS=$CFLAGS
|
|
||||||
CFLAGS="$MMX_CFLAGS $CFLAGS"
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
|
|
||||||
error "Need GCC >= 3.4 for MMX intrinsics"
|
|
||||||
#endif
|
|
||||||
#include <mmintrin.h>
|
|
||||||
int main () {
|
|
||||||
__m64 v = _mm_cvtsi32_si64 (1);
|
|
||||||
return _mm_cvtsi64_si32 (v);
|
|
||||||
}], have_mmx_intrinsics=yes)
|
|
||||||
CFLAGS=$xserver_save_CFLAGS
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(mmx,
|
|
||||||
[AC_HELP_STRING([--disable-mmx],
|
|
||||||
[disable MMX fast paths])],
|
|
||||||
[enable_mmx=$enableval], [enable_mmx=auto])
|
|
||||||
|
|
||||||
if test $enable_mmx = no ; then
|
|
||||||
have_mmx_intrinsics=disabled
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_mmx_intrinsics = yes ; then
|
|
||||||
AC_DEFINE(USE_MMX, 1, [use MMX compiler intrinsics])
|
|
||||||
else
|
|
||||||
MMX_CFLAGS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_RESULT($have_mmx_intrinsics)
|
|
||||||
if test $enable_mmx = yes && test $have_mmx_intrinsics = no ; then
|
|
||||||
AC_MSG_ERROR([MMX intrinsics not detected])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_MMX, test $have_mmx_intrinsics = yes)
|
|
||||||
|
|
||||||
dnl ===========================================================================
|
|
||||||
dnl Check for SSE2
|
|
||||||
|
|
||||||
if test "x$SSE2_CFLAGS" = "x" ; then
|
|
||||||
if test "x$SUNCC" = "xyes"; then
|
|
||||||
# SSE2 is enabled by default in the Sun Studio 64-bit environment
|
|
||||||
if test "$AMD64_ABI" = "no" ; then
|
|
||||||
SSE2_CFLAGS="-xarch=sse2"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
SSE2_CFLAGS="-mmmx -msse2 -Winline"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
have_sse2_intrinsics=no
|
|
||||||
AC_MSG_CHECKING(whether to use SSE2 intrinsics)
|
|
||||||
xserver_save_CFLAGS=$CFLAGS
|
|
||||||
CFLAGS="$SSE2_CFLAGS $CFLAGS"
|
|
||||||
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2))
|
|
||||||
# if !defined(__amd64__) && !defined(__x86_64__)
|
|
||||||
# error "Need GCC >= 4.2 for SSE2 intrinsics on x86"
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#include <mmintrin.h>
|
|
||||||
#include <xmmintrin.h>
|
|
||||||
#include <emmintrin.h>
|
|
||||||
int main () {
|
|
||||||
__m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
|
|
||||||
c = _mm_xor_si128 (a, b);
|
|
||||||
return 0;
|
|
||||||
}], have_sse2_intrinsics=yes)
|
|
||||||
CFLAGS=$xserver_save_CFLAGS
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(sse2,
|
|
||||||
[AC_HELP_STRING([--disable-sse2],
|
|
||||||
[disable SSE2 fast paths])],
|
|
||||||
[enable_sse2=$enableval], [enable_sse2=auto])
|
|
||||||
|
|
||||||
if test $enable_sse2 = no ; then
|
|
||||||
have_sse2_intrinsics=disabled
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_sse2_intrinsics = yes ; then
|
|
||||||
AC_DEFINE(USE_SSE2, 1, [use SSE2 compiler intrinsics])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_RESULT($have_sse2_intrinsics)
|
|
||||||
if test $enable_sse2 = yes && test $have_sse2_intrinsics = no ; then
|
|
||||||
AC_MSG_ERROR([SSE2 intrinsics not detected])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes)
|
|
||||||
|
|
||||||
dnl ===========================================================================
|
|
||||||
dnl Other special flags needed when building code using MMX or SSE instructions
|
|
||||||
case $host_os in
|
|
||||||
solaris*)
|
|
||||||
# When building 32-bit binaries, apply a mapfile to ensure that the
|
|
||||||
# binaries aren't flagged as only able to run on MMX+SSE capable CPUs
|
|
||||||
# since they check at runtime before using those instructions.
|
|
||||||
# Not all linkers grok the mapfile format so we check for that first.
|
|
||||||
if test "$AMD64_ABI" = "no" ; then
|
|
||||||
use_hwcap_mapfile=no
|
|
||||||
AC_MSG_CHECKING(whether to use a hardware capability map file)
|
|
||||||
hwcap_save_LDFLAGS="$LDFLAGS"
|
|
||||||
HWCAP_LDFLAGS='-Wl,-M,$(srcdir)/solaris-hwcap.mapfile'
|
|
||||||
LDFLAGS="$LDFLAGS -Wl,-M,pixman/solaris-hwcap.mapfile"
|
|
||||||
AC_LINK_IFELSE([int main() { return 0; }],
|
|
||||||
use_hwcap_mapfile=yes,
|
|
||||||
HWCAP_LDFLAGS="")
|
|
||||||
LDFLAGS="$hwcap_save_LDFLAGS"
|
|
||||||
AC_MSG_RESULT($use_hwcap_mapfile)
|
|
||||||
fi
|
|
||||||
if test "x$MMX_LDFLAGS" = "x" ; then
|
|
||||||
MMX_LDFLAGS="$HWCAP_LDFLAGS"
|
|
||||||
fi
|
|
||||||
if test "x$SSE2_LDFLAGS" = "x" ; then
|
|
||||||
SSE2_LDFLAGS="$HWCAP_LDFLAGS"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_SUBST(MMX_CFLAGS)
|
|
||||||
AC_SUBST(MMX_LDFLAGS)
|
|
||||||
AC_SUBST(SSE2_CFLAGS)
|
|
||||||
AC_SUBST(SSE2_LDFLAGS)
|
|
||||||
|
|
||||||
dnl ===========================================================================
|
|
||||||
dnl Check for VMX/Altivec
|
|
||||||
if test -n "`$CC -v 2>&1 | grep version | grep Apple`"; then
|
|
||||||
VMX_CFLAGS="-faltivec"
|
|
||||||
else
|
|
||||||
VMX_CFLAGS="-maltivec -mabi=altivec"
|
|
||||||
fi
|
|
||||||
|
|
||||||
have_vmx_intrinsics=no
|
|
||||||
AC_MSG_CHECKING(whether to use VMX/Altivec intrinsics)
|
|
||||||
xserver_save_CFLAGS=$CFLAGS
|
|
||||||
CFLAGS="$VMX_CFLAGS $CFLAGS"
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
#if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4))
|
|
||||||
error "Need GCC >= 3.4 for sane altivec support"
|
|
||||||
#endif
|
|
||||||
#include <altivec.h>
|
|
||||||
int main () {
|
|
||||||
vector unsigned int v = vec_splat_u32 (1);
|
|
||||||
v = vec_sub (v, v);
|
|
||||||
return 0;
|
|
||||||
}], have_vmx_intrinsics=yes)
|
|
||||||
CFLAGS=$xserver_save_CFLAGS
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(vmx,
|
|
||||||
[AC_HELP_STRING([--disable-vmx],
|
|
||||||
[disable VMX fast paths])],
|
|
||||||
[enable_vmx=$enableval], [enable_vmx=auto])
|
|
||||||
|
|
||||||
if test $enable_vmx = no ; then
|
|
||||||
have_vmx_intrinsics=disabled
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_vmx_intrinsics = yes ; then
|
|
||||||
AC_DEFINE(USE_VMX, 1, [use VMX compiler intrinsics])
|
|
||||||
else
|
|
||||||
VMX_CFLAGS=
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_RESULT($have_vmx_intrinsics)
|
|
||||||
if test $enable_vmx = yes && test $have_vmx_intrinsics = no ; then
|
|
||||||
AC_MSG_ERROR([VMX intrinsics not detected])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(VMX_CFLAGS)
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
|
|
||||||
|
|
||||||
dnl ==========================================================================
|
|
||||||
dnl Check if assembler is gas compatible and supports ARM SIMD instructions
|
|
||||||
have_arm_simd=no
|
|
||||||
AC_MSG_CHECKING(whether to use ARM SIMD assembler)
|
|
||||||
xserver_save_CFLAGS=$CFLAGS
|
|
||||||
CFLAGS="-x assembler-with-cpp $CFLAGS"
|
|
||||||
AC_COMPILE_IFELSE([[
|
|
||||||
.text
|
|
||||||
.arch armv6
|
|
||||||
.object_arch armv4
|
|
||||||
.arm
|
|
||||||
.altmacro
|
|
||||||
#ifndef __ARM_EABI__
|
|
||||||
#error EABI is required (to be sure that calling conventions are compatible)
|
|
||||||
#endif
|
|
||||||
pld [r0]
|
|
||||||
uqadd8 r0, r0, r0]], have_arm_simd=yes)
|
|
||||||
CFLAGS=$xserver_save_CFLAGS
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(arm-simd,
|
|
||||||
[AC_HELP_STRING([--disable-arm-simd],
|
|
||||||
[disable ARM SIMD fast paths])],
|
|
||||||
[enable_arm_simd=$enableval], [enable_arm_simd=auto])
|
|
||||||
|
|
||||||
if test $enable_arm_simd = no ; then
|
|
||||||
have_arm_simd=disabled
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_arm_simd = yes ; then
|
|
||||||
AC_DEFINE(USE_ARM_SIMD, 1, [use ARM SIMD assembly optimizations])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_ARM_SIMD, test $have_arm_simd = yes)
|
|
||||||
|
|
||||||
AC_MSG_RESULT($have_arm_simd)
|
|
||||||
if test $enable_arm_simd = yes && test $have_arm_simd = no ; then
|
|
||||||
AC_MSG_ERROR([ARM SIMD intrinsics not detected])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl ==========================================================================
|
|
||||||
dnl Check if assembler is gas compatible and supports NEON instructions
|
|
||||||
have_arm_neon=no
|
|
||||||
AC_MSG_CHECKING(whether to use ARM NEON assembler)
|
|
||||||
xserver_save_CFLAGS=$CFLAGS
|
|
||||||
CFLAGS="-x assembler-with-cpp $CFLAGS"
|
|
||||||
AC_COMPILE_IFELSE([[
|
|
||||||
.text
|
|
||||||
.fpu neon
|
|
||||||
.arch armv7a
|
|
||||||
.object_arch armv4
|
|
||||||
.eabi_attribute 10, 0
|
|
||||||
.arm
|
|
||||||
.altmacro
|
|
||||||
#ifndef __ARM_EABI__
|
|
||||||
#error EABI is required (to be sure that calling conventions are compatible)
|
|
||||||
#endif
|
|
||||||
pld [r0]
|
|
||||||
vmovn.u16 d0, q0]], have_arm_neon=yes)
|
|
||||||
CFLAGS=$xserver_save_CFLAGS
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(arm-neon,
|
|
||||||
[AC_HELP_STRING([--disable-arm-neon],
|
|
||||||
[disable ARM NEON fast paths])],
|
|
||||||
[enable_arm_neon=$enableval], [enable_arm_neon=auto])
|
|
||||||
|
|
||||||
if test $enable_arm_neon = no ; then
|
|
||||||
have_arm_neon=disabled
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_arm_neon = yes ; then
|
|
||||||
AC_DEFINE(USE_ARM_NEON, 1, [use ARM NEON assembly optimizations])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_ARM_NEON, test $have_arm_neon = yes)
|
|
||||||
|
|
||||||
AC_MSG_RESULT($have_arm_neon)
|
|
||||||
if test $enable_arm_neon = yes && test $have_arm_neon = no ; then
|
|
||||||
AC_MSG_ERROR([ARM NEON intrinsics not detected])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl =========================================================================================
|
|
||||||
dnl Check for GNU-style inline assembly support
|
|
||||||
|
|
||||||
have_gcc_inline_asm=no
|
|
||||||
AC_MSG_CHECKING(whether to use GNU-style inline assembler)
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
int main () {
|
|
||||||
/* Most modern architectures have a NOP instruction, so this is a fairly generic test. */
|
|
||||||
asm volatile ( "\tnop\n" : : : "cc", "memory" );
|
|
||||||
return 0;
|
|
||||||
}], have_gcc_inline_asm=yes)
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(gcc-inline-asm,
|
|
||||||
[AC_HELP_STRING([--disable-gcc-inline-asm],
|
|
||||||
[disable GNU-style inline assembler])],
|
|
||||||
[enable_gcc_inline_asm=$enableval], [enable_gcc_inline_asm=auto])
|
|
||||||
|
|
||||||
if test $enable_gcc_inline_asm = no ; then
|
|
||||||
have_gcc_inline_asm=disabled
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $have_gcc_inline_asm = yes ; then
|
|
||||||
AC_DEFINE(USE_GCC_INLINE_ASM, 1, [use GNU-style inline assembler])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_RESULT($have_gcc_inline_asm)
|
|
||||||
if test $enable_gcc_inline_asm = yes && test $have_gcc_inline_asm = no ; then
|
|
||||||
AC_MSG_ERROR([GNU-style inline assembler not detected])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(USE_GCC_INLINE_ASM, test $have_gcc_inline_asm = yes)
|
|
||||||
|
|
||||||
dnl ==============================================
|
|
||||||
dnl Timers
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(timers,
|
|
||||||
[AC_HELP_STRING([--enable-timers],
|
|
||||||
[enable TIMER_BEGIN and TIMER_END macros [default=no]])],
|
|
||||||
[enable_timers=$enableval], [enable_timers=no])
|
|
||||||
|
|
||||||
if test $enable_timers = yes ; then
|
|
||||||
AC_DEFINE(PIXMAN_TIMERS, 1, [enable TIMER_BEGIN/TIMER_END macros])
|
|
||||||
fi
|
|
||||||
AC_SUBST(PIXMAN_TIMERS)
|
|
||||||
|
|
||||||
dnl ===================================
|
|
||||||
dnl GTK+
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(gtk,
|
|
||||||
[AC_HELP_STRING([--enable-gtk],
|
|
||||||
[enable tests using GTK+ [default=auto]])],
|
|
||||||
[enable_gtk=$enableval], [enable_gtk=auto])
|
|
||||||
|
|
||||||
PKG_PROG_PKG_CONFIG
|
|
||||||
if test $enable_gtk = auto ; then
|
|
||||||
PKG_CHECK_EXISTS([gtk+-2.0], [enable_gtk=yes], [enable_gtk=no])
|
|
||||||
fi
|
|
||||||
if test $enable_gtk = yes ; then
|
|
||||||
PKG_CHECK_MODULES(GTK, [gtk+-2.0])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(HAVE_GTK, [test "x$enable_gtk" = xyes])
|
|
||||||
|
|
||||||
AC_SUBST(GTK_CFLAGS)
|
|
||||||
AC_SUBST(GTK_LIBS)
|
|
||||||
AC_SUBST(DEP_CFLAGS)
|
|
||||||
AC_SUBST(DEP_LIBS)
|
|
||||||
|
|
||||||
dnl =====================================
|
|
||||||
dnl posix_memalign
|
|
||||||
|
|
||||||
AC_CHECK_FUNC(posix_memalign, have_posix_memalign=yes, have_posix_memalign=no)
|
|
||||||
if test x$have_posix_memalign = xyes; then
|
|
||||||
AC_DEFINE(HAVE_POSIX_MEMALIGN, 1, [Whether we have posix_memalign()])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl =====================================
|
|
||||||
dnl Thread local storage
|
|
||||||
|
|
||||||
support_for__thread=no
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for __thread)
|
|
||||||
AC_COMPILE_IFELSE([
|
|
||||||
#ifdef __MINGW32__
|
|
||||||
#error MinGW has broken __thread support
|
|
||||||
#endif
|
|
||||||
__thread int x ;
|
|
||||||
int main () { return 0; }
|
|
||||||
], support_for__thread=yes)
|
|
||||||
|
|
||||||
if test $support_for__thread = yes; then
|
|
||||||
AC_DEFINE([TOOLCHAIN_SUPPORTS__THREAD],[],[Whether the tool chain supports __thread])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_RESULT($support_for__thread)
|
|
||||||
|
|
||||||
dnl posix tls
|
|
||||||
|
|
||||||
if test $support_for__thread = no; then
|
|
||||||
|
|
||||||
support_for_pthread_setspecific=no
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(for pthread_setspecific)
|
|
||||||
|
|
||||||
save_LDFLAGS=$LDFLAGS
|
|
||||||
|
|
||||||
LDFLAGS="-pthread"
|
|
||||||
|
|
||||||
AC_LINK_IFELSE([
|
|
||||||
#include <pthread.h>
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <pthread.h>
|
|
||||||
|
|
||||||
static pthread_once_t once_control = PTHREAD_ONCE_INIT;
|
|
||||||
static pthread_key_t key;
|
|
||||||
|
|
||||||
static void
|
|
||||||
make_key (void)
|
|
||||||
{
|
|
||||||
pthread_key_create (&key, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
void *value = NULL;
|
|
||||||
|
|
||||||
if (pthread_once (&once_control, make_key) != 0)
|
|
||||||
{
|
|
||||||
value = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
value = pthread_getspecific (key);
|
|
||||||
if (!value)
|
|
||||||
{
|
|
||||||
value = malloc (100);
|
|
||||||
pthread_setspecific (key, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
], support_for_pthread_setspecific=yes);
|
|
||||||
|
|
||||||
LDFLAGS=$save_LDFLAGS
|
|
||||||
|
|
||||||
if test $support_for_pthread_setspecific = yes; then
|
|
||||||
PTHREAD_LDFLAGS="-pthread"
|
|
||||||
AC_DEFINE([HAVE_PTHREAD_SETSPECIFIC], [], [Whether pthread_setspecific() is supported])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_MSG_RESULT($support_for_pthread_setspecific);
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST(TOOLCHAIN_SUPPORTS__THREAD)
|
|
||||||
AC_SUBST(HAVE_PTHREAD_SETSPECIFIC)
|
|
||||||
AC_SUBST(PTHREAD_LDFLAGS)
|
|
||||||
|
|
||||||
AC_OUTPUT([pixman-1.pc
|
|
||||||
pixman-1-uninstalled.pc
|
|
||||||
Makefile
|
|
||||||
pixman/Makefile
|
|
||||||
pixman/pixman-version.h
|
|
||||||
test/Makefile])
|
|
373
debian/changelog
vendored
373
debian/changelog
vendored
@ -1,3 +1,376 @@
|
|||||||
|
pixman (0.44.0-4) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* Team upload.
|
||||||
|
* debian/copyright: Convert to machine-readable format
|
||||||
|
|
||||||
|
-- Dylan Aïssi <daissi@debian.org> Thu, 31 Jul 2025 22:16:23 +0200
|
||||||
|
|
||||||
|
pixman (0.44.0-3) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Replace timeout bump patch by using a multiplier option instead.
|
||||||
|
Thanks, Aurelien Jarno! (Closes: #1086999)
|
||||||
|
|
||||||
|
-- Timo Aaltonen <tjaalton@debian.org> Sat, 09 Nov 2024 11:02:55 +0200
|
||||||
|
|
||||||
|
pixman (0.44.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* patches: Increase test timeout 120->240s. (Closes: #1086999)
|
||||||
|
|
||||||
|
-- Timo Aaltonen <tjaalton@debian.org> Fri, 08 Nov 2024 09:58:04 +0200
|
||||||
|
|
||||||
|
pixman (0.44.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* patches: Refresh patch.
|
||||||
|
* control, rules: Build with meson.
|
||||||
|
* symbols: Updated.
|
||||||
|
* control: Migrate to pkgconf.
|
||||||
|
* rules: Drop obsolete dbgsym-migration.
|
||||||
|
|
||||||
|
-- Timo Aaltonen <tjaalton@debian.org> Thu, 07 Nov 2024 16:48:29 +0200
|
||||||
|
|
||||||
|
pixman (0.42.2-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* d/p/Avoid-integer-overflow-leading-to-out-of-bounds-writ.diff:
|
||||||
|
- Removed, fixed upstream.
|
||||||
|
|
||||||
|
-- Emilio Pozuelo Monfort <pochu@debian.org> Fri, 11 Nov 2022 13:42:25 +0100
|
||||||
|
|
||||||
|
pixman (0.40.0-1.1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Non-maintainer upload.
|
||||||
|
* Avoid integer overflow leading to out-of-bounds write (CVE-2022-44638)
|
||||||
|
(Closes: #1023427)
|
||||||
|
|
||||||
|
-- Salvatore Bonaccorso <carnil@debian.org> Thu, 03 Nov 2022 23:07:46 +0100
|
||||||
|
|
||||||
|
pixman (0.40.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release. (Closes: #958298, #832579, #838650)
|
||||||
|
* control, rules: Migrate to debhelper-compat, bump to 13.
|
||||||
|
* symbols: Updated, bump shlibs.
|
||||||
|
|
||||||
|
-- Timo Aaltonen <tjaalton@debian.org> Thu, 03 Dec 2020 15:28:13 +0200
|
||||||
|
|
||||||
|
pixman (0.36.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Update to my Debian address.
|
||||||
|
* Update Vcs-* URLs to point to salsa.debian.org.
|
||||||
|
* Use https URL in debian/copyright.
|
||||||
|
* Set source format to 1.0.
|
||||||
|
* Bump debhelper compat to 11.
|
||||||
|
* Bump standards version to 4.2.1.
|
||||||
|
|
||||||
|
-- Andreas Boll <aboll@debian.org> Wed, 12 Dec 2018 22:02:44 +0100
|
||||||
|
|
||||||
|
pixman (0.34.0-2) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Declare Multi-Arch: same for libpixman-1-dev (Closes: #884166).
|
||||||
|
* Switch to dbsym package.
|
||||||
|
* Stop passing --disable-silent-rules to configure, debhelper does it
|
||||||
|
now.
|
||||||
|
* Bump standards version to 4.1.2.
|
||||||
|
|
||||||
|
-- Andreas Boll <andreas.boll.dev@gmail.com> Sun, 17 Dec 2017 13:33:55 +0100
|
||||||
|
|
||||||
|
pixman (0.34.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload.
|
||||||
|
* New upstream release (no actual changes)
|
||||||
|
* Use https URL in debian/watch.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 24 Sep 2016 13:25:16 +0200
|
||||||
|
|
||||||
|
pixman (0.33.6-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release candidate.
|
||||||
|
* Add myself to Uploaders.
|
||||||
|
|
||||||
|
-- Andreas Boll <andreas.boll.dev@gmail.com> Thu, 14 Jan 2016 13:46:28 +0100
|
||||||
|
|
||||||
|
pixman (0.33.4-1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* Team upload.
|
||||||
|
* New upstream release candidate.
|
||||||
|
|
||||||
|
-- Andreas Boll <andreas.boll.dev@gmail.com> Wed, 04 Nov 2015 13:26:18 +0100
|
||||||
|
|
||||||
|
pixman (0.33.2-2) sid; urgency=medium
|
||||||
|
|
||||||
|
* Run tests with VERBOSE=1.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 12 Sep 2015 20:31:06 +0200
|
||||||
|
|
||||||
|
pixman (0.33.2-1) sid; urgency=medium
|
||||||
|
|
||||||
|
[ Andreas Boll ]
|
||||||
|
* New upstream release candidate.
|
||||||
|
* Enable vmx on ppc64el (closes: #786345).
|
||||||
|
* Update Vcs-* fields.
|
||||||
|
* Add upstream url.
|
||||||
|
* Drop XC- prefix from Package-Type field.
|
||||||
|
* Bump standards version to 3.9.6.
|
||||||
|
|
||||||
|
[ intrigeri ]
|
||||||
|
* Simplify hardening build flags handling (closes: #760100).
|
||||||
|
Thanks to Simon Ruderich <simon@ruderich.org> for the patch.
|
||||||
|
* Enable all hardening build flags. Thanks to Simon Ruderich too.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 12 Sep 2015 13:08:02 +0200
|
||||||
|
|
||||||
|
pixman (0.32.6-3) sid; urgency=medium
|
||||||
|
|
||||||
|
[ intrigeri ]
|
||||||
|
* Enable hardening build flags with dpkg-buildflags.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 23 Aug 2014 22:16:40 -0700
|
||||||
|
|
||||||
|
pixman (0.32.6-2) sid; urgency=medium
|
||||||
|
|
||||||
|
[ Julien Cristau ]
|
||||||
|
* Disable vmx on ppc64el (closes: #745547). Thanks, Breno Leitao!
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Mon, 18 Aug 2014 22:50:39 +0200
|
||||||
|
|
||||||
|
pixman (0.32.6-1) sid; urgency=medium
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump debhelper compat level to 9.
|
||||||
|
* Remove Cyril from Uploaders.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sun, 13 Jul 2014 16:31:06 +0200
|
||||||
|
|
||||||
|
pixman (0.32.4-1) sid; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Tue, 17 Dec 2013 22:04:15 +0100
|
||||||
|
|
||||||
|
pixman (0.30.2-2) sid; urgency=low
|
||||||
|
|
||||||
|
* Cherry-pick upstream bigfixes for fixing a crash when rendering
|
||||||
|
invalid trapezoids. (LP: #1197921)
|
||||||
|
Addresses CVE-2013-6425.
|
||||||
|
|
||||||
|
-- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> Mon, 18 Nov 2013 15:08:56 +0100
|
||||||
|
|
||||||
|
pixman (0.30.2-1) sid; urgency=low
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
- includes big-endian matrix-test fix
|
||||||
|
* Increase alpha-loop test timeout some more.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Tue, 13 Aug 2013 12:08:18 +0200
|
||||||
|
|
||||||
|
pixman (0.30.0-3) sid; urgency=low
|
||||||
|
|
||||||
|
* Increase timeout for the alpha-loop test. That will hopefully let it pass
|
||||||
|
on the mips buildd.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 03 Aug 2013 10:24:29 +0200
|
||||||
|
|
||||||
|
pixman (0.30.0-2) sid; urgency=low
|
||||||
|
|
||||||
|
* Disable silent Makefile rules.
|
||||||
|
* Disable arm iwmmxt fast paths. It breaks the build.
|
||||||
|
* Fix matrix-test on big endian (patch from Siarhei Siamashka).
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 27 Jul 2013 21:40:48 +0200
|
||||||
|
|
||||||
|
pixman (0.30.0-1) sid; urgency=low
|
||||||
|
|
||||||
|
[ Maarten Lankhorst, Cyril Brulebois, Julien Cristau ]
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Fri, 26 Jul 2013 14:58:25 +0200
|
||||||
|
|
||||||
|
pixman (0.26.0-4) sid; urgency=high
|
||||||
|
|
||||||
|
* Fix for CVE-2013-1591 (stack-based buffer overflow), cherry-picked from
|
||||||
|
0.27.4 (closes: #700308).
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Mon, 18 Feb 2013 19:58:33 +0100
|
||||||
|
|
||||||
|
pixman (0.26.0-3) unstable; urgency=low
|
||||||
|
|
||||||
|
* Pass LS_CFLAGS=" " to configure to prevent -march=loongson2f from
|
||||||
|
being passed to gcc, which would break on loongson2e (see fdo bug
|
||||||
|
#51451). This fixes the test suite failures on mipsel, and should
|
||||||
|
avoid any crashes depending on user systems.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Wed, 27 Jun 2012 12:11:54 +0200
|
||||||
|
|
||||||
|
pixman (0.26.0-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Cherry-pick from upstream master branch to fix FTBFS on *i386:
|
||||||
|
- da6193b1fc “mmx: add missing _mm_empty calls”
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Fri, 15 Jun 2012 01:25:20 +0200
|
||||||
|
|
||||||
|
pixman (0.26.0-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Fri, 15 Jun 2012 00:16:47 +0200
|
||||||
|
|
||||||
|
pixman (0.25.6-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release candidate.
|
||||||
|
* Remove demos/parrot.jpg before building the source package to avoid
|
||||||
|
“binary file contents changed” until it's shipped in the upstream
|
||||||
|
tarball.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Sun, 20 May 2012 17:56:35 +0200
|
||||||
|
|
||||||
|
pixman (0.25.2-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release candidate.
|
||||||
|
* Add new symbols and bump shlibs accordingly:
|
||||||
|
- pixman_region32_clear
|
||||||
|
- pixman_region_clear
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Fri, 09 Mar 2012 13:17:16 +0100
|
||||||
|
|
||||||
|
pixman (0.24.4-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release
|
||||||
|
- Revert "Reject trapezoids where top (botttom) is above (below) the
|
||||||
|
edges" (closes: #656682)
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Thu, 09 Feb 2012 21:16:47 +0100
|
||||||
|
|
||||||
|
pixman (0.24.2-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release:
|
||||||
|
- Stable bug fix release from the 0.24 branch.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Thu, 19 Jan 2012 12:22:54 +0100
|
||||||
|
|
||||||
|
pixman (0.24.0-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Mon, 07 Nov 2011 18:13:47 +0100
|
||||||
|
|
||||||
|
pixman (0.23.8-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Tue, 01 Nov 2011 12:29:16 +0100
|
||||||
|
|
||||||
|
pixman (0.23.6-1) experimental; urgency=low
|
||||||
|
|
||||||
|
[ Rico Tzschichholz ]
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sat, 22 Oct 2011 11:09:04 +0200
|
||||||
|
|
||||||
|
pixman (0.23.2-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Enable parallel building (by passing --parallel to dh $@).
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Tue, 05 Jul 2011 01:37:27 +0200
|
||||||
|
|
||||||
|
pixman (0.22.0-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Team upload.
|
||||||
|
|
||||||
|
[ Steve Langasek ]
|
||||||
|
* Build for multiarch.
|
||||||
|
|
||||||
|
[ Julien Cristau ]
|
||||||
|
* Bump Standards-Version to 3.9.2.
|
||||||
|
* New upstream release (no changes from 0.21.8 except for the version bump).
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Sun, 12 Jun 2011 17:02:01 +0200
|
||||||
|
|
||||||
|
pixman (0.21.8-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* As seen in the upstream announcement: “When this version of pixman is
|
||||||
|
used with the git version of the X server, trapezoid rendering will be
|
||||||
|
corrupted. This is a known bug in the X server.”
|
||||||
|
* This new release should fix the FTBFS on big endian machines, tests
|
||||||
|
were failing due to missing swapping (Closes: #622211).
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Fri, 29 Apr 2011 17:53:12 +0200
|
||||||
|
|
||||||
|
pixman (0.21.6-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Sun, 10 Apr 2011 23:08:36 +0200
|
||||||
|
|
||||||
|
pixman (0.21.6-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Update symbols file with new symbols.
|
||||||
|
* Bump shlibs accordingly.
|
||||||
|
* Wrap Build-Depends.
|
||||||
|
* Remove libpixman1-dev from Conflicts, last seen in etch!
|
||||||
|
* Update Uploaders list. Thanks, David!
|
||||||
|
* Switch to dh:
|
||||||
|
- Use debhelper 8.
|
||||||
|
- Use dh-autoreconf.
|
||||||
|
- Kill .la files.
|
||||||
|
- Switch dh_install from --list-missing to --fail-missing for
|
||||||
|
additionaly safety.
|
||||||
|
* Add a quilt series placeholder file.
|
||||||
|
* Bump Standards-Version to 3.9.1 (no changes needed).
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Wed, 09 Mar 2011 04:08:02 +0100
|
||||||
|
|
||||||
|
pixman (0.21.4-2) unstable; urgency=low
|
||||||
|
|
||||||
|
* Upload to unstable.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Sun, 06 Feb 2011 05:31:10 +0100
|
||||||
|
|
||||||
|
pixman (0.21.4-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Update debian/copyright from upstream's COPYING.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Wed, 19 Jan 2011 20:31:26 +0100
|
||||||
|
|
||||||
|
pixman (0.21.2-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Update debian/copyright from upstream's COPYING.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Wed, 17 Nov 2010 15:56:46 +0100
|
||||||
|
|
||||||
|
pixman (0.20.0-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Sat, 06 Nov 2010 10:00:54 +0100
|
||||||
|
|
||||||
|
pixman (0.19.6-1) experimental; urgency=low
|
||||||
|
|
||||||
|
* New upstream release.
|
||||||
|
* Bump SHLIBS_VERSION from 0.18.0 to 0.19.4 for newly-added functions.
|
||||||
|
* Update symbols file with newly-added functions.
|
||||||
|
* Add -c4 to the dh_makeshlibs call, to ensure the build breaks if
|
||||||
|
unexpected symbol-related changes happened.
|
||||||
|
* As of pixman-0.19.2-5-g5b99710, Gtk+ is auto-detected, make sure not
|
||||||
|
to pick it accidentally, by passing --disable-gtk. (That's only for
|
||||||
|
test purposes, but would require pixman-1 itself.)
|
||||||
|
* Enable the testsuite.
|
||||||
|
* Add myself to Uploaders.
|
||||||
|
|
||||||
|
-- Cyril Brulebois <kibi@debian.org> Wed, 27 Oct 2010 23:14:00 +0200
|
||||||
|
|
||||||
|
pixman (0.18.4-1) experimental; urgency=low
|
||||||
|
|
||||||
|
[ Robert Hooker ]
|
||||||
|
* New upstream stable release.
|
||||||
|
|
||||||
|
-- Julien Cristau <jcristau@debian.org> Mon, 06 Sep 2010 21:15:07 +0200
|
||||||
|
|
||||||
pixman (0.18.2-1) experimental; urgency=low
|
pixman (0.18.2-1) experimental; urgency=low
|
||||||
|
|
||||||
* New upstream stable release. Changes since 0.18.0:
|
* New upstream stable release. Changes since 0.18.0:
|
||||||
|
1
debian/compat
vendored
1
debian/compat
vendored
@ -1 +0,0 @@
|
|||||||
5
|
|
32
debian/control
vendored
32
debian/control
vendored
@ -2,11 +2,16 @@ Source: pixman
|
|||||||
Section: devel
|
Section: devel
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
|
Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
|
||||||
Uploaders: David Nusinow <dnusinow@debian.org>
|
Uploaders: Andreas Boll <aboll@debian.org>
|
||||||
Build-Depends: debhelper (>= 5), automake, autoconf, libtool, pkg-config, quilt
|
Build-Depends:
|
||||||
Standards-Version: 3.8.3
|
debhelper-compat (= 13),
|
||||||
Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/pixman
|
meson,
|
||||||
Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/pixman.git
|
pkgconf,
|
||||||
|
quilt,
|
||||||
|
Standards-Version: 4.2.1
|
||||||
|
Vcs-Git: https://salsa.debian.org/xorg-team/lib/pixman.git
|
||||||
|
Vcs-Browser: https://salsa.debian.org/xorg-team/lib/pixman
|
||||||
|
Homepage: http://pixman.org/
|
||||||
|
|
||||||
Package: libpixman-1-0
|
Package: libpixman-1-0
|
||||||
Section: libs
|
Section: libs
|
||||||
@ -14,6 +19,8 @@ Architecture: any
|
|||||||
Depends:
|
Depends:
|
||||||
${shlibs:Depends},
|
${shlibs:Depends},
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
|
Pre-Depends: ${misc:Pre-Depends}
|
||||||
|
Multi-Arch: same
|
||||||
Description: pixel-manipulation library for X and cairo
|
Description: pixel-manipulation library for X and cairo
|
||||||
A library for manipulating pixel regions -- a set of Y-X banded
|
A library for manipulating pixel regions -- a set of Y-X banded
|
||||||
rectangles, image compositing using the Porter/Duff model
|
rectangles, image compositing using the Porter/Duff model
|
||||||
@ -22,7 +29,7 @@ Description: pixel-manipulation library for X and cairo
|
|||||||
|
|
||||||
Package: libpixman-1-0-udeb
|
Package: libpixman-1-0-udeb
|
||||||
Section: debian-installer
|
Section: debian-installer
|
||||||
XC-Package-Type: udeb
|
Package-Type: udeb
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends:
|
Depends:
|
||||||
${shlibs:Depends},
|
${shlibs:Depends},
|
||||||
@ -31,24 +38,13 @@ Description: pixel-manipulation library for X and cairo
|
|||||||
This package contains a minimal set of libraries needed for the Debian
|
This package contains a minimal set of libraries needed for the Debian
|
||||||
installer. Do not install it on a normal system.
|
installer. Do not install it on a normal system.
|
||||||
|
|
||||||
Package: libpixman-1-0-dbg
|
|
||||||
Section: debug
|
|
||||||
Priority: extra
|
|
||||||
Architecture: any
|
|
||||||
Depends:
|
|
||||||
libpixman-1-0 (= ${binary:Version}),
|
|
||||||
${misc:Depends},
|
|
||||||
Description: pixel-manipulation library for X and cairo (debugging symbols)
|
|
||||||
Debugging symbols for the Cairo/X pixel manipulation library. This is
|
|
||||||
needed to debug programs linked against libpixman0.
|
|
||||||
|
|
||||||
Package: libpixman-1-dev
|
Package: libpixman-1-dev
|
||||||
Section: libdevel
|
Section: libdevel
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends:
|
Depends:
|
||||||
libpixman-1-0 (= ${binary:Version}),
|
libpixman-1-0 (= ${binary:Version}),
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
Conflicts: libpixman1-dev
|
Multi-Arch: same
|
||||||
Description: pixel-manipulation library for X and cairo (development files)
|
Description: pixel-manipulation library for X and cairo (development files)
|
||||||
Development libraries, header files and documentation needed by
|
Development libraries, header files and documentation needed by
|
||||||
programs that want to compile with the Cairo/X pixman library.
|
programs that want to compile with the Cairo/X pixman library.
|
||||||
|
156
debian/copyright
vendored
156
debian/copyright
vendored
@ -1,114 +1,48 @@
|
|||||||
This package was downloaded from
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
http://xorg.freedesktop.org/releases/individual/lib/
|
Upstream-Name: pixman
|
||||||
|
Source: https://gitlab.freedesktop.org/pixman/pixman
|
||||||
|
License: Expat
|
||||||
|
|
||||||
Debian packaging by Julien Cristau <jcristau@debian.org>, 18 May 2007.
|
Files: *
|
||||||
|
Copyright: 1987-1998 The Open Group
|
||||||
|
1987-1989 Digital Equipment Corporation
|
||||||
|
1999-2008 Keith Packard
|
||||||
|
2000 SuSE, Inc.
|
||||||
|
2000 Keith Packard, member of The XFree86 Project, Inc.
|
||||||
|
2004-2010 Red Hat, Inc.
|
||||||
|
2004 Nicholas Miell
|
||||||
|
2005 Lars Knoll & Zack Rusin, Trolltech
|
||||||
|
2005 Trolltech AS
|
||||||
|
2007 Luca Barbato
|
||||||
|
2008 Aaron Plattner, NVIDIA Corporation
|
||||||
|
2008 Rodrigo Kumpera
|
||||||
|
2008 André Tupinambá
|
||||||
|
2008 Mozilla Corporation
|
||||||
|
2008 Frederic Plourde
|
||||||
|
2009, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
2009-2010 Nokia Corporation
|
||||||
|
License: Expat
|
||||||
|
|
||||||
The following is the 'standard copyright' agreed upon by most contributors,
|
Files: debian/*
|
||||||
and is currently the canonical license, though a modification is currently
|
Copyright: 2007 Julien Cristau <jcristau@debian.org>
|
||||||
under discussion. Copyright holders of new code should use this license
|
License: Expat
|
||||||
statement where possible, and append their name to this list.
|
|
||||||
|
|
||||||
Copyright 1987, 1988, 1989, 1998 The Open Group
|
License: Expat
|
||||||
Copyright 1987, 1988, 1989 Digital Equipment Corporation
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
Copyright 1999, 2004, 2008 Keith Packard
|
copy of this software and associated documentation files (the "Software"),
|
||||||
Copyright 2000 SuSE, Inc.
|
to deal in the Software without restriction, including without limitation
|
||||||
Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
Copyright 2004, 2005, 2007, 2008 Red Hat, Inc.
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
Copyright 2004 Nicholas Miell
|
Software is furnished to do so, subject to the following conditions:
|
||||||
Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
|
.
|
||||||
Copyright 2005 Trolltech AS
|
The above copyright notice and this permission notice (including the next
|
||||||
Copyright 2007 Luca Barbato
|
paragraph) shall be included in all copies or substantial portions of the
|
||||||
Copyright 2008 Aaron Plattner, NVIDIA Corporation
|
Software.
|
||||||
Copyright 2008 Rodrigo Kumpera
|
.
|
||||||
Copyright 2008 André Tupinambá
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
Copyright 2008 Mozilla Corporation
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
Copyright 2008 Frederic Plourde
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
copy of this software and associated documentation files (the "Software"),
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
to deal in the Software without restriction, including without limitation
|
DEALINGS IN THE SOFTWARE.
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice (including the next
|
|
||||||
paragraph) shall be included in all copies or substantial portions of the
|
|
||||||
Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
Other licenses:
|
|
||||||
|
|
||||||
Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
|
|
||||||
2005 Lars Knoll & Zack Rusin, Trolltech
|
|
||||||
Copyright © 2000 SuSE, Inc.
|
|
||||||
Copyright © 2007 Red Hat, Inc.
|
|
||||||
Copyright © 1998 Keith Packard
|
|
||||||
|
|
||||||
Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
the above copyright notice appear in all copies and that both that
|
|
||||||
copyright notice and this permission notice appear in supporting
|
|
||||||
documentation, and that the name of the copyright holders not be used in
|
|
||||||
advertising or publicity pertaining to distribution of the software without
|
|
||||||
specific, written prior permission. The copyright holders make no
|
|
||||||
representations about the suitability of this software for any purpose. It
|
|
||||||
is provided "as is" without express or implied warranty.
|
|
||||||
|
|
||||||
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
|
||||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
|
||||||
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
|
||||||
OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
Copyright 1987, 1988, 1989, 1998 The Open Group
|
|
||||||
|
|
||||||
Permission to use, copy, modify, distribute, and sell this software and its
|
|
||||||
documentation for any purpose is hereby granted without fee, provided that
|
|
||||||
the above copyright notice appear in all copies and that both that
|
|
||||||
copyright notice and this permission notice appear in supporting
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
||||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
Except as contained in this notice, the name of The Open Group shall not be
|
|
||||||
used in advertising or otherwise to promote the sale, use or other dealings
|
|
||||||
in this Software without prior written authorization from The Open Group.
|
|
||||||
|
|
||||||
Copyright 1987, 1988, 1989 by
|
|
||||||
Digital Equipment Corporation, Maynard, Massachusetts.
|
|
||||||
|
|
||||||
All Rights Reserved
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this software and its
|
|
||||||
documentation for any purpose and without fee is hereby granted,
|
|
||||||
provided that the above copyright notice appear in all copies and that
|
|
||||||
both that copyright notice and this permission notice appear in
|
|
||||||
supporting documentation, and that the name of Digital not be
|
|
||||||
used in advertising or publicity pertaining to distribution of the
|
|
||||||
software without specific, written prior permission.
|
|
||||||
|
|
||||||
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
|
||||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
|
||||||
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
|
|
||||||
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
||||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
||||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
|
||||||
SOFTWARE.
|
|
||||||
|
2
debian/libpixman-1-0-udeb.install
vendored
2
debian/libpixman-1-0-udeb.install
vendored
@ -1 +1 @@
|
|||||||
usr/lib/libpixman-1.so.*
|
usr/lib/*/libpixman-1.so.* /usr/lib
|
||||||
|
2
debian/libpixman-1-0.install
vendored
2
debian/libpixman-1-0.install
vendored
@ -1 +1 @@
|
|||||||
usr/lib/libpixman-1.so.*
|
usr/lib/*/libpixman-1.so.*
|
||||||
|
2
debian/libpixman-1-0.lintian-overrides
vendored
Normal file
2
debian/libpixman-1-0.lintian-overrides
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
libpixman-1-0: symbols-declares-dependency-on-other-package libpixman-1-0-private
|
||||||
|
|
37
debian/libpixman-1-0.symbols
vendored
37
debian/libpixman-1-0.symbols
vendored
@ -1,7 +1,14 @@
|
|||||||
libpixman-1.so.0 libpixman-1-0 #MINVER#
|
libpixman-1.so.0 libpixman-1-0 #MINVER#
|
||||||
|
| libpixman-1-0-private
|
||||||
|
_pixman_internal_only_get_implementation@Base 0 1
|
||||||
pixman_add_trapezoids@Base 0
|
pixman_add_trapezoids@Base 0
|
||||||
pixman_add_traps@Base 0
|
pixman_add_traps@Base 0
|
||||||
|
pixman_add_triangles@Base 0.21.6
|
||||||
pixman_blt@Base 0
|
pixman_blt@Base 0
|
||||||
|
pixman_composite_glyphs@Base 0.27.2
|
||||||
|
pixman_composite_glyphs_no_mask@Base 0.27.2
|
||||||
|
pixman_composite_trapezoids@Base 0.21.6
|
||||||
|
pixman_composite_triangles@Base 0.21.6
|
||||||
pixman_compute_composite_region@Base 0
|
pixman_compute_composite_region@Base 0
|
||||||
pixman_disable_out_of_bounds_workaround@Base 0.15.16
|
pixman_disable_out_of_bounds_workaround@Base 0.15.16
|
||||||
pixman_edge_init@Base 0
|
pixman_edge_init@Base 0
|
||||||
@ -20,18 +27,33 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_f_transform_scale@Base 0.13.2
|
pixman_f_transform_scale@Base 0.13.2
|
||||||
pixman_f_transform_translate@Base 0.13.2
|
pixman_f_transform_translate@Base 0.13.2
|
||||||
pixman_fill@Base 0
|
pixman_fill@Base 0
|
||||||
|
pixman_filter_create_separable_convolution@Base 0.30.0
|
||||||
|
pixman_format_supported_destination@Base 0.15.16
|
||||||
|
pixman_format_supported_source@Base 0.15.16
|
||||||
|
pixman_glyph_cache_create@Base 0.27.2
|
||||||
|
pixman_glyph_cache_destroy@Base 0.27.2
|
||||||
|
pixman_glyph_cache_freeze@Base 0.27.2
|
||||||
|
pixman_glyph_cache_insert@Base 0.27.2
|
||||||
|
pixman_glyph_cache_lookup@Base 0.27.2
|
||||||
|
pixman_glyph_cache_remove@Base 0.27.2
|
||||||
|
pixman_glyph_cache_thaw@Base 0.27.2
|
||||||
|
pixman_glyph_get_extents@Base 0.27.2
|
||||||
|
pixman_glyph_get_mask_format@Base 0.27.2
|
||||||
pixman_image_composite@Base 0.15.14
|
pixman_image_composite@Base 0.15.14
|
||||||
pixman_image_composite32@Base 0.18.0
|
pixman_image_composite32@Base 0.18.0
|
||||||
pixman_image_create_bits@Base 0.15.12
|
pixman_image_create_bits@Base 0.15.12
|
||||||
|
pixman_image_create_bits_no_clear@Base 0.27.4
|
||||||
pixman_image_create_conical_gradient@Base 0
|
pixman_image_create_conical_gradient@Base 0
|
||||||
pixman_image_create_linear_gradient@Base 0
|
pixman_image_create_linear_gradient@Base 0
|
||||||
pixman_image_create_radial_gradient@Base 0
|
pixman_image_create_radial_gradient@Base 0
|
||||||
pixman_image_create_solid_fill@Base 0
|
pixman_image_create_solid_fill@Base 0
|
||||||
pixman_image_fill_boxes@Base 0.18.0
|
pixman_image_fill_boxes@Base 0.18.0
|
||||||
pixman_image_fill_rectangles@Base 0.15.14
|
pixman_image_fill_rectangles@Base 0.15.14
|
||||||
|
pixman_image_get_component_alpha@Base 0.19.6
|
||||||
pixman_image_get_data@Base 0
|
pixman_image_get_data@Base 0
|
||||||
pixman_image_get_depth@Base 0
|
pixman_image_get_depth@Base 0
|
||||||
pixman_image_get_destroy_data@Base 0.18.0
|
pixman_image_get_destroy_data@Base 0.18.0
|
||||||
|
pixman_image_get_format@Base 0.19.6
|
||||||
pixman_image_get_height@Base 0
|
pixman_image_get_height@Base 0
|
||||||
pixman_image_get_stride@Base 0
|
pixman_image_get_stride@Base 0
|
||||||
pixman_image_get_width@Base 0
|
pixman_image_get_width@Base 0
|
||||||
@ -42,7 +64,9 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_image_set_clip_region@Base 0
|
pixman_image_set_clip_region@Base 0
|
||||||
pixman_image_set_component_alpha@Base 0
|
pixman_image_set_component_alpha@Base 0
|
||||||
pixman_image_set_destroy_function@Base 0.15.12
|
pixman_image_set_destroy_function@Base 0.15.12
|
||||||
pixman_image_set_filter@Base 0
|
pixman_image_set_dither@Base 0.40.0
|
||||||
|
pixman_image_set_dither_offset@Base 0.40.0
|
||||||
|
pixman_image_set_filter@Base 0.30.0
|
||||||
pixman_image_set_has_client_clip@Base 0
|
pixman_image_set_has_client_clip@Base 0
|
||||||
pixman_image_set_indexed@Base 0
|
pixman_image_set_indexed@Base 0
|
||||||
pixman_image_set_repeat@Base 0
|
pixman_image_set_repeat@Base 0
|
||||||
@ -52,9 +76,11 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_line_fixed_edge_init@Base 0
|
pixman_line_fixed_edge_init@Base 0
|
||||||
pixman_rasterize_edges@Base 0
|
pixman_rasterize_edges@Base 0
|
||||||
pixman_rasterize_trapezoid@Base 0
|
pixman_rasterize_trapezoid@Base 0
|
||||||
|
pixman_region32_clear@Base 0.25.2
|
||||||
pixman_region32_contains_point@Base 0.11.2
|
pixman_region32_contains_point@Base 0.11.2
|
||||||
pixman_region32_contains_rectangle@Base 0.11.2
|
pixman_region32_contains_rectangle@Base 0.11.2
|
||||||
pixman_region32_copy@Base 0.11.2
|
pixman_region32_copy@Base 0.11.2
|
||||||
|
pixman_region32_empty@Base 0.44.0
|
||||||
pixman_region32_equal@Base 0.11.2
|
pixman_region32_equal@Base 0.11.2
|
||||||
pixman_region32_extents@Base 0.11.2
|
pixman_region32_extents@Base 0.11.2
|
||||||
pixman_region32_fini@Base 0.11.2
|
pixman_region32_fini@Base 0.11.2
|
||||||
@ -64,6 +90,7 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_region32_init_rects@Base 0.11.2
|
pixman_region32_init_rects@Base 0.11.2
|
||||||
pixman_region32_init_with_extents@Base 0.11.2
|
pixman_region32_init_with_extents@Base 0.11.2
|
||||||
pixman_region32_intersect@Base 0.11.2
|
pixman_region32_intersect@Base 0.11.2
|
||||||
|
pixman_region32_intersect_rect@Base 0.19.6
|
||||||
pixman_region32_inverse@Base 0.11.2
|
pixman_region32_inverse@Base 0.11.2
|
||||||
pixman_region32_n_rects@Base 0.11.2
|
pixman_region32_n_rects@Base 0.11.2
|
||||||
pixman_region32_not_empty@Base 0.11.2
|
pixman_region32_not_empty@Base 0.11.2
|
||||||
@ -74,9 +101,11 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_region32_translate@Base 0.11.2
|
pixman_region32_translate@Base 0.11.2
|
||||||
pixman_region32_union@Base 0.11.2
|
pixman_region32_union@Base 0.11.2
|
||||||
pixman_region32_union_rect@Base 0.11.2
|
pixman_region32_union_rect@Base 0.11.2
|
||||||
|
pixman_region_clear@Base 0.25.2
|
||||||
pixman_region_contains_point@Base 0
|
pixman_region_contains_point@Base 0
|
||||||
pixman_region_contains_rectangle@Base 0
|
pixman_region_contains_rectangle@Base 0
|
||||||
pixman_region_copy@Base 0
|
pixman_region_copy@Base 0
|
||||||
|
pixman_region_empty@Base 0.44.0
|
||||||
pixman_region_equal@Base 0
|
pixman_region_equal@Base 0
|
||||||
pixman_region_extents@Base 0
|
pixman_region_extents@Base 0
|
||||||
pixman_region_fini@Base 0
|
pixman_region_fini@Base 0
|
||||||
@ -86,6 +115,7 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_region_init_rects@Base 0
|
pixman_region_init_rects@Base 0
|
||||||
pixman_region_init_with_extents@Base 0
|
pixman_region_init_with_extents@Base 0
|
||||||
pixman_region_intersect@Base 0
|
pixman_region_intersect@Base 0
|
||||||
|
pixman_region_intersect_rect@Base 0.19.6
|
||||||
pixman_region_inverse@Base 0
|
pixman_region_inverse@Base 0
|
||||||
pixman_region_n_rects@Base 0
|
pixman_region_n_rects@Base 0
|
||||||
pixman_region_not_empty@Base 0
|
pixman_region_not_empty@Base 0
|
||||||
@ -112,11 +142,12 @@ libpixman-1.so.0 libpixman-1-0 #MINVER#
|
|||||||
pixman_transform_is_scale@Base 0.13.2
|
pixman_transform_is_scale@Base 0.13.2
|
||||||
pixman_transform_multiply@Base 0.13.2
|
pixman_transform_multiply@Base 0.13.2
|
||||||
pixman_transform_point@Base 0.13.2
|
pixman_transform_point@Base 0.13.2
|
||||||
|
pixman_transform_point_31_16@Base 0 1
|
||||||
|
pixman_transform_point_31_16_3d@Base 0 1
|
||||||
|
pixman_transform_point_31_16_affine@Base 0 1
|
||||||
pixman_transform_rotate@Base 0.13.2
|
pixman_transform_rotate@Base 0.13.2
|
||||||
pixman_transform_scale@Base 0.13.2
|
pixman_transform_scale@Base 0.13.2
|
||||||
pixman_transform_translate@Base 0.13.2
|
pixman_transform_translate@Base 0.13.2
|
||||||
pixman_transform_point_3d@Base 0
|
pixman_transform_point_3d@Base 0
|
||||||
pixman_version@Base 0.10.0
|
pixman_version@Base 0.10.0
|
||||||
pixman_version_string@Base 0.10.0
|
pixman_version_string@Base 0.10.0
|
||||||
pixman_format_supported_destination@Base 0.15.16
|
|
||||||
pixman_format_supported_source@Base 0.15.16
|
|
||||||
|
5
debian/libpixman-1-dev.install
vendored
5
debian/libpixman-1-dev.install
vendored
@ -1,4 +1,3 @@
|
|||||||
usr/lib/libpixman-1.so
|
usr/lib/*/libpixman-1.so
|
||||||
usr/lib/libpixman-1.a
|
usr/lib/*/pkgconfig
|
||||||
usr/lib/pkgconfig
|
|
||||||
usr/include/pixman-1
|
usr/include/pixman-1
|
||||||
|
1
debian/patches/series
vendored
Normal file
1
debian/patches/series
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
test-increase-timeout.diff
|
11
debian/patches/test-increase-timeout.diff
vendored
Normal file
11
debian/patches/test-increase-timeout.diff
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- a/test/alpha-loop.c
|
||||||
|
+++ b/test/alpha-loop.c
|
||||||
|
@@ -22,7 +22,7 @@ main (int argc, char **argv)
|
||||||
|
d = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4);
|
||||||
|
s = pixman_image_create_bits (PIXMAN_a2r10g10b10, WIDTH, HEIGHT, src, WIDTH * 4);
|
||||||
|
|
||||||
|
- fail_after (5, "Infinite loop detected: 5 seconds without progress\n");
|
||||||
|
+ fail_after (50, "Infinite loop detected: 50 seconds without progress\n");
|
||||||
|
|
||||||
|
pixman_image_set_alpha_map (s, a, 0, 0);
|
||||||
|
pixman_image_set_alpha_map (a, s, 0, 0);
|
116
debian/rules
vendored
116
debian/rules
vendored
@ -1,104 +1,32 @@
|
|||||||
#!/usr/bin/make -f
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
include /usr/share/quilt/quilt.make
|
|
||||||
|
|
||||||
PACKAGE = libpixman-1-0
|
PACKAGE = libpixman-1-0
|
||||||
SHLIBS_VERSION = 0.18.0
|
SHLIBS = 0.40.0
|
||||||
|
|
||||||
CFLAGS = -Wall -g
|
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||||
ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
|
|
||||||
CFLAGS += -O0
|
|
||||||
else
|
|
||||||
CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
||||||
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
||||||
MAKEFLAGS += -j$(NUMJOBS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
|
# Disable Gtk+ autodetection:
|
||||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
override_dh_auto_configure:
|
||||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
# also avoid loongson2f optimizations on mipsel, see 0.26.0-3
|
||||||
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
|
# changelog entry:
|
||||||
confflags += --build=$(DEB_HOST_GNU_TYPE)
|
LS_CFLAGS=" " dh_auto_configure -- \
|
||||||
else
|
-Dgtk=disabled
|
||||||
confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
autogen: autogen-stamp
|
# Install in debian/tmp to retain control through dh_install:
|
||||||
autogen-stamp: $(QUILT_STAMPFN)
|
override_dh_auto_install:
|
||||||
dh_testdir
|
dh_auto_install --destdir=debian/tmp
|
||||||
autoreconf -vfi
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
config: config-stamp
|
# Kill *.la files, and forget no-one:
|
||||||
config-stamp: autogen-stamp
|
override_dh_install:
|
||||||
dh_testdir
|
find debian/tmp -name '*.la' -delete
|
||||||
test -d build || mkdir build
|
dh_install
|
||||||
cd build && \
|
|
||||||
../configure \
|
|
||||||
--prefix=/usr \
|
|
||||||
--mandir=\$${prefix}/share/man \
|
|
||||||
--infodir=\$${prefix}/share/info \
|
|
||||||
$(confflags) \
|
|
||||||
CFLAGS="$(CFLAGS)"
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
|
# Shlibs:
|
||||||
|
override_dh_makeshlibs:
|
||||||
|
dh_makeshlibs -p$(PACKAGE) --add-udeb $(PACKAGE)-udeb -V"$(PACKAGE) (>= $(SHLIBS))" -- -c4
|
||||||
|
|
||||||
build: build-stamp
|
override_dh_auto_test:
|
||||||
build-stamp: config-stamp
|
dh_auto_test -- --verbose --timeout-multiplier 3
|
||||||
dh_testdir
|
|
||||||
cd build && $(MAKE)
|
|
||||||
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
clean: unpatch
|
%:
|
||||||
dh_testdir
|
dh $@ --with quilt --builddirectory=build/
|
||||||
dh_testroot
|
|
||||||
rm -f autogen-stamp config-stamp build-stamp install-stamp
|
|
||||||
|
|
||||||
rm -f config.cache config.log config.status
|
|
||||||
rm -f */config.cache */config.log */config.status
|
|
||||||
rm -f conftest* */conftest*
|
|
||||||
rm -rf autom4te.cache */autom4te.cache
|
|
||||||
rm -rf build
|
|
||||||
find -name Makefile.in -delete
|
|
||||||
rm -f compile config.guess config.sub configure depcomp install-sh
|
|
||||||
rm -f ltmain.sh missing INSTALL aclocal.m4 config.h.in
|
|
||||||
|
|
||||||
dh_clean
|
|
||||||
|
|
||||||
install: install-stamp
|
|
||||||
install-stamp: build-stamp
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
dh_clean -k
|
|
||||||
dh_installdirs
|
|
||||||
|
|
||||||
cd build && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
# Install architecture-dependent files here.
|
|
||||||
binary-arch: install
|
|
||||||
dh_testdir
|
|
||||||
dh_testroot
|
|
||||||
|
|
||||||
dh_installdocs
|
|
||||||
dh_install --sourcedir=debian/tmp --list-missing
|
|
||||||
dh_installchangelogs ChangeLog
|
|
||||||
dh_link
|
|
||||||
dh_strip --dbg-package=$(PACKAGE)-dbg
|
|
||||||
dh_compress
|
|
||||||
dh_fixperms
|
|
||||||
dh_makeshlibs -p$(PACKAGE) --add-udeb $(PACKAGE)-udeb -V"$(PACKAGE) (>= $(SHLIBS_VERSION))"
|
|
||||||
dh_installdeb
|
|
||||||
dh_shlibdeps
|
|
||||||
dh_gencontrol
|
|
||||||
dh_md5sums
|
|
||||||
dh_builddeb
|
|
||||||
|
|
||||||
binary-indep: install
|
|
||||||
# Nothing to do
|
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
|
||||||
.PHONY: autogen config build clean binary-indep binary-arch binary install
|
|
||||||
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
1.0
|
3
debian/watch
vendored
3
debian/watch
vendored
@ -1,2 +1,3 @@
|
|||||||
|
#git=git://anongit.freedesktop.org/pixman
|
||||||
version=3
|
version=3
|
||||||
http://xorg.freedesktop.org/releases/individual/lib/ pixman-(.*)\.tar\.gz
|
https://xorg.freedesktop.org/releases/individual/lib/ pixman-(.*)\.tar\.gz
|
||||||
|
@ -40,10 +40,12 @@ main (int argc, char **argv)
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
pixman_point_fixed_t c_inner;
|
pixman_point_fixed_t c_inner;
|
||||||
pixman_point_fixed_t c_outer;
|
pixman_point_fixed_t c_outer;
|
||||||
pixman_fixed_t r_inner;
|
pixman_fixed_t r_inner;
|
||||||
pixman_fixed_t r_outer;
|
pixman_fixed_t r_outer;
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < WIDTH * HEIGHT; ++i)
|
for (i = 0; i < WIDTH * HEIGHT; ++i)
|
||||||
alpha[i] = 0x4f00004f; /* pale blue */
|
alpha[i] = 0x4f00004f; /* pale blue */
|
||||||
@ -69,6 +71,7 @@ main (int argc, char **argv)
|
|||||||
src,
|
src,
|
||||||
WIDTH * 4);
|
WIDTH * 4);
|
||||||
|
|
||||||
|
#if 0
|
||||||
c_inner.x = pixman_double_to_fixed (50.0);
|
c_inner.x = pixman_double_to_fixed (50.0);
|
||||||
c_inner.y = pixman_double_to_fixed (50.0);
|
c_inner.y = pixman_double_to_fixed (50.0);
|
||||||
c_outer.x = pixman_double_to_fixed (50.0);
|
c_outer.x = pixman_double_to_fixed (50.0);
|
||||||
@ -76,7 +79,6 @@ main (int argc, char **argv)
|
|||||||
r_inner = 0;
|
r_inner = 0;
|
||||||
r_outer = pixman_double_to_fixed (50.0);
|
r_outer = pixman_double_to_fixed (50.0);
|
||||||
|
|
||||||
#if 0
|
|
||||||
grad_img = pixman_image_create_conical_gradient (&c_inner, r_inner,
|
grad_img = pixman_image_create_conical_gradient (&c_inner, r_inner,
|
||||||
stops, 2);
|
stops, 2);
|
||||||
#endif
|
#endif
|
71
demos/checkerboard.c
Normal file
71
demos/checkerboard.c
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "pixman.h"
|
||||||
|
#include "gtk-utils.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
#define WIDTH 400
|
||||||
|
#define HEIGHT 400
|
||||||
|
#define TILE_SIZE 25
|
||||||
|
|
||||||
|
pixman_image_t *checkerboard;
|
||||||
|
pixman_image_t *destination;
|
||||||
|
#define D2F(d) (pixman_double_to_fixed(d))
|
||||||
|
pixman_transform_t trans = { {
|
||||||
|
{ D2F (-1.96830), D2F (-1.82250), D2F (512.12250)},
|
||||||
|
{ D2F (0.00000), D2F (-7.29000), D2F (1458.00000)},
|
||||||
|
{ D2F (0.00000), D2F (-0.00911), D2F (0.59231)},
|
||||||
|
}};
|
||||||
|
int i, j;
|
||||||
|
|
||||||
|
checkerboard = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
||||||
|
WIDTH, HEIGHT,
|
||||||
|
NULL, 0);
|
||||||
|
|
||||||
|
destination = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
||||||
|
WIDTH, HEIGHT,
|
||||||
|
NULL, 0);
|
||||||
|
|
||||||
|
for (i = 0; i < HEIGHT / TILE_SIZE; ++i)
|
||||||
|
{
|
||||||
|
for (j = 0; j < WIDTH / TILE_SIZE; ++j)
|
||||||
|
{
|
||||||
|
double u = (double)(j + 1) / (WIDTH / TILE_SIZE);
|
||||||
|
double v = (double)(i + 1) / (HEIGHT / TILE_SIZE);
|
||||||
|
pixman_color_t black = { 0, 0, 0, 0xffff };
|
||||||
|
pixman_color_t white = {
|
||||||
|
v * 0xffff,
|
||||||
|
u * 0xffff,
|
||||||
|
(1 - (double)u) * 0xffff,
|
||||||
|
0xffff };
|
||||||
|
pixman_color_t *c;
|
||||||
|
pixman_image_t *fill;
|
||||||
|
|
||||||
|
if ((j & 1) != (i & 1))
|
||||||
|
c = &black;
|
||||||
|
else
|
||||||
|
c = &white;
|
||||||
|
|
||||||
|
fill = pixman_image_create_solid_fill (c);
|
||||||
|
|
||||||
|
pixman_image_composite (PIXMAN_OP_SRC, fill, NULL, checkerboard,
|
||||||
|
0, 0, 0, 0, j * TILE_SIZE, i * TILE_SIZE,
|
||||||
|
TILE_SIZE, TILE_SIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pixman_image_set_transform (checkerboard, &trans);
|
||||||
|
pixman_image_set_filter (checkerboard, PIXMAN_FILTER_BEST, NULL, 0);
|
||||||
|
pixman_image_set_repeat (checkerboard, PIXMAN_REPEAT_NONE);
|
||||||
|
|
||||||
|
pixman_image_composite (PIXMAN_OP_SRC,
|
||||||
|
checkerboard, NULL, destination,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
WIDTH, HEIGHT);
|
||||||
|
|
||||||
|
show_image (destination);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -3,9 +3,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "pixman.h"
|
#include "pixman.h"
|
||||||
#include "gtk-utils.h"
|
#include "gtk-utils.h"
|
||||||
|
#include "parrot.c"
|
||||||
|
|
||||||
#define WIDTH 60
|
#define WIDTH 80
|
||||||
#define HEIGHT 60
|
#define HEIGHT 80
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -87,29 +88,26 @@ int
|
|||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
#define d2f pixman_double_to_fixed
|
#define d2f pixman_double_to_fixed
|
||||||
|
|
||||||
GtkWidget *window, *swindow;
|
GtkWidget *window, *swindow;
|
||||||
GtkWidget *table;
|
GtkWidget *table;
|
||||||
uint32_t *dest = malloc (WIDTH * HEIGHT * 4);
|
uint32_t *dest = malloc (WIDTH * HEIGHT * 4);
|
||||||
uint32_t *src = malloc (WIDTH * HEIGHT * 4);
|
uint32_t *src = malloc (WIDTH * HEIGHT * 4);
|
||||||
pixman_image_t *src_img;
|
pixman_image_t *gradient, *parrot;
|
||||||
pixman_image_t *dest_img;
|
pixman_image_t *dest_img;
|
||||||
pixman_point_fixed_t p1 = { -10 << 0, 0 };
|
pixman_point_fixed_t p1 = { -10 << 16, 10 << 16 };
|
||||||
pixman_point_fixed_t p2 = { WIDTH << 16, (HEIGHT - 10) << 16 };
|
pixman_point_fixed_t p2 = { (WIDTH + 10) << 16, (HEIGHT - 10) << 16 };
|
||||||
uint16_t full = 0xcfff;
|
uint16_t alpha = 0xdddd;
|
||||||
uint16_t low = 0x5000;
|
|
||||||
uint16_t alpha = 0xffff;
|
|
||||||
pixman_gradient_stop_t stops[6] =
|
pixman_gradient_stop_t stops[6] =
|
||||||
{
|
{
|
||||||
{ d2f (0.0), { full, low, low, alpha } },
|
{ d2f (0.0), { 0xf2f2, 0x8787, 0x7d7d, alpha } },
|
||||||
{ d2f (0.25), { full, full, low, alpha } },
|
{ d2f (0.22), { 0xf3f3, 0xeaea, 0x8383, alpha } },
|
||||||
{ d2f (0.4), { low, full, low, alpha } },
|
{ d2f (0.42), { 0x6b6b, 0xc0c0, 0x7777, alpha } },
|
||||||
{ d2f (0.5), { low, full, full, alpha } },
|
{ d2f (0.57), { 0x4b4b, 0xc9c9, 0xf5f5, alpha } },
|
||||||
{ d2f (0.8), { low, low, full, alpha } },
|
{ d2f (0.75), { 0x6a6a, 0x7f7f, 0xbebe, alpha } },
|
||||||
{ d2f (1.0), { full, low, full, alpha } },
|
{ d2f (1.0), { 0xeded, 0x8282, 0xb0b0, alpha } },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -117,20 +115,20 @@ main (int argc, char **argv)
|
|||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
|
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
|
||||||
|
|
||||||
g_signal_connect (window, "delete-event",
|
g_signal_connect (window, "delete-event",
|
||||||
G_CALLBACK (gtk_main_quit),
|
G_CALLBACK (gtk_main_quit),
|
||||||
NULL);
|
NULL);
|
||||||
table = gtk_table_new (G_N_ELEMENTS (operators) / 6, 6, TRUE);
|
table = gtk_table_new (G_N_ELEMENTS (operators) / 6, 6, TRUE);
|
||||||
|
|
||||||
src_img = pixman_image_create_linear_gradient (&p1, &p2, stops,
|
gradient = pixman_image_create_linear_gradient (&p1, &p2, stops, G_N_ELEMENTS (stops));
|
||||||
sizeof (stops) / sizeof (stops[0]));
|
parrot = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, (uint32_t *)parrot_bits, WIDTH * 4);
|
||||||
|
|
||||||
|
pixman_image_set_repeat (gradient, PIXMAN_REPEAT_PAD);
|
||||||
|
|
||||||
pixman_image_set_repeat (src_img, PIXMAN_REPEAT_PAD);
|
|
||||||
|
|
||||||
dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
||||||
WIDTH, HEIGHT,
|
WIDTH, HEIGHT,
|
||||||
dest,
|
NULL,
|
||||||
WIDTH * 4);
|
WIDTH * 4);
|
||||||
pixman_image_set_accessors (dest_img, reader, writer);
|
pixman_image_set_accessors (dest_img, reader, writer);
|
||||||
|
|
||||||
@ -140,7 +138,6 @@ main (int argc, char **argv)
|
|||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
GtkWidget *vbox;
|
GtkWidget *vbox;
|
||||||
GtkWidget *label;
|
GtkWidget *label;
|
||||||
int j, k;
|
|
||||||
|
|
||||||
vbox = gtk_vbox_new (FALSE, 0);
|
vbox = gtk_vbox_new (FALSE, 0);
|
||||||
|
|
||||||
@ -148,14 +145,11 @@ main (int argc, char **argv)
|
|||||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 6);
|
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 6);
|
||||||
gtk_widget_show (label);
|
gtk_widget_show (label);
|
||||||
|
|
||||||
for (j = 0; j < HEIGHT; ++j)
|
pixman_image_composite (PIXMAN_OP_SRC, gradient, NULL, dest_img,
|
||||||
{
|
|
||||||
for (k = 0; k < WIDTH; ++k)
|
|
||||||
dest[j * WIDTH + k] = 0x7f6f6f00;
|
|
||||||
}
|
|
||||||
pixman_image_composite (operators[i].op, src_img, NULL, dest_img,
|
|
||||||
0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
|
0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
|
||||||
pixbuf = pixbuf_from_argb32 (pixman_image_get_data (dest_img), TRUE,
|
pixman_image_composite (operators[i].op, parrot, NULL, dest_img,
|
||||||
|
0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
|
||||||
|
pixbuf = pixbuf_from_argb32 (pixman_image_get_data (dest_img),
|
||||||
WIDTH, HEIGHT, WIDTH * 4);
|
WIDTH, HEIGHT, WIDTH * 4);
|
||||||
image = gtk_image_new_from_pixbuf (pixbuf);
|
image = gtk_image_new_from_pixbuf (pixbuf);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), image, FALSE, FALSE, 0);
|
||||||
@ -168,7 +162,7 @@ main (int argc, char **argv)
|
|||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
pixman_image_unref (src_img);
|
pixman_image_unref (gradient);
|
||||||
free (src);
|
free (src);
|
||||||
pixman_image_unref (dest_img);
|
pixman_image_unref (dest_img);
|
||||||
free (dest);
|
free (dest);
|
||||||
@ -177,7 +171,7 @@ main (int argc, char **argv)
|
|||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
|
||||||
GTK_POLICY_AUTOMATIC,
|
GTK_POLICY_AUTOMATIC,
|
||||||
GTK_POLICY_AUTOMATIC);
|
GTK_POLICY_AUTOMATIC);
|
||||||
|
|
||||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (swindow), table);
|
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (swindow), table);
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
100
demos/conical-test.c
Normal file
100
demos/conical-test.c
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
#include "utils.h"
|
||||||
|
#include "gtk-utils.h"
|
||||||
|
|
||||||
|
#define SIZE 128
|
||||||
|
#define GRADIENTS_PER_ROW 7
|
||||||
|
#define NUM_ROWS ((NUM_GRADIENTS + GRADIENTS_PER_ROW - 1) / GRADIENTS_PER_ROW)
|
||||||
|
#define WIDTH (SIZE * GRADIENTS_PER_ROW)
|
||||||
|
#define HEIGHT (SIZE * NUM_ROWS)
|
||||||
|
#define NUM_GRADIENTS 35
|
||||||
|
|
||||||
|
#define double_to_color(x) \
|
||||||
|
(((uint32_t) ((x)*65536)) - (((uint32_t) ((x)*65536)) >> 16))
|
||||||
|
|
||||||
|
#define PIXMAN_STOP(offset,r,g,b,a) \
|
||||||
|
{ pixman_double_to_fixed (offset), \
|
||||||
|
{ \
|
||||||
|
double_to_color (r), \
|
||||||
|
double_to_color (g), \
|
||||||
|
double_to_color (b), \
|
||||||
|
double_to_color (a) \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const pixman_gradient_stop_t stops[] = {
|
||||||
|
PIXMAN_STOP (0.25, 1, 0, 0, 0.7),
|
||||||
|
PIXMAN_STOP (0.5, 1, 1, 0, 0.7),
|
||||||
|
PIXMAN_STOP (0.75, 0, 1, 0, 0.7),
|
||||||
|
PIXMAN_STOP (1.0, 0, 0, 1, 0.7)
|
||||||
|
};
|
||||||
|
|
||||||
|
#define NUM_STOPS (sizeof (stops) / sizeof (stops[0]))
|
||||||
|
|
||||||
|
static pixman_image_t *
|
||||||
|
create_conical (int index)
|
||||||
|
{
|
||||||
|
pixman_point_fixed_t c;
|
||||||
|
double angle;
|
||||||
|
|
||||||
|
c.x = pixman_double_to_fixed (0);
|
||||||
|
c.y = pixman_double_to_fixed (0);
|
||||||
|
|
||||||
|
angle = (0.5 / NUM_GRADIENTS + index / (double)NUM_GRADIENTS) * 720 - 180;
|
||||||
|
|
||||||
|
return pixman_image_create_conical_gradient (
|
||||||
|
&c, pixman_double_to_fixed (angle), stops, NUM_STOPS);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
pixman_transform_t transform;
|
||||||
|
pixman_image_t *src_img, *dest_img;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
enable_divbyzero_exceptions ();
|
||||||
|
|
||||||
|
dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
||||||
|
WIDTH, HEIGHT,
|
||||||
|
NULL, 0);
|
||||||
|
|
||||||
|
draw_checkerboard (dest_img, 25, 0xffaaaaaa, 0xff888888);
|
||||||
|
|
||||||
|
pixman_transform_init_identity (&transform);
|
||||||
|
|
||||||
|
pixman_transform_translate (NULL, &transform,
|
||||||
|
pixman_double_to_fixed (0.5),
|
||||||
|
pixman_double_to_fixed (0.5));
|
||||||
|
|
||||||
|
pixman_transform_scale (NULL, &transform,
|
||||||
|
pixman_double_to_fixed (SIZE),
|
||||||
|
pixman_double_to_fixed (SIZE));
|
||||||
|
pixman_transform_translate (NULL, &transform,
|
||||||
|
pixman_double_to_fixed (0.5),
|
||||||
|
pixman_double_to_fixed (0.5));
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_GRADIENTS; i++)
|
||||||
|
{
|
||||||
|
int column = i % GRADIENTS_PER_ROW;
|
||||||
|
int row = i / GRADIENTS_PER_ROW;
|
||||||
|
|
||||||
|
src_img = create_conical (i);
|
||||||
|
pixman_image_set_repeat (src_img, PIXMAN_REPEAT_NORMAL);
|
||||||
|
|
||||||
|
pixman_image_set_transform (src_img, &transform);
|
||||||
|
|
||||||
|
pixman_image_composite32 (
|
||||||
|
PIXMAN_OP_OVER, src_img, NULL,dest_img,
|
||||||
|
0, 0, 0, 0, column * SIZE, row * SIZE,
|
||||||
|
SIZE, SIZE);
|
||||||
|
|
||||||
|
pixman_image_unref (src_img);
|
||||||
|
}
|
||||||
|
|
||||||
|
show_image (dest_img);
|
||||||
|
|
||||||
|
pixman_image_unref (dest_img);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
277
demos/dither.c
Normal file
277
demos/dither.c
Normal file
@ -0,0 +1,277 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012, Red Hat, Inc.
|
||||||
|
* Copyright 2012, Soren Sandmann
|
||||||
|
* Copyright 2018, Basile Clement
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
* to deal in the Software without restriction, including without limitation
|
||||||
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
* and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
* Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
* DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "pixman-config.h"
|
||||||
|
#endif
|
||||||
|
#include <math.h>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "utils.h"
|
||||||
|
#include "gtk-utils.h"
|
||||||
|
|
||||||
|
#define WIDTH 1024
|
||||||
|
#define HEIGHT 640
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GtkBuilder * builder;
|
||||||
|
pixman_image_t * original;
|
||||||
|
pixman_format_code_t format;
|
||||||
|
pixman_dither_t dither;
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
} app_t;
|
||||||
|
|
||||||
|
static GtkWidget *
|
||||||
|
get_widget (app_t *app, const char *name)
|
||||||
|
{
|
||||||
|
GtkWidget *widget = GTK_WIDGET (gtk_builder_get_object (app->builder, name));
|
||||||
|
|
||||||
|
if (!widget)
|
||||||
|
g_error ("Widget %s not found\n", name);
|
||||||
|
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char name [20];
|
||||||
|
int value;
|
||||||
|
} named_int_t;
|
||||||
|
|
||||||
|
static const named_int_t formats[] =
|
||||||
|
{
|
||||||
|
{ "a8r8g8b8", PIXMAN_a8r8g8b8 },
|
||||||
|
{ "rgb", PIXMAN_rgb_float },
|
||||||
|
{ "sRGB", PIXMAN_a8r8g8b8_sRGB },
|
||||||
|
{ "r5g6b5", PIXMAN_r5g6b5 },
|
||||||
|
{ "a4r4g4b4", PIXMAN_a4r4g4b4 },
|
||||||
|
{ "a2r2g2b2", PIXMAN_a2r2g2b2 },
|
||||||
|
{ "r3g3b2", PIXMAN_r3g3b2 },
|
||||||
|
{ "r1g2b1", PIXMAN_r1g2b1 },
|
||||||
|
{ "a1r1g1b1", PIXMAN_a1r1g1b1 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static const named_int_t dithers[] =
|
||||||
|
{
|
||||||
|
{ "None", PIXMAN_REPEAT_NONE },
|
||||||
|
{ "Bayer 8x8", PIXMAN_DITHER_ORDERED_BAYER_8 },
|
||||||
|
{ "Blue noise 64x64", PIXMAN_DITHER_ORDERED_BLUE_NOISE_64 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
get_value (app_t *app, const named_int_t table[], const char *box_name)
|
||||||
|
{
|
||||||
|
GtkComboBox *box = GTK_COMBO_BOX (get_widget (app, box_name));
|
||||||
|
|
||||||
|
return table[gtk_combo_box_get_active (box)].value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
rescale (GtkWidget *may_be_null, app_t *app)
|
||||||
|
{
|
||||||
|
app->dither = get_value (app, dithers, "dithering_combo_box");
|
||||||
|
app->format = get_value (app, formats, "target_format_combo_box");
|
||||||
|
|
||||||
|
gtk_widget_set_size_request (
|
||||||
|
get_widget (app, "drawing_area"), app->width + 0.5, app->height + 0.5);
|
||||||
|
|
||||||
|
gtk_widget_queue_draw (
|
||||||
|
get_widget (app, "drawing_area"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
on_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
|
||||||
|
{
|
||||||
|
app_t *app = user_data;
|
||||||
|
GdkRectangle area;
|
||||||
|
cairo_surface_t *surface;
|
||||||
|
pixman_image_t *tmp, *final;
|
||||||
|
uint32_t *pixels;
|
||||||
|
|
||||||
|
gdk_cairo_get_clip_rectangle(cr, &area);
|
||||||
|
|
||||||
|
tmp = pixman_image_create_bits (
|
||||||
|
app->format, area.width, area.height, NULL, 0);
|
||||||
|
pixman_image_set_dither (tmp, app->dither);
|
||||||
|
|
||||||
|
pixman_image_composite (
|
||||||
|
PIXMAN_OP_SRC,
|
||||||
|
app->original, NULL, tmp,
|
||||||
|
area.x, area.y, 0, 0, 0, 0,
|
||||||
|
app->width - area.x,
|
||||||
|
app->height - area.y);
|
||||||
|
|
||||||
|
pixels = calloc (1, area.width * area.height * 4);
|
||||||
|
final = pixman_image_create_bits (
|
||||||
|
PIXMAN_a8r8g8b8, area.width, area.height, pixels, area.width * 4);
|
||||||
|
|
||||||
|
pixman_image_composite (
|
||||||
|
PIXMAN_OP_SRC,
|
||||||
|
tmp, NULL, final,
|
||||||
|
area.x, area.y, 0, 0, 0, 0,
|
||||||
|
app->width - area.x,
|
||||||
|
app->height - area.y);
|
||||||
|
|
||||||
|
surface = cairo_image_surface_create_for_data (
|
||||||
|
(uint8_t *)pixels, CAIRO_FORMAT_ARGB32,
|
||||||
|
area.width, area.height, area.width * 4);
|
||||||
|
|
||||||
|
cairo_set_source_surface (cr, surface, area.x, area.y);
|
||||||
|
|
||||||
|
cairo_paint (cr);
|
||||||
|
|
||||||
|
cairo_surface_destroy (surface);
|
||||||
|
free (pixels);
|
||||||
|
pixman_image_unref (final);
|
||||||
|
pixman_image_unref (tmp);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_up_combo_box (app_t *app, const char *box_name,
|
||||||
|
int n_entries, const named_int_t table[])
|
||||||
|
{
|
||||||
|
GtkWidget *widget = get_widget (app, box_name);
|
||||||
|
GtkListStore *model;
|
||||||
|
GtkCellRenderer *cell;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
model = gtk_list_store_new (1, G_TYPE_STRING);
|
||||||
|
|
||||||
|
cell = gtk_cell_renderer_text_new ();
|
||||||
|
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), cell, TRUE);
|
||||||
|
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (widget), cell,
|
||||||
|
"text", 0,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (model));
|
||||||
|
|
||||||
|
for (i = 0; i < n_entries; ++i)
|
||||||
|
{
|
||||||
|
const named_int_t *info = &(table[i]);
|
||||||
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
gtk_list_store_append (model, &iter);
|
||||||
|
gtk_list_store_set (model, &iter, 0, info->name, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
|
||||||
|
|
||||||
|
g_signal_connect (widget, "changed", G_CALLBACK (rescale), app);
|
||||||
|
}
|
||||||
|
|
||||||
|
static app_t *
|
||||||
|
app_new (pixman_image_t *original)
|
||||||
|
{
|
||||||
|
GtkWidget *widget;
|
||||||
|
app_t *app = g_malloc (sizeof *app);
|
||||||
|
GError *err = NULL;
|
||||||
|
|
||||||
|
app->builder = gtk_builder_new ();
|
||||||
|
app->original = original;
|
||||||
|
|
||||||
|
if (original->type == BITS)
|
||||||
|
{
|
||||||
|
app->width = pixman_image_get_width (original);
|
||||||
|
app->height = pixman_image_get_height (original);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
app->width = WIDTH;
|
||||||
|
app->height = HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gtk_builder_add_from_file (app->builder, "dither.ui", &err))
|
||||||
|
g_error ("Could not read file dither.ui: %s", err->message);
|
||||||
|
|
||||||
|
widget = get_widget (app, "drawing_area");
|
||||||
|
g_signal_connect (widget, "draw", G_CALLBACK (on_draw), app);
|
||||||
|
|
||||||
|
set_up_combo_box (app, "target_format_combo_box",
|
||||||
|
G_N_ELEMENTS (formats), formats);
|
||||||
|
set_up_combo_box (app, "dithering_combo_box",
|
||||||
|
G_N_ELEMENTS (dithers), dithers);
|
||||||
|
|
||||||
|
app->dither = get_value (app, dithers, "dithering_combo_box");
|
||||||
|
app->format = get_value (app, formats, "target_format_combo_box");
|
||||||
|
|
||||||
|
rescale (NULL, app);
|
||||||
|
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
GtkWidget *window;
|
||||||
|
pixman_image_t *image;
|
||||||
|
app_t *app;
|
||||||
|
|
||||||
|
gtk_init (&argc, &argv);
|
||||||
|
|
||||||
|
if (argc < 2)
|
||||||
|
{
|
||||||
|
pixman_gradient_stop_t stops[] = {
|
||||||
|
/* These colors make it very obvious that dithering
|
||||||
|
* is useful even for 8-bit gradients
|
||||||
|
*/
|
||||||
|
{ 0x00000, { 0x1b1b, 0x5d5d, 0x7c7c, 0xffff } },
|
||||||
|
{ 0x10000, { 0x3838, 0x3232, 0x1010, 0xffff } },
|
||||||
|
};
|
||||||
|
pixman_point_fixed_t p1, p2;
|
||||||
|
|
||||||
|
p1.x = p1.y = 0x0000;
|
||||||
|
p2.x = WIDTH << 16;
|
||||||
|
p2.y = HEIGHT << 16;
|
||||||
|
|
||||||
|
if (!(image = pixman_image_create_linear_gradient (
|
||||||
|
&p1, &p2, stops, ARRAY_LENGTH (stops))))
|
||||||
|
{
|
||||||
|
printf ("Could not create gradient\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!(image = pixman_image_from_file (argv[1], PIXMAN_a8r8g8b8)))
|
||||||
|
{
|
||||||
|
printf ("Could not load image \"%s\"\n", argv[1]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
app = app_new (image);
|
||||||
|
|
||||||
|
window = get_widget (app, "main");
|
||||||
|
|
||||||
|
g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
|
||||||
|
|
||||||
|
gtk_window_set_default_size (GTK_WINDOW (window), 1024, 768);
|
||||||
|
|
||||||
|
gtk_widget_show_all (window);
|
||||||
|
|
||||||
|
gtk_main ();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
147
demos/dither.ui
Normal file
147
demos/dither.ui
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="2.12"/>
|
||||||
|
<object class="GtkWindow" id="main">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkHBox" id="u">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">12</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow" id="scrolledwindow1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="shadow_type">in</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkViewport" id="viewport1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkDrawingArea" id="drawing_area">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkVBox" id="box1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">12</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkVBox" id="box6">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTable" id="grid1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="n_rows">2</property>
|
||||||
|
<property name="n_columns">2</property>
|
||||||
|
<property name="column_spacing">8</property>
|
||||||
|
<property name="row_spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label4">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes"><b>Target format:</b></property>
|
||||||
|
<property name="use_markup">True</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="label5">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes"><b>Dithering:</b></property>
|
||||||
|
<property name="use_markup">True</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBox" id="target_format_combo_box">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkComboBox" id="dithering_combo_box">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
<property name="top_attach">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="padding">6</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="rotate_adjustment">
|
||||||
|
<property name="lower">-180</property>
|
||||||
|
<property name="upper">190</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">10</property>
|
||||||
|
<property name="page_size">10</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="scale_x_adjustment">
|
||||||
|
<property name="lower">-32</property>
|
||||||
|
<property name="upper">42</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">10</property>
|
||||||
|
<property name="page_size">10</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="scale_y_adjustment">
|
||||||
|
<property name="lower">-32</property>
|
||||||
|
<property name="upper">42</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">10</property>
|
||||||
|
<property name="page_size">10</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkAdjustment" id="subsample_adjustment">
|
||||||
|
<property name="upper">12</property>
|
||||||
|
<property name="value">4</property>
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">1</property>
|
||||||
|
</object>
|
||||||
|
</interface>
|
@ -15,12 +15,11 @@ main (int argc, char **argv)
|
|||||||
int i;
|
int i;
|
||||||
pixman_gradient_stop_t stops[2] =
|
pixman_gradient_stop_t stops[2] =
|
||||||
{
|
{
|
||||||
{ pixman_int_to_fixed (0), { 0xffff, 0xeeee, 0xeeee, 0xeeee } },
|
{ pixman_int_to_fixed (0), { 0x0000, 0x0000, 0xffff, 0xffff } },
|
||||||
{ pixman_int_to_fixed (1), { 0xffff, 0x1111, 0x1111, 0x1111 } }
|
{ pixman_int_to_fixed (1), { 0xffff, 0x1111, 0x1111, 0xffff } }
|
||||||
};
|
};
|
||||||
pixman_point_fixed_t p1 = { pixman_double_to_fixed (0), 0 };
|
pixman_point_fixed_t p1 = { pixman_double_to_fixed (50), 0 };
|
||||||
pixman_point_fixed_t p2 = { pixman_double_to_fixed (WIDTH / 8.),
|
pixman_point_fixed_t p2 = { pixman_double_to_fixed (200), 0 };
|
||||||
pixman_int_to_fixed (0) };
|
|
||||||
#if 0
|
#if 0
|
||||||
pixman_transform_t trans = {
|
pixman_transform_t trans = {
|
||||||
{ { pixman_double_to_fixed (2), pixman_double_to_fixed (0.5), pixman_double_to_fixed (-100), },
|
{ { pixman_double_to_fixed (2), pixman_double_to_fixed (0.5), pixman_double_to_fixed (-100), },
|
||||||
@ -36,19 +35,22 @@ main (int argc, char **argv)
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
pixman_point_fixed_t c_inner;
|
pixman_point_fixed_t c_inner;
|
||||||
pixman_point_fixed_t c_outer;
|
pixman_point_fixed_t c_outer;
|
||||||
pixman_fixed_t r_inner;
|
pixman_fixed_t r_inner;
|
||||||
pixman_fixed_t r_outer;
|
pixman_fixed_t r_outer;
|
||||||
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < WIDTH * HEIGHT; ++i)
|
for (i = 0; i < WIDTH * HEIGHT; ++i)
|
||||||
dest[i] = 0x4f00004f; /* pale blue */
|
dest[i] = 0xff00ff00;
|
||||||
|
|
||||||
dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
dest_img = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
||||||
WIDTH, HEIGHT,
|
WIDTH, HEIGHT,
|
||||||
dest,
|
dest,
|
||||||
WIDTH * 4);
|
WIDTH * 4);
|
||||||
|
|
||||||
|
#if 0
|
||||||
c_inner.x = pixman_double_to_fixed (50.0);
|
c_inner.x = pixman_double_to_fixed (50.0);
|
||||||
c_inner.y = pixman_double_to_fixed (50.0);
|
c_inner.y = pixman_double_to_fixed (50.0);
|
||||||
c_outer.x = pixman_double_to_fixed (50.0);
|
c_outer.x = pixman_double_to_fixed (50.0);
|
||||||
@ -58,6 +60,7 @@ main (int argc, char **argv)
|
|||||||
|
|
||||||
src_img = pixman_image_create_conical_gradient (&c_inner, r_inner,
|
src_img = pixman_image_create_conical_gradient (&c_inner, r_inner,
|
||||||
stops, 2);
|
stops, 2);
|
||||||
|
#endif
|
||||||
#if 0
|
#if 0
|
||||||
src_img = pixman_image_create_conical_gradient (&c_inner, r_inner,
|
src_img = pixman_image_create_conical_gradient (&c_inner, r_inner,
|
||||||
stops, 2);
|
stops, 2);
|
||||||
@ -70,7 +73,7 @@ main (int argc, char **argv)
|
|||||||
stops, 2);
|
stops, 2);
|
||||||
|
|
||||||
pixman_image_set_transform (src_img, &trans);
|
pixman_image_set_transform (src_img, &trans);
|
||||||
pixman_image_set_repeat (src_img, PIXMAN_REPEAT_PAD);
|
pixman_image_set_repeat (src_img, PIXMAN_REPEAT_NONE);
|
||||||
|
|
||||||
pixman_image_composite (PIXMAN_OP_OVER, src_img, NULL, dest_img,
|
pixman_image_composite (PIXMAN_OP_OVER, src_img, NULL, dest_img,
|
||||||
0, 0, 0, 0, 0, 0, 10 * WIDTH, HEIGHT);
|
0, 0, 0, 0, 0, 0, 10 * WIDTH, HEIGHT);
|
177
demos/gtk-utils.c
Normal file
177
demos/gtk-utils.c
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
#include <gtk/gtk.h>
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <pixman-config.h>
|
||||||
|
#endif
|
||||||
|
#include "utils.h"
|
||||||
|
#include "gtk-utils.h"
|
||||||
|
|
||||||
|
pixman_image_t *
|
||||||
|
pixman_image_from_file (const char *filename, pixman_format_code_t format)
|
||||||
|
{
|
||||||
|
GdkPixbuf *pixbuf;
|
||||||
|
pixman_image_t *image;
|
||||||
|
int width, height;
|
||||||
|
uint32_t *data, *d;
|
||||||
|
uint8_t *gdk_data;
|
||||||
|
int n_channels;
|
||||||
|
int j, i;
|
||||||
|
int stride;
|
||||||
|
|
||||||
|
if (!(pixbuf = gdk_pixbuf_new_from_file (filename, NULL)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
image = NULL;
|
||||||
|
|
||||||
|
width = gdk_pixbuf_get_width (pixbuf);
|
||||||
|
height = gdk_pixbuf_get_height (pixbuf);
|
||||||
|
n_channels = gdk_pixbuf_get_n_channels (pixbuf);
|
||||||
|
gdk_data = gdk_pixbuf_get_pixels (pixbuf);
|
||||||
|
stride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||||
|
|
||||||
|
if (!(data = malloc (width * height * sizeof (uint32_t))))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
d = data;
|
||||||
|
for (j = 0; j < height; ++j)
|
||||||
|
{
|
||||||
|
uint8_t *gdk_line = gdk_data;
|
||||||
|
|
||||||
|
for (i = 0; i < width; ++i)
|
||||||
|
{
|
||||||
|
int r, g, b, a;
|
||||||
|
uint32_t pixel;
|
||||||
|
|
||||||
|
r = gdk_line[0];
|
||||||
|
g = gdk_line[1];
|
||||||
|
b = gdk_line[2];
|
||||||
|
|
||||||
|
if (n_channels == 4)
|
||||||
|
a = gdk_line[3];
|
||||||
|
else
|
||||||
|
a = 0xff;
|
||||||
|
|
||||||
|
r = (r * a + 127) / 255;
|
||||||
|
g = (g * a + 127) / 255;
|
||||||
|
b = (b * a + 127) / 255;
|
||||||
|
|
||||||
|
pixel = (a << 24) | (r << 16) | (g << 8) | b;
|
||||||
|
|
||||||
|
*d++ = pixel;
|
||||||
|
gdk_line += n_channels;
|
||||||
|
}
|
||||||
|
|
||||||
|
gdk_data += stride;
|
||||||
|
}
|
||||||
|
|
||||||
|
image = pixman_image_create_bits (
|
||||||
|
format, width, height, data, width * 4);
|
||||||
|
|
||||||
|
out:
|
||||||
|
g_object_unref (pixbuf);
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkPixbuf *
|
||||||
|
pixbuf_from_argb32 (uint32_t *bits,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
int stride)
|
||||||
|
{
|
||||||
|
GdkPixbuf *pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE,
|
||||||
|
8, width, height);
|
||||||
|
int p_stride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||||
|
guint32 *p_bits = (guint32 *)gdk_pixbuf_get_pixels (pixbuf);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < height; ++i)
|
||||||
|
{
|
||||||
|
uint32_t *src_row = &bits[i * (stride / 4)];
|
||||||
|
uint32_t *dst_row = p_bits + i * (p_stride / 4);
|
||||||
|
|
||||||
|
a8r8g8b8_to_rgba_np (dst_row, src_row, width);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pixbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
on_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
|
||||||
|
{
|
||||||
|
pixman_image_t *pimage = user_data;
|
||||||
|
int width = pixman_image_get_width (pimage);
|
||||||
|
int height = pixman_image_get_height (pimage);
|
||||||
|
int stride = pixman_image_get_stride (pimage);
|
||||||
|
cairo_surface_t *cimage;
|
||||||
|
cairo_format_t format;
|
||||||
|
|
||||||
|
if (pixman_image_get_format (pimage) == PIXMAN_x8r8g8b8)
|
||||||
|
format = CAIRO_FORMAT_RGB24;
|
||||||
|
else
|
||||||
|
format = CAIRO_FORMAT_ARGB32;
|
||||||
|
|
||||||
|
cimage = cairo_image_surface_create_for_data (
|
||||||
|
(uint8_t *)pixman_image_get_data (pimage),
|
||||||
|
format, width, height, stride);
|
||||||
|
|
||||||
|
cairo_rectangle (cr, 0, 0, width, height);
|
||||||
|
cairo_set_source_surface (cr, cimage, 0, 0);
|
||||||
|
cairo_fill (cr);
|
||||||
|
|
||||||
|
cairo_surface_destroy (cimage);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
show_image (pixman_image_t *image)
|
||||||
|
{
|
||||||
|
GtkWidget *window;
|
||||||
|
int width, height;
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
char *arg0 = g_strdup ("pixman-test-program");
|
||||||
|
pixman_format_code_t format;
|
||||||
|
pixman_image_t *copy;
|
||||||
|
|
||||||
|
argc = 1;
|
||||||
|
argv = (char **)&arg0;
|
||||||
|
|
||||||
|
gtk_init (&argc, &argv);
|
||||||
|
|
||||||
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
width = pixman_image_get_width (image);
|
||||||
|
height = pixman_image_get_height (image);
|
||||||
|
|
||||||
|
gtk_window_set_default_size (GTK_WINDOW (window), width, height);
|
||||||
|
|
||||||
|
format = pixman_image_get_format (image);
|
||||||
|
|
||||||
|
/* We always display the image as if it contains sRGB data. That
|
||||||
|
* means that no conversion should take place when the image
|
||||||
|
* has the a8r8g8b8_sRGB format.
|
||||||
|
*/
|
||||||
|
switch (format)
|
||||||
|
{
|
||||||
|
case PIXMAN_a8r8g8b8_sRGB:
|
||||||
|
case PIXMAN_a8r8g8b8:
|
||||||
|
case PIXMAN_x8r8g8b8:
|
||||||
|
copy = pixman_image_ref (image);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
copy = pixman_image_create_bits (PIXMAN_a8r8g8b8,
|
||||||
|
width, height, NULL, -1);
|
||||||
|
pixman_image_composite32 (PIXMAN_OP_SRC,
|
||||||
|
image, NULL, copy,
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
width, height);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_signal_connect (window, "draw", G_CALLBACK (on_draw), copy);
|
||||||
|
g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL);
|
||||||
|
|
||||||
|
gtk_widget_show (window);
|
||||||
|
|
||||||
|
gtk_main ();
|
||||||
|
}
|
@ -6,8 +6,10 @@
|
|||||||
|
|
||||||
void show_image (pixman_image_t *image);
|
void show_image (pixman_image_t *image);
|
||||||
|
|
||||||
|
pixman_image_t *
|
||||||
|
pixman_image_from_file (const char *filename, pixman_format_code_t format);
|
||||||
|
|
||||||
GdkPixbuf *pixbuf_from_argb32 (uint32_t *bits,
|
GdkPixbuf *pixbuf_from_argb32 (uint32_t *bits,
|
||||||
gboolean has_alpha,
|
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
int stride);
|
int stride);
|
50
demos/linear-gradient.c
Normal file
50
demos/linear-gradient.c
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "utils.h"
|
||||||
|
#include "gtk-utils.h"
|
||||||
|
|
||||||
|
#define WIDTH 1024
|
||||||
|
#define HEIGHT 640
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
pixman_image_t *src_img, *dest_img;
|
||||||
|
pixman_gradient_stop_t stops[] = {
|
||||||
|
{ 0x00000, { 0x0000, 0x0000, 0x4444, 0xdddd } },
|
||||||
|
{ 0x10000, { 0xeeee, 0xeeee, 0x8888, 0xdddd } },
|
||||||
|
#if 0
|
||||||
|
/* These colors make it very obvious that dithering
|
||||||
|
* is useful even for 8-bit gradients
|
||||||
|
*/
|
||||||
|
{ 0x00000, { 0x6666, 0x3333, 0x3333, 0xffff } },
|
||||||
|
{ 0x10000, { 0x3333, 0x6666, 0x6666, 0xffff } },
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
pixman_point_fixed_t p1, p2;
|
||||||
|
|
||||||
|
enable_divbyzero_exceptions ();
|
||||||
|
|
||||||
|
dest_img = pixman_image_create_bits (PIXMAN_x8r8g8b8,
|
||||||
|
WIDTH, HEIGHT,
|
||||||
|
NULL, 0);
|
||||||
|
|
||||||
|
p1.x = p1.y = 0x0000;
|
||||||
|
p2.x = WIDTH << 16;
|
||||||
|
p2.y = HEIGHT << 16;
|
||||||
|
|
||||||
|
src_img = pixman_image_create_linear_gradient (&p1, &p2, stops, ARRAY_LENGTH (stops));
|
||||||
|
|
||||||
|
pixman_image_composite32 (PIXMAN_OP_OVER,
|
||||||
|
src_img,
|
||||||
|
NULL,
|
||||||
|
dest_img,
|
||||||
|
0, 0,
|
||||||
|
0, 0,
|
||||||
|
0, 0,
|
||||||
|
WIDTH, HEIGHT);
|
||||||
|
|
||||||
|
show_image (dest_img);
|
||||||
|
|
||||||
|
pixman_image_unref (dest_img);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
66
demos/meson.build
Normal file
66
demos/meson.build
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Copyright © 2018 Intel Corporation
|
||||||
|
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
|
extra_demo_cflags = []
|
||||||
|
if cc.get_argument_syntax() == 'msvc'
|
||||||
|
extra_demo_cflags = ['-D_USE_MATH_DEFINES']
|
||||||
|
endif
|
||||||
|
|
||||||
|
demos = [
|
||||||
|
'gradient-test',
|
||||||
|
'alpha-test',
|
||||||
|
'composite-test',
|
||||||
|
'clip-test',
|
||||||
|
'trap-test',
|
||||||
|
'screen-test',
|
||||||
|
'convolution-test',
|
||||||
|
'radial-test',
|
||||||
|
'linear-gradient',
|
||||||
|
'conical-test',
|
||||||
|
'tri-test',
|
||||||
|
'checkerboard',
|
||||||
|
'srgb-test',
|
||||||
|
'srgb-trap-test',
|
||||||
|
'scale',
|
||||||
|
'dither',
|
||||||
|
]
|
||||||
|
|
||||||
|
if dep_gtk.found()
|
||||||
|
|
||||||
|
libdemo = static_library(
|
||||||
|
'demo',
|
||||||
|
['gtk-utils.c', config_h, version_h],
|
||||||
|
dependencies : [libtestutils_dep, dep_gtk, dep_glib, dep_png, dep_m, dep_openmp],
|
||||||
|
include_directories : inc_pixman,
|
||||||
|
)
|
||||||
|
|
||||||
|
if dep_gtk.found()
|
||||||
|
foreach d : demos
|
||||||
|
executable(
|
||||||
|
d,
|
||||||
|
[d + '.c', config_h, version_h],
|
||||||
|
c_args : extra_demo_cflags,
|
||||||
|
link_with : [libdemo],
|
||||||
|
dependencies : [idep_pixman, libtestutils_dep, dep_glib, dep_gtk, dep_openmp, dep_png],
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
endif
|
||||||
|
|
||||||
|
endif
|
1079
demos/parrot.c
Normal file
1079
demos/parrot.c
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user