Compare commits
1666 Commits
mesa-10.0
...
mesa-10.1.
Author | SHA1 | Date | |
---|---|---|---|
|
5f41cae633 | ||
|
0e76bc55ed | ||
|
ce6877491f | ||
|
f9b6457986 | ||
|
04ca4cef97 | ||
|
b574944a05 | ||
|
838b0d9928 | ||
|
c2dc58fe96 | ||
|
d947156407 | ||
|
bf50129ba6 | ||
|
68af044a0c | ||
|
151e7ac3cf | ||
|
920428a30a | ||
|
77619d927b | ||
|
e7537b3410 | ||
|
39c599a666 | ||
|
8e8fab2ef6 | ||
|
283acc26e4 | ||
|
9f5eea0cc9 | ||
|
e03020abbc | ||
|
e4c65664ea | ||
|
f6bf295924 | ||
|
1d7b8bc085 | ||
|
2889608534 | ||
|
45bf29b53d | ||
|
feb4c7284c | ||
|
b614628a3c | ||
|
1f08d1bf46 | ||
|
a73894a7ed | ||
|
cf08c24750 | ||
|
4d676c5ed2 | ||
|
4942eae869 | ||
|
1776a562b4 | ||
|
d2f5638ade | ||
|
ee0207a212 | ||
|
36e0e9c5e7 | ||
|
5d8e60dcc7 | ||
|
a23e73e00d | ||
|
a02f6639f7 | ||
|
cc9b282f8a | ||
|
edab352b25 | ||
|
ec83a39e2b | ||
|
ea5839c8fe | ||
|
2d6f733979 | ||
|
507d2e523c | ||
|
07ada102cb | ||
|
13b142a420 | ||
|
1ba2298131 | ||
|
736e16288b | ||
|
7396efb19a | ||
|
c8e24aa5a9 | ||
|
16dfaf495a | ||
|
f3eb3455c8 | ||
|
9e1eb6fb93 | ||
|
0028eb1083 | ||
|
d4c7ca04c1 | ||
|
e16de70a90 | ||
|
f7b949723a | ||
|
558c20fa95 | ||
|
31462dc748 | ||
|
994203bf5e | ||
|
08da743a97 | ||
|
bde3135717 | ||
|
75049062d5 | ||
|
3d648f0f50 | ||
|
ff117336b7 | ||
|
2cd8ce4c67 | ||
|
ec70be5628 | ||
|
2d9bfe4bf4 | ||
|
efba496d03 | ||
|
853c313ce3 | ||
|
2981bc9ff8 | ||
|
18e6cd5e61 | ||
|
4ee60a14df | ||
|
2b5ad9baa1 | ||
|
87173023b2 | ||
|
51e80d1a8b | ||
|
755bf62c2e | ||
|
81f98ffb61 | ||
|
072a79b188 | ||
|
87655f1805 | ||
|
3c6c42b86d | ||
|
8792eda0eb | ||
|
0860c95d5c | ||
|
f4b0b3a402 | ||
|
f9f10f681e | ||
|
996fbd4e2b | ||
|
e19c702eac | ||
|
5d680bc082 | ||
|
e43327bdd9 | ||
|
c8ac5294eb | ||
|
d404180430 | ||
|
c7adf5d1c7 | ||
|
62ba29b236 | ||
|
8ea3790d49 | ||
|
110b6af5f4 | ||
|
5e688c0601 | ||
|
1602419b16 | ||
|
081e37b3b6 | ||
|
4f3abcfee4 | ||
|
d17b75f1e5 | ||
|
1d0e7fb691 | ||
|
468c1a2d46 | ||
|
74194a4bfc | ||
|
b3e3ba5c37 | ||
|
62b1970ccc | ||
|
6a154a4875 | ||
|
66765bb6a6 | ||
|
657a185dc0 | ||
|
b22bdb5cd2 | ||
|
90eae12ae0 | ||
|
c9ceb03147 | ||
|
488f5b4390 | ||
|
eed256688f | ||
|
58ca56ddf5 | ||
|
e16df44a85 | ||
|
b026b6bbfe | ||
|
cda6610d85 | ||
|
4cd6530885 | ||
|
780817af84 | ||
|
e31f76bf66 | ||
|
527210f15d | ||
|
a616fbd7aa | ||
|
9abd686e3f | ||
|
3a194cd77e | ||
|
a38db439df | ||
|
5f685d9925 | ||
|
b3f1ee8b18 | ||
|
c862a14676 | ||
|
23e42eeab0 | ||
|
cc0e6d87be | ||
|
dab5a7a9f9 | ||
|
358d05617a | ||
|
df9e7ee445 | ||
|
933215ac63 | ||
|
c755ebfecf | ||
|
c60b97e9ba | ||
|
37c4ba3e69 | ||
|
9f1fe12fd1 | ||
|
92c43a3a88 | ||
|
b8e0e34555 | ||
|
0c6be6e146 | ||
|
30be758fd2 | ||
|
aae5cf54a2 | ||
|
c5612ba549 | ||
|
e52117cefb | ||
|
18055f9136 | ||
|
563fd9d736 | ||
|
9aa0b296f8 | ||
|
82db52a55e | ||
|
8f4fb58dbf | ||
|
8f85bf57fc | ||
|
76c84a0f75 | ||
|
b38c141850 | ||
|
b088d4649c | ||
|
8d6eea9824 | ||
|
91543aef3b | ||
|
4d7504c0c4 | ||
|
d7df21d08b | ||
|
b853dceb4b | ||
|
71c4e4f420 | ||
|
95bba69398 | ||
|
e144e14c0a | ||
|
c1fbfa4859 | ||
|
2ea18474a6 | ||
|
740bd738a9 | ||
|
e801b8d677 | ||
|
da726d3d93 | ||
|
1d32349f70 | ||
|
b3c9041cca | ||
|
6619158873 | ||
|
6466e99aa0 | ||
|
f5fe91c087 | ||
|
cb89da2e61 | ||
|
1dba985788 | ||
|
3a4a0882cb | ||
|
352b9e8faf | ||
|
87587c6683 | ||
|
ee71a08f23 | ||
|
9cb82a0319 | ||
|
ec6be857f3 | ||
|
365975e5eb | ||
|
3b7fd0351d | ||
|
676cc8e39d | ||
|
c2c1c902f9 | ||
|
d78131f695 | ||
|
8648c2b2a0 | ||
|
9bfe1b3773 | ||
|
a77c10a1a4 | ||
|
ac14d741ee | ||
|
acfb3f7f02 | ||
|
228ad18b84 | ||
|
7c09f4bb44 | ||
|
3eb2103ce0 | ||
|
58fe564607 | ||
|
16fc050e07 | ||
|
248d82515f | ||
|
728f58c534 | ||
|
df15372b65 | ||
|
50d65b4374 | ||
|
f4e348d008 | ||
|
34e8881ac7 | ||
|
30274cf36c | ||
|
64f54cc8f4 | ||
|
4f668babc6 | ||
|
ee51c6aae7 | ||
|
3491c57bd9 | ||
|
4a86465f47 | ||
|
03d0c9fd30 | ||
|
4c0702b05c | ||
|
5fbd649451 | ||
|
05b9e6a963 | ||
|
92e8c52340 | ||
|
3f0011edfd | ||
|
6e3ce7997a | ||
|
1b6aad2234 | ||
|
b34f05f6a7 | ||
|
677fde5ca0 | ||
|
3305b9c96b | ||
|
a43b8bfa78 | ||
|
862572b205 | ||
|
037f357564 | ||
|
bef5554092 | ||
|
09b03dcee6 | ||
|
45cb6063e7 | ||
|
9cc1bbcaf4 | ||
|
24abd48ac0 | ||
|
2475db34a0 | ||
|
3efb934dee | ||
|
29876a4d28 | ||
|
00769d0322 | ||
|
e9a3a8997d | ||
|
a809de8bd9 | ||
|
19740e3085 | ||
|
a44639d826 | ||
|
03035d6074 | ||
|
ab7074e024 | ||
|
a0423a5be2 | ||
|
5abf1526d7 | ||
|
6fc2e0a942 | ||
|
6d5e27d19e | ||
|
3a32f9773a | ||
|
18a7c83765 | ||
|
98c4fe0f5a | ||
|
2e2719246a | ||
|
5f69eb6caa | ||
|
0ced104930 | ||
|
8ae30c1fc4 | ||
|
ec9aef9ac2 | ||
|
5b338d4b35 | ||
|
07d1e7f12f | ||
|
16c03a004d | ||
|
3d2979f83b | ||
|
3224f0c978 | ||
|
fc2834f5ad | ||
|
e32e2836a3 | ||
|
d8012560d5 | ||
|
8e4fec994c | ||
|
5437d38fac | ||
|
fcb4eabb5f | ||
|
7cb4dea765 | ||
|
b498fb9586 | ||
|
3731a4fae4 | ||
|
d623eeb37a | ||
|
6534d80cca | ||
|
20eb466999 | ||
|
706eef0cfe | ||
|
a889b8e9aa | ||
|
02d96b7e9f | ||
|
a1b6aa9fe2 | ||
|
150b1f0aac | ||
|
50066dc544 | ||
|
088d642b8f | ||
|
69bd4ed017 | ||
|
62a358892f | ||
|
290648b076 | ||
|
7f97f1fce4 | ||
|
33169597f7 | ||
|
966f2d3db8 | ||
|
3cefbe5cf5 | ||
|
1e6bba58d8 | ||
|
137a0fe5c8 | ||
|
70e8ec38b5 | ||
|
c79a7ef9a3 | ||
|
17aeb3fdc9 | ||
|
ecaf9259e9 | ||
|
0fb761b404 | ||
|
31911f8d37 | ||
|
142f6cc0b4 | ||
|
156ac628a8 | ||
|
7aa84761b6 | ||
|
61219adb3d | ||
|
ee632e68bd | ||
|
b5c99be4af | ||
|
165868d45e | ||
|
bbcd975881 | ||
|
6cfcc4fccf | ||
|
39a3b0313b | ||
|
9e59e41266 | ||
|
1289080c4d | ||
|
81144c049b | ||
|
2bf4db1697 | ||
|
eb65d4b84d | ||
|
abfa65ca81 | ||
|
070f55d893 | ||
|
fcb498302b | ||
|
2d3f92e881 | ||
|
a722454dac | ||
|
35e7027dab | ||
|
9451281aca | ||
|
3abd4f4d90 | ||
|
bfcb9bb204 | ||
|
20fedfd80a | ||
|
c55e3e6811 | ||
|
e286b63c8f | ||
|
8b3e383820 | ||
|
deb9dd6e27 | ||
|
c20b48c48e | ||
|
c6d94648cf | ||
|
8689076925 | ||
|
9eaed3eb6e | ||
|
d5df28381e | ||
|
ed72115891 | ||
|
f09a1261ad | ||
|
8b4f6fada2 | ||
|
76c33e383c | ||
|
1cdeeef6c4 | ||
|
c849ecc19a | ||
|
63546b8e3d | ||
|
dc00ec154b | ||
|
1fe9df8f29 | ||
|
8d27be2633 | ||
|
083b27a1b1 | ||
|
98c1111462 | ||
|
5c6961efae | ||
|
69eca28dd0 | ||
|
0f2df4ff90 | ||
|
7524756199 | ||
|
fafe16a8a0 | ||
|
4971628bae | ||
|
303df12db8 | ||
|
80bf1fbaf6 | ||
|
e1cdafe6f7 | ||
|
d8878055f5 | ||
|
3ade766684 | ||
|
4c4e0ed64b | ||
|
a0d4311072 | ||
|
9cd65e3289 | ||
|
2fce1e3c69 | ||
|
460e0df330 | ||
|
dcbf25969e | ||
|
990aaf87c4 | ||
|
fd91ab662d | ||
|
3d3c351cfb | ||
|
5c0d7dbcb9 | ||
|
08a4714959 | ||
|
f3c6d6f1e1 | ||
|
20d9286f71 | ||
|
c96686a6cc | ||
|
17768bb7b4 | ||
|
90fff1354b | ||
|
4552a22f04 | ||
|
2184b519cd | ||
|
f51ca46f0c | ||
|
2d6d69bab6 | ||
|
1d53603f1f | ||
|
606544214e | ||
|
3f49a8c9a5 | ||
|
9d4a6bd6bb | ||
|
2dc93bd5d1 | ||
|
71978cf66f | ||
|
df21f31788 | ||
|
db8b6fb2df | ||
|
3fbd1b0cb5 | ||
|
aea4757eb4 | ||
|
f12d6d613a | ||
|
09d6c19720 | ||
|
1525474ead | ||
|
71d614250e | ||
|
34a8a0820f | ||
|
03065ea05c | ||
|
9f26ad00d7 | ||
|
cbecd958a7 | ||
|
7965908976 | ||
|
780dfc1fec | ||
|
4c35e32594 | ||
|
e3afbe3ad7 | ||
|
3e894e213b | ||
|
ca385bffa6 | ||
|
7fd6ad7adc | ||
|
b9aaa96ec3 | ||
|
d38867d80c | ||
|
f772d51c25 | ||
|
689b20cfe0 | ||
|
6bb27ee51c | ||
|
25c14f40f3 | ||
|
205e624048 | ||
|
75081391a4 | ||
|
d273fe72df | ||
|
4329e99b23 | ||
|
809d3a7d25 | ||
|
6317664de0 | ||
|
c83b34c43b | ||
|
e36759a81e | ||
|
023a50dd9b | ||
|
f8e16010e5 | ||
|
d7c68e2dc1 | ||
|
db9d6af862 | ||
|
3b3687adcb | ||
|
b4e14931a9 | ||
|
67e385b3b7 | ||
|
d88a375229 | ||
|
e884c560a6 | ||
|
e1df0d45c4 | ||
|
7b19c391f4 | ||
|
8afde9fa23 | ||
|
28630713b2 | ||
|
d8b3d806fc | ||
|
7c7d7380f1 | ||
|
f07a96dad1 | ||
|
404b29d765 | ||
|
51f89a03e1 | ||
|
947c828d5c | ||
|
39d7ec2c9a | ||
|
3303475558 | ||
|
faee376869 | ||
|
dc2f94bc78 | ||
|
10dc994e09 | ||
|
1db9ed6495 | ||
|
7b4592a489 | ||
|
f29968b270 | ||
|
61c825e862 | ||
|
2eddf91faf | ||
|
37f1903e00 | ||
|
8e2b8bd0e6 | ||
|
57109d57f8 | ||
|
3ea64f9093 | ||
|
c59a605c70 | ||
|
3e0e9e3bf9 | ||
|
a818bf481a | ||
|
7209703432 | ||
|
2942124db8 | ||
|
8a4d7c296f | ||
|
530348680a | ||
|
6e38a3de8a | ||
|
27a73a1b94 | ||
|
9f5c037ab9 | ||
|
0932f0ff14 | ||
|
ed42e95404 | ||
|
65dc588bfd | ||
|
d41bd71bcf | ||
|
a4c218f398 | ||
|
ba0c16f7b2 | ||
|
4df3f25fa2 | ||
|
f4612105e8 | ||
|
a9ae7635b7 | ||
|
8739c60796 | ||
|
62d55c0a2d | ||
|
c53b8de335 | ||
|
aa90f17126 | ||
|
dc76eea22c | ||
|
4e5c70e066 | ||
|
f5bd5568ab | ||
|
8b47b6bc32 | ||
|
2e02e195fe | ||
|
eeed49f5f2 | ||
|
50a01d2aca | ||
|
ef145ba4de | ||
|
71fe943716 | ||
|
bc0ed68275 | ||
|
6901c278ca | ||
|
764be9f9e8 | ||
|
a6729731af | ||
|
71cc510ef6 | ||
|
bed51a4858 | ||
|
33214679bb | ||
|
af0b34783e | ||
|
421b5958eb | ||
|
88db6ad7db | ||
|
3f3aafbfee | ||
|
a6031a82f9 | ||
|
867d7c0e10 | ||
|
4a8da40fc0 | ||
|
7bd95ec437 | ||
|
be7a6976a8 | ||
|
378e7ad26f | ||
|
4556c73470 | ||
|
d51dbe048a | ||
|
3518606c14 | ||
|
59e334194b | ||
|
839bd3cff7 | ||
|
3efed4cd05 | ||
|
c7b14ba23f | ||
|
f3bd2bc7b2 | ||
|
dc8da4c29b | ||
|
b9b7cfbabf | ||
|
3bd40073b9 | ||
|
a6cf950ba2 | ||
|
b87f5abd21 | ||
|
250e7c835e | ||
|
e3247355cc | ||
|
d98b85b507 | ||
|
58589f6c6d | ||
|
006095b38a | ||
|
c4adbd5a57 | ||
|
70a07ac352 | ||
|
7c624148a6 | ||
|
6f3219a8f3 | ||
|
f77069419a | ||
|
45b7f1701e | ||
|
42dc414cc6 | ||
|
20929963d3 | ||
|
02b317a0d6 | ||
|
b3f82e1a63 | ||
|
67250acbab | ||
|
2689b59cab | ||
|
e05de038bf | ||
|
c75eeab609 | ||
|
3f264e16e2 | ||
|
18d97a8df7 | ||
|
45b64e52f4 | ||
|
3de97ce920 | ||
|
4dd445f1cf | ||
|
e5e4120723 | ||
|
07149f0252 | ||
|
a487b4d0e3 | ||
|
6709f0549f | ||
|
44a86e2b4f | ||
|
6c158e110c | ||
|
eab32bb8f1 | ||
|
c11d76c51a | ||
|
a44554870e | ||
|
e2dd240e32 | ||
|
43e77215b1 | ||
|
e190709119 | ||
|
9cee3ff562 | ||
|
00c672086c | ||
|
d519ebb34c | ||
|
117d8ce27b | ||
|
66ef8feb4d | ||
|
73c3c7e37d | ||
|
b2d1c579bb | ||
|
c907595ba7 | ||
|
e0648015e9 | ||
|
f7c118ffbf | ||
|
349efdbba1 | ||
|
c6b6916b9a | ||
|
d5e5367e89 | ||
|
84529a5ddb | ||
|
822b4315b7 | ||
|
e4fcae0755 | ||
|
7a0f26dec9 | ||
|
2d5fd20690 | ||
|
5b4c12972c | ||
|
b790bed21e | ||
|
840154dc50 | ||
|
1a44180578 | ||
|
a15eb19676 | ||
|
f12954e1cb | ||
|
56b876ecd0 | ||
|
023020d740 | ||
|
fe043ae554 | ||
|
2a30379dcd | ||
|
35ddd2cc5d | ||
|
1f2007429e | ||
|
5306ee736e | ||
|
b98fa6fe6f | ||
|
91567b83bf | ||
|
ab6f9fccd4 | ||
|
fa75cc4b89 | ||
|
cd978ce26a | ||
|
6b6fdb6aa9 | ||
|
ab5dc45b2f | ||
|
799f30f385 | ||
|
f298720cbc | ||
|
54876afcf0 | ||
|
fd33a6bcd7 | ||
|
ecaa81bd96 | ||
|
349f0a94ae | ||
|
815e064fb6 | ||
|
b0c64d3cc6 | ||
|
61a5846099 | ||
|
3d492f19f6 | ||
|
3dc932d450 | ||
|
bfb48750f0 | ||
|
72288e0c7b | ||
|
bda88f121b | ||
|
8f3e5363ad | ||
|
9927d7ae68 | ||
|
85fc724df5 | ||
|
757b4cf011 | ||
|
8c0030678a | ||
|
44524cb42f | ||
|
f9d875926e | ||
|
bbab8068d2 | ||
|
de6ea2fe25 | ||
|
d256a5f843 | ||
|
0df1f5ce4e | ||
|
c777e72bd8 | ||
|
8b5fd98043 | ||
|
250494f742 | ||
|
9e9617f797 | ||
|
8c42ade7a4 | ||
|
ecf795615c | ||
|
aac6bace9f | ||
|
41d397f22b | ||
|
ce527a6722 | ||
|
3c44e43357 | ||
|
f031487dcb | ||
|
d8c7740dda | ||
|
5a51a26804 | ||
|
50ce6f682d | ||
|
15fc919491 | ||
|
d58e03fe4f | ||
|
e0a5602911 | ||
|
6943ac0bd9 | ||
|
d7450e52e6 | ||
|
ebfe43d5ad | ||
|
87e7326735 | ||
|
d40532f260 | ||
|
d382e90614 | ||
|
a8930adbf8 | ||
|
69c29cb147 | ||
|
5dfb10b2f5 | ||
|
ee0dc659c8 | ||
|
0c20bff4b6 | ||
|
2b033f3aab | ||
|
11baad3508 | ||
|
0da1a2cc36 | ||
|
6ec210989f | ||
|
6caf34b97e | ||
|
8b16b0255b | ||
|
89347dd61b | ||
|
1032c33cb9 | ||
|
6ac2e1e199 | ||
|
5808c44bab | ||
|
69b258cb46 | ||
|
b4b70674ea | ||
|
1aef45578c | ||
|
3b22146dc7 | ||
|
cd18ba1c7a | ||
|
4a91675b26 | ||
|
020919b2ae | ||
|
6ab2a6148a | ||
|
46d210d38f | ||
|
2212a97fe3 | ||
|
178c1bf1ad | ||
|
17594dccfd | ||
|
f5cfb4ae21 | ||
|
a92e5f7cf6 | ||
|
3313cc269b | ||
|
78d65476b6 | ||
|
bf0773aeca | ||
|
8d37e9915a | ||
|
13100ac142 | ||
|
4bd6e0d7c6 | ||
|
5e82d8a9da | ||
|
ebf91993c1 | ||
|
413622fbef | ||
|
391eaa59bd | ||
|
3b74f4b233 | ||
|
0ea600ef1a | ||
|
ede6c341f6 | ||
|
4a7d0c550e | ||
|
78fa6172e1 | ||
|
9bb4d71fd2 | ||
|
2dfb067139 | ||
|
81d52419cf | ||
|
80b949f16b | ||
|
71bc11a375 | ||
|
955c93dc08 | ||
|
41c9bf884f | ||
|
6d8cf5181a | ||
|
b9f68d927e | ||
|
384fd64ab1 | ||
|
f6bc7d6586 | ||
|
ff59b3d9ee | ||
|
51000c2ff8 | ||
|
a4d68e9ee9 | ||
|
e23e4f67be | ||
|
ad04e396fa | ||
|
94c0a11b19 | ||
|
23827756f3 | ||
|
f7e76e00b6 | ||
|
f5dd608db2 | ||
|
35458a99c0 | ||
|
4b9e5c985c | ||
|
9420b577dd | ||
|
ded5674689 | ||
|
f11c1feaf7 | ||
|
67ebcb4711 | ||
|
77425ef91a | ||
|
5f4eed3575 | ||
|
4cd8011907 | ||
|
8468f437e8 | ||
|
1ec663ab19 | ||
|
c2352a88ed | ||
|
7837f425e7 | ||
|
d3ee8ba346 | ||
|
bdff9a6e47 | ||
|
2c27f1d47a | ||
|
a2b946cb35 | ||
|
d989c4b134 | ||
|
fceb8b55c0 | ||
|
37f65b0751 | ||
|
9ef16befd0 | ||
|
c2eefb06aa | ||
|
5439964270 | ||
|
3815264d7d | ||
|
86231c4ab3 | ||
|
0a7baa68a8 | ||
|
917db0bc3d | ||
|
6d9c0011a0 | ||
|
a4bc73f7ba | ||
|
91ad851876 | ||
|
6d3b1dc150 | ||
|
454cec4299 | ||
|
562f353434 | ||
|
c65db3ebed | ||
|
9de863603d | ||
|
f6d7cd4a11 | ||
|
5232a7ded0 | ||
|
799265aadc | ||
|
42f916e150 | ||
|
3eb135d1c7 | ||
|
cbb271a488 | ||
|
5b84226c31 | ||
|
d4dc359875 | ||
|
0e60d85029 | ||
|
83bd850cc7 | ||
|
a9c73fb778 | ||
|
1f59e963b4 | ||
|
b39bfa4f49 | ||
|
d6b6ab51d4 | ||
|
807cbb9023 | ||
|
ad814d04ca | ||
|
3a4255148b | ||
|
8c0368abb9 | ||
|
799abb271a | ||
|
3ede8dd5f1 | ||
|
33ae0c24d0 | ||
|
a1e528a0f0 | ||
|
f0c2662b12 | ||
|
d43260b59e | ||
|
9ab553cf52 | ||
|
d0f63b3757 | ||
|
05da4a7a5e | ||
|
f5788e042a | ||
|
813ce219c8 | ||
|
00e4314f6d | ||
|
ad3c99e22a | ||
|
26d380da69 | ||
|
a33d1339d5 | ||
|
4c6a1d380a | ||
|
37e9b5e305 | ||
|
11f6882e1d | ||
|
9eb568d753 | ||
|
f8035ba036 | ||
|
8ea4b16eea | ||
|
0923dad90a | ||
|
f4cf231cac | ||
|
9e7da0c716 | ||
|
45607b5c5f | ||
|
566e0ddfd0 | ||
|
b0042f2c23 | ||
|
9b5eda8544 | ||
|
66fd5057d3 | ||
|
e1e30f6dfb | ||
|
3805a864b1 | ||
|
6a53b81086 | ||
|
19069803be | ||
|
1773611c52 | ||
|
741e935a72 | ||
|
5e130f2371 | ||
|
12e744abbb | ||
|
d606ca37eb | ||
|
bf70c238a7 | ||
|
26458420d8 | ||
|
3d3ae75c86 | ||
|
8d4357b5ba | ||
|
a0a1c60fb0 | ||
|
0e78c35234 | ||
|
a980024224 | ||
|
fae0dfa59b | ||
|
eac776cf77 | ||
|
8c2e7fd846 | ||
|
1c5e2965a0 | ||
|
746e3e3b3a | ||
|
26a3bf5c72 | ||
|
8771285054 | ||
|
27307a73e5 | ||
|
3618ac4f20 | ||
|
d6fa71fbb0 | ||
|
7b4ceec0b7 | ||
|
3b64714da4 | ||
|
4b9bcf31f4 | ||
|
739dc95e67 | ||
|
93b953d139 | ||
|
dd687fb8d0 | ||
|
188383591d | ||
|
ce3528896b | ||
|
5ac3229f76 | ||
|
a05c596a00 | ||
|
6dbab6b2bb | ||
|
065bd6ffc2 | ||
|
fbc0c9a553 | ||
|
4fcdb75268 | ||
|
0a75909b3f | ||
|
bf27d02390 | ||
|
bd62666224 | ||
|
5662602ba0 | ||
|
5195f1d9c6 | ||
|
efcc84f425 | ||
|
83db4a30b8 | ||
|
647344bf3e | ||
|
ace31f4bc0 | ||
|
902f9df36b | ||
|
eb0de7c432 | ||
|
a167e354e7 | ||
|
bcc49e17ff | ||
|
7510c10209 | ||
|
87942749a3 | ||
|
16070716bc | ||
|
7a98741ef2 | ||
|
d9b0b4e960 | ||
|
bfcf78c110 | ||
|
3515a648a9 | ||
|
10368e1446 | ||
|
716b512dcf | ||
|
e457aca7fa | ||
|
8c4a9f631d | ||
|
eadabec4cd | ||
|
8618407d15 | ||
|
fa772aa92b | ||
|
7fdab3b201 | ||
|
18645d1533 | ||
|
1427c3f79f | ||
|
194a61cd39 | ||
|
c6605c51de | ||
|
e90e3e39c2 | ||
|
5b1c516080 | ||
|
af57378e59 | ||
|
8f9b70fa3c | ||
|
aa7ae4fd6e | ||
|
8662e66bf2 | ||
|
44d27ce2b2 | ||
|
0b57fc15e1 | ||
|
1b79764f49 | ||
|
b902298615 | ||
|
3a4b87511e | ||
|
5d068f734c | ||
|
eb0ddb6d5b | ||
|
238427625f | ||
|
3160aa4877 | ||
|
7b7eb4dd1f | ||
|
45578def71 | ||
|
280c360c02 | ||
|
f2a21ed8b9 | ||
|
a88f46bc9b | ||
|
3e81883a42 | ||
|
238aeabce0 | ||
|
786af2f963 | ||
|
5ea2376334 | ||
|
6a19bb56e0 | ||
|
277dbf08b0 | ||
|
826d9fb8c0 | ||
|
48d0faaa43 | ||
|
02ff2a2758 | ||
|
8050584096 | ||
|
2e113dfab8 | ||
|
838a6871bb | ||
|
5f7e778fa1 | ||
|
fb6d9798a0 | ||
|
df918b5b90 | ||
|
6e98a17551 | ||
|
07032d4068 | ||
|
a86de9a72f | ||
|
9677cfab32 | ||
|
9baa45f78b | ||
|
9bf9578c1b | ||
|
4e549ddb50 | ||
|
355686a69f | ||
|
9ea3f88c0a | ||
|
c156d24525 | ||
|
99abb87c63 | ||
|
f8c5b8a17d | ||
|
2dc35a619c | ||
|
db1dc21a75 | ||
|
532b1fecd9 | ||
|
28af1dc217 | ||
|
90368875e7 | ||
|
6a5c86f486 | ||
|
5e0cd58de4 | ||
|
3587fbc586 | ||
|
513a324b88 | ||
|
689ec8dfb2 | ||
|
c47207d517 | ||
|
d046fd731a | ||
|
0fc8d7c66e | ||
|
d81d263eeb | ||
|
8668eaaa00 | ||
|
e654216ac7 | ||
|
bce8bc0b25 | ||
|
b539385789 | ||
|
84732a982c | ||
|
9b96be595b | ||
|
f46563fe1c | ||
|
e186b927b8 | ||
|
a4b222ac13 | ||
|
66524daf17 | ||
|
5d2e86924e | ||
|
98cdb2ceed | ||
|
bdc5241af4 | ||
|
e8ff08edd8 | ||
|
8fcddd325c | ||
|
067ad6e53e | ||
|
20e65c92c7 | ||
|
646c16af6e | ||
|
725d736f6a | ||
|
c0766528ba | ||
|
bfb44c24bc | ||
|
42c5e2a2ed | ||
|
9e99735f30 | ||
|
31ec2f8338 | ||
|
acfc58a7e5 | ||
|
2adb9fea77 | ||
|
80ee24823f | ||
|
9110078209 | ||
|
e3b86f07da | ||
|
65511e5f22 | ||
|
1722f5e73e | ||
|
72a995d307 | ||
|
665b8d7b6d | ||
|
eda21d2a30 | ||
|
37de6b0682 | ||
|
76edf44f9e | ||
|
e7b4219e22 | ||
|
77e3db464f | ||
|
846f70a6ef | ||
|
127fbc086b | ||
|
546416d495 | ||
|
e372819589 | ||
|
82676f5d34 | ||
|
6642381e75 | ||
|
011fde4bf2 | ||
|
0a2a221d01 | ||
|
8d9f5d57e2 | ||
|
0978a6966a | ||
|
847bc36a38 | ||
|
5e3fd6a9db | ||
|
d6c1d66d3a | ||
|
05fbb021a6 | ||
|
2d368b982a | ||
|
95bf222603 | ||
|
72c6d0e506 | ||
|
2a0fb946e1 | ||
|
aa4e2243a2 | ||
|
8d1400fe12 | ||
|
f6b10544cd | ||
|
f8432832a7 | ||
|
a44ca3595e | ||
|
1a9e8c23eb | ||
|
eb5dc75601 | ||
|
73c7451587 | ||
|
ce46e14729 | ||
|
61c450fc81 | ||
|
cf70d2a7c0 | ||
|
ff50493bb3 | ||
|
61ef697afc | ||
|
b236314a11 | ||
|
3486f6f31b | ||
|
7db56ddee0 | ||
|
242ca9acb4 | ||
|
346b6abab9 | ||
|
bf3c361113 | ||
|
2748b7da7e | ||
|
d41f5396f3 | ||
|
0c04cca0e1 | ||
|
0691b37732 | ||
|
a61ae2aa01 | ||
|
eb212c5a30 | ||
|
6005e9cb28 | ||
|
61cea49014 | ||
|
5a51c1b01a | ||
|
85784fd832 | ||
|
77c74c647b | ||
|
7e0b4b5e9b | ||
|
99e822fa18 | ||
|
b30e25f297 | ||
|
d343e3d98c | ||
|
89c35c59a4 | ||
|
26707abe56 | ||
|
f425d56ba4 | ||
|
da031f83f7 | ||
|
597a7ccc72 | ||
|
1c76b53482 | ||
|
118c093d56 | ||
|
b03319ddb1 | ||
|
b928e345e4 | ||
|
001b92c112 | ||
|
0f89ebacbb | ||
|
90dcf31631 | ||
|
11d2986a53 | ||
|
28d2c969e7 | ||
|
812f1e94c0 | ||
|
a7757bf518 | ||
|
1cb22f0da2 | ||
|
1958a9bbdf | ||
|
ca53704f4b | ||
|
8ab47b4353 | ||
|
be01d7a905 | ||
|
64fe067066 | ||
|
e2d53fac1c | ||
|
35a3414302 | ||
|
3ddabe0d52 | ||
|
20446d0e53 | ||
|
767b0f82c3 | ||
|
0bd858d7ff | ||
|
e19717d075 | ||
|
8c9a9205d9 | ||
|
a7653c19a3 | ||
|
862f55c29c | ||
|
7990ab58fa | ||
|
670be71bd8 | ||
|
b094b3b9f4 | ||
|
2efe7927d3 | ||
|
900ac63ee8 | ||
|
852db050b9 | ||
|
fcefdc9a59 | ||
|
79f268978d | ||
|
4949322462 | ||
|
a92b9e60ab | ||
|
b66edff435 | ||
|
1bf436e014 | ||
|
fe2079c4c0 | ||
|
6b51113981 | ||
|
547bcc4b57 | ||
|
c426fb08cf | ||
|
ca2012a912 | ||
|
95b04850d0 | ||
|
568a27588d | ||
|
9f330481c3 | ||
|
1a928816a1 | ||
|
b97fa1e75b | ||
|
1e8e17ccd7 | ||
|
15b9aa22d7 | ||
|
54e91e7420 | ||
|
13454fc3de | ||
|
4e95a09937 | ||
|
d10242c5f7 | ||
|
51c9cfc296 | ||
|
0d0edf8e4c | ||
|
23fc845f81 | ||
|
da872ddcc6 | ||
|
3b1195f8a6 | ||
|
23d294bb60 | ||
|
d580905000 | ||
|
8252847b7b | ||
|
1413a09f34 | ||
|
22bf0f3eb4 | ||
|
a7d8607d9e | ||
|
cd6aaf2920 | ||
|
149140e922 | ||
|
28b552bf6b | ||
|
c02f6c26d3 | ||
|
a9bf5999d1 | ||
|
ca3df5eeda | ||
|
56c5ba8f92 | ||
|
2a83e4182c | ||
|
d08ac826c5 | ||
|
aa4001b607 | ||
|
eaaa9695b2 | ||
|
4bf3afdde9 | ||
|
3b0f5fc084 | ||
|
78216fb485 | ||
|
787dadbeea | ||
|
5f7bc0c759 | ||
|
7d94653052 | ||
|
84c4ea571d | ||
|
72d872ad82 | ||
|
1ec2d0a9a8 | ||
|
d5e6fe4d29 | ||
|
1f7c3e541f | ||
|
56647c5d8f | ||
|
21f82188ce | ||
|
78fcc31d4a | ||
|
00cf048b12 | ||
|
37c24e6d86 | ||
|
3352ff97c2 | ||
|
7963fde37b | ||
|
abab438543 | ||
|
d9b55244fd | ||
|
188630dc13 | ||
|
d79058d1c6 | ||
|
2b404a6504 | ||
|
1a63f278f2 | ||
|
249cb511c5 | ||
|
3e2b0f801d | ||
|
56d920a5c1 | ||
|
f9cfe5ce82 | ||
|
b56c7f4df1 | ||
|
2eb321b992 | ||
|
696229523d | ||
|
9ebb9a3c8e | ||
|
5a609fbcb5 | ||
|
fc21098a95 | ||
|
f0ed082bab | ||
|
072c5d0573 | ||
|
27d47bd42f | ||
|
7c027666da | ||
|
bfcf1ba1c4 | ||
|
35f0aafaa4 | ||
|
8bb666cee3 | ||
|
544869377d | ||
|
1d71f38924 | ||
|
c1e1dd2298 | ||
|
7d91390359 | ||
|
19fa540219 | ||
|
31b0e7d024 | ||
|
9f9860b004 | ||
|
eff11b5a4a | ||
|
b5cc710473 | ||
|
d6a8421f3b | ||
|
e735dfd35b | ||
|
375f660e27 | ||
|
1db4cb841b | ||
|
f07ca59839 | ||
|
bb5947de99 | ||
|
320ec1deac | ||
|
f1563e6392 | ||
|
668f3614ca | ||
|
2e8493af51 | ||
|
d77d2af20a | ||
|
7a73c6acb0 | ||
|
93e399f641 | ||
|
38366c0c6e | ||
|
d6c8365795 | ||
|
16c2919972 | ||
|
66d9cbfe6d | ||
|
79c60999dc | ||
|
ba00f2f6f5 | ||
|
40070e72d4 | ||
|
ba67d72c64 | ||
|
be909274aa | ||
|
f09de87735 | ||
|
164dc6216a | ||
|
0612005aa6 | ||
|
03d848ea10 | ||
|
0ad57bef96 | ||
|
e4ef639a57 | ||
|
7fa8fb7382 | ||
|
0eb528abf2 | ||
|
cd86f773a7 | ||
|
e9fc552837 | ||
|
8ee7370c9b | ||
|
a32aa2617d | ||
|
ca5812b45c | ||
|
91aca8c662 | ||
|
12806449fa | ||
|
e1374d86fe | ||
|
43ea10eb1d | ||
|
bba39d8804 | ||
|
32fd445daa | ||
|
cc2c100274 | ||
|
171e4842ec | ||
|
0aea43db93 | ||
|
0b37737cc3 | ||
|
a6345f1559 | ||
|
447bb9029f | ||
|
33ee2c67c0 | ||
|
c1d3080ee8 | ||
|
cbe7431cdb | ||
|
ccd6bf8272 | ||
|
84b1716b5e | ||
|
e84a1ab3c4 | ||
|
00faf82832 | ||
|
7a50d38a2b | ||
|
48b07fb4fc | ||
|
155139059b | ||
|
1e71493afa | ||
|
db687011e0 | ||
|
bff6c5d2b5 | ||
|
7d2c1df99e | ||
|
3e680de1eb | ||
|
df3b20b2cf | ||
|
6b5e15360a | ||
|
d5a3a2d2fb | ||
|
343133167f | ||
|
bad8871e52 | ||
|
5576ad11ed | ||
|
0b16042377 | ||
|
4859d492b2 | ||
|
4ed055b4a6 | ||
|
0b7058c46a | ||
|
19190c2b8c | ||
|
088494aa03 | ||
|
7ea3baa64d | ||
|
4d844cfa56 | ||
|
e734c9f677 | ||
|
ffc29120c4 | ||
|
4bbf6d1d2b | ||
|
714e1b331e | ||
|
115fd75ab0 | ||
|
e00b93a1f7 | ||
|
2c17f97fe6 | ||
|
97d8b77054 | ||
|
cb38a0dc0a | ||
|
877db5a792 | ||
|
2e060551bd | ||
|
69c44d65c8 | ||
|
0ac622accf | ||
|
da08ee8e3b | ||
|
73e8bd9f5c | ||
|
25195b0041 | ||
|
f416a15096 | ||
|
b5fe413b4d | ||
|
3a2925bfa9 | ||
|
9a5ce0c4c9 | ||
|
1896431f79 | ||
|
2cd2b9705e | ||
|
78525dae8a | ||
|
e01ba9d6b0 | ||
|
e796fa22d4 | ||
|
1386cb9488 | ||
|
0319ea9ff6 | ||
|
992a2dbba8 | ||
|
25cc889004 | ||
|
965cde9232 | ||
|
797894036d | ||
|
a1d808638d | ||
|
d36ae204d5 | ||
|
88dc246630 | ||
|
2625a34bfc | ||
|
6429cc05ca | ||
|
5d326fa963 | ||
|
51c5fc85e1 | ||
|
51aa15aca2 | ||
|
a1ca580240 | ||
|
83b83fb984 | ||
|
3122c2421a | ||
|
7810162053 | ||
|
7629c489c8 | ||
|
27359b8079 | ||
|
b1604841c2 | ||
|
6ca9a6f4d7 | ||
|
dfa952da97 | ||
|
8064b0f2c4 | ||
|
758658850b | ||
|
453651e521 | ||
|
92ceb327ba | ||
|
26f3ff8a91 | ||
|
11d9af7c0a | ||
|
a7bdd4cba8 | ||
|
d542c45c75 | ||
|
3be333ed30 | ||
|
9648b76dc4 | ||
|
10450cbbe6 | ||
|
7435d9f77c | ||
|
cbb49cb2f7 | ||
|
d30b2ed5f8 | ||
|
9658b04fc4 | ||
|
4532cac06a | ||
|
13de9f03f1 | ||
|
fa227e7cbc | ||
|
4b0ef4bf38 | ||
|
8814806c97 | ||
|
b9af66528e | ||
|
637dda1c30 | ||
|
21e92e74c8 | ||
|
729fe77e3b | ||
|
2b8e0a73fb | ||
|
a85f1b7adf | ||
|
942151af30 | ||
|
0e4053234d | ||
|
d79e711718 | ||
|
b1eb2ad8d1 | ||
|
04d83396ee | ||
|
9a6b14f674 | ||
|
1520ae48b8 | ||
|
8786f381ec | ||
|
ba84800275 | ||
|
7642c3c6ff | ||
|
d2fcdd0973 | ||
|
c6450fa963 | ||
|
f3bce19f6c | ||
|
f4b50a1466 | ||
|
2eb9bbfb68 | ||
|
ed85c0f409 | ||
|
51194932d3 | ||
|
fa1923ac3a | ||
|
2a3d1e2e06 | ||
|
538a7f2a80 | ||
|
e0587fb9d0 | ||
|
b092af40a5 | ||
|
6c84fc2dbf | ||
|
7144b76872 | ||
|
01bbebce4d | ||
|
5cddb1ce3c | ||
|
bce64c6c83 | ||
|
afcce46fd5 | ||
|
33eb5eabee | ||
|
402bf6e8d0 | ||
|
50205e11c6 | ||
|
314ccf6901 | ||
|
483dc973c4 | ||
|
b6468b4597 | ||
|
06359e368b | ||
|
0e5bf85651 | ||
|
ce6dd69697 | ||
|
f50a45452a | ||
|
657466a3f6 | ||
|
2732d0d21d | ||
|
f0cc59d68a | ||
|
267679be84 | ||
|
c45cf6199f | ||
|
79e6512629 | ||
|
26b7b50afe | ||
|
e03994bf47 | ||
|
da07e1b683 | ||
|
4c11099453 | ||
|
f60737a525 | ||
|
bc2627a98a | ||
|
507c2356e3 | ||
|
03ef57950a | ||
|
b8875cb7c8 | ||
|
998018d7be | ||
|
40e2856123 | ||
|
e47af58bb4 | ||
|
6b919b1b2d | ||
|
1a02bb71dd | ||
|
d52791a708 | ||
|
053606ddae | ||
|
d8d67d2e1f | ||
|
0b3b901cff | ||
|
a057b837dd | ||
|
ad3937fd4e | ||
|
decf070258 | ||
|
8ed9f69b36 | ||
|
bc9d3a0254 | ||
|
5720832f23 | ||
|
1110ba4c08 | ||
|
93658054c0 | ||
|
dd159f25e4 | ||
|
ce34158680 | ||
|
8b659cef3a | ||
|
5b331f6fcb | ||
|
1b557b1606 | ||
|
5af97b43c9 | ||
|
e04a97ff23 | ||
|
e5e191a6b1 | ||
|
c5adc1c8b5 | ||
|
61e0f11170 | ||
|
862044c7f7 | ||
|
c4cf487315 | ||
|
26498e0f0c | ||
|
af9af2965b | ||
|
a810db7b84 | ||
|
d6eb4321d0 | ||
|
9d2951ea0a | ||
|
1fb106527f | ||
|
90d85aa16c | ||
|
95d6ed22b3 | ||
|
efe7257ea7 | ||
|
90891091cd | ||
|
214399a3bc | ||
|
fb5f5b8188 | ||
|
eb040bd54a | ||
|
eeaa7a05a1 | ||
|
ca39f4eee2 | ||
|
2983c039df | ||
|
e4d8084cbd | ||
|
53a65e547c | ||
|
0822b2dfbd | ||
|
9bf41f09ab | ||
|
c4815f6cd6 | ||
|
6b2b4cc885 | ||
|
4f64dabb5f | ||
|
32f69ad86c | ||
|
d7fa9eb003 | ||
|
9dfcb05fa6 | ||
|
37bdde1087 | ||
|
2714ca81b9 | ||
|
73e9aa9e3f | ||
|
9b1c68638d | ||
|
0ae8439906 | ||
|
cb728bb028 | ||
|
97851145bc | ||
|
3c58d4c700 | ||
|
ddc77c5092 | ||
|
ad542a10c5 | ||
|
0510ec67e2 | ||
|
5455c818b5 | ||
|
e6a0eca45e | ||
|
093965f9e3 | ||
|
3953766e57 | ||
|
803fcc3298 | ||
|
02f9757ab5 | ||
|
1a00317169 | ||
|
5a798e73b5 | ||
|
aadbb0f275 | ||
|
36046ae278 | ||
|
a95236cfc1 | ||
|
56e98fe2fe | ||
|
5127318ae8 | ||
|
80ac616fca | ||
|
eb0892b4b1 | ||
|
90d185544c | ||
|
195994fe4c | ||
|
452721c1fa | ||
|
e0c98fa401 | ||
|
26eb6ad831 | ||
|
f6159afa19 | ||
|
72cae2a599 | ||
|
3c9f0096c7 | ||
|
bd00c66500 | ||
|
751e8697f2 | ||
|
7b136de79a | ||
|
a3969aa125 | ||
|
46cf80fb36 | ||
|
09db4940ee | ||
|
5891f98145 | ||
|
315b06ff62 | ||
|
95ebabbc5f | ||
|
8d1a8d65b5 | ||
|
aad2511c6d | ||
|
73b19be32d | ||
|
69049555af | ||
|
4ade77f625 | ||
|
68b696e595 | ||
|
f69d2c857d | ||
|
bb354c6c27 | ||
|
ec79c05cbf | ||
|
af1471dc04 | ||
|
0831523350 | ||
|
c1019670ea | ||
|
1ec5365429 | ||
|
068a073c1d | ||
|
95140740ad | ||
|
085ad4821e | ||
|
1bdb99330a | ||
|
7a30cd7085 | ||
|
544e3129c5 | ||
|
0f4cacbb53 | ||
|
2bbcf19aca | ||
|
7a70f033b5 | ||
|
2af1aedeca | ||
|
1172974ddd | ||
|
fedc14a050 | ||
|
c289c70ce1 | ||
|
834c9575b2 | ||
|
367c7c2d7c | ||
|
901cae07ff | ||
|
093ecbfe3b | ||
|
b05b1eff1c | ||
|
7329f8dd10 | ||
|
9f41585eb5 | ||
|
91950d1aea | ||
|
569adb40d7 | ||
|
7bf3cd4315 | ||
|
63b8ce612f | ||
|
379a246fc1 | ||
|
b64eb100b0 | ||
|
a4bf7f6b6e | ||
|
bb9d2eab89 | ||
|
395a32717d | ||
|
6bc40f9af5 | ||
|
28d7b4147d | ||
|
9d1c71e34d | ||
|
2d5f21ba65 | ||
|
edd9efc2fb | ||
|
bba8f10598 | ||
|
7e61b44dcd | ||
|
ecb37a6e77 | ||
|
f56f875b8b | ||
|
36c3faf4bf | ||
|
01ae16a0e7 | ||
|
232140a47a | ||
|
b61ff94032 | ||
|
b7c0b61782 | ||
|
7f56780915 | ||
|
b01a3a9b72 | ||
|
a43b49dfb1 | ||
|
81ff29e30c | ||
|
5fe49d99f2 | ||
|
1f9092958d | ||
|
a97cd0f4d7 | ||
|
b63d6aae55 | ||
|
1c263f8f4f | ||
|
c4464c9eea | ||
|
9bbedf6146 | ||
|
82bfb45e24 | ||
|
9793fc1335 | ||
|
060159820c | ||
|
15d8e05e1e | ||
|
e7a5905d8a | ||
|
81b998ca48 | ||
|
6b40dd17cf | ||
|
60b1a118e1 | ||
|
92c3d5acf7 | ||
|
5ab59e5332 | ||
|
21ae5135dd | ||
|
7eab897d4d | ||
|
1b9511d7ce | ||
|
17930a66aa | ||
|
a84dd2398f | ||
|
7dfb4b2d00 | ||
|
d222202193 | ||
|
cadec45c3d | ||
|
7cf40c1cb3 | ||
|
b7e5678fe5 | ||
|
c27d8cc0c9 | ||
|
de2fd7dd0b | ||
|
401f2d6ea8 | ||
|
d33d260b90 | ||
|
b8a1115132 | ||
|
f9868926ee | ||
|
ca9794658e | ||
|
0faaed2112 | ||
|
5896100a38 | ||
|
1e67ee8c9a | ||
|
2cfbf84dad | ||
|
53f89a436f | ||
|
d12e0e8972 | ||
|
bde5e4a1e6 | ||
|
a6712f5109 | ||
|
145138fb3c | ||
|
45a56ce399 | ||
|
61143b87c1 | ||
|
0741997ff0 | ||
|
6f7c693a85 | ||
|
4cb04aa0df | ||
|
04856ceb5c | ||
|
717241bf4a | ||
|
ec8cc65926 | ||
|
02fdb5cb51 | ||
|
5b8c2c8f00 | ||
|
38e0b7eeaa | ||
|
dfcdece7c5 | ||
|
bfda1460b1 | ||
|
5d7d120af1 | ||
|
f7ac1d5989 | ||
|
096b988360 | ||
|
3f920a91f3 | ||
|
5f0df8ab22 | ||
|
23588a9c04 | ||
|
7dac1b470a | ||
|
ad501a535a | ||
|
23cdf8de32 | ||
|
a9a3029541 | ||
|
589e0b2305 | ||
|
d5e79a9d2b | ||
|
2c1bb79213 | ||
|
b3c60ff5d0 | ||
|
01d35eb372 | ||
|
b51b3fc537 | ||
|
b5773ee043 | ||
|
0b57da0211 | ||
|
595bd01eb1 | ||
|
c5062726f1 | ||
|
1aeafcb7c5 | ||
|
9560d34fcf | ||
|
e133c0103d | ||
|
b570c4229f | ||
|
e5885c119d | ||
|
bb1f096975 | ||
|
33b0455211 | ||
|
fddc17ab36 | ||
|
aa6d7bc6d6 | ||
|
477f8cd08b | ||
|
58a98d32e4 | ||
|
ee27048262 | ||
|
8957c6b887 | ||
|
fc51e7ac58 | ||
|
4ec982ad01 | ||
|
720d935fff | ||
|
96a3527a63 | ||
|
2be85e2492 | ||
|
01f3622c74 | ||
|
dd73b99420 | ||
|
2bc1680665 | ||
|
1a36dfb21e | ||
|
3969330b47 | ||
|
79984b9928 | ||
|
491d6397fc | ||
|
2253fed4a0 | ||
|
598f61ba28 | ||
|
4c6ac9e614 | ||
|
35dad4a1e2 | ||
|
d41b10f811 | ||
|
a2b93da84b | ||
|
df482fe02f | ||
|
17af4dd52b | ||
|
f38ac41ed4 | ||
|
b4c3b833ec | ||
|
46e9f78efc | ||
|
420ccf7b8f | ||
|
c5a05a6aef | ||
|
ff353c218a | ||
|
469b42ee21 | ||
|
f5778f152b | ||
|
78fc159d68 | ||
|
f7ce1d772d | ||
|
473cb3fe4a | ||
|
5190c16a04 | ||
|
a29e40a423 | ||
|
673d5391a2 | ||
|
2dd693412a | ||
|
754319490f | ||
|
a15a19f0d1 | ||
|
cb6182bdfa | ||
|
9fe108db09 | ||
|
279e8d2641 | ||
|
19c2f40649 | ||
|
c093cd3984 | ||
|
df91144a6d | ||
|
9976a176ae | ||
|
e048953145 | ||
|
68bb26bead | ||
|
04e3ef00db | ||
|
5ba6be2617 | ||
|
e9daead784 | ||
|
fbd8303a94 | ||
|
f72a0d99fe | ||
|
7c90947a0b | ||
|
bc0e3bb4d0 | ||
|
9b3e1592c2 | ||
|
8bd45a7e7e | ||
|
c944bde5be | ||
|
99d447cc5d | ||
|
50f19e3a66 | ||
|
2d77e4f922 | ||
|
f2b844f59d | ||
|
76317355bd | ||
|
c8f3722129 | ||
|
ce193d4f01 | ||
|
5f22f3207e | ||
|
e032abcb27 | ||
|
08122e151a | ||
|
e8d5d3409c | ||
|
594fa4a208 | ||
|
cb080a10b6 | ||
|
6d6c749215 | ||
|
a859131003 | ||
|
88c8f19729 | ||
|
23afe71f44 | ||
|
348b91b7dc | ||
|
227872571a | ||
|
ab2da985b6 | ||
|
a66a008b17 | ||
|
34ce1a8502 | ||
|
2182d2db28 | ||
|
dc21b36daf | ||
|
944eebbdb4 | ||
|
75982a5df4 | ||
|
6c6f4aa6fd | ||
|
a594cec7e3 | ||
|
5442c0eae3 | ||
|
d257350949 | ||
|
bd4596efac | ||
|
f0f202e6b7 | ||
|
68349e5219 | ||
|
b7dfb8528f | ||
|
f41c01c688 | ||
|
754eb6a67d | ||
|
cb3c57df3a | ||
|
caf1d96862 |
@@ -8,4 +8,5 @@
|
||||
(c-set-offset 'innamespace '0)
|
||||
(c-set-offset 'inline-open '0)))
|
||||
)
|
||||
(makefile-mode (indent-tabs-mode . t))
|
||||
)
|
||||
|
@@ -78,6 +78,7 @@ endif
|
||||
ifneq ($(strip $(MESA_GPU_DRIVERS)),)
|
||||
|
||||
SUBDIRS := \
|
||||
src/loader \
|
||||
src/mapi \
|
||||
src/glsl \
|
||||
src/mesa \
|
||||
|
@@ -36,7 +36,6 @@ PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
|
||||
EXTRA_FILES = \
|
||||
aclocal.m4 \
|
||||
configure \
|
||||
VERSION \
|
||||
bin/ar-lib \
|
||||
bin/compile \
|
||||
bin/config.sub \
|
||||
@@ -46,6 +45,7 @@ EXTRA_FILES = \
|
||||
bin/ltmain.sh \
|
||||
bin/missing \
|
||||
bin/ylwrap \
|
||||
bin/test-driver \
|
||||
src/glsl/glsl_parser.cpp \
|
||||
src/glsl/glsl_parser.h \
|
||||
src/glsl/glsl_lexer.cpp \
|
||||
|
28
bin/.cherry-ignore
Normal file
28
bin/.cherry-ignore
Normal file
@@ -0,0 +1,28 @@
|
||||
# This patch does not apply cleanly, author says it can be skipped.
|
||||
dff3eccd158d648482bb47118ef5d57a9186e5a4
|
||||
|
||||
# And this one depends on the above, author says it too can be skipped.
|
||||
ac35ded4733883037316d556af596524e5e02535
|
||||
|
||||
# This patch introduces some regressions. See:
|
||||
# https://bugs.freedesktop.org/show_bug.cgi?id=77443
|
||||
1afe3359258a9e89b62c8638761f52d78f6d1cbc
|
||||
|
||||
# Author retracted this from consideration for stable branch
|
||||
3e817e7e56806d8adb8f16c35136045c29908944
|
||||
|
||||
# And this one was simply a bug fix for the previously-retracted commit
|
||||
2bab95973d8ad3a84f62670143d6f26c230d9582
|
||||
|
||||
# Here we have a commit, and its subsequent "revert" both proposed within a
|
||||
# single window of the stable release. So we can achieve the same final effect
|
||||
# by ignoring both of the commits.
|
||||
e3cc0d90e14e62a0a787b6c07a6df0f5c84039be
|
||||
0d5ec2c615784929be095951f9269773a790a2dd
|
||||
|
||||
# The function being modified here (_eglCreateWindowSurfaceCommon) does not
|
||||
# exist in the 10.1 branch.
|
||||
91ff0d4c6510dc38f279c586ced17fba917873e7
|
||||
|
||||
# This patch is not needed (modifies work only in 10.2)
|
||||
6980cae6aeb6671b6b0245e20a2d34957c1fff0a
|
@@ -14,7 +14,7 @@ git log --reverse --grep="cherry picked from commit" origin/master..HEAD |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||
|
||||
# Grep for commits that were marked as a candidate for the stable tree.
|
||||
git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: .*[Cc]andidate\|CC:.*mesa-stable\)' HEAD..origin/master |\
|
||||
git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: .*[Cc]andidate\|CC:.*10\.1.*mesa-stable\)' HEAD..origin/master |\
|
||||
while read sha
|
||||
do
|
||||
# Check to see whether the patch is on the ignore list.
|
||||
|
@@ -100,4 +100,4 @@ def AddOptions(opts):
|
||||
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
||||
opts.Add(BoolOption('texture_float', 'enable floating-point textures and renderbuffers', 'no'))
|
||||
if host_platform == 'windows':
|
||||
opts.Add(EnumOption('MSVC_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0', '10.0', '11.0')))
|
||||
opts.Add(EnumOption('MSVC_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0', '10.0', '11.0', '12.0')))
|
||||
|
150
configure.ac
150
configure.ac
@@ -28,11 +28,11 @@ AC_SUBST([OSMESA_VERSION])
|
||||
|
||||
dnl Versions for external dependencies
|
||||
LIBDRM_REQUIRED=2.4.24
|
||||
LIBDRM_RADEON_REQUIRED=2.4.46
|
||||
LIBDRM_INTEL_REQUIRED=2.4.38
|
||||
LIBDRM_RADEON_REQUIRED=2.4.50
|
||||
LIBDRM_INTEL_REQUIRED=2.4.52
|
||||
LIBDRM_NVVIEUX_REQUIRED=2.4.33
|
||||
LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
|
||||
LIBDRM_FREEDRENO_REQUIRED=2.4.39
|
||||
LIBDRM_FREEDRENO_REQUIRED=2.4.51
|
||||
DRI2PROTO_REQUIRED=2.6
|
||||
DRI3PROTO_REQUIRED=1.0
|
||||
PRESENTPROTO_REQUIRED=1.0
|
||||
@@ -230,6 +230,12 @@ esac
|
||||
AC_SUBST([VISIBILITY_CFLAGS])
|
||||
AC_SUBST([VISIBILITY_CXXFLAGS])
|
||||
|
||||
dnl
|
||||
dnl Optional flags, check for compiler support
|
||||
dnl
|
||||
AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_SUPPORTED=1], [SSE41_SUPPORTED=0])
|
||||
AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
|
||||
|
||||
dnl
|
||||
dnl Hacks to enable 32 or 64 bit build
|
||||
dnl
|
||||
@@ -536,6 +542,20 @@ AC_ARG_ENABLE([dri],
|
||||
[enable DRI modules @<:@default=enabled@:>@])],
|
||||
[enable_dri="$enableval"],
|
||||
[enable_dri=yes])
|
||||
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
dri3_default=yes
|
||||
;;
|
||||
*)
|
||||
dri3_default=no
|
||||
;;
|
||||
esac
|
||||
AC_ARG_ENABLE([dri3],
|
||||
[AS_HELP_STRING([--enable-dri3],
|
||||
[enable DRI3 @<:@default=auto@:>@])],
|
||||
[enable_dri3="$enableval"],
|
||||
[enable_dri3="$dri3_default"])
|
||||
AC_ARG_ENABLE([glx],
|
||||
[AS_HELP_STRING([--enable-glx],
|
||||
[enable GLX library @<:@default=enabled@:>@])],
|
||||
@@ -572,7 +592,7 @@ AC_ARG_ENABLE([xvmc],
|
||||
[AS_HELP_STRING([--enable-xvmc],
|
||||
[enable xvmc library @<:@default=auto@:>@])],
|
||||
[enable_xvmc="$enableval"],
|
||||
[enable_xvmc=auto])
|
||||
[enable_xvmc=no])
|
||||
AC_ARG_ENABLE([vdpau],
|
||||
[AS_HELP_STRING([--enable-vdpau],
|
||||
[enable vdpau library @<:@default=auto@:>@])],
|
||||
@@ -702,6 +722,7 @@ fi
|
||||
AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
|
||||
"x$enable_dri" = xyes)
|
||||
AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
|
||||
AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes)
|
||||
|
||||
AC_ARG_ENABLE([shared-glapi],
|
||||
[AS_HELP_STRING([--enable-shared-glapi],
|
||||
@@ -755,6 +776,19 @@ AC_SUBST([MESA_LLVM])
|
||||
# Check for libdrm
|
||||
PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
|
||||
[have_libdrm=yes], [have_libdrm=no])
|
||||
if test "x$have_libdrm" = xyes; then
|
||||
DEFINES="$DEFINES -DHAVE_LIBDRM"
|
||||
fi
|
||||
|
||||
case "$host_os" in
|
||||
linux*)
|
||||
need_libudev=yes ;;
|
||||
*)
|
||||
need_libudev=no ;;
|
||||
esac
|
||||
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
|
||||
have_libudev=yes, have_libudev=no)
|
||||
|
||||
if test "x$enable_dri" = xyes; then
|
||||
# DRI must be shared, I think
|
||||
@@ -811,13 +845,18 @@ xyesno)
|
||||
fi
|
||||
PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
|
||||
GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
|
||||
PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
|
||||
PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED])
|
||||
if test x"$enable_dri3" = xyes; then
|
||||
PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
|
||||
PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
|
||||
fi
|
||||
fi
|
||||
|
||||
# find the DRI deps for libGL
|
||||
dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8 xcb-dri3 xcb-present xcb-sync xshmfence"
|
||||
dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
|
||||
|
||||
if test x"$enable_dri3" = xyes; then
|
||||
dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= 1.1"
|
||||
fi
|
||||
|
||||
# add xf86vidmode if available
|
||||
PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
|
||||
@@ -827,8 +866,13 @@ xyesno)
|
||||
|
||||
PKG_CHECK_MODULES([DRIGL], [$dri_modules])
|
||||
GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
|
||||
X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS $LIBUDEV_CFLAGS"
|
||||
GL_LIB_DEPS="$DRIGL_LIBS $LIBUDEV_LIBS"
|
||||
X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
|
||||
GL_LIB_DEPS="$DRIGL_LIBS"
|
||||
|
||||
if test x"$enable_dri3$have_libudev" = xyesyes; then
|
||||
X11_INCLUDES="$X11_INCLUDES $LIBUDEV_CFLAGS"
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS"
|
||||
fi
|
||||
|
||||
# need DRM libs, $PTHREAD_LIBS, etc.
|
||||
GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
@@ -836,6 +880,10 @@ xyesno)
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$have_libudev" = yes; then
|
||||
DEFINES="$DEFINES -DHAVE_LIBUDEV"
|
||||
fi
|
||||
|
||||
# This is outside the case (above) so that it is invoked even for non-GLX
|
||||
# builds.
|
||||
AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
|
||||
@@ -947,6 +995,9 @@ if test "x$enable_dri" = xyes; then
|
||||
linux*)
|
||||
DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
|
||||
DEFINES="$DEFINES -DHAVE_ALIAS"
|
||||
if test "x$enable_dri3" = xyes; then
|
||||
DEFINES="$DEFINES -DHAVE_DRI3"
|
||||
fi
|
||||
|
||||
case "$host_cpu" in
|
||||
x86_64|amd64)
|
||||
@@ -979,7 +1030,7 @@ if test "x$enable_dri" = xyes; then
|
||||
gnu*)
|
||||
DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
|
||||
DEFINES="$DEFINES -DHAVE_ALIAS"
|
||||
;;
|
||||
;;
|
||||
solaris*)
|
||||
DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
|
||||
;;
|
||||
@@ -999,7 +1050,7 @@ if test "x$enable_dri" = xyes; then
|
||||
DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
|
||||
|
||||
# Check for expat
|
||||
PKG_CHECK_EXISTS([EXPAT], [have_expat=yes], [have_expat=no])
|
||||
PKG_CHECK_EXISTS([expat], [have_expat=yes], [have_expat=no])
|
||||
if test "x$have_expat" = "xyes"; then
|
||||
PKG_CHECK_MODULES([EXPAT], [expat], [],
|
||||
AC_MSG_ERROR([Expat required for DRI.]))
|
||||
@@ -1025,7 +1076,6 @@ if test "x$enable_dri" = xyes; then
|
||||
DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
|
||||
|
||||
DRI_DRIVER_LDFLAGS="-module -avoid-version -shared -Wl,-Bsymbolic"
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
|
||||
@@ -1033,7 +1083,6 @@ AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
|
||||
"x$enable_osmesa" = xyes -o \
|
||||
-n "$DRI_DIRS")
|
||||
AC_SUBST([DRI_LIB_DEPS])
|
||||
AC_SUBST([DRI_DRIVER_LDFLAGS])
|
||||
AC_SUBST([GALLIUM_DRI_LIB_DEPS])
|
||||
|
||||
case $DRI_DIRS in
|
||||
@@ -1142,18 +1191,30 @@ if test "x$enable_gbm" = xauto; then
|
||||
esac
|
||||
fi
|
||||
if test "x$enable_gbm" = xyes; then
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
|
||||
AC_MSG_ERROR([gbm needs udev]))
|
||||
if test "x$need_libudev$have_libudev" = xyesno; then
|
||||
AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED])
|
||||
fi
|
||||
|
||||
if test "x$enable_dri" = xyes; then
|
||||
GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
|
||||
if test "x$enable_shared_glapi" = xno; then
|
||||
AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
|
||||
fi
|
||||
else
|
||||
# Strictly speaking libgbm does not require --enable-dri, although
|
||||
# both of its backends do. Thus one can build libgbm without any
|
||||
# backends if --disable-dri is set.
|
||||
# To avoid unnecessary complexity of checking if at least one backend
|
||||
# is available when building, just mandate --enable-dri.
|
||||
AC_MSG_ERROR([gbm requires --enable-dri])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
|
||||
GBM_PC_REQ_PRIV="libudev"
|
||||
if test "x$need_libudev" = xyes; then
|
||||
GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
|
||||
else
|
||||
GBM_PC_REQ_PRIV=""
|
||||
fi
|
||||
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
|
||||
AC_SUBST([GBM_PC_REQ_PRIV])
|
||||
AC_SUBST([GBM_PC_LIB_PRIV])
|
||||
@@ -1170,11 +1231,6 @@ if test "x$enable_egl" = xyes; then
|
||||
|
||||
if test "$enable_static" != yes; then
|
||||
# build egl_glx when libGL is built
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
|
||||
[have_libudev=yes],[have_libudev=no])
|
||||
if test "$have_libudev" = yes; then
|
||||
DEFINES="$DEFINES -DHAVE_LIBUDEV"
|
||||
fi
|
||||
|
||||
if test "x$enable_dri" = xyes; then
|
||||
HAVE_EGL_DRIVER_DRI2=1
|
||||
@@ -1417,6 +1473,8 @@ for plat in $egl_platforms; do
|
||||
drm)
|
||||
test "x$enable_gbm" = "xno" &&
|
||||
AC_MSG_ERROR([EGL platform drm needs gbm])
|
||||
test "x$have_libdrm" != xyes &&
|
||||
AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
|
||||
;;
|
||||
|
||||
android|fbdev|gdi|null)
|
||||
@@ -1427,9 +1485,9 @@ for plat in $egl_platforms; do
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$plat$have_libudev" in
|
||||
waylandno|drmno)
|
||||
AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
|
||||
case "$plat$need_libudev$have_libudev" in
|
||||
waylandyesno|drmyesno)
|
||||
AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -1495,17 +1553,11 @@ AC_ARG_ENABLE([gallium-llvm],
|
||||
[enable_gallium_llvm="$enableval"],
|
||||
[enable_gallium_llvm=auto])
|
||||
|
||||
AC_ARG_WITH([llvm-shared-libs],
|
||||
[AS_HELP_STRING([--with-llvm-shared-libs],
|
||||
[link with LLVM shared libraries @<:@default=disabled@:>@])],
|
||||
AC_ARG_ENABLE([llvm-shared-libs],
|
||||
[AS_HELP_STRING([--enable-llvm-shared-libs],
|
||||
[link with LLVM shared libraries @<:@default=enabled@:>@])],
|
||||
[],
|
||||
[with_llvm_shared_libs=no])
|
||||
AS_IF([test x$enable_opencl = xyes],
|
||||
[
|
||||
if test "x$with_llvm_shared_libs" != xyes; then
|
||||
AC_MSG_ERROR([OpenCL requires LLVM shared libraries])
|
||||
fi
|
||||
])
|
||||
[with_llvm_shared_libs=yes])
|
||||
|
||||
AC_ARG_WITH([llvm-prefix],
|
||||
[AS_HELP_STRING([--with-llvm-prefix],
|
||||
@@ -1525,6 +1577,7 @@ strip_unwanted_llvm_flags() {
|
||||
-e 's/-O.\>//g' \
|
||||
-e 's/-g\>//g' \
|
||||
-e 's/-Wall\>//g' \
|
||||
-e 's/-fcolor-diagnostics\>//g' \
|
||||
-e 's/-fomit-frame-pointer\>//g'
|
||||
}
|
||||
|
||||
@@ -1539,9 +1592,9 @@ if test "x$enable_gallium_llvm" = xauto; then
|
||||
fi
|
||||
if test "x$enable_gallium_llvm" = xyes; then
|
||||
if test "x$llvm_prefix" != x; then
|
||||
AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
|
||||
AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
|
||||
else
|
||||
AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
|
||||
AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
|
||||
fi
|
||||
|
||||
if test "x$LLVM_CONFIG" != xno; then
|
||||
@@ -1559,6 +1612,12 @@ if test "x$enable_gallium_llvm" = xyes; then
|
||||
AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
|
||||
[#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
|
||||
|
||||
dnl In LLVM 3.4.1 patch level was defined in config.h and not
|
||||
dnl llvm-config.h
|
||||
AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH],
|
||||
[#include "${LLVM_INCLUDEDIR}/llvm/Config/config.h"],
|
||||
LLVM_VERSION_PATCH=0) dnl Default if LLVM_VERSION_PATCH not found
|
||||
|
||||
if test "x${LLVM_VERSION_MAJOR}" != x; then
|
||||
LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
|
||||
else
|
||||
@@ -1581,7 +1640,7 @@ if test "x$enable_gallium_llvm" = xyes; then
|
||||
LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
|
||||
fi
|
||||
fi
|
||||
DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
|
||||
DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
|
||||
MESA_LLVM=1
|
||||
|
||||
dnl Check for Clang internal headers
|
||||
@@ -1600,6 +1659,10 @@ if test "x$enable_gallium_llvm" = xyes; then
|
||||
else
|
||||
MESA_LLVM=0
|
||||
LLVM_VERSION_INT=0
|
||||
|
||||
if test "x$enable_opencl" = xyes; then
|
||||
AC_MSG_ERROR([cannot enable OpenCL without LLVM])
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Directory for XVMC libs
|
||||
@@ -1673,8 +1736,9 @@ gallium_require_llvm() {
|
||||
|
||||
gallium_require_drm_loader() {
|
||||
if test "x$enable_gallium_loader" = xyes; then
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
|
||||
AC_MSG_ERROR([Gallium drm loader requires libudev]))
|
||||
if test "x$need_libudev$have_libudev" = xyesno; then
|
||||
AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED])
|
||||
fi
|
||||
if test "x$have_libdrm" != xyes; then
|
||||
AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
|
||||
fi
|
||||
@@ -1907,6 +1971,7 @@ AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
|
||||
AC_SUBST([ELF_LIB])
|
||||
|
||||
AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
|
||||
AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
|
||||
AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
|
||||
AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
|
||||
AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
|
||||
@@ -1922,7 +1987,7 @@ AC_SUBST([XVMC_MAJOR], 1)
|
||||
AC_SUBST([XVMC_MINOR], 0)
|
||||
|
||||
AC_SUBST([XA_MAJOR], 2)
|
||||
AC_SUBST([XA_MINOR], 0)
|
||||
AC_SUBST([XA_MINOR], 1)
|
||||
AC_SUBST([XA_TINY], 0)
|
||||
AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
|
||||
|
||||
@@ -1957,8 +2022,6 @@ AC_CONFIG_FILES([Makefile
|
||||
src/gallium/auxiliary/pipe-loader/Makefile
|
||||
src/gallium/drivers/Makefile
|
||||
src/gallium/drivers/freedreno/Makefile
|
||||
src/gallium/drivers/freedreno/a2xx/Makefile
|
||||
src/gallium/drivers/freedreno/a3xx/Makefile
|
||||
src/gallium/drivers/galahad/Makefile
|
||||
src/gallium/drivers/i915/Makefile
|
||||
src/gallium/drivers/identity/Makefile
|
||||
@@ -2033,6 +2096,7 @@ AC_CONFIG_FILES([Makefile
|
||||
src/glx/Makefile
|
||||
src/glx/tests/Makefile
|
||||
src/gtest/Makefile
|
||||
src/loader/Makefile
|
||||
src/mapi/Makefile
|
||||
src/mapi/es1api/Makefile
|
||||
src/mapi/es1api/glesv1_cm.pc
|
||||
|
258
docs/GL3.txt
258
docs/GL3.txt
@@ -18,164 +18,166 @@ are exposed in the 3.0 context as extensions.
|
||||
Feature Status
|
||||
----------------------------------------------------- ------------------------
|
||||
|
||||
GL 3.0:
|
||||
GL 3.0 --- all DONE: i965, nv50, nvc0, r600, radeonsi
|
||||
|
||||
GLSL 1.30 DONE (i965, r600, radeonsi)
|
||||
glBindFragDataLocation, glGetFragDataLocation DONE
|
||||
Conditional rendering (GL_NV_conditional_render) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Map buffer subranges (GL_ARB_map_buffer_range) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Clamping controls (GL_ARB_color_buffer_float) DONE (i965, r300, r600, radeonsi)
|
||||
Float textures, renderbuffers (GL_ARB_texture_float) DONE (i965, r300, r600, radeonsi)
|
||||
GL_EXT_packed_float DONE (i965, r600, radeonsi)
|
||||
GL_EXT_texture_shared_exponent DONE (i965, r600, radeonsi, swrast)
|
||||
Float depth buffers (GL_ARB_depth_buffer_float) DONE (i965, r600, radeonsi)
|
||||
Framebuffer objects (GL_ARB_framebuffer_object) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Half-float DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Non-normalized Integer texture/framebuffer formats DONE (i965, r600, radeonsi)
|
||||
1D/2D Texture arrays DONE (i965, r600, radeonsi)
|
||||
Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE (i965, r600, radeonsi, swrast)
|
||||
GL_EXT_texture_compression_rgtc DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Red and red/green texture formats DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Transform feedback (GL_EXT_transform_feedback) DONE (i965, r600, radeonsi)
|
||||
Vertex array objects (GL_APPLE_vertex_array_object) DONE (all drivers)
|
||||
sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE (i965, r600, radeonsi)
|
||||
glClearBuffer commands DONE
|
||||
glGetStringi command DONE
|
||||
glTexParameterI, glGetTexParameterI commands DONE
|
||||
glVertexAttribI commands DONE
|
||||
Depth format cube textures DONE (i965, r600, radeonsi)
|
||||
GLX_ARB_create_context (GLX 1.4 is required) DONE
|
||||
GLSL 1.30 DONE ()
|
||||
glBindFragDataLocation, glGetFragDataLocation DONE
|
||||
Conditional rendering (GL_NV_conditional_render) DONE (r300, swrast)
|
||||
Map buffer subranges (GL_ARB_map_buffer_range) DONE (r300, swrast)
|
||||
Clamping controls (GL_ARB_color_buffer_float) DONE (r300)
|
||||
Float textures, renderbuffers (GL_ARB_texture_float) DONE (r300)
|
||||
GL_EXT_packed_float DONE ()
|
||||
GL_EXT_texture_shared_exponent DONE (swrast)
|
||||
Float depth buffers (GL_ARB_depth_buffer_float) DONE ()
|
||||
Framebuffer objects (GL_ARB_framebuffer_object) DONE (r300, swrast)
|
||||
GL_ARB_half_float_pixel DONE (r300, swrast)
|
||||
GL_ARB_half_float_vertex DONE (r300, swrast)
|
||||
GL_EXT_texture_integer DONE ()
|
||||
GL_EXT_texture_array DONE ()
|
||||
Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE (swrast)
|
||||
GL_EXT_texture_compression_rgtc DONE (r300, swrast)
|
||||
GL_ARB_texture_rg DONE (r300, swrast)
|
||||
Transform feedback (GL_EXT_transform_feedback) DONE ()
|
||||
Vertex array objects (GL_ARB_vertex_array_object) DONE (all drivers)
|
||||
sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE ()
|
||||
glClearBuffer commands DONE
|
||||
glGetStringi command DONE
|
||||
glTexParameterI, glGetTexParameterI commands DONE
|
||||
glVertexAttribI commands DONE
|
||||
Depth format cube textures DONE ()
|
||||
GLX_ARB_create_context (GLX 1.4 is required) DONE
|
||||
Multisample anti-aliasing DONE (r300)
|
||||
|
||||
|
||||
GL 3.1:
|
||||
GL 3.1 --- all DONE: i965, nv50, nvc0, r600, radeonsi
|
||||
|
||||
GLSL 1.40 DONE (i965, r600, radeonsi)
|
||||
Forward compatible context support/deprecations DONE (i965, r600, radeonsi)
|
||||
Instanced drawing (GL_ARB_draw_instanced) DONE (i965, r600, radeonsi, swrast)
|
||||
Buffer copying (GL_ARB_copy_buffer) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Primitive restart (GL_NV_primitive_restart) DONE (i965, r300, r600, radeonsi)
|
||||
16 vertex texture image units DONE (i965, r600, radeonsi)
|
||||
Texture buffer objs (GL_ARB_texture_buffer_object) DONE for OpenGL 3.1 contexts (i965, r600, radeonsi)
|
||||
Rectangular textures (GL_ARB_texture_rectangle) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Uniform buffer objs (GL_ARB_uniform_buffer_object) DONE (i965, r600, radeonsi, swrast)
|
||||
Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600, radeonsi)
|
||||
GLSL 1.40 DONE ()
|
||||
Forward compatible context support/deprecations DONE ()
|
||||
Instanced drawing (GL_ARB_draw_instanced) DONE (swrast)
|
||||
Buffer copying (GL_ARB_copy_buffer) DONE (r300, swrast)
|
||||
Primitive restart (GL_NV_primitive_restart) DONE (r300)
|
||||
16 vertex texture image units DONE ()
|
||||
Texture buffer objs (GL_ARB_texture_buffer_object) DONE for OpenGL 3.1 contexts ()
|
||||
Rectangular textures (GL_ARB_texture_rectangle) DONE (r300, swrast)
|
||||
Uniform buffer objs (GL_ARB_uniform_buffer_object) DONE (swrast)
|
||||
Signed normalized textures (GL_EXT_texture_snorm) DONE (r300)
|
||||
|
||||
|
||||
GL 3.2:
|
||||
GL 3.2 --- all DONE: i965, nv50, nvc0, radeonsi
|
||||
|
||||
Core/compatibility profiles DONE
|
||||
GLSL 1.50 DONE (i965)
|
||||
Geometry shaders DONE (i965)
|
||||
BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Provoking vertex (GL_ARB_provoking_vertex) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
Seamless cubemaps (GL_ARB_seamless_cube_map) DONE (i965, r600, radeonsi)
|
||||
Multisample textures (GL_ARB_texture_multisample) DONE (i965, r600, radeonsi)
|
||||
Frag depth clamp (GL_ARB_depth_clamp) DONE (i965, r600, swrast, radeonsi)
|
||||
Fence objects (GL_ARB_sync) DONE (i965, r300, r600, radeonsi, swrast)
|
||||
GLX_ARB_create_context_profile DONE
|
||||
Core/compatibility profiles DONE
|
||||
GLSL 1.50 DONE ()
|
||||
Geometry shaders DONE ()
|
||||
BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (r300, r600, swrast)
|
||||
Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (r300, r600, swrast)
|
||||
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (r300, r600, swrast)
|
||||
Provoking vertex (GL_ARB_provoking_vertex) DONE (r300, r600, swrast)
|
||||
Seamless cubemaps (GL_ARB_seamless_cube_map) DONE (r600)
|
||||
Multisample textures (GL_ARB_texture_multisample) DONE (r600)
|
||||
Frag depth clamp (GL_ARB_depth_clamp) DONE (r600, swrast)
|
||||
Fence objects (GL_ARB_sync) DONE (r300, r600, swrast)
|
||||
GLX_ARB_create_context_profile DONE
|
||||
|
||||
|
||||
GL 3.3:
|
||||
GL 3.3 --- all DONE: i965, nv50, nvc0, radeonsi
|
||||
|
||||
GLSL 3.30 DONE (i965)
|
||||
GL_ARB_blend_func_extended DONE (i965, r600, radeonsi, softpipe)
|
||||
GL_ARB_explicit_attrib_location DONE (i915, i965, r300, r600, radeonsi, swrast)
|
||||
GL_ARB_occlusion_query2 DONE (i965, r300, r600, radeonsi, swrast)
|
||||
GL_ARB_sampler_objects DONE (i965, r300, r600, radeonsi)
|
||||
GL_ARB_shader_bit_encoding DONE (i965, r600, radeonsi)
|
||||
GL_ARB_texture_rgb10_a2ui DONE (i965, r600, radeonsi)
|
||||
GL_ARB_texture_swizzle DONE (i965, r300, r600, radeonsi, swrast)
|
||||
GL_ARB_timer_query DONE (i965, r600, radeonsi)
|
||||
GL_ARB_instanced_arrays DONE (i965, r300, r600, radeonsi)
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (i965, r600, radeonsi)
|
||||
GLSL 3.30 DONE ()
|
||||
GL_ARB_blend_func_extended DONE (r600, softpipe)
|
||||
GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_occlusion_query2 DONE (r300, r600, swrast)
|
||||
GL_ARB_sampler_objects DONE (all drivers)
|
||||
GL_ARB_shader_bit_encoding DONE (r600)
|
||||
GL_ARB_texture_rgb10_a2ui DONE (r600)
|
||||
GL_ARB_texture_swizzle DONE (r300, r600, swrast)
|
||||
GL_ARB_timer_query DONE (r600)
|
||||
GL_ARB_instanced_arrays DONE (r300, r600)
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (r600)
|
||||
|
||||
|
||||
GL 4.0:
|
||||
|
||||
GLSL 4.0 not started
|
||||
GL_ARB_texture_query_lod DONE (i965)
|
||||
GL_ARB_draw_buffers_blend DONE (i965, r600, radeonsi, softpipe)
|
||||
GL_ARB_draw_indirect started (Christoph)
|
||||
GL_ARB_gpu_shader5 started
|
||||
GL_ARB_gpu_shader_fp64 not started
|
||||
GL_ARB_sample_shading DONE (i965)
|
||||
GL_ARB_shader_subroutine not started
|
||||
GL_ARB_tessellation_shader not started
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (i965, r600, radeonsi, softpipe)
|
||||
GL_ARB_texture_cube_map_array DONE (i965, r600, softpipe)
|
||||
GL_ARB_texture_gather DONE (i965)
|
||||
GL_ARB_transform_feedback2 DONE (i965, r600, radeonsi)
|
||||
GL_ARB_transform_feedback3 DONE (i965, r600, radeonsi)
|
||||
GLSL 4.0 not started
|
||||
GL_ARB_texture_query_lod DONE (i965)
|
||||
GL_ARB_draw_buffers_blend DONE (i965, nv50, nvc0, r600, radeonsi, softpipe)
|
||||
GL_ARB_draw_indirect DONE (i965)
|
||||
GL_ARB_gpu_shader5 started
|
||||
GL_ARB_gpu_shader_fp64 not started
|
||||
GL_ARB_sample_shading DONE (i965)
|
||||
GL_ARB_shader_subroutine not started
|
||||
GL_ARB_tessellation_shader not started
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (i965, r600, radeonsi, softpipe)
|
||||
GL_ARB_texture_cube_map_array DONE (i965, nvc0, r600, softpipe)
|
||||
GL_ARB_texture_gather DONE (i965)
|
||||
GL_ARB_transform_feedback2 DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_transform_feedback3 DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
|
||||
|
||||
GL 4.1:
|
||||
|
||||
GLSL 4.1 not started
|
||||
GL_ARB_ES2_compatibility DONE (i965, r300, r600, radeonsi)
|
||||
GL_ARB_get_program_binary DONE (0 binary formats)
|
||||
GL_ARB_separate_shader_objects some infrastructure done
|
||||
GL_ARB_shader_precision not started
|
||||
GL_ARB_vertex_attrib_64bit not started
|
||||
GL_ARB_viewport_array not started
|
||||
GLSL 4.1 not started
|
||||
GL_ARB_ES2_compatibility DONE (i965, nv50, nvc0, r300, r600, radeonsi)
|
||||
GL_ARB_get_program_binary DONE (0 binary formats)
|
||||
GL_ARB_separate_shader_objects started (Ian Romanick, Gregory Hainaut)
|
||||
GL_ARB_shader_precision not started
|
||||
GL_ARB_vertex_attrib_64bit not started
|
||||
GL_ARB_viewport_array DONE (i965)
|
||||
|
||||
|
||||
GL 4.2:
|
||||
|
||||
GLSL 4.2 not started
|
||||
GL_ARB_texture_compression_bptc not started
|
||||
GL_ARB_compressed_texture_pixel_storage not started
|
||||
GL_ARB_shader_atomic_counters DONE (i965)
|
||||
GL_ARB_texture_storage DONE (all drivers)
|
||||
GL_ARB_transform_feedback_instanced DONE (i965, r600, radeonsi)
|
||||
GL_ARB_base_instance DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_shader_image_load_store not started
|
||||
GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_internalformat_query DONE (i965, r300, r600, radeonsi)
|
||||
GL_ARB_map_buffer_alignment DONE (r300, r600, radeonsi)
|
||||
GLSL 4.2 not started
|
||||
GL_ARB_texture_compression_bptc not started
|
||||
GL_ARB_compressed_texture_pixel_storage not started
|
||||
GL_ARB_shader_atomic_counters DONE (i965)
|
||||
GL_ARB_texture_storage DONE (all drivers)
|
||||
GL_ARB_transform_feedback_instanced DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_base_instance DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_shader_image_load_store in progress (curro)
|
||||
GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_internalformat_query DONE (i965, nv50, nvc0, r300, r600, radeonsi)
|
||||
GL_ARB_map_buffer_alignment DONE (all drivers)
|
||||
|
||||
|
||||
GL 4.3:
|
||||
|
||||
GLSL 4.3 not started
|
||||
GL_ARB_arrays_of_arrays not started
|
||||
GL_ARB_ES3_compatibility DONE (i965)
|
||||
GL_ARB_clear_buffer_object not started
|
||||
GL_ARB_compute_shader not started
|
||||
GL_ARB_copy_image not started
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_ARB_explicit_uniform_location not started
|
||||
GL_ARB_fragment_layer_viewport not started
|
||||
GL_ARB_framebuffer_no_attachments not started
|
||||
GL_ARB_internalformat_query2 not started
|
||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||
GL_ARB_multi_draw_indirect not started
|
||||
GL_ARB_program_interface_query not started
|
||||
GL_ARB_robust_buffer_access_behavior not started
|
||||
GL_ARB_shader_image_size not started
|
||||
GL_ARB_shader_storage_buffer_object not started
|
||||
GL_ARB_stencil_texturing not started
|
||||
GL_ARB_texture_buffer_range DONE (nv50, nvc0, i965, r600, radeonsi)
|
||||
GL_ARB_texture_query_levels DONE (i965)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_texture_view not started
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
GLSL 4.3 not started
|
||||
GL_ARB_arrays_of_arrays started
|
||||
GL_ARB_ES3_compatibility DONE (i965)
|
||||
GL_ARB_clear_buffer_object DONE (all drivers)
|
||||
GL_ARB_compute_shader started (Paul Berry)
|
||||
GL_ARB_copy_image not started
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_ARB_explicit_uniform_location not started
|
||||
GL_ARB_fragment_layer_viewport not started
|
||||
GL_ARB_framebuffer_no_attachments not started
|
||||
GL_ARB_internalformat_query2 not started
|
||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||
GL_ARB_multi_draw_indirect DONE (i965)
|
||||
GL_ARB_program_interface_query not started
|
||||
GL_ARB_robust_buffer_access_behavior not started
|
||||
GL_ARB_shader_image_size not started
|
||||
GL_ARB_shader_storage_buffer_object not started
|
||||
GL_ARB_stencil_texturing not started
|
||||
GL_ARB_texture_buffer_range DONE (nv50, nvc0, i965, r600, radeonsi)
|
||||
GL_ARB_texture_query_levels DONE (i965)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_texture_view started (Courtney Goeltzenleuchter, Chris Forbes)
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
|
||||
|
||||
GL 4.4:
|
||||
|
||||
GLSL 4.4 not started
|
||||
GL_MAX_VERTEX_ATTRIB_STRIDE not started
|
||||
GL_ARB_buffer_storage not started
|
||||
GL_ARB_clear_texture not started
|
||||
GL_ARB_enhanced_layouts not started
|
||||
GL_ARB_multi_bind not started
|
||||
GL_ARB_query_buffer_object not started
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv30, nv50, nvc0, r300, r600, radeonsi, swrast)
|
||||
GL_ARB_texture_stencil8 not started
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, r600)
|
||||
GLSL 4.4 not started
|
||||
GL_MAX_VERTEX_ATTRIB_STRIDE not started
|
||||
GL_ARB_buffer_storage not started
|
||||
GL_ARB_clear_texture not started
|
||||
GL_ARB_enhanced_layouts not started
|
||||
GL_ARB_multi_bind started (Fredrik Höglund)
|
||||
GL_ARB_query_buffer_object not started
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv30, nv50, nvc0, r300, r600, radeonsi, swrast)
|
||||
GL_ARB_texture_stencil8 not started
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, r600)
|
||||
|
||||
|
||||
More info about these features and the work involved can be found at
|
||||
|
@@ -1,256 +0,0 @@
|
||||
|
||||
Mesa Cygwin/X11 Information
|
||||
|
||||
|
||||
WARNING
|
||||
=======
|
||||
|
||||
If you installed X11 (packages xorg-x11-devel and xorg-x11-bin-dlls ) with the
|
||||
latest setup.exe from Cygwin the GL (Mesa) libraries and include are already
|
||||
installed in /usr/X11R6.
|
||||
|
||||
The following will explain how to "replace" them.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
How to compile Mesa on Cygwin/X11 systems:
|
||||
|
||||
1. Shared libs:
|
||||
type 'make cygwin-sl'.
|
||||
|
||||
When finished, the Mesa DLL will be in the Mesa-x.y/lib/ and
|
||||
Mesa-x.y/bin directories.
|
||||
|
||||
|
||||
2. Static libs:
|
||||
type 'make cygwin-static'.
|
||||
When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
|
||||
|
||||
Header and library files:
|
||||
After you've compiled Mesa and tried the demos I recommend the following
|
||||
procedure for "installing" Mesa.
|
||||
|
||||
Copy the Mesa include/GL directory to /usr/X11R6/include:
|
||||
cp -a include/GL /usr/X11R6/include
|
||||
|
||||
Copy the Mesa library files to /usr/X11R6/lib:
|
||||
cp -a lib/* /usr/X11R6ocal/lib
|
||||
|
||||
Copy the Mesa bin files (used by the DLL stuff) to /usr/X11R6/bin:
|
||||
cp -a lib/cyg* /usr/X11R6/bin
|
||||
|
||||
Xt/Motif widgets:
|
||||
If you want to use Mesa or OpenGL in your Xt/Motif program you can build
|
||||
the widgets found in either the widgets-mesa or widgets-sgi directories.
|
||||
The former were written for Mesa and the later are the original SGI
|
||||
widgets. Look in those directories for more information.
|
||||
For the Motif widgets you must have downloaded the lesstif package.
|
||||
|
||||
|
||||
Using the library
|
||||
=================
|
||||
|
||||
Configuration options:
|
||||
The file src/mesa/main/config.h has many parameters which you can adjust
|
||||
such as maximum number of lights, clipping planes, maximum texture size,
|
||||
etc. In particular, you may want to change DEPTH_BITS from 16 to 32
|
||||
if a 16-bit depth buffer isn't precise enough for your application.
|
||||
|
||||
|
||||
Shared libraries:
|
||||
If you compile shared libraries (Win32 DLLS) you may have to set an
|
||||
environment variable to specify where the Mesa libraries are located.
|
||||
Set the PATH variable to include /your-dir/Mesa-2.6/bin.
|
||||
Otherwise, when you try to run a demo it may fail with a message saying
|
||||
that one or more DLL couldn't be found.
|
||||
|
||||
|
||||
Xt/Motif Widgets:
|
||||
Two versions of the Xt/Motif OpenGL drawing area widgets are included:
|
||||
|
||||
widgets-sgi/ SGI's stock widgets
|
||||
widgets-mesa/ Mesa-tuned widgets
|
||||
|
||||
Look in those directories for details
|
||||
|
||||
|
||||
Togl:
|
||||
Togl is an OpenGL/Mesa widget for Tcl/Tk.
|
||||
See http://togl.sourceforge.net for more information.
|
||||
|
||||
|
||||
|
||||
X Display Modes:
|
||||
Mesa supports RGB(A) rendering into almost any X visual type and depth.
|
||||
|
||||
The glXChooseVisual function tries its best to pick an appropriate visual
|
||||
for the given attribute list. However, if this doesn't suit your needs
|
||||
you can force Mesa to use any X visual you want (any supported by your
|
||||
X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
|
||||
environment variables. When an RGB visual is requested, glXChooseVisual
|
||||
will first look if the MESA_RGB_VISUAL variable is defined. If so, it
|
||||
will try to use the specified visual. Similarly, when a color index
|
||||
visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
|
||||
variable.
|
||||
|
||||
The format of accepted values is: <visual-class> <depth>
|
||||
Here are some examples:
|
||||
|
||||
using the C-shell:
|
||||
% setenv MESA_RGB_VISUAL "TrueColor 8" // 8-bit TrueColor
|
||||
% setenv MESA_CI_VISUAL "PseudoColor 12" // 12-bit PseudoColor
|
||||
% setenv MESA_RGB_VISUAL "PseudoColor 8" // 8-bit PseudoColor
|
||||
|
||||
using the KornShell:
|
||||
$ export MESA_RGB_VISUAL="TrueColor 8"
|
||||
$ export MESA_CI_VISUAL="PseudoColor 12"
|
||||
$ export MESA_RGB_VISUAL="PseudoColor 8"
|
||||
|
||||
|
||||
Double buffering:
|
||||
Mesa can use either an X Pixmap or XImage as the backbuffer when in
|
||||
double buffer mode. Using GLX, the default is to use an XImage. The
|
||||
MESA_BACK_BUFFER environment variable can override this. The valid
|
||||
values for MESA_BACK_BUFFER are: Pixmap and XImage (only the first
|
||||
letter is checked, case doesn't matter).
|
||||
|
||||
A pixmap is faster when drawing simple lines and polygons while an
|
||||
XImage is faster when Mesa has to do pixel-by-pixel rendering. If you
|
||||
need depth buffering the XImage will almost surely be faster. Exper-
|
||||
iment with the MESA_BACK_BUFFER variable to see which is faster for
|
||||
your application.
|
||||
|
||||
|
||||
Colormaps:
|
||||
When using Mesa directly or with GLX, it's up to the application writer
|
||||
to create a window with an appropriate colormap. The aux, tk, and GLUT
|
||||
toolkits try to minimize colormap "flashing" by sharing colormaps when
|
||||
possible. Specifically, if the visual and depth of the window matches
|
||||
that of the root window, the root window's colormap will be shared by
|
||||
the Mesa window. Otherwise, a new, private colormap will be allocated.
|
||||
|
||||
When sharing the root colormap, Mesa may be unable to allocate the colors
|
||||
it needs, resulting in poor color quality. This can happen when a
|
||||
large number of colorcells in the root colormap are already allocated.
|
||||
To prevent colormap sharing in aux, tk and GLUT, define the environment
|
||||
variable MESA_PRIVATE_CMAP. The value isn't significant.
|
||||
|
||||
|
||||
Gamma correction:
|
||||
To compensate for the nonlinear relationship between pixel values
|
||||
and displayed intensities, there is a gamma correction feature in
|
||||
Mesa. Some systems, such as Silicon Graphics, support gamma
|
||||
correction in hardware (man gamma) so you won't need to use Mesa's
|
||||
gamma facility. Other systems, however, may need gamma adjustment
|
||||
to produce images which look correct. If in the past you thought
|
||||
Mesa's images were too dim, read on.
|
||||
|
||||
Gamma correction is controlled with the MESA_GAMMA environment
|
||||
variable. Its value is of the form "Gr Gg Gb" or just "G" where
|
||||
Gr is the red gamma value, Gg is the green gamma value, Gb is the
|
||||
blue gamma value and G is one gamma value to use for all three
|
||||
channels. Each value is a positive real number typically in the
|
||||
range 1.0 to 2.5. The defaults are all 1.0, effectively disabling
|
||||
gamma correction. Examples using csh:
|
||||
|
||||
% setenv MESA_GAMMA "2.3 2.2 2.4" // separate R,G,B values
|
||||
% setenv MESA_GAMMA "2.0" // same gamma for R,G,B
|
||||
|
||||
The demos/gamma.c program may help you to determine reasonable gamma
|
||||
value for your display. With correct gamma values, the color intensities
|
||||
displayed in the top row (drawn by dithering) should nearly match those
|
||||
in the bottom row (drawn as grays).
|
||||
|
||||
Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well
|
||||
on HP displays using the HP-ColorRecovery technology.
|
||||
|
||||
Mesa implements gamma correction with a lookup table which translates
|
||||
a "linear" pixel value to a gamma-corrected pixel value. There is a
|
||||
small performance penalty. Gamma correction only works in RGB mode.
|
||||
Also be aware that pixel values read back from the frame buffer will
|
||||
not be "un-corrected" so glReadPixels may not return the same data
|
||||
drawn with glDrawPixels.
|
||||
|
||||
For more information about gamma correction see:
|
||||
http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
|
||||
|
||||
|
||||
Overlay Planes
|
||||
|
||||
Overlay planes in the frame buffer are supported by Mesa but require
|
||||
hardware and X server support. To determine if your X server has
|
||||
overlay support you can test for the SERVER_OVERLAY_VISUALS property:
|
||||
|
||||
xprop -root | grep SERVER_OVERLAY_VISUALS
|
||||
|
||||
|
||||
HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
|
||||
|
||||
If you set the MESA_HPCR_CLEAR environment variable then dithering
|
||||
will be used when clearing the color buffer. This is only applicable
|
||||
to HP systems with the HPCR (Color Recovery) system.
|
||||
|
||||
|
||||
Extensions
|
||||
==========
|
||||
There are three Mesa-specific GLX extensions at this time.
|
||||
|
||||
GLX_MESA_pixmap_colormap
|
||||
|
||||
This extension adds the GLX function:
|
||||
|
||||
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
||||
Pixmap pixmap, Colormap cmap )
|
||||
|
||||
It is an alternative to the standard glXCreateGLXPixmap() function.
|
||||
Since Mesa supports RGB rendering into any X visual, not just True-
|
||||
Color or DirectColor, Mesa needs colormap information to convert RGB
|
||||
values into pixel values. An X window carries this information but a
|
||||
pixmap does not. This function associates a colormap to a GLX pixmap.
|
||||
See the xdemos/glxpixmap.c file for an example of how to use this
|
||||
extension.
|
||||
|
||||
GLX_MESA_release_buffers
|
||||
|
||||
Mesa associates a set of ancillary (depth, accumulation, stencil and
|
||||
alpha) buffers with each X window it draws into. These ancillary
|
||||
buffers are allocated for each X window the first time the X window
|
||||
is passed to glXMakeCurrent(). Mesa, however, can't detect when an
|
||||
X window has been destroyed in order to free the ancillary buffers.
|
||||
|
||||
The best it can do is to check for recently destroyed windows whenever
|
||||
the client calls the glXCreateContext() or glXDestroyContext()
|
||||
functions. This may not be sufficient in all situations though.
|
||||
|
||||
The GLX_MESA_release_buffers extension allows a client to explicitly
|
||||
deallocate the ancillary buffers by calling glxReleaseBuffersMESA()
|
||||
just before an X window is destroyed. For example:
|
||||
|
||||
#ifdef GLX_MESA_release_buffers
|
||||
glXReleaseBuffersMESA( dpy, window );
|
||||
#endif
|
||||
XDestroyWindow( dpy, window );
|
||||
|
||||
This extension is new in Mesa 2.0.
|
||||
|
||||
GLX_MESA_copy_sub_buffer
|
||||
|
||||
This extension adds the glXCopySubBufferMESA() function. It works
|
||||
like glXSwapBuffers() but only copies a sub-region of the window
|
||||
instead of the whole window.
|
||||
|
||||
This extension is new in Mesa version 2.6
|
||||
|
||||
|
||||
|
||||
Summary of X-related environment variables:
|
||||
MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
|
||||
MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
|
||||
MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
|
||||
MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
|
||||
MESA_GAMMA - gamma correction coefficients (X only)
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
README.CYGWIN - lassauge April 2004 - based on README.X11
|
102
docs/README.MITS
102
docs/README.MITS
@@ -1,102 +0,0 @@
|
||||
|
||||
Mesa 3.0 MITS Information
|
||||
|
||||
|
||||
This software is distributed under the terms of the GNU Library
|
||||
General Public License, see the LICENSE file for details.
|
||||
|
||||
|
||||
This document is a preliminary introduction to help you get
|
||||
started. For more detaile information consult the web page.
|
||||
|
||||
http://10-dencies.zkm.de/~mesa/
|
||||
|
||||
|
||||
|
||||
Version 0.1 (Yes it's very alpha code so be warned!)
|
||||
Contributors:
|
||||
Emil Briggs (briggs@bucky.physics.ncsu.edu)
|
||||
David Bucciarelli (tech.hmw@plus.it)
|
||||
Andreas Schiffler (schiffler@zkm.de)
|
||||
|
||||
|
||||
|
||||
1. Requirements:
|
||||
Mesa 3.0.
|
||||
An SMP capable machine running Linux 2.x
|
||||
libpthread installed on your machine.
|
||||
|
||||
|
||||
2. What does MITS stand for?
|
||||
MITS stands for Mesa Internal Threading System. By adding
|
||||
internal threading to Mesa it should be possible to improve
|
||||
performance of OpenGL applications on SMP machines.
|
||||
|
||||
|
||||
3. Do applications have to be recoded to take advantage of MITS?
|
||||
No. The threading is internal to Mesa and transparent to
|
||||
applications.
|
||||
|
||||
|
||||
4. Will all applications benefit from the current implementation of MITS?
|
||||
No. This implementation splits the processing of the vertex buffer
|
||||
over two threads. There is a certain amount of overhead involved
|
||||
with the thread synchronization and if there is not enough work
|
||||
to be done the extra overhead outweighs any speedup from using
|
||||
dual processors. You will not for example see any speedup when
|
||||
running Quake because it uses GL_POLYGON and there is only one
|
||||
polygon for each vertex buffer processed. Test results on a
|
||||
dual 200 Mhz. Pentium Pro system show that one needs around
|
||||
100-200 vertices in the vertex buffer before any there is any
|
||||
appreciable benefit from the threading.
|
||||
|
||||
|
||||
5. Are there any parameters that I can tune to try to improve performance.
|
||||
Yes. You can try to vary the size of the vertex buffer which is
|
||||
define in VB_MAX located in the file src/vb.h from your top level
|
||||
Mesa distribution. The number needs to be a multiple of 12 and
|
||||
the optimum value will probably depend on the capabilities of
|
||||
your machine and the particular application you are running.
|
||||
|
||||
|
||||
6. Are there any ways I can modify the application to improve its
|
||||
performance with the MITS?
|
||||
Yes. Try to use as many vertices between each Begin/End pair
|
||||
as possbile. This will reduce the thread synchronization
|
||||
overhead.
|
||||
|
||||
|
||||
7. What sort of speedups can I expect?
|
||||
On some benchmarks performance gains of up to 30% have been
|
||||
observerd. Others may see no gain at all and in a few rare
|
||||
cases even some degradation.
|
||||
|
||||
|
||||
8. What still needs to be done?
|
||||
Lots of testing and benchmarking.
|
||||
A portable implementation that works within the Mesa thread API.
|
||||
Threading of additional areas of Mesa to improve performance
|
||||
even more.
|
||||
|
||||
|
||||
|
||||
Installation:
|
||||
|
||||
1. This assumes that you already have a working Mesa 3.0 installation
|
||||
from source.
|
||||
2. Place the tarball MITS.tar.gz in your top level Mesa directory.
|
||||
3. Unzip it and untar it. It will replace the following files in
|
||||
your Mesa source tree so back them up if you want to save them.
|
||||
|
||||
|
||||
README.MITS
|
||||
Make-config
|
||||
Makefile
|
||||
mklib.glide
|
||||
src/vbxform.c
|
||||
src/vb.h
|
||||
|
||||
4. Rebuild Mesa using the command
|
||||
|
||||
make linux-386-glide-mits
|
||||
|
@@ -1,207 +0,0 @@
|
||||
|
||||
Info on using Mesa 3.0 with Linux Quake I and Quake II
|
||||
|
||||
|
||||
|
||||
Disclaimer
|
||||
----------
|
||||
|
||||
I am _not_ a Quake expert by any means. I pretty much only run it to
|
||||
test Mesa. There have been a lot of questions about Linux Quake and
|
||||
Mesa so I'm trying to provide some useful info here. If this file
|
||||
doesn't help you then you should look elsewhere for help. The Mesa
|
||||
mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup
|
||||
might be good.
|
||||
|
||||
Again, all the information I have is in this file. Please don't email
|
||||
me with questions.
|
||||
|
||||
If you have information to contribute to this file please send it to
|
||||
me at brianp@elastic.avid.com
|
||||
|
||||
|
||||
|
||||
Linux Quake
|
||||
-----------
|
||||
|
||||
You can get Linux Quake from http://www.idsoftware.com/
|
||||
|
||||
Quake I and II for Linux were tested with, and include, Mesa 2.6. You
|
||||
shouldn't have too many problems if you simply follow the instructions
|
||||
in the Quake distribution.
|
||||
|
||||
|
||||
|
||||
RedHat 5.0 Linux problems
|
||||
-------------------------
|
||||
|
||||
RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas
|
||||
previous RedHat and other Linux distributions use "libc5" for its
|
||||
runtime C library.
|
||||
|
||||
Linux Quake I and II were compiled for libc5. If you compile Mesa
|
||||
on a RedHat 5.x system the resulting libMesaGL.so file will not work
|
||||
with Linux Quake because of the different C runtime libraries.
|
||||
The symptom of this is a segmentation fault soon after starting Quake.
|
||||
|
||||
If you want to use a newer version of Mesa (like 3.x) with Quake on
|
||||
RedHat 5.x then read on.
|
||||
|
||||
The solution to the C library problem is to force Mesa to use libc5.
|
||||
libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems.
|
||||
|
||||
Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following
|
||||
info:
|
||||
|
||||
> I only know what works on a RedHat 5.0 distribution. RH5 includes
|
||||
> a full set of libraries for both libc5 and glibc. The loader ld.so
|
||||
> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs
|
||||
> linked against libc5 while it uses the glibc libraries in /lib and
|
||||
> /usr/lib for programs linked against glibc.
|
||||
>
|
||||
> Anyway I changed line 41 of mklib.glide to
|
||||
> GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib"
|
||||
>
|
||||
> And I started quake2 up with a script like this
|
||||
> #!/bin/csh
|
||||
> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib
|
||||
> setenv MESA_GLX_FX f
|
||||
> ./quake2 +set vid_ref gl
|
||||
> kbd_mode -a
|
||||
> reset
|
||||
|
||||
|
||||
I've already patched the mklib.glide file. You'll have to start Quake
|
||||
with the script shown above though.
|
||||
|
||||
|
||||
|
||||
**********************
|
||||
|
||||
Daryll Strauss writes:
|
||||
|
||||
Here's my thoughts on the problem. On a RH 5.x system, you can NOT build
|
||||
a libc5 executable or library. Red Hat just doesn't include the right
|
||||
stuff to do it.
|
||||
|
||||
Since Quake is a libc5 based application, you are in trouble. You need
|
||||
libc5 libraries.
|
||||
|
||||
What can you do about it? Well there's a package called gcc5 that does
|
||||
MOST of the right stuff to compile with libc5. (It brings back older
|
||||
header files, makes appropriate symbolic links for libraries, and sets
|
||||
up the compiler to use the correct directories) You can find gcc5 here:
|
||||
ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm
|
||||
|
||||
No, this isn't quite enough. There are still a few tricks to getting
|
||||
Mesa to compile as a libc5 application. First you have to make sure that
|
||||
every compile uses gcc5 instead of gcc. Second, in some cases the link
|
||||
line actually lists -L/usr/lib which breaks gcc5 (because it forces you
|
||||
to use the glibc version of things)
|
||||
|
||||
If you get all the stuff correctly compiled with gcc5 it should work.
|
||||
I've run Mesa 3.0B6 and its demos in a window with my Rush on a Red Hat
|
||||
5.1 system. It is a big hassle, but it can be done. I've only made Quake
|
||||
segfault, but I think that's from my libRush using the wrong libc.
|
||||
|
||||
Yes, mixing libc5 and glibc is a major pain. I've been working to get
|
||||
all my libraries compiling correctly with this setup. Someone should
|
||||
make an RPM out of it and feed changes back to Brian once they get it
|
||||
all working. If no one else has done so by the time I get the rest of my
|
||||
stuff straightened out, I'll try to do it myself.
|
||||
|
||||
- |Daryll
|
||||
|
||||
|
||||
|
||||
*********************
|
||||
|
||||
David Bucciarelli (tech.hmw@plus.it) writes:
|
||||
|
||||
I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is
|
||||
working fine for me. I had only to make a small change to the
|
||||
Mesa-3.0/mklib.glide file, from:
|
||||
|
||||
|
||||
GLIDELIBS="-L/usr/local/glide/lib -lglide2x
|
||||
-L/usr/i486-linux-libc5/lib -lm"
|
||||
|
||||
to:
|
||||
|
||||
GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x"
|
||||
|
||||
and to make two symbolic links:
|
||||
|
||||
[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2
|
||||
[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2
|
||||
|
||||
I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it
|
||||
includes also the Glide for the libc5). I'm not using the /dev/3Dfx and
|
||||
running QuakeII as root with the following env. var:
|
||||
|
||||
export
|
||||
LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib
|
||||
|
||||
I think that all problems are related to the glibc, Quake will never
|
||||
work if you get the following output:
|
||||
|
||||
[david@localhost Mesa]$ ldd lib/libMesaGL.so
|
||||
libglide2x.so => /usr/lib/libglide2x.so (0x400f8000)
|
||||
libm.so.6 => /lib/libm.so.6 (0x40244000)
|
||||
libc.so.6 => /lib/libc.so.6 (0x4025d000)
|
||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
|
||||
|
||||
You must get the following outputs:
|
||||
|
||||
[david@localhost Mesa]# ldd lib/libMesaGL.so
|
||||
libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
|
||||
(0x400f3000)
|
||||
|
||||
[root@localhost quake2]# ldd quake2
|
||||
libdl.so.1 => /lib/libdl.so.1 (0x40005000)
|
||||
libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000)
|
||||
libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000)
|
||||
|
||||
[root@localhost quake2]# ldd ref_gl.so
|
||||
libMesaGL.so.2 =>
|
||||
/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000)
|
||||
libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
|
||||
(0x401d9000)
|
||||
libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6
|
||||
(0x40324000)
|
||||
libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6
|
||||
(0x403b7000)
|
||||
libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1
|
||||
(0x403c1000)
|
||||
libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000)
|
||||
libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000)
|
||||
|
||||
|
||||
***********************
|
||||
|
||||
Steve Davies (steve@one47.demon.co.uk) writes:
|
||||
|
||||
|
||||
Try using:
|
||||
|
||||
export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
|
||||
./quake2 +set vid_ref gl
|
||||
|
||||
to start the game... Works for me, but assumes that you have the
|
||||
compatability libc5 RPMs installed.
|
||||
|
||||
|
||||
***************************
|
||||
|
||||
WWW resources - you may find additional Linux Quake help at these URLs:
|
||||
|
||||
|
||||
http://quake.medina.net/howto
|
||||
|
||||
http://webpages.mr.net/bobz
|
||||
|
||||
http://www.linuxgames.com/quake2/
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
@@ -1,52 +0,0 @@
|
||||
|
||||
|
||||
Mesa Threads README
|
||||
-------------------
|
||||
|
||||
Thread safety was introduced in Mesa 2.6 by John Stone and
|
||||
Christoph Poliwoda.
|
||||
|
||||
It was redesigned in Mesa 3.3 so that thread safety is
|
||||
supported by default (on systems which support threads,
|
||||
that is). There is no measurable penalty on single
|
||||
threaded applications.
|
||||
|
||||
NOTE that the only _driver_ which is thread safe at this time
|
||||
is the OS/Mesa driver!
|
||||
|
||||
|
||||
At present the mthreads code supports three thread APIS:
|
||||
1) POSIX threads (aka pthreads).
|
||||
2) Solaris / Unix International threads.
|
||||
3) Win32 threads (Win 95/NT).
|
||||
|
||||
Support for other thread libraries can be added src/glthread.[ch]
|
||||
|
||||
|
||||
In order to guarantee proper operation, it is
|
||||
necessary for both Mesa and application code to use the same threads API.
|
||||
So, if your application uses Sun's thread API, then you should build Mesa
|
||||
using one of the targets for Sun threads.
|
||||
|
||||
The mtdemos directory contains some example programs which use
|
||||
multiple threads to render to osmesa rendering context(s).
|
||||
|
||||
Linux users should be aware that there exist many different POSIX
|
||||
threads packages. The best solution is the linuxthreads package
|
||||
(http://pauillac.inria.fr/~xleroy/linuxthreads/) as this package is the
|
||||
only one that really supports multiprocessor machines (AFAIK). See
|
||||
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
|
||||
information about the usage of linuxthreads.
|
||||
|
||||
If you are interested in helping with thread safety work in Mesa
|
||||
join the Mesa developers mailing list and post your proposal.
|
||||
|
||||
|
||||
Regards,
|
||||
John Stone -- j.stone@acm.org johns@cs.umr.edu
|
||||
Christoph Poliwoda -- poliwoda@volumegraphics.com
|
||||
|
||||
|
||||
Version info:
|
||||
Mesa 2.6 - initial thread support.
|
||||
Mesa 3.3 - thread support mostly rewritten (Brian Paul)
|
@@ -19,7 +19,7 @@
|
||||
<p>
|
||||
The SGI OpenGL conformance tests verify correct operation of OpenGL
|
||||
implementations. I, Brian Paul, have been given a copy of the tests
|
||||
for testing Mesa. The tests are not publically available.
|
||||
for testing Mesa. The tests are not publicly available.
|
||||
</p>
|
||||
<p>
|
||||
This file has the latest results of testing Mesa with the OpenGL 1.2
|
||||
|
@@ -17,7 +17,7 @@
|
||||
<h1>Development Notes</h1>
|
||||
|
||||
|
||||
<h2>Adding Extentions</h2>
|
||||
<h2>Adding Extensions</h2>
|
||||
|
||||
<p>
|
||||
To add a new GL extension to Mesa you have to do at least the following.
|
||||
@@ -190,11 +190,26 @@ you should add an appropriate note to the commit message.
|
||||
Here are some examples of such a note:
|
||||
</p>
|
||||
<ul>
|
||||
<li>NOTE: This is a candidate for the 9.0 branch.</li>
|
||||
<li>NOTE: This is a candidate for the 8.0 and 9.0 branches.</li>
|
||||
<li>NOTE: This is a candidate for the stable branches.</li>
|
||||
<li>CC: <mesa-stable@lists.freedesktop.org></li>
|
||||
<li>CC: "9.2 10.0" <mesa-stable@lists.freedesktop.org></li>
|
||||
<li>CC: "10.0" <mesa-stable@lists.freedesktop.org></li>
|
||||
</ul>
|
||||
|
||||
Simply adding the CC to the mesa-stable list address is adequate to nominate
|
||||
the commit for the most-recently-created stable branch. It is only necessary
|
||||
to specify a specific branch name, (such as "9.2 10.0" or "10.0" in the
|
||||
examples above), if you want to nominate the commit for an older stable
|
||||
branch. And, as in these examples, you can nominate the commit for the older
|
||||
branch in addition to the more recent branch, or nominate the commit
|
||||
exclusively for the older branch.
|
||||
|
||||
This "CC" syntax for patch nomination will cause patches to automatically be
|
||||
copied to the mesa-stable@ mailing list when you use "git send-email" to send
|
||||
patches to the mesa-dev@ mailing list. Also, if you realize that a commit
|
||||
should be nominated for the stable branch after it has already been committed,
|
||||
you can send a note directly to the mesa-stable@lists.freedesktop.org where
|
||||
the Mesa stable-branch maintainers will receive it. Be sure to mention the
|
||||
commit ID of the commit of interest (as it appears in the mesa master branch).
|
||||
|
||||
<h2>Cherry-picking candidates for a stable branch</h2>
|
||||
|
||||
|
@@ -25,7 +25,7 @@ href="#overview">overview of Mesa's implementation</a>.</p>
|
||||
<h2>1. Complexity of GL Dispatch</h2>
|
||||
|
||||
<p>Every GL application has at least one object called a GL <em>context</em>.
|
||||
This object, which is an implicit parameter to ever GL function, stores all
|
||||
This object, which is an implicit parameter to every GL function, stores all
|
||||
of the GL related state for the application. Every texture, every buffer
|
||||
object, every enable, and much, much more is stored in the context. Since
|
||||
an application can have more than one context, the context to be used is
|
||||
@@ -51,7 +51,7 @@ example, <tt>glFogCoordf</tt> may operate differently depending on whether
|
||||
or not fog is enabled.</p>
|
||||
|
||||
<p>In multi-threaded environments, it is possible for each thread to have a
|
||||
differnt GL context current. This means that poor old <tt>glVertex3fv</tt>
|
||||
different GL context current. This means that poor old <tt>glVertex3fv</tt>
|
||||
has to know which GL context is current in the thread where it is being
|
||||
called.</p>
|
||||
|
||||
@@ -207,13 +207,13 @@ few preprocessor defines.</p>
|
||||
<li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li>
|
||||
<li>If <tt>HAVE_PTHREAD</tt> is defined, method #3 is used.</li>
|
||||
<li>If <tt>WIN32_THREADS</tt> is defined, method #2 is used.</li>
|
||||
<li>If none of the preceeding are defined, method #1 is used.</li>
|
||||
<li>If none of the preceding are defined, method #1 is used.</li>
|
||||
</ul>
|
||||
|
||||
<p>Two different techniques are used to handle the various different cases.
|
||||
On x86 and SPARC, a macro called <tt>GL_STUB</tt> is used. In the preamble
|
||||
of the assembly source file different implementations of the macro are
|
||||
selected based on the defined preprocessor variables. The assmebly code
|
||||
selected based on the defined preprocessor variables. The assembly code
|
||||
then consists of a series of invocations of the macros such as:
|
||||
|
||||
<blockquote>
|
||||
@@ -242,7 +242,7 @@ first technique, is to insert <tt>#ifdef</tt> within the assembly
|
||||
implementation of each function. This makes the assembly file considerably
|
||||
larger (e.g., 29,332 lines for <tt>glapi_x86-64.S</tt> versus 1,155 lines for
|
||||
<tt>glapi_x86.S</tt>) and causes simple changes to the function
|
||||
implementation to generate many lines of diffs. Since the assmebly files
|
||||
implementation to generate many lines of diffs. Since the assembly files
|
||||
are typically generated by scripts (see <a href="#autogen">below</a>), this
|
||||
isn't a significant problem.</p>
|
||||
|
||||
|
@@ -88,7 +88,7 @@ drivers will be installed to <code>${libdir}/egl</code>.</p>
|
||||
<dd>
|
||||
|
||||
<p>List the platforms (window systems) to support. Its argument is a comma
|
||||
seprated string such as <code>--with-egl-platforms=x11,drm</code>. It decides
|
||||
separated string such as <code>--with-egl-platforms=x11,drm</code>. It decides
|
||||
the platforms a driver may support. The first listed platform is also used by
|
||||
the main library to decide the native platform: the platform the EGL native
|
||||
types such as <code>EGLNativeDisplayType</code> or
|
||||
@@ -223,7 +223,7 @@ the X server directly using (XCB-)DRI2 protocol.</p>
|
||||
<dd>
|
||||
|
||||
<p>This driver is based on Gallium3D. It supports all rendering APIs and
|
||||
hardwares supported by Gallium3D. It is the only driver that supports OpenVG.
|
||||
hardware supported by Gallium3D. It is the only driver that supports OpenVG.
|
||||
The supported platforms are X11, DRM, FBDEV, and GDI.</p>
|
||||
|
||||
<p>This driver comes with its own hardware drivers
|
||||
@@ -273,8 +273,8 @@ longer than the display that creates them.</p>
|
||||
|
||||
<p>In EGL, when a display is terminated through <code>eglTerminate</code>, all
|
||||
display resources should be destroyed. Similarly, when a thread is released
|
||||
throught <code>eglReleaseThread</code>, all current display resources should be
|
||||
released. Another way to destory or release resources is through functions
|
||||
through <code>eglReleaseThread</code>, all current display resources should be
|
||||
released. Another way to destroy or release resources is through functions
|
||||
such as <code>eglDestroySurface</code> or <code>eglMakeCurrent</code>.</p>
|
||||
|
||||
<p>When a resource that is current to some thread is destroyed, the resource
|
||||
|
@@ -47,7 +47,7 @@ sometimes be useful for debugging end-user issues.
|
||||
<li>MESA_NO_SSE - if set, disables Intel SSE optimizations
|
||||
<li>MESA_DEBUG - if set, error messages are printed to stderr. For example,
|
||||
if the application generates a GL_INVALID_ENUM error, a corresponding error
|
||||
message indicating where the error occured, and possibly why, will be
|
||||
message indicating where the error occurred, and possibly why, will be
|
||||
printed to stderr.<br>
|
||||
If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will
|
||||
generate exceptions.
|
||||
@@ -121,10 +121,38 @@ See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
|
||||
<h2>i945/i965 driver environment variables (non-Gallium)</h2>
|
||||
|
||||
<ul>
|
||||
<li>INTEL_STRICT_CONFORMANCE - if set to 1, enable sw fallbacks to improve
|
||||
OpenGL conformance. If set to 2, always use software rendering.
|
||||
<li>INTEL_NO_BLIT - if set, disable hardware-accelerated glBitmap,
|
||||
glCopyPixels, glDrawPixels.
|
||||
<li>INTEL_NO_HW - if set to 1, prevents batches from being submitted to the hardware.
|
||||
This is useful for debugging hangs, etc.</li>
|
||||
<li>INTEL_DEBUG - a comma-separated list of named flags, which do various things:
|
||||
<ul>
|
||||
<li>tex - emit messages about textures.</li>
|
||||
<li>state - emit messages about state flag tracking</li>
|
||||
<li>blit - emit messages about blit operations</li>
|
||||
<li>miptree - emit messages about miptrees</li>
|
||||
<li>perf - emit messages about performance issues</li>
|
||||
<li>perfmon - emit messages about AMD_performance_monitor</li>
|
||||
<li>bat - emit batch information</li>
|
||||
<li>pix - emit messages about pixel operations</li>
|
||||
<li>buf - emit messages about buffer objects</li>
|
||||
<li>reg - emit messages about regions</li>
|
||||
<li>fbo - emit messages about framebuffers</li>
|
||||
<li>fs - dump shader assembly for fragment shaders</li>
|
||||
<li>gs - dump shader assembly for geometry shaders</li>
|
||||
<li>sync - emit messages about synchronization</li>
|
||||
<li>prim - emit messages about drawing primitives</li>
|
||||
<li>vert - emit messages about vertex assembly</li>
|
||||
<li>dri - emit messages about the DRI interface</li>
|
||||
<li>sf - emit messages about the strips & fans unit (for old gens, includes the SF program)</li>
|
||||
<li>stats - enable statistics counters. you probably actually want perfmon or intel_gpu_top instead.</li>
|
||||
<li>urb - emit messages about URB setup</li>
|
||||
<li>vs - dump shader assembly for vertex shaders</li>
|
||||
<li>clip - emit messages about the clip unit (for old gens, includes the CLIP program)</li>
|
||||
<li>aub - dump batches into an AUB trace for use with simulation tools</li>
|
||||
<li>shader_time - record how much GPU time is spent in each shader</li>
|
||||
<li>no16 - suppress generation of 16-wide fragment shaders. useful for debugging broken shaders</li>
|
||||
<li>blorp - emit messages about the blorp operations (blits & clears)</li>
|
||||
<li>nodualobj - suppress generation of dual-object geometry shader code</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -173,14 +201,14 @@ See src/mesa/state_tracker/st_debug.c for other options.
|
||||
to stderr
|
||||
<li>SOFTPIPE_NO_RAST - if set, rasterization is no-op'd. For profiling purposes.
|
||||
<li>SOFTPIPE_USE_LLVM - if set, the softpipe driver will try to use LLVM JIT for
|
||||
vertex shading procesing.
|
||||
vertex shading processing.
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>LLVMpipe driver environment variables</h3>
|
||||
<ul>
|
||||
<li>LP_NO_RAST - if set LLVMpipe will no-op rasterization
|
||||
<li>LP_DEBUG - a comma-separated list of debug options is acceptec. See the
|
||||
<li>LP_DEBUG - a comma-separated list of debug options is accepted. See the
|
||||
source code for details.
|
||||
<li>LP_PERF - a comma-separated list of options to selectively no-op various
|
||||
parts of the driver. See the source code for details.
|
||||
|
@@ -137,7 +137,7 @@ Just follow the Mesa <a href="install.html">compilation instructions</a>.
|
||||
<h2>1.6 Are there other open-source implementations of OpenGL?</h2>
|
||||
<p>
|
||||
Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html">
|
||||
OpenGL Sample Implemenation (SI)</a> is available.
|
||||
OpenGL Sample Implementation (SI)</a> is available.
|
||||
The SI was written during the time that OpenGL was originally designed.
|
||||
Unfortunately, development of the SI has stagnated.
|
||||
Mesa is much more up to date with modern features and extensions.
|
||||
@@ -353,7 +353,7 @@ That's where Mesa development is discussed.
|
||||
</p>
|
||||
<p>
|
||||
The <a href="http://www.opengl.org/documentation">
|
||||
OpenGL Specification</a> is the bible for OpenGL implemention work.
|
||||
OpenGL Specification</a> is the bible for OpenGL implementation work.
|
||||
You should read it.
|
||||
</p>
|
||||
<p>Most of the Mesa development work involves implementing new OpenGL
|
||||
@@ -375,7 +375,7 @@ For a Gallium3D hardware driver, the r300g, r600g and the i915g are good example
|
||||
</p>
|
||||
<p>The DRI website has more information about writing hardware drivers.
|
||||
The process isn't well document because the Mesa driver interface changes
|
||||
over time, and we seldome have spare time for writing documentation.
|
||||
over time, and we seldom have spare time for writing documentation.
|
||||
That being said, many people have managed to figure out the process.
|
||||
</p>
|
||||
<p>
|
||||
@@ -390,7 +390,7 @@ The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compres
|
||||
indicates that there are intellectual property (IP) and/or patent issues
|
||||
to be dealt with.
|
||||
</p>
|
||||
<p>We've been unsucessful in getting a response from S3 (or whoever owns
|
||||
<p>We've been unsuccessful in getting a response from S3 (or whoever owns
|
||||
the IP nowadays) to indicate whether or not an open source project can
|
||||
implement the extension (specifically the compression/decompression
|
||||
algorithms).
|
||||
|
@@ -16,6 +16,38 @@
|
||||
|
||||
<h1>News</h1>
|
||||
|
||||
<h2>January 9, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.2.html">Mesa 10.0.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>December 12, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.1.html">Mesa 10.0.1</a>
|
||||
and <a href="relnotes/9.2.5.html">Mesa 9.2.5</a> are released.
|
||||
These are both bug-fix releases.
|
||||
</p>
|
||||
|
||||
<h2>November 30, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.html">Mesa 10.0</a> is released.
|
||||
This is a new development release.
|
||||
See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
<h2>November 27, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.4.html">Mesa 9.2.4</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>November 13, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.3.html">Mesa 9.2.3</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>October 18, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.2.html">Mesa 9.2.2</a> is released.
|
||||
|
@@ -103,6 +103,9 @@ Device drivers src/mesa/drivers/* MIT, generally
|
||||
|
||||
Ext headers include/GL/glext.h Khronos
|
||||
include/GL/glxext.h
|
||||
|
||||
C11 thread include/c11/threads*.h Boost (permissive)
|
||||
emulation
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
|
@@ -203,11 +203,66 @@ for posterior analysis, e.g.:
|
||||
We use LLVM-C bindings for now. They are not documented, but follow the C++
|
||||
interfaces very closely, and appear to be complete enough for code
|
||||
generation. See
|
||||
http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
|
||||
for a stand-alone example. See the llvm-c/Core.h file for reference.
|
||||
<a href="http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html">
|
||||
this stand-alone example</a>. See the llvm-c/Core.h file for reference.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1 id="recommended_reading">Recommended Reading</h1>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>Rasterization</p>
|
||||
<ul>
|
||||
<li><a href="http://www.cs.unc.edu/~olano/papers/2dh-tri/">Triangle Scan Conversion using 2D Homogeneous Coordinates</a></li>
|
||||
<li><a href="http://www.drdobbs.com/parallel/rasterization-on-larrabee/217200602">Rasterization on Larrabee</a> (<a href="http://devmaster.net/posts/2887/rasterization-on-larrabee">DevMaster copy</a>)</li>
|
||||
<li><a href="http://devmaster.net/posts/6133/rasterization-using-half-space-functions">Rasterization using half-space functions</a></li>
|
||||
<li><a href="http://devmaster.net/posts/6145/advanced-rasterization">Advanced Rasterization</a></li>
|
||||
<li><a href="http://fgiesen.wordpress.com/2013/02/17/optimizing-sw-occlusion-culling-index/">Optimizing Software Occlusion Culling</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Texture sampling</p>
|
||||
<ul>
|
||||
<li><a href="http://chrishecker.com/Miscellaneous_Technical_Articles#Perspective_Texture_Mapping">Perspective Texture Mapping</a></li>
|
||||
<li><a href="http://www.flipcode.com/archives/Texturing_As_In_Unreal.shtml">Texturing As In Unreal</a></li>
|
||||
<li><a href="http://www.gamasutra.com/view/feature/3301/runtime_mipmap_filtering.php">Run-Time MIP-Map Filtering</a></li>
|
||||
<li><a href="http://alt.3dcenter.org/artikel/2003/10-26_a_english.php">Will "brilinear" filtering persist?</a></li>
|
||||
<li><a href="http://ixbtlabs.com/articles2/gffx/nv40-rx800-3.html">Trilinear filtering</a></li>
|
||||
<li><a href="http://devmaster.net/posts/12785/texture-swizzling">Texture Swizzling</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>SIMD</p>
|
||||
<ul>
|
||||
<li><a href="http://www.cdl.uni-saarland.de/projects/wfv/#header4">Whole-Function Vectorization</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Optimization</p>
|
||||
<ul>
|
||||
<li><a href="http://www.drdobbs.com/optimizing-pixomatic-for-modern-x86-proc/184405807">Optimizing Pixomatic For Modern x86 Processors</a></li>
|
||||
<li><a href="http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html">Intel 64 and IA-32 Architectures Optimization Reference Manual</a></li>
|
||||
<li><a href="http://www.agner.org/optimize/">Software optimization resources</a></li>
|
||||
<li><a href="http://software.intel.com/en-us/articles/intel-intrinsics-guide">Intel Intrinsics Guide</a><li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>LLVM</p>
|
||||
<ul>
|
||||
<li><a href="http://llvm.org/docs/LangRef.html">LLVM Language Reference Manual</a></li>
|
||||
<li><a href="http://npcontemplation.blogspot.co.uk/2008/06/secret-of-llvm-c-bindings.html">The secret of LLVM C bindings</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>General</p>
|
||||
<ul>
|
||||
<li><a href="http://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/">A trip through the Graphics Pipeline</a></li>
|
||||
<li><a href="http://msdn.microsoft.com/en-us/library/gg615082.aspx#architecture">WARP Architecture and Performance</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
<h1>OpenGL ES</h1>
|
||||
|
||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0. More informations about
|
||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0. More information about
|
||||
OpenGL ES can be found at <a href="http://www.khronos.org/opengles/">
|
||||
http://www.khronos.org/opengles/</a>.</p>
|
||||
|
||||
@@ -48,7 +48,7 @@ EGL drivers for your hardware.</p>
|
||||
|
||||
<h3>Dispatch Table</h3>
|
||||
|
||||
<p>OpenGL ES has an additional indirection when dispatching fucntions</p>
|
||||
<p>OpenGL ES has an additional indirection when dispatching functions</p>
|
||||
|
||||
<pre>
|
||||
Mesa: glFoo() --> _mesa_Foo()
|
||||
|
@@ -20,7 +20,7 @@
|
||||
The current version of the OpenVG state tracker implements OpenVG 1.1.
|
||||
</p>
|
||||
<p>
|
||||
More informations about OpenVG can be found at
|
||||
More information about OpenVG can be found at
|
||||
<a href="http://www.khronos.org/openvg/">
|
||||
http://www.khronos.org/openvg/</a> .
|
||||
</p>
|
||||
|
@@ -21,7 +21,13 @@ The release notes summarize what's new or changed in each Mesa release.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="relnotes/10.1.html">10.1 release notes</a>
|
||||
<li><a href="relnotes/10.0.2.html">10.0.2 release notes</a>
|
||||
<li><a href="relnotes/10.0.1.html">10.0.1 release notes</a>
|
||||
<li><a href="relnotes/10.0.html">10.0 release notes</a>
|
||||
<li><a href="relnotes/9.2.5.html">9.2.5 release notes</a>
|
||||
<li><a href="relnotes/9.2.4.html">9.2.4 release notes</a>
|
||||
<li><a href="relnotes/9.2.3.html">9.2.3 release notes</a>
|
||||
<li><a href="relnotes/9.2.2.html">9.2.2 release notes</a>
|
||||
<li><a href="relnotes/9.2.1.html">9.2.1 release notes</a>
|
||||
<li><a href="relnotes/9.2.html">9.2 release notes</a>
|
||||
|
150
docs/relnotes/10.0.1.html
Normal file
150
docs/relnotes/10.0.1.html
Normal file
@@ -0,0 +1,150 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.0.1 Release Notes / (December 12, 2013)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.0.1 is a bug fix release which fixes bugs found since the 10.0 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.0.1 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
0a72ca5b36046a658bf6038326ff32ed MesaLib-10.0.1.tar.bz2
|
||||
01bde35c912e504ba62caf1ef9f7022c MesaLib-10.0.1.tar.gz
|
||||
59a174a11a89e6b1b8ee9c3f7e3c388c MesaLib-10.0.1.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64323">Bug 64323</a> - Severe misrendering in Left 4 Dead 2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68838">Bug 68838</a> - GLSL: struct declarations produce a "empty declaration warning" in 9.2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69155">Bug 69155</a> - [NV50 gallium] [piglit] bin/varying-packing-simple triggers memory corruption/failures</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70250">Bug 70250</a> - weston-terminal rendering corrupted with output transform 90 and 270</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70601">Bug 70601</a> - [SNB Bisected]Piglit spec/ARB_texture_float/multisample-formats 2 GL_ARB_texture_float fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72230">Bug 72230</a> - Unable to extract MesaLib-10.0.0.tar.{gz,bz2} with bsdtar</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72325">Bug 72325</a> - [swrast] piglit glean fbo regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72327">Bug 72327</a> - [swrast] piglit glean pointSprite regression</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>The full set of changes can be viewed by using the following git command:</p>
|
||||
|
||||
<pre>
|
||||
git log mesa-10.0..mesa-10.0.1
|
||||
</pre>
|
||||
|
||||
<p>Axel Davy (2):</p>
|
||||
<ul>
|
||||
<li>egl/wayland: Flush the wl_display at the end of SwapBuffers</li>
|
||||
<li>Enable throttling in SwapBuffers</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (2):</p>
|
||||
<ul>
|
||||
<li>i965/hsw: Apply non-msrt fast color clear w/a to all HSW GTs</li>
|
||||
<li>i965: Add extra-alignment for non-msrt fast color clear for all hw (v2)</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (1):</p>
|
||||
<ul>
|
||||
<li>swrast: fix readback regression since inversion fix</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (1):</p>
|
||||
<ul>
|
||||
<li>automake: include only one copy VERSION in tarball</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (3):</p>
|
||||
<ul>
|
||||
<li>docs: Add 10.0 release md5sums</li>
|
||||
<li>Remove a057b83 from the pick list</li>
|
||||
<li>glsl: Don't emit empty declaration warning for a struct specifier</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (8):</p>
|
||||
<ul>
|
||||
<li>mesa: don't leak performance monitors on context destroy</li>
|
||||
<li>nv50: Fix GPU_READING/WRITING bit removal</li>
|
||||
<li>nouveau: avoid leaking fences while waiting</li>
|
||||
<li>nv50: wait on the buf's fence before sticking it into pushbuf</li>
|
||||
<li>nv50: enable h264 and mpeg4 for nv98+ (vp3, vp4.0)</li>
|
||||
<li>nouveau/video: update h264 picparm field names based on usage</li>
|
||||
<li>nouveau/video: update a few more h264 picparm field names</li>
|
||||
<li>nv50: report 15 max inputs for fragment programs</li>
|
||||
</ul>
|
||||
|
||||
<p>Jordan Justen (1):</p>
|
||||
<ul>
|
||||
<li>dri megadriver_stub: add compatibility for older DRI loaders</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (2):</p>
|
||||
<ul>
|
||||
<li>egl/wayland: Damage INT32_MAX x INT32_MAX region for eglSwapBuffers</li>
|
||||
<li>egl/wayland: Send commit after flushing the driver context</li>
|
||||
</ul>
|
||||
|
||||
<p>Maarten Lankhorst (1):</p>
|
||||
<ul>
|
||||
<li>nouveau: Fix compiler warning regression</li>
|
||||
</ul>
|
||||
|
||||
<p>Paul Berry (1):</p>
|
||||
<ul>
|
||||
<li>i965/gen6: Fix multisample resolve blits for luminance/intensity 32F formats.</li>
|
||||
</ul>
|
||||
|
||||
<p>Thomas Hellstrom (1):</p>
|
||||
<ul>
|
||||
<li>st/xa: Bump major version number to 2</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (2):</p>
|
||||
<ul>
|
||||
<li>r300/compiler/tests: Fix segfault</li>
|
||||
<li>r300/compiler/tests: Fix line length check in test parser</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
161
docs/relnotes/10.0.2.html
Normal file
161
docs/relnotes/10.0.2.html
Normal file
@@ -0,0 +1,161 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.0.2 Release Notes / (January 9, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.0.2 is a bug fix release which fixes bugs found since the 10.0.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.0.2 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
de7d14baf0101b697c140d2f47ef27e9 MesaLib-10.0.2.tar.gz
|
||||
8544c0ab3e438a08b5103421ea15b6d2 MesaLib-10.0.2.tar.bz2
|
||||
181b0d6c1afca38e98a930d0e564ed90 MesaLib-10.0.2.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70740">Bug 70740</a> - HiZ on SNB causes GPU hang with WebGL web app</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72026">Bug 72026</a> - SIGSEGV in fs_visitor::visit(ir_dereference_variable*)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72264">Bug 72264</a> - GLSL error reporting</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72369">Bug 72369</a> - glitches in serious sam 3 with the sb shader backend</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>The full set of changes can be viewed by using the following git command:</p>
|
||||
|
||||
<pre>
|
||||
git log mesa-10.0.1..mesa-10.0.2
|
||||
</pre>
|
||||
|
||||
<p>Aaron Watry (8):</p>
|
||||
<ul>
|
||||
<li>clover: Remove unused variable</li>
|
||||
<li>pipe_loader/sw: close dev->lib when initialization fails</li>
|
||||
<li>radeon/compute: Stop leaking LLVMContexts in radeon_llvm_parse_bitcode</li>
|
||||
<li>r600/compute: Free compiled kernels when deleting compute state</li>
|
||||
<li>r600/compute: Use the correct FREE macro when deleting compute state</li>
|
||||
<li>radeon/llvm: Free target data at end of optimization</li>
|
||||
<li>st/vdpau: Destroy context when initialization fails</li>
|
||||
<li>r600/pipe: Stop leaking context->start_compute_cs_cmd.buf on EG/CM</li>
|
||||
</ul>
|
||||
|
||||
<p>Alex Deucher (1):</p>
|
||||
<ul>
|
||||
<li>r600g: fix SUMO2 pci id</li>
|
||||
</ul>
|
||||
|
||||
<p>Alexander von Gluck IV (1):</p>
|
||||
<ul>
|
||||
<li>Haiku: Add in public GL kit headers</li>
|
||||
</ul>
|
||||
|
||||
<p>Anuj Phogat (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix error code generation in glBeginConditionalRender()</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (2):</p>
|
||||
<ul>
|
||||
<li>docs: Add md5sums for the 10.0.1 release.</li>
|
||||
<li>Update version to 10.0.2</li>
|
||||
</ul>
|
||||
|
||||
<p>Chad Versace (1):</p>
|
||||
<ul>
|
||||
<li>i965/gen6: Fix HiZ hang in WebGL Google Maps</li>
|
||||
</ul>
|
||||
|
||||
<p>Erik Faye-Lund (1):</p>
|
||||
<ul>
|
||||
<li>glcpp: error on multiple #else/#elif directives</li>
|
||||
</ul>
|
||||
|
||||
<p>Henri Verbeet (1):</p>
|
||||
<ul>
|
||||
<li>i915: Add support for gl_FragData[0] reads.</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (1):</p>
|
||||
<ul>
|
||||
<li>nv50: fix a small leak on context destroy</li>
|
||||
</ul>
|
||||
|
||||
<p>Jonathan Liu (2):</p>
|
||||
<ul>
|
||||
<li>st/mesa: use pipe_sampler_view_release()</li>
|
||||
<li>llvmpipe: use pipe_sampler_view_release() to avoid segfault</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (2):</p>
|
||||
<ul>
|
||||
<li>i965: Fix 3DSTATE_PUSH_CONSTANT_ALLOC_PS packet creation.</li>
|
||||
<li>Revert "mesa: Remove GLXContextID typedef from glx.h."</li>
|
||||
</ul>
|
||||
|
||||
<p>Kevin Rogovin (1):</p>
|
||||
<ul>
|
||||
<li>Use line number information from entire function expression</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>dri_util: Don't assume __DRIcontext->driverPrivate is a gl_context</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (2):</p>
|
||||
<ul>
|
||||
<li>mesa: fix interpretation of glClearBuffer(drawbuffer)</li>
|
||||
<li>st/mesa: fix glClear with multiple colorbuffers and different formats</li>
|
||||
</ul>
|
||||
|
||||
<p>Paul Berry (2):</p>
|
||||
<ul>
|
||||
<li>glsl: Teach ir_variable_refcount about ir_loop::counter variables.</li>
|
||||
<li>glsl: Fix inconsistent assumptions about ir_loop::counter.</li>
|
||||
</ul>
|
||||
|
||||
<p>Vadim Girlin (1):</p>
|
||||
<ul>
|
||||
<li>r600g/sb: fix stack size computation on evergreen</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -14,7 +14,7 @@
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.0 Release Notes / TBD</h1>
|
||||
<h1>Mesa 10.0 Release Notes / (November 30th, 2013)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.0 is a new development release.
|
||||
@@ -33,7 +33,9 @@ because compatibility contexts are not supported.
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
TBD.
|
||||
b38626b96c664db67a534d7859682436 MesaLib-10.0.0.tar.gz
|
||||
f3fe55d9735bea158bbe97ed9a0da819 MesaLib-10.0.0.tar.bz2
|
||||
c6ee1ce51e3bf35947d2978b872daf51 MesaLib-10.0.0.zip
|
||||
</pre>
|
||||
|
||||
|
||||
@@ -55,16 +57,89 @@ Note: some of the new features are only available with certain drivers.
|
||||
<li>GL_ARB_vertex_attrib_binding</li>
|
||||
<li>GL_ARB_vertex_type_10f_11f_11f_rev on i965 and r600g</li>
|
||||
<li>GL_KHR_debug</li>
|
||||
<li>GLX_MESA_query_renderer</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
TBD.
|
||||
<p>Attempts have been made to <b>not</b> include bugs fixed in previous 9.2
|
||||
releases or bugs that were regressions during 10.0 development. This list is
|
||||
likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=47755">Bug 47755</a> - [glsl-compiler] no error checking when Interpolation qualifier for built-in variable is different in vertex and fragment shader</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=52171">Bug 52171</a> - [gallium/r600/clover] Simple benchmarks failed to run</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=53077">Bug 53077</a> - [IVB] Output error with msaa when both of framebuffer and source color's alpha are not 1</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=54867">Bug 54867</a> - bug in r300 compiler</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=60929">Bug 60929</a> - [r600-llvm] mono games with opengl are blocking on start</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62142">Bug 62142</a> - Mesa/demo mipmap_limits upside down with running by SOFTWARE</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62698">Bug 62698</a> - [bisected] WebGL demo "Consumed": texstate.c:628: update_texture_state: Assertion „__builtin_popcount(enabledTargets) == 1“ failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64225">Bug 64225</a> - bfgminer --scyte generates Segmentation Fault on Northern Island</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64226">Bug 64226</a> - python-opencl package generate segmentation fault at pipe_r600.so</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64261">Bug 64261</a> - [SNB Bisected]Ogles3conform GL3Tests_color_buffer_float_color_buffer_float_clamp_fixed.test fail</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66213">Bug 66213</a> - Certain Mesa Demos Rendering Inverted (vertically)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66806">Bug 66806</a> - [softpipe] glxgears floating point exception</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=67921">Bug 67921</a> - [bisected commit 883987] crosscompiling fails with util/u_cpu_detect.c:247:4: error: 'asm' undeclared (first use in this function)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68162">Bug 68162</a> - [radeonsi] texture rendering is broken in Source-Engine games</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68451">Bug 68451</a> - Texture flicker in native Dota2 in mesa 9.2.0rc1</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68503">Bug 68503</a> - Graphical glitches in Serious Sam 3 when SB is enabled</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68792">Bug 68792</a> - Problems during playback of h264 files using UVD and VLC on AMD E-350 CPU</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68845">Bug 68845</a> - VDPAU/UVD regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69078">Bug 69078</a> - Modern Warfare (1, 2 and 3) broken in Wine on SNB</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69321">Bug 69321</a> - starting openCL crashes/boots system</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70042">Bug 70042</a> - Major texture flickering in Dota 2 (r600g on HD 6950)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70088">Bug 70088</a> - Glamor on r600g crashes Xserver</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70123">Bug 70123</a> - Freeze caused by 'winsys/radeon: remove cs_queue_empty' commit</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70327">Bug 70327</a> - Casting floating point variable to integer not working properly while constant gets converted properly</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70891">Bug 70891</a> - CL_INVALID_BUILD_OPTIONS results in CL_INVALID_DEVICE when asking for build log</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=70913">Bug 70913</a> - [PIGLIT,radeonsi] crash in "spec/EXT_framebuffer_multisample/sample-alpha-to-coverage 4 depth" (buffer overflow)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71022">Bug 71022</a> - configure: error: Expat required for DRI.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71110">Bug 71110</a> - xorg_driver.c:1030:2: error: too many arguments to function ‘DamageUnregister’</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71172">Bug 71172</a> - Segfault when running glxinfo. NV25GL [Quadro4 900 XGL]</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71512">Bug 71512</a> - dlopen.h:54: undefined reference to `dlopen'</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71870">Bug 71870</a> - Metro: Last Light rendering issues</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
TBD.
|
||||
<ul>
|
||||
<li>Removed X.Org state tracker (unmaintained and broken)</li>
|
||||
<li>Removed the video-accel r300 targets</li>
|
||||
<li>Removed the video-accel softpipe targets</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
254
docs/relnotes/10.1.1.html
Normal file
254
docs/relnotes/10.1.1.html
Normal file
@@ -0,0 +1,254 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1.1 Release Notes / (April 18, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.1 is a bug fix release which fixes bugs found since the 10.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.1.1 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
96e63674ccfa98e7ec6eb4fee3f770c3 MesaLib-10.1.1.tar.gz
|
||||
1fde7ed079df7aeb9b6a744ca033de8d MesaLib-10.1.1.tar.bz2
|
||||
e64d0a562638664b13d2edf22321df59 MesaLib-10.1.1.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=71547">Bug 71547</a> - compilation failure :#error "SSE4.1 instruction set not enabled"</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74868">Bug 74868</a> - r600g: Diablo III Crashes After a few minutes</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74988">Bug 74988</a> - Buffer overrun (segfault) decompressing ETC2 texture in GLBenchmark 3.0 Manhattan</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75279">Bug 75279</a> - XCloseDisplay() takes one minute around nouveau_dri.so, freezing Firefox startup</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75543">Bug 75543</a> - OSMesa Gallium OSMesaMakeCurrent</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75660">Bug 75660</a> - u_inlines.h:277:pipe_buffer_map_range: Assertion `length' failed.</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76323">Bug 76323</a> - GLSL compiler ignores layout(binding=N) on uniform blocks</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76377">Bug 76377</a> - DRI3 should only be enabled on Linux due to a udev dependency</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76749">Bug 76749</a> - [HSW] DOTA world lighting has no effect</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77102">Bug 77102</a> - gallium nouveau has no profile in vdpau and libva</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77207">Bug 77207</a> - [ivb/hsw] batch overwritten with garbage</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Aaron Watry (1):</p>
|
||||
<ul>
|
||||
<li>gallium/util: Fix memory leak</li>
|
||||
</ul>
|
||||
|
||||
<p>Alexander von Gluck IV (1):</p>
|
||||
<ul>
|
||||
<li>haiku: Fix build through scons corrections and viewport fixes</li>
|
||||
</ul>
|
||||
|
||||
<p>Anuj Phogat (2):</p>
|
||||
<ul>
|
||||
<li>mesa: Set initial internal format of a texture to GL_RGBA</li>
|
||||
<li>mesa: Allow GL_DEPTH_COMPONENT and GL_DEPTH_STENCIL combinations in glTexImage{123}D()</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (12):</p>
|
||||
<ul>
|
||||
<li>softpipe: use 64-bit arithmetic in softpipe_resource_layout()</li>
|
||||
<li>mesa: don't call ctx->Driver.ClearBufferSubData() if size==0</li>
|
||||
<li>st/osmesa: check buffer size when searching for buffers</li>
|
||||
<li>mesa: fix copy & paste bugs in pack_ubyte_SARGB8()</li>
|
||||
<li>mesa: fix copy & paste bugs in pack_ubyte_SRGB8()</li>
|
||||
<li>c11/threads: don't include assert.h if the assert macro is already defined</li>
|
||||
<li>mesa: fix unpack_Z32_FLOAT_X24S8() / unpack_Z32_FLOAT() mix-up</li>
|
||||
<li>st/mesa: add null pointer checking in query object functions</li>
|
||||
<li>mesa: fix glMultiDrawArrays inside a display list</li>
|
||||
<li>cso: fix sampler view count in cso_set_sampler_views()</li>
|
||||
<li>svga: replace sampler assertion with conditional</li>
|
||||
<li>svga: move LIST_INITHEAD(dirty_buffers) earlier in svga_context_create()</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (3):</p>
|
||||
<ul>
|
||||
<li>cherry-ignore: Ignore a few patches</li>
|
||||
<li>glsl: Allow explicit binding on atomics again</li>
|
||||
<li>Update VERSION to 10.1.1</li>
|
||||
</ul>
|
||||
|
||||
<p>Chia-I Wu (1):</p>
|
||||
<ul>
|
||||
<li>i965/vec4: fix record clearing in copy propagation</li>
|
||||
</ul>
|
||||
|
||||
<p>Christian König (2):</p>
|
||||
<ul>
|
||||
<li>st/mesa: recreate sampler view on context change v3</li>
|
||||
<li>st/mesa: fix sampler view handling with shared textures v4</li>
|
||||
</ul>
|
||||
|
||||
<p>Courtney Goeltzenleuchter (1):</p>
|
||||
<ul>
|
||||
<li>mesa: add bounds checking to eliminate buffer overrun</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (5):</p>
|
||||
<ul>
|
||||
<li>nv50: add missing brackets when handling the samplers array</li>
|
||||
<li>mesa: return v.value_int64 when the requested type is TYPE_INT64</li>
|
||||
<li>configure: enable dri3 only for linux</li>
|
||||
<li>glx: drop obsolete _XUnlock_Mutex in __glXInitialize error path</li>
|
||||
<li>configure: cleanup libudev handling</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>i965: Fix buffer overruns in MSAA MCS buffer clearing.</li>
|
||||
</ul>
|
||||
|
||||
<p>Hans (2):</p>
|
||||
<ul>
|
||||
<li>util: don't define isfinite(), isnan() for MSVC >= 1800</li>
|
||||
<li>mesa: don't define c99 math functions for MSVC >= 1800</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (7):</p>
|
||||
<ul>
|
||||
<li>linker: Split set_uniform_binding into separate functions for blocks and samplers</li>
|
||||
<li>linker: Various trivial clean-ups in set_sampler_binding</li>
|
||||
<li>linker: Fold set_uniform_binding into call site</li>
|
||||
<li>linker: Clean up "unused parameter" warnings</li>
|
||||
<li>linker: Set block bindings based on UniformBlocks rather than UniformStorage</li>
|
||||
<li>linker: Set binding for all elements of UBO array</li>
|
||||
<li>glsl: Propagate explicit binding information from the AST all the way to the linker</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (8):</p>
|
||||
<ul>
|
||||
<li>nouveau: fix fence waiting logic in screen destroy</li>
|
||||
<li>nv50: adjust blit_3d handling of ms output textures</li>
|
||||
<li>loader: add special logic to distinguish nouveau from nouveau_vieux</li>
|
||||
<li>mesa/main: condition GL_DEPTH_STENCIL on ARB_depth_texture</li>
|
||||
<li>nouveau: add forgotten GL_COMPRESSED_INTENSITY to texture format list</li>
|
||||
<li>nouveau: there may not have been a texture if the fbo was incomplete</li>
|
||||
<li>nvc0/ir: move sample id to second source arg to fix sampler2DMS</li>
|
||||
<li>nouveau: fix firmware check on nvd7/nvd9</li>
|
||||
</ul>
|
||||
|
||||
<p>Johannes Nixdorf (1):</p>
|
||||
<ul>
|
||||
<li>configure.ac: fix the detection of expat with pkg-config</li>
|
||||
</ul>
|
||||
|
||||
<p>Jonathan Gray (7):</p>
|
||||
<ul>
|
||||
<li>gallium: add endian detection for OpenBSD</li>
|
||||
<li>loader: use 0 instead of FALSE which isn't defined</li>
|
||||
<li>loader: don't limit the non-udev path to only android</li>
|
||||
<li>megadriver_stub.c: don't use _GNU_SOURCE to gate the compat code</li>
|
||||
<li>egl/dri2: don't require libudev to build drm/wayland platforms</li>
|
||||
<li>egl/dri2: use drm macros to construct device name</li>
|
||||
<li>configure: don't require libudev for gbm or egl drm/wayland</li>
|
||||
</ul>
|
||||
|
||||
<p>José Fonseca (4):</p>
|
||||
<ul>
|
||||
<li>c11/threads: Fix nano to milisecond conversion.</li>
|
||||
<li>mapi/u_thread: Use GetCurrentThreadId</li>
|
||||
<li>c11/threads: Don't implement thrd_current on Windows.</li>
|
||||
<li>draw: Duplicate TGSI tokens in draw_pipe_pstipple module.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (4):</p>
|
||||
<ul>
|
||||
<li>i965/fs: Fix register comparisons in saturate propagation.</li>
|
||||
<li>glsl: Fix lack of i2u in lower_ubo_reference.</li>
|
||||
<li>i965: Stop advertising GL_MESA_ycbcr_texture.</li>
|
||||
<li>glsl: Try vectorizing when seeing a repeated assignment to a channel.</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (13):</p>
|
||||
<ul>
|
||||
<li>r600g: fix texelFetchOffset GLSL functions</li>
|
||||
<li>r600g: fix blitting the last 2 mipmap levels for Evergreen</li>
|
||||
<li>mesa: fix the format of glEdgeFlagPointer</li>
|
||||
<li>r600g,radeonsi: fix MAX_TEXTURE_3D_LEVELS and MAX_TEXTURE_ARRAY_LAYERS limits</li>
|
||||
<li>st/mesa: fix per-vertex edge flags and GLSL support (v2)</li>
|
||||
<li>mesa: mark GL_RGB9_E5 as not color-renderable</li>
|
||||
<li>mesa: fix texture border handling for cube arrays</li>
|
||||
<li>mesa: allow generating mipmaps for cube arrays</li>
|
||||
<li>mesa: fix software fallback for generating mipmaps for cube arrays</li>
|
||||
<li>mesa: fix software fallback for generating mipmaps for 3D textures</li>
|
||||
<li>st/mesa: fix generating mipmaps for cube arrays</li>
|
||||
<li>st/mesa: drop the lowering of quad strips to triangle strips</li>
|
||||
<li>r600g: implement edge flags</li>
|
||||
</ul>
|
||||
|
||||
<p>Matt Turner (4):</p>
|
||||
<ul>
|
||||
<li>mesa: Wrap SSE4.1 code in #ifdef __SSE4_1__.</li>
|
||||
<li>i965/fs: Fix off-by-one in saturate propagation.</li>
|
||||
<li>i965/fs: Don't propagate saturate modifiers into partial writes.</li>
|
||||
<li>i965/fs: Don't propagate saturation modifiers if there are source modifiers.</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>r600g: Don't leak bytecode on shader compile failure</li>
|
||||
</ul>
|
||||
|
||||
<p>Mike Stroyan (1):</p>
|
||||
<ul>
|
||||
<li>i965: Avoid dependency hints on math opcodes</li>
|
||||
</ul>
|
||||
|
||||
<p>Thomas Hellstrom (5):</p>
|
||||
<ul>
|
||||
<li>winsys/svga: Replace the query mm buffer pool with a slab pool v3</li>
|
||||
<li>winsys/svga: Update the vmwgfx_drm.h header to latest version from kernel</li>
|
||||
<li>winsys/svga: Fix prime surface references also for guest-backed surfaces</li>
|
||||
<li>st/xa: Bind destination before setting new state</li>
|
||||
<li>st/xa: Make sure unused samplers are set to NULL</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (1):</p>
|
||||
<ul>
|
||||
<li>configure: Use LLVM shared libraries by default</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
179
docs/relnotes/10.1.2.html
Normal file
179
docs/relnotes/10.1.2.html
Normal file
@@ -0,0 +1,179 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1.2 Release Notes / (May 5, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.2 is a bug fix release which fixes bugs found since the 10.1.1 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.1.2 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
37d79f94b1f41852a89d1fc3900bea76 MesaLib-10.1.2.tar.gz
|
||||
28b60d15ac9f364da1e0155911eaf44e MesaLib-10.1.2.tar.bz2
|
||||
05300039085a65fc53c5472c4bb5747a MesaLib-10.1.2.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27499">Bug 27499</a> - [855GM i915] GL_LINE_STIPPLE displays incorrect colors</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=75723">Bug 75723</a> - (regression since Linux 3.14?) brw_get_graphics_reset_status: Assertion `brw->hw_ctx != ((void *)0)' failed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=76894">Bug 76894</a> - Piglit/spec/EXT_framebuffer_object/fbo-bind-renderbuffer failed</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77702">Bug 77702</a> - [i965 Bisected]Piglit spec/NV_conditional_render_blitframebuffer fails</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Ander Conselvan de Oliveira (2):</p>
|
||||
<ul>
|
||||
<li>gbm/dri: Fix out-of-memory error path in dri_device_create()</li>
|
||||
<li>egl: Protect use of gbm_dri with ifdef HAVE_DRM_PLATFORM</li>
|
||||
</ul>
|
||||
|
||||
<p>Anuj Phogat (27):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix glGetVertexAttribi(GL_VERTEX_ATTRIB_ARRAY_SIZE)</li>
|
||||
<li>swrast: Add glBlitFramebuffer to commands affected by conditional rendering</li>
|
||||
<li>mesa: Fix error condition for multisample proxy texture targets</li>
|
||||
<li>i965: Put an assertion to check valid varying_to_slot[varying]</li>
|
||||
<li>i965: Fix component mask and varying_to_slot mapping for gl_Layer</li>
|
||||
<li>i965: Fix component mask and varying_to_slot mapping for gl_ViewportIndex</li>
|
||||
<li>mesa: Add helper function _mesa_is_format_integer()</li>
|
||||
<li>mesa: Add error condition for integer formats in glGetTexImage()</li>
|
||||
<li>mesa: Add an error condition in glGetFramebufferAttachmentParameteriv()</li>
|
||||
<li>mesa: Fix error code generation in glReadPixels()</li>
|
||||
<li>glsl: Allow overlapping locations for vertex input attributes</li>
|
||||
<li>mesa: Fix querying location of nth element of an array variable</li>
|
||||
<li>mesa: Use location VERT_ATTRIB_GENERIC0 for vertex attribute 0</li>
|
||||
<li>glsl: Compile error if fs defines conflicting qualifiers for gl_FragCoord</li>
|
||||
<li>glsl: Compile error if fs uses gl_FragCoord before first redeclaration</li>
|
||||
<li>mesa: Add entry for extension ARB_texture_stencil8</li>
|
||||
<li>mesa: Add error condition for format=STENCIL_INDEX in glGetTexImage()</li>
|
||||
<li>i965: Fix crash in do_blit_readpixels()</li>
|
||||
<li>mesa: Add missing types in _mesa_texstore_xx_xx() functions</li>
|
||||
<li>mesa: Allow srcFormat=GL_DEPTH_STENCIL in _mesa_texstore_xx_xx() functions</li>
|
||||
<li>mesa: Add new helper function _mesa_unpack_depth_stencil_row()</li>
|
||||
<li>mesa: Add support to unpack depth-stencil texture in to FLOAT_32_UNSIGNED_INT_24_8_REV</li>
|
||||
<li>mesa: Allow FLOAT_32_UNSIGNED_INT_24_8_REV in get_tex_depth_stencil()</li>
|
||||
<li>i965: Add glBlitFramebuffer to commands affected by conditional rendering</li>
|
||||
<li>glsl: Use switch to allow adding more shader types</li>
|
||||
<li>glsl: Link error if fs defines conflicting qualifiers for gl_FragCoord</li>
|
||||
<li>glsl: Apply the link error conditions to GL_ARB_fragment_coord_conventions</li>
|
||||
</ul>
|
||||
|
||||
<p>Benjamin Bellec (1):</p>
|
||||
<ul>
|
||||
<li>mesa: fix GetStringi error message with correct function name</li>
|
||||
</ul>
|
||||
|
||||
<p>Brian Paul (1):</p>
|
||||
<ul>
|
||||
<li>swrast: allocate swrast_texture_image::ImageSlices array if needed</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (4):</p>
|
||||
<ul>
|
||||
<li>docs: Add the MD5 sums for the 10.1.1 release tar files.</li>
|
||||
<li>cherry-ignore: Ignore a patch causing a regression</li>
|
||||
<li>cherry-ignore: Drop an ignored patch now that piglit has been updated.</li>
|
||||
<li>Update VERSION to 10.1.2</li>
|
||||
</ul>
|
||||
|
||||
<p>Chris Forbes (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Only allow `invariant` on shader in/out between stages.</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>i965: Fix render-to-texture in non-FinishRenderTexture cases.</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (1):</p>
|
||||
<ul>
|
||||
<li>dri3: Enable GLX_MESA_query_renderer on DRI3 too</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (2):</p>
|
||||
<ul>
|
||||
<li>i965: Don't enable reset notification support on Gen4-5.</li>
|
||||
<li>i965: Actually emit PIPELINE_SELECT and 3DSTATE_VF_STATISTICS.</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (10):</p>
|
||||
<ul>
|
||||
<li>r300g: don't crash when getting NULL colorbuffers</li>
|
||||
<li>st/mesa: remove trailing NULL colorbuffers</li>
|
||||
<li>r600g: fix edge flags and layered rendering on R600-R700</li>
|
||||
<li>r600g: disable async DMA on R700</li>
|
||||
<li>r600g: fix MSAA resolve on R6xx when the destination is 1D-tiled</li>
|
||||
<li>r600g: fix flushing on RV670, RS780, RS880 again</li>
|
||||
<li>r600g: fix buffer copying on R600-R700</li>
|
||||
<li>r600g: fix for broken CULL_FRONT behavior on R6xx</li>
|
||||
<li>r600g: fix for an MSAA hang on RV770</li>
|
||||
<li>r600g: fix hang on RV740 by using DX_RASTERIZATION_KILL instead of SX_MISC</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (2):</p>
|
||||
<ul>
|
||||
<li>r600g: Disable LLVM by default at runtime for graphics</li>
|
||||
<li>st/mesa: Fix NULL pointer dereference for incomplete framebuffers</li>
|
||||
</ul>
|
||||
|
||||
<p>Neil Roberts (1):</p>
|
||||
<ul>
|
||||
<li>wayland: Fix the logic in disabling the prime capability</li>
|
||||
</ul>
|
||||
|
||||
<p>Samuel Iglesias Gonsalvez (1):</p>
|
||||
<ul>
|
||||
<li>mesa: fix check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()</li>
|
||||
</ul>
|
||||
|
||||
<p>Thomas Hellstrom (1):</p>
|
||||
<ul>
|
||||
<li>st/xa: Cache render target surface</li>
|
||||
</ul>
|
||||
|
||||
<p>nick (1):</p>
|
||||
<ul>
|
||||
<li>swrast: Fix vertex color in _swsetup_Translate()</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
90
docs/relnotes/10.1.3.html
Normal file
90
docs/relnotes/10.1.3.html
Normal file
@@ -0,0 +1,90 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1.3 Release Notes / (May 9, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.3 is a bug fix release which fixes bugs found since the 10.1.2 release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Note: Mesa 10.1.3 is being released sooner than originally scheduled to make
|
||||
available a fix for a performance rgression that was inadvertently introduced
|
||||
to Mesa 10.1.2. The performance regression is reported to make vmware
|
||||
swapbuffers fall back to software.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.3 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
665fe1656aaa2c37b32042068aff92cb MesaLib-10.1.3.tar.gz
|
||||
ba6dbe2b9cab0b4de840c996b9b6a3ad MesaLib-10.1.3.tar.bz2
|
||||
4e6f26330a63d3c47e62ac4bdead39e8 MesaLib-10.1.3.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=77245">Bug 77245</a> - Bogus GL_ARB_explicit_attrib_location layout identifier warnings</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Carl Worth (3):</p>
|
||||
<ul>
|
||||
<li>docs: Add MD5 sums for Mesa 10.1.2</li>
|
||||
<li>get-pick-list.sh: Require explicit "10.1" for nominating stable patches</li>
|
||||
<li>VERSION: Update to 10.1.3</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (2):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix MaxNumLayers for 1D array textures.</li>
|
||||
<li>i965: Fix depth (array slices) computation for 1D_ARRAY render targets.</li>
|
||||
</ul>
|
||||
|
||||
<p>Tapani Pälli (1):</p>
|
||||
<ul>
|
||||
<li>glsl: fix bogus layout qualifier warnings</li>
|
||||
</ul>
|
||||
|
||||
<p>Thomas Hellstrom (1):</p>
|
||||
<ul>
|
||||
<li>st/xa: Fix performance regression introduced by commit "Cache render target surface"</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
100
docs/relnotes/10.1.4.html
Normal file
100
docs/relnotes/10.1.4.html
Normal file
@@ -0,0 +1,100 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1.4 Release Notes / (May 20, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.4 is a bug fix release which fixes bugs found since the 10.1.3 release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.4 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
e934365d77f384bfaec844999440bef8 MesaLib-10.1.4.tar.gz
|
||||
6fddee101f49b7409cd29994c34ddee7 MesaLib-10.1.4.tar.bz2
|
||||
ba5f48e7d5e373922c804c2651fec6c1 MesaLib-10.1.4.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=78225">Bug 78225</a> - Compile error due to undefined reference to `gbm_dri_backend', fix attached</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=78537">Bug 78537</a> - no anisotropic filtering in a native Half-Life 2</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Brian Paul (1):</p>
|
||||
<ul>
|
||||
<li>mesa: fix double-freeing of dispatch tables inside glBegin/End.</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (3):</p>
|
||||
<ul>
|
||||
<li>docs: Add MD5 sums for 10.1.3</li>
|
||||
<li>cherry-ignore: Roland and Michel agreed to drop these patches.</li>
|
||||
<li>VERSION: Update to 10.1.4</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (1):</p>
|
||||
<ul>
|
||||
<li>configure: error out if building GBM without dri</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>i965/vs: Use samplers for UBOs in the VS like we do for non-UBO pulls.</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (3):</p>
|
||||
<ul>
|
||||
<li>nv50/ir: make sure to reverse cond codes on all the OP_SET variants</li>
|
||||
<li>nv50: fix setting of texture ms info to be per-stage</li>
|
||||
<li>nv50/ir: fix integer mul lowering for u32 x u32 -> high u32</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>radeonsi: Fix anisotropic filtering state setup</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (2):</p>
|
||||
<ul>
|
||||
<li>configure.ac: Add LLVM_VERSION_PATCH to DEFINES</li>
|
||||
<li>radeonsi: Enable geometry shaders with LLVM 3.4.1</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
105
docs/relnotes/10.1.5.html
Normal file
105
docs/relnotes/10.1.5.html
Normal file
@@ -0,0 +1,105 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1.5 Release Notes / (June 6, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.5 is a bug fix release which fixes bugs found since the 10.1.4 release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.5 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
b0aceaa75bc9a9b2d9215a113e2ad488b5cf85c99005a7624f8cf7c37c5d0eaa MesaLib-10.1.5.tar.gz
|
||||
bc6c5ec7836f254a49d055a29d9aa34c97c54c038f47ad3a00fa57a5fef15bbc MesaLib-10.1.5.tar.bz2
|
||||
78b7255cab0af7918945452a84de7989096ebcdd27e99b31c56c0589274cbc77 MesaLib-10.1.5.zip
|
||||
</pre>
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=79115">Bug 79115</a> - </li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=79421">Bug 79421</a> - </li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Brian Paul (1):</p>
|
||||
<ul>
|
||||
<li>glsl: fix use-after free bug/crash in ast_declarator_list::hir()</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (5):</p>
|
||||
<ul>
|
||||
<li>docs: Add md5sums for 10.1.4 release</li>
|
||||
<li>Merge remote-tracking branch 'origin/10.1' into 10.1</li>
|
||||
<li>cherry-ignore: Ignore two commits.</li>
|
||||
<li>Ignore a patch that is not needed for the 10.1 branch.</li>
|
||||
<li>Update version to 10.1.5</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (1):</p>
|
||||
<ul>
|
||||
<li>glx: do not leak dri3Display</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (2):</p>
|
||||
<ul>
|
||||
<li>nv50/ir: fix s32 x s32 -> high s32 multiply logic</li>
|
||||
<li>nv50/ir: fix constant folding for OP_MUL subop HIGH</li>
|
||||
</ul>
|
||||
|
||||
<p>James Legg (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Fix unbinding GL_DEPTH_STENCIL_ATTACHMENT</li>
|
||||
</ul>
|
||||
|
||||
<p>Jeremy Huddleston Sequoia (2):</p>
|
||||
<ul>
|
||||
<li>glapi: Avoid heap corruption in _glapi_table</li>
|
||||
<li>darwin: Fix test for kCGLPFAOpenGLProfile support at runtime</li>
|
||||
</ul>
|
||||
|
||||
<p>Pavel Popov (2):</p>
|
||||
<ul>
|
||||
<li>i965: Properly return *RESET* status in glGetGraphicsResetStatusARB</li>
|
||||
<li>i965: Fix Line Stipple enable bit in 3DSTATE_SF for Haswell.</li>
|
||||
</ul>
|
||||
|
||||
<p>Roland Scheidegger (1):</p>
|
||||
<ul>
|
||||
<li>llvmpipe: fix crash when not all attachments are populated in a fb</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
135
docs/relnotes/10.1.6.html
Normal file
135
docs/relnotes/10.1.6.html
Normal file
@@ -0,0 +1,135 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1.6 Release Notes / (June 24, 2014)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.6 is a bug fix release which fixes bugs found since the 10.1.5 release.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Mesa 10.1.6 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
<h2>SHA256 checksums</h2>
|
||||
<pre>
|
||||
</pre>
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=54372">Bug 54372</a> - GLX_INTEL_swap_event crashes driver when swapping window buffers</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=74005">Bug 74005</a> - [i965 Bisected]Piglit/glx_glx-make-glxdrawable-current fails</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=78581">Bug 78581</a> - </li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=79729">Bug 79729</a> - [i965] glClear on a multisample texture doesn't work</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>Adrian Negreanu (7):</p>
|
||||
<ul>
|
||||
<li>add megadriver_stub_FILES</li>
|
||||
<li>android: adapt to the megadriver mechanism</li>
|
||||
<li>android: add libloader to libGLES_mesa and libmesa_egl_dri2</li>
|
||||
<li>android: add src/gallium/auxiliary as include path for libmesa_dricore</li>
|
||||
<li>android, egl: add correct drm include for libmesa_egl_dri2</li>
|
||||
<li>android, mesa_gen_matypes: pull in timespec POSIX definition</li>
|
||||
<li>android, dricore: undefined reference to _mesa_streaming_load_memcpy</li>
|
||||
</ul>
|
||||
|
||||
<p>Beren Minor (1):</p>
|
||||
<ul>
|
||||
<li>egl/main: Fix eglMakeCurrent when releasing context from current thread.</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (3):</p>
|
||||
<ul>
|
||||
<li>docs: Add SHA256 checksums for the 10.1.5 release</li>
|
||||
<li>cherry-ignore: Add a patch to ignore</li>
|
||||
<li>Update VERSION to 10.1.6</li>
|
||||
</ul>
|
||||
|
||||
<p>Daniel Manjarres (1):</p>
|
||||
<ul>
|
||||
<li>glx: Don't crash on swap event for a Window (non-GLXWindow)</li>
|
||||
</ul>
|
||||
|
||||
<p>Emil Velikov (1):</p>
|
||||
<ul>
|
||||
<li>configure: error out when building opencl without LLVM</li>
|
||||
</ul>
|
||||
|
||||
<p>Iago Toral Quiroga (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Copy Geom.UsesEndPrimitive when cloning a geometry program.</li>
|
||||
</ul>
|
||||
|
||||
<p>José Fonseca (3):</p>
|
||||
<ul>
|
||||
<li>mesa/main: Make get_hash.c values constant.</li>
|
||||
<li>mesa: Make glGetIntegerv(GL_*_ARRAY_SIZE) return GL_BGRA.</li>
|
||||
<li>mesa/main: Prevent sefgault on glGetIntegerv(GL_ATOMIC_COUNTER_BUFFER_BINDING).</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>mesa: Remove glClear optimization based on drawable size</li>
|
||||
</ul>
|
||||
|
||||
<p>Michel Dänzer (1):</p>
|
||||
<ul>
|
||||
<li>configure: Only check for OpenCL without LLVM when the latter is certain</li>
|
||||
</ul>
|
||||
|
||||
<p>Neil Roberts (1):</p>
|
||||
<ul>
|
||||
<li>i965: Set the fast clear color value for texture surfaces</li>
|
||||
</ul>
|
||||
|
||||
<p>Roland Scheidegger (1):</p>
|
||||
<ul>
|
||||
<li>draw: (trivial) fix clamping of viewport index</li>
|
||||
</ul>
|
||||
|
||||
<p>Tobias Klausmann (1):</p>
|
||||
<ul>
|
||||
<li>nv50/ir: clear subop when folding constant expressions</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (2):</p>
|
||||
<ul>
|
||||
<li>clover: Prevent Clang from printing number of errors and warnings to stderr.</li>
|
||||
<li>clover: Don't use llvm's global context</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
73
docs/relnotes/10.1.html
Normal file
73
docs/relnotes/10.1.html
Normal file
@@ -0,0 +1,73 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 10.1 Release Notes / TBD</h1>
|
||||
|
||||
<p>
|
||||
Mesa 10.1 is a new development release.
|
||||
People who are concerned with stability and reliability should stick
|
||||
with a previous release or wait for Mesa 10.1.1.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 10.1 implements the OpenGL 3.3 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.3. OpenGL
|
||||
3.3 is <strong>only</strong> available if requested at context creation
|
||||
because compatibility contexts are not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
TBD.
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
|
||||
<p>
|
||||
Note: some of the new features are only available with certain drivers.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>GL_ARB_draw_indirect on i965.</li>
|
||||
<li>GL_ARB_clear_buffer_object</li>
|
||||
<li>GL_ARB_viewport_array on i965.</li>
|
||||
<li>GL_ARB_map_buffer_alignment on all drivers that did not previously support
|
||||
it.</li>
|
||||
<li>GL_AMD_shader_trinary_minmax.</li>
|
||||
<li>GL_EXT_framebuffer_blit on r200 and radeon.</li>
|
||||
<li>Reduced memory usage for display lists.</li>
|
||||
<li>OpenGL 3.3 support on nv50, nvc0, r600 and radeonsi</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
TBD.
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<ul>
|
||||
<li>Removed support for the GL_MESA_texture_array extension. This extension
|
||||
enabled the use of texture array with fixed-function and assembly fragment
|
||||
shaders. No applications are known to use this extension.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
115
docs/relnotes/9.2.3.html
Normal file
115
docs/relnotes/9.2.3.html
Normal file
@@ -0,0 +1,115 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 9.2.3 Release Notes / (November 13, 2013)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.2.3 is a bug fix release which fixes bugs found since the 9.2.2 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.2 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
66e9a33a414f801e1c33398bf627d56b MesaLib-9.2.3.tar.gz
|
||||
f56b6beb556e4b9072814419f7c554e3 MesaLib-9.2.3.tar.bz2
|
||||
ed852dab576faac237ac4298bf55d0a1 MesaLib-9.2.3.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69437">Bug 69437</a> - Composite Bypass no longer works</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||
|
||||
<pre>
|
||||
git log mesa-9.2.2..mesa-9.2.3
|
||||
</pre>
|
||||
|
||||
<p>Brian Paul (2):</p>
|
||||
<ul>
|
||||
<li>st/mesa: move out of memory check in st_draw_vbo()</li>
|
||||
<li>osmesa: fix broken triangle/line drawing when using float color buffer</li>
|
||||
</ul>
|
||||
|
||||
<p>Carl Worth (7):</p>
|
||||
<ul>
|
||||
<li>Remove error when calling glGenQueries/glDeleteQueries while a query is active</li>
|
||||
<li>Bump version to 9.2.3</li>
|
||||
</ul>
|
||||
|
||||
<p>Daniel Vetter (1):</p>
|
||||
<ul>
|
||||
<li>i965: CS writes/reads should use I915_GEM_INSTRUCTION</li>
|
||||
</ul>
|
||||
|
||||
<p>Eric Anholt (1):</p>
|
||||
<ul>
|
||||
<li>i965: Fix texture buffer rendering after a whole buffer replacement.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kenneth Graunke (6):</p>
|
||||
<ul>
|
||||
<li>i965: Emit post-sync non-zero flush before 3DSTATE_GS_SVB_INDEX.</li>
|
||||
<li>i965: Emit post-sync non-zero flush before 3DSTATE_DRAWING_RECTANGLE.</li>
|
||||
<li>i965: Also guard 3DSTATE_DRAWING_RECTANGLE with a flush in blorp.</li>
|
||||
<li>i965: Move post-sync non-zero flush for 3DSTATE_MULTISAMPLE.</li>
|
||||
<li>i965: Also emit HIER_DEPTH and STENCIL packets when disabling depth.</li>
|
||||
<li>i965: Also emit HiZ and Stencil packets when disabling depth on Gen6.</li>
|
||||
</ul>
|
||||
|
||||
<p>Kristian Høgsberg (1):</p>
|
||||
<ul>
|
||||
<li>wayland: Don't rely on static variable for identifying wl_drm buffers</li>
|
||||
</ul>
|
||||
|
||||
<p>Marek Olšák (1):</p>
|
||||
<ul>
|
||||
<li>radeonsi: fix blitting the last 2 mipmap levels of compressed textures</li>
|
||||
</ul>
|
||||
|
||||
<p>Petr Sebor (1):</p>
|
||||
<ul>
|
||||
<li>meta: enable vertex attributes in the context of the newly created array object</li>
|
||||
</ul>
|
||||
|
||||
<p>Scott Graham (1):</p>
|
||||
<ul>
|
||||
<li>mesa: fixes for MSVC 2013</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
102
docs/relnotes/9.2.4.html
Normal file
102
docs/relnotes/9.2.4.html
Normal file
@@ -0,0 +1,102 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 9.2.4 Release Notes / (November 27, 2013)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.2.4 is a bug fix release which fixes bugs found since the 9.2.3 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.2 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
28190b831b0271d69dbc44b2686eab1c MesaLib-9.2.4.tar.gz
|
||||
e630c0a307cec4f0f70ddd029d2fe084 MesaLib-9.2.4.tar.bz2
|
||||
8ef5e1e92e1d30fbedec31f716a7619e MesaLib-9.2.4.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=53077">Bug 53077</a> - [IVB] Output error with msaa when both of framebuffer and source color's alpha are not 1</li>
|
||||
|
||||
<li>Fix freedreno to compile with recent libdrm.</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||
|
||||
<pre>
|
||||
git log mesa-9.2.3..mesa-9.2.4
|
||||
</pre>
|
||||
|
||||
<p>Brian Paul (1):</p>
|
||||
<ul>
|
||||
<li>st/mesa: fix GL_FEEDBACK mode inverted Y coordinate bug</li>
|
||||
</ul>
|
||||
|
||||
<p>Paul Berry (2):</p>
|
||||
<ul>
|
||||
<li>i965: Fix vertical alignment for multisampled buffers.</li>
|
||||
<li>glsl: Fix lowering of direct assignment in lower_clip_distance.</li>
|
||||
</ul>
|
||||
|
||||
<p>Rob Clark (17):</p>
|
||||
<ul>
|
||||
<li>freedreno/a3xx: fix color inversion on mem->gmem restore</li>
|
||||
<li>freedreno/a3xx: fix viewport on gmem->mem resolve</li>
|
||||
<li>freedreno: add debug option to disable scissor optimization</li>
|
||||
<li>freedreno: update register headers</li>
|
||||
<li>freedreno/a3xx: some texture fixes</li>
|
||||
<li>freedreno/a3xx/compiler: fix CMP</li>
|
||||
<li>freedreno/a3xx/compiler: handle saturate on dst</li>
|
||||
<li>freedreno/a3xx/compiler: use max_reg rather than file_count</li>
|
||||
<li>freedreno/a3xx/compiler: cat4 cannot use const reg as src</li>
|
||||
<li>freedreno: fix segfault when no color buffer bound</li>
|
||||
<li>freedreno/a3xx/compiler: make compiler errors more useful</li>
|
||||
<li>freedreno/a3xx/compiler: bit of re-arrange/cleanup</li>
|
||||
<li>freedreno/a3xx/compiler: fix SGT/SLT/etc</li>
|
||||
<li>freedreno/a3xx: don't leak so much</li>
|
||||
<li>freedreno/a3xx/compiler: better const handling</li>
|
||||
<li>freedreno/a3xx/compiler: handle sync flags better</li>
|
||||
<li>freedreno: updates for msm drm/kms driver</li>
|
||||
</ul>
|
||||
|
||||
<p>Tapani Pälli (1):</p>
|
||||
<ul>
|
||||
<li>mesa: enable GL_TEXTURE_LOD_BIAS set/get</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
120
docs/relnotes/9.2.5.html
Normal file
120
docs/relnotes/9.2.5.html
Normal file
@@ -0,0 +1,120 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="../contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 9.2.5 Release Notes / (December 12, 2013)</h1>
|
||||
|
||||
<p>
|
||||
Mesa 9.2.5 is a bug fix release which fixes bugs found since the 9.2.4 release.
|
||||
</p>
|
||||
<p>
|
||||
Mesa 9.2 implements the OpenGL 3.1 API, but the version reported by
|
||||
glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) /
|
||||
glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used.
|
||||
Some drivers don't support all the features required in OpenGL 3.1. OpenGL
|
||||
3.1 is <strong>only</strong> available if requested at context creation
|
||||
because GL_ARB_compatibility is not supported.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
9fb4de29ca1d9cfd03cbdefa123ba336 MesaLib-9.2.5.tar.bz2
|
||||
1146c7c332767174f3de782b88d8e8ca MesaLib-9.2.5.tar.gz
|
||||
a9a6c46dac7ea26fd272bf14894d95f3 MesaLib-9.2.5.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<p>None</p>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
|
||||
<p>This list is likely incomplete.</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=62142">Bug 62142</a> - Mesa/demo mipmap_limits upside down with running by SOFTWARE</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=64323">Bug 64323</a> - Severe misrendering in Left 4 Dead 2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=66213">Bug 66213</a> - Certain Mesa Demos Rendering Inverted (vertically)</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=68838">Bug 68838</a> - GLSL: struct declarations produce a "empty declaration warning" in 9.2</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=69155">Bug 69155</a> - [NV50 gallium] [piglit] bin/varying-packing-simple triggers memory corruption/failures</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72325">Bug 72325</a> - [swrast] piglit glean fbo regression</li>
|
||||
|
||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=72327">Bug 72327</a> - [swrast] piglit glean pointSprite regression</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
|
||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
|
||||
|
||||
<pre>
|
||||
git log mesa-9.2.4..mesa-9.2.5
|
||||
</pre>
|
||||
|
||||
<p>Chad Versace (2):</p>
|
||||
<ul>
|
||||
<li>i965/hsw: Apply non-msrt fast color clear w/a to all HSW GTs</li>
|
||||
<li>i965: Add extra-alignment for non-msrt fast color clear for all hw (v2)</li>
|
||||
</ul>
|
||||
|
||||
<p>Chris Forbes (4):</p>
|
||||
<ul>
|
||||
<li>i965: Gen4-5: Don't enable hardware alpha test with MRT</li>
|
||||
<li>i965: Gen4-5: Include alpha func/ref in program key</li>
|
||||
<li>i965/fs: Gen4-5: Setup discard masks for MRT alpha test</li>
|
||||
<li>i965/fs: Gen4-5: Implement alpha test in shader for MRT</li>
|
||||
</ul>
|
||||
|
||||
<p>Chí-Thanh Christopher Nguyễn (1):</p>
|
||||
<ul>
|
||||
<li>st/xorg: Handle new DamageUnregister API which has only one argument</li>
|
||||
</ul>
|
||||
|
||||
<p>Dave Airlie (3):</p>
|
||||
<ul>
|
||||
<li>mesa/swrast: fix inverted front buffer rendering with old-school swrast</li>
|
||||
<li>glx: don't fail out when no configs if we have visuals</li>
|
||||
<li>swrast: fix readback regression since inversion fix</li>
|
||||
</ul>
|
||||
|
||||
<p>Ian Romanick (1):</p>
|
||||
<ul>
|
||||
<li>glsl: Don't emit empty declaration warning for a struct specifier</li>
|
||||
</ul>
|
||||
|
||||
<p>Ilia Mirkin (4):</p>
|
||||
<ul>
|
||||
<li>nv50: Fix GPU_READING/WRITING bit removal</li>
|
||||
<li>nouveau: avoid leaking fences while waiting</li>
|
||||
<li>nv50: wait on the buf's fence before sticking it into pushbuf</li>
|
||||
<li>nv50: report 15 max inputs for fragment programs</li>
|
||||
</ul>
|
||||
|
||||
<p>Tom Stellard (2):</p>
|
||||
<ul>
|
||||
<li>r300/compiler/tests: Fix segfault</li>
|
||||
<li>r300/compiler/tests: Fix line length check in test parser</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -156,7 +156,7 @@ each time you do a pull.
|
||||
</p>
|
||||
<li>Small changes to master
|
||||
<p>
|
||||
If you are an experienced git user working on substancial modifications,
|
||||
If you are an experienced git user working on substantial modifications,
|
||||
you are probably
|
||||
working on a separate branch and would rebase your branch prior to
|
||||
merging with master.
|
||||
|
@@ -67,7 +67,7 @@ Example: export MESA_GLSL=dump,nopt
|
||||
<h2 id="support">GLSL Version</h2>
|
||||
|
||||
<p>
|
||||
The GLSL compiler currently supports version 1.40 of the shading language.
|
||||
The GLSL compiler currently supports version 3.30 of the shading language.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -234,7 +234,7 @@ This option is only relevant if EmitHighLevelInstructions is set.
|
||||
|
||||
<dt>EmitComments</dt>
|
||||
<dd>
|
||||
If set, instructions will be annoted with comments to help with debugging.
|
||||
If set, instructions will be annotated with comments to help with debugging.
|
||||
Extra NOP instructions will also be inserted.
|
||||
</dd>
|
||||
</dl>
|
||||
|
@@ -123,7 +123,7 @@ each directory.
|
||||
Currently there's run-time code generation for x86/SSE, PowerPC
|
||||
and Cell SPU.
|
||||
<li><b>tgsi</b> - TG Shader Infrastructure. Code for encoding,
|
||||
manipulating and interpretting GPU programs.
|
||||
manipulating and interpreting GPU programs.
|
||||
<li><b>translate</b> - module for translating vertex data from one format
|
||||
to another.
|
||||
<li><b>util</b> - assorted utilities for arithmetic, hashing, surface
|
||||
|
@@ -16,7 +16,7 @@ IP Status
|
||||
|
||||
Status
|
||||
|
||||
Shipping in Mesa 7.1
|
||||
DEPRECATED - Support removed in Mesa 10.1.
|
||||
|
||||
Version
|
||||
|
||||
|
101
docs/specs/WL_create_wayland_buffer_from_image.spec
Normal file
101
docs/specs/WL_create_wayland_buffer_from_image.spec
Normal file
@@ -0,0 +1,101 @@
|
||||
Name
|
||||
|
||||
WL_create_wayland_buffer_from_image
|
||||
|
||||
Name Strings
|
||||
|
||||
EGL_WL_create_wayland_buffer_from_image
|
||||
|
||||
Contributors
|
||||
|
||||
Neil Roberts
|
||||
Axel Davy
|
||||
Daniel Stone
|
||||
|
||||
Contact
|
||||
|
||||
Neil Roberts <neil.s.roberts@intel.com>
|
||||
|
||||
Status
|
||||
|
||||
Proposal
|
||||
|
||||
Version
|
||||
|
||||
Version 2, October 25, 2013
|
||||
|
||||
Number
|
||||
|
||||
EGL Extension #not assigned
|
||||
|
||||
Dependencies
|
||||
|
||||
Requires EGL 1.4 or later. This extension is written against the
|
||||
wording of the EGL 1.4 specification.
|
||||
|
||||
EGL_KHR_base_image is required.
|
||||
|
||||
Overview
|
||||
|
||||
This extension provides an entry point to create a wl_buffer which shares
|
||||
its contents with a given EGLImage. The expected use case for this is in a
|
||||
nested Wayland compositor which is using subsurfaces to present buffers
|
||||
from its clients. Using this extension it can attach the client buffers
|
||||
directly to the subsurface without having to blit the contents into an
|
||||
intermediate buffer. The compositing can then be done in the parent
|
||||
compositor.
|
||||
|
||||
The nested compositor can create an EGLImage from a client buffer resource
|
||||
using the existing WL_bind_wayland_display extension. It should also be
|
||||
possible to create buffers using other types of images although there is
|
||||
no expected use case for that.
|
||||
|
||||
IP Status
|
||||
|
||||
Open-source; freely implementable.
|
||||
|
||||
New Procedures and Functions
|
||||
|
||||
struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
|
||||
EGLImageKHR image);
|
||||
|
||||
New Tokens
|
||||
|
||||
None.
|
||||
|
||||
Additions to the EGL 1.4 Specification:
|
||||
|
||||
To create a client-side wl_buffer from an EGLImage call
|
||||
|
||||
struct wl_buffer *eglCreateWaylandBufferFromImageWL(EGLDisplay dpy,
|
||||
EGLImageKHR image);
|
||||
|
||||
The returned buffer will share the contents with the given EGLImage. Any
|
||||
updates to the image will also be updated in the wl_buffer. Typically the
|
||||
EGLImage will be generated in a nested Wayland compositor using a buffer
|
||||
resource from a client via the EGL_WL_bind_wayland_display extension.
|
||||
|
||||
If there was an error then the function will return NULL. In particular it
|
||||
will generate EGL_BAD_MATCH if the implementation is not able to represent
|
||||
the image as a wl_buffer. The possible reasons for this error are
|
||||
implementation-dependant but may include problems such as an unsupported
|
||||
format or tiling mode or that the buffer is in memory that is inaccessible
|
||||
to the GPU that the given EGLDisplay is using.
|
||||
|
||||
Issues
|
||||
|
||||
1) Under what circumstances can the EGL_BAD_MATCH error be generated? Does
|
||||
this include for example unsupported tiling modes?
|
||||
|
||||
RESOLVED: Yes, the EGL_BAD_MATCH error can be generated for any reason
|
||||
which prevents the implementation from representing the image as a
|
||||
wl_buffer. For example, these problems can be but are not limited to
|
||||
unsupported tiling modes, inaccessible memory or an unsupported pixel
|
||||
format.
|
||||
|
||||
Revision History
|
||||
|
||||
Version 1, September 6, 2013
|
||||
Initial draft (Neil Roberts)
|
||||
Version 2, October 25, 2013
|
||||
Added a note about more possible reasons for returning EGL_BAD_FORMAT.
|
@@ -14,7 +14,7 @@
|
||||
<iframe src="contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Acknowledgments</h1>
|
||||
<h1>Acknowledgements</h1>
|
||||
|
||||
|
||||
The following individuals and groups are to be acknowledged for their
|
||||
|
@@ -27,9 +27,10 @@ MacOS are all supported.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
End users shouldn't have to go through all these steps once the driver is
|
||||
included in newer Linux distributions.
|
||||
Fedora 18 and Ubuntu 12.10 include the VMware guest GL driver, for example.
|
||||
Most modern Linux distros include the SVGA3D driver so end users shouldn't
|
||||
be concerned with this information.
|
||||
But if your distro lacks the driver or you want to update to the latest code
|
||||
these instructions explain what to do.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -53,6 +54,13 @@ The components involved in this include:
|
||||
<li>Mesa/gallium OpenGL driver: "svga"
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
All of these components reside in the guest Linux virtual machine.
|
||||
On the host, all you're doing is running VMware
|
||||
<a href="http://www.vmware.com/products/workstation/">Workstation</a> or
|
||||
<a href="http://www.vmware.com/products/fusion/">Fusion</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Prerequisites</h2>
|
||||
|
||||
@@ -134,7 +142,7 @@ As before, if you're on a 32-bit system, you should skip the --libdir
|
||||
configure option.
|
||||
<pre>
|
||||
cd $TOP/mesa
|
||||
./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa
|
||||
./autogen.sh --prefix=/usr --libdir=/usr/lib64 --with-gallium-drivers=svga --with-dri-drivers= --enable-xa --disable-dri3
|
||||
make
|
||||
sudo make install
|
||||
</pre>
|
||||
|
@@ -107,7 +107,7 @@ for your application.
|
||||
<p>
|
||||
When using Mesa directly or with GLX, it's up to the application
|
||||
writer to create a window with an appropriate colormap. The GLUT
|
||||
toolkit tris to minimize colormap <em>flashing</em> by sharing
|
||||
toolkit tries to minimize colormap <em>flashing</em> by sharing
|
||||
colormaps when possible. Specifically, if the visual and depth of the
|
||||
window matches that of the root window, the root window's colormap
|
||||
will be shared by the Mesa window. Otherwise, a new, private colormap
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -134,6 +134,16 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay dpy, st
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef EGL_WL_create_wayland_buffer_from_image
|
||||
#define EGL_WL_create_wayland_buffer_from_image 1
|
||||
|
||||
#ifdef EGL_EGLEXT_PROTOTYPES
|
||||
EGLAPI struct wl_buffer * EGLAPIENTRY eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, EGLImageKHR image);
|
||||
#endif
|
||||
typedef struct wl_buffer * (EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL) (EGLDisplay dpy, EGLImageKHR image);
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef EGL_NOK_swap_region
|
||||
#define EGL_NOK_swap_region 1
|
||||
|
||||
|
@@ -2078,39 +2078,6 @@ typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLsh
|
||||
#endif /* GL_MESA_packed_depth_stencil */
|
||||
|
||||
|
||||
#ifndef GL_MESA_texture_array
|
||||
#define GL_MESA_texture_array 1
|
||||
|
||||
/* GL_MESA_texture_array uses the same enum values as GL_EXT_texture_array.
|
||||
*/
|
||||
#ifndef GL_EXT_texture_array
|
||||
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glFramebufferTextureLayerEXT(GLenum target,
|
||||
GLenum attachment, GLuint texture, GLint level, GLint layer);
|
||||
#endif /* GL_GLEXT_PROTOTYPES */
|
||||
|
||||
#if 0
|
||||
/* (temporarily) disabled because of collision with typedef in glext.h
|
||||
* that happens if apps include both gl.h and glext.h
|
||||
*/
|
||||
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target,
|
||||
GLenum attachment, GLuint texture, GLint level, GLint layer);
|
||||
#endif
|
||||
|
||||
#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18
|
||||
#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
|
||||
#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A
|
||||
#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
|
||||
#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
|
||||
#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
|
||||
#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef GL_ATI_blend_equation_separate
|
||||
#define GL_ATI_blend_equation_separate 1
|
||||
|
||||
|
@@ -33,7 +33,7 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 23422 $ on $Date: 2013-10-08 15:40:45 -0700 (Tue, 08 Oct 2013) $
|
||||
** Khronos $Revision: 24502 $ on $Date: 2013-12-12 13:14:39 -0800 (Thu, 12 Dec 2013) $
|
||||
*/
|
||||
|
||||
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||
@@ -53,7 +53,7 @@ extern "C" {
|
||||
#define GLAPI extern
|
||||
#endif
|
||||
|
||||
#define GL_GLEXT_VERSION 20131008
|
||||
#define GL_GLEXT_VERSION 20131212
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gl
|
||||
@@ -1477,7 +1477,7 @@ typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
|
||||
typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);
|
||||
typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params);
|
||||
typedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);
|
||||
typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
|
||||
typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
|
||||
@@ -1497,7 +1497,7 @@ GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
|
||||
GLAPI void APIENTRY glDeleteSync (GLsync sync);
|
||||
GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
|
||||
GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *params);
|
||||
GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);
|
||||
GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
|
||||
GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
|
||||
GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
|
||||
@@ -2144,6 +2144,10 @@ GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data)
|
||||
#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD
|
||||
#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE
|
||||
#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF
|
||||
#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C
|
||||
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D
|
||||
#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
|
||||
#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
|
||||
#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
|
||||
typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
|
||||
typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
|
||||
@@ -4836,6 +4840,20 @@ GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);
|
||||
#endif
|
||||
#endif /* GL_AMD_name_gen_delete */
|
||||
|
||||
#ifndef GL_AMD_occlusion_query_event
|
||||
#define GL_AMD_occlusion_query_event 1
|
||||
#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F
|
||||
#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001
|
||||
#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002
|
||||
#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004
|
||||
#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008
|
||||
#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF
|
||||
typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);
|
||||
#endif
|
||||
#endif /* GL_AMD_occlusion_query_event */
|
||||
|
||||
#ifndef GL_AMD_performance_monitor
|
||||
#define GL_AMD_performance_monitor 1
|
||||
#define GL_COUNTER_TYPE_AMD 0x8BC0
|
||||
@@ -5900,6 +5918,34 @@ GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
|
||||
#endif
|
||||
#endif /* GL_EXT_cull_vertex */
|
||||
|
||||
#ifndef GL_EXT_debug_label
|
||||
#define GL_EXT_debug_label 1
|
||||
#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F
|
||||
#define GL_PROGRAM_OBJECT_EXT 0x8B40
|
||||
#define GL_SHADER_OBJECT_EXT 0x8B48
|
||||
#define GL_BUFFER_OBJECT_EXT 0x9151
|
||||
#define GL_QUERY_OBJECT_EXT 0x9153
|
||||
#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154
|
||||
typedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);
|
||||
typedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);
|
||||
GLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);
|
||||
#endif
|
||||
#endif /* GL_EXT_debug_label */
|
||||
|
||||
#ifndef GL_EXT_debug_marker
|
||||
#define GL_EXT_debug_marker 1
|
||||
typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);
|
||||
typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);
|
||||
typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);
|
||||
GLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);
|
||||
GLAPI void APIENTRY glPopGroupMarkerEXT (void);
|
||||
#endif
|
||||
#endif /* GL_EXT_debug_marker */
|
||||
|
||||
#ifndef GL_EXT_depth_bounds_test
|
||||
#define GL_EXT_depth_bounds_test 1
|
||||
#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890
|
||||
@@ -6135,7 +6181,7 @@ typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintp
|
||||
typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
|
||||
typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
|
||||
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
|
||||
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data);
|
||||
typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
|
||||
typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);
|
||||
typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);
|
||||
typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
|
||||
@@ -6391,7 +6437,7 @@ GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, G
|
||||
GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);
|
||||
GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
|
||||
GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
|
||||
GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data);
|
||||
GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
|
||||
GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);
|
||||
GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
|
||||
GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
|
||||
@@ -8041,6 +8087,10 @@ GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRG
|
||||
#define GL_INTERLACE_READ_INGR 0x8568
|
||||
#endif /* GL_INGR_interlace_read */
|
||||
|
||||
#ifndef GL_INTEL_fragment_shader_ordering
|
||||
#define GL_INTEL_fragment_shader_ordering 1
|
||||
#endif /* GL_INTEL_fragment_shader_ordering */
|
||||
|
||||
#ifndef GL_INTEL_map_texture
|
||||
#define GL_INTEL_map_texture 1
|
||||
#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF
|
||||
@@ -8214,9 +8264,9 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
|
||||
|
||||
#ifndef GL_NV_blend_equation_advanced
|
||||
#define GL_NV_blend_equation_advanced 1
|
||||
#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
|
||||
#define GL_BLEND_OVERLAP_NV 0x9281
|
||||
#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280
|
||||
#define GL_BLUE_NV 0x1905
|
||||
#define GL_COLORBURN_NV 0x929A
|
||||
#define GL_COLORDODGE_NV 0x9299
|
||||
#define GL_CONJOINT_NV 0x9284
|
||||
@@ -8230,6 +8280,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
|
||||
#define GL_DST_OUT_NV 0x928D
|
||||
#define GL_DST_OVER_NV 0x9289
|
||||
#define GL_EXCLUSION_NV 0x92A0
|
||||
#define GL_GREEN_NV 0x1904
|
||||
#define GL_HARDLIGHT_NV 0x929B
|
||||
#define GL_HARDMIX_NV 0x92A9
|
||||
#define GL_HSL_COLOR_NV 0x92AF
|
||||
@@ -8251,6 +8302,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
|
||||
#define GL_PLUS_CLAMPED_NV 0x92B1
|
||||
#define GL_PLUS_DARKER_NV 0x9292
|
||||
#define GL_PLUS_NV 0x9291
|
||||
#define GL_RED_NV 0x1903
|
||||
#define GL_SCREEN_NV 0x9295
|
||||
#define GL_SOFTLIGHT_NV 0x929C
|
||||
#define GL_SRC_ATOP_NV 0x928E
|
||||
@@ -8260,6 +8312,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);
|
||||
#define GL_SRC_OVER_NV 0x9288
|
||||
#define GL_UNCORRELATED_NV 0x9282
|
||||
#define GL_VIVIDLIGHT_NV 0x92A6
|
||||
#define GL_XOR_NV 0x1506
|
||||
typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);
|
||||
typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
@@ -8270,6 +8323,7 @@ GLAPI void APIENTRY glBlendBarrierNV (void);
|
||||
|
||||
#ifndef GL_NV_blend_equation_advanced_coherent
|
||||
#define GL_NV_blend_equation_advanced_coherent 1
|
||||
#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285
|
||||
#endif /* GL_NV_blend_equation_advanced_coherent */
|
||||
|
||||
#ifndef GL_NV_blend_square
|
||||
|
@@ -168,6 +168,7 @@ typedef XID GLXDrawable;
|
||||
/* GLX 1.3 and later */
|
||||
typedef struct __GLXFBConfigRec *GLXFBConfig;
|
||||
typedef XID GLXFBConfigID;
|
||||
typedef XID GLXContextID;
|
||||
typedef XID GLXWindow;
|
||||
typedef XID GLXPbuffer;
|
||||
|
||||
|
@@ -33,10 +33,10 @@ extern "C" {
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 23422 $ on $Date: 2013-10-08 15:40:45 -0700 (Tue, 08 Oct 2013) $
|
||||
** Khronos $Revision: 24777 $ on $Date: 2014-01-14 14:02:32 -0800 (Tue, 14 Jan 2014) $
|
||||
*/
|
||||
|
||||
#define GLX_GLXEXT_VERSION 20131008
|
||||
#define GLX_GLXEXT_VERSION 20140114
|
||||
|
||||
/* Generated C header for:
|
||||
* API: glx
|
||||
@@ -49,6 +49,7 @@ extern "C" {
|
||||
|
||||
#ifndef GLX_VERSION_1_3
|
||||
#define GLX_VERSION_1_3 1
|
||||
typedef XID GLXContextID;
|
||||
typedef struct __GLXFBConfigRec *GLXFBConfig;
|
||||
typedef XID GLXWindow;
|
||||
typedef XID GLXPbuffer;
|
||||
@@ -272,7 +273,6 @@ __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName);
|
||||
|
||||
#ifndef GLX_EXT_import_context
|
||||
#define GLX_EXT_import_context 1
|
||||
typedef XID GLXContextID;
|
||||
#define GLX_SHARE_CONTEXT_EXT 0x800A
|
||||
#define GLX_VISUAL_ID_EXT 0x800B
|
||||
#define GLX_SCREEN_EXT 0x800C
|
||||
@@ -433,6 +433,14 @@ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLe
|
||||
#endif
|
||||
#endif /* GLX_NV_copy_image */
|
||||
|
||||
#ifndef GLX_NV_delay_before_swap
|
||||
#define GLX_NV_delay_before_swap 1
|
||||
typedef Bool ( *PFNGLXDELAYBEFORESWAPNVPROC) (Display *dpy, GLXDrawable drawable, GLfloat seconds);
|
||||
#ifdef GLX_GLXEXT_PROTOTYPES
|
||||
Bool glXDelayBeforeSwapNV (Display *dpy, GLXDrawable drawable, GLfloat seconds);
|
||||
#endif
|
||||
#endif /* GLX_NV_delay_before_swap */
|
||||
|
||||
#ifndef GLX_NV_float_buffer
|
||||
#define GLX_NV_float_buffer 1
|
||||
#define GLX_FLOAT_COMPONENTS_NV 0x20B0
|
||||
|
@@ -437,7 +437,7 @@ struct __DRIdamageExtensionRec {
|
||||
* SWRast Loader extension.
|
||||
*/
|
||||
#define __DRI_SWRAST_LOADER "DRI_SWRastLoader"
|
||||
#define __DRI_SWRAST_LOADER_VERSION 1
|
||||
#define __DRI_SWRAST_LOADER_VERSION 2
|
||||
struct __DRIswrastLoaderExtensionRec {
|
||||
__DRIextension base;
|
||||
|
||||
@@ -461,6 +461,13 @@ struct __DRIswrastLoaderExtensionRec {
|
||||
void (*getImage)(__DRIdrawable *readable,
|
||||
int x, int y, int width, int height,
|
||||
char *data, void *loaderPrivate);
|
||||
|
||||
/**
|
||||
* Put image to drawable
|
||||
*/
|
||||
void (*putImage2)(__DRIdrawable *drawable, int op,
|
||||
int x, int y, int width, int height, int stride,
|
||||
char *data, void *loaderPrivate);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -782,12 +789,6 @@ typedef __DRIdrawable *
|
||||
const __DRIconfig *config,
|
||||
void *loaderPrivate);
|
||||
|
||||
typedef __DRIcontext *
|
||||
(*__DRIcreateNewContextFunc)(__DRIscreen *screen,
|
||||
const __DRIconfig *config,
|
||||
__DRIcontext *shared,
|
||||
void *loaderPrivate);
|
||||
|
||||
typedef __DRIcontext *
|
||||
(*__DRIcreateContextAttribsFunc)(__DRIscreen *screen,
|
||||
int api,
|
||||
@@ -949,7 +950,10 @@ struct __DRIdri2ExtensionRec {
|
||||
void *loaderPrivate);
|
||||
|
||||
__DRIcreateNewDrawableFunc createNewDrawable;
|
||||
__DRIcreateNewContextFunc createNewContext;
|
||||
__DRIcontext *(*createNewContext)(__DRIscreen *screen,
|
||||
const __DRIconfig *config,
|
||||
__DRIcontext *shared,
|
||||
void *loaderPrivate);
|
||||
|
||||
/* Since version 2 */
|
||||
__DRIgetAPIMaskFunc getAPIMask;
|
||||
@@ -1037,6 +1041,7 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_FOURCC_XRGB8888 0x34325258
|
||||
#define __DRI_IMAGE_FOURCC_ABGR8888 0x34324241
|
||||
#define __DRI_IMAGE_FOURCC_XBGR8888 0x34324258
|
||||
#define __DRI_IMAGE_FOURCC_SARGB8888 0x83324258
|
||||
#define __DRI_IMAGE_FOURCC_YUV410 0x39565559
|
||||
#define __DRI_IMAGE_FOURCC_YUV411 0x31315559
|
||||
#define __DRI_IMAGE_FOURCC_YUV420 0x32315559
|
||||
@@ -1405,7 +1410,6 @@ struct __DRIimageDriverExtensionRec {
|
||||
/* Common DRI functions, shared with DRI2 */
|
||||
__DRIcreateNewScreen2Func createNewScreen2;
|
||||
__DRIcreateNewDrawableFunc createNewDrawable;
|
||||
__DRIcreateNewContextFunc createNewContext;
|
||||
__DRIcreateContextAttribsFunc createContextAttribs;
|
||||
__DRIgetAPIMaskFunc getAPIMask;
|
||||
};
|
||||
|
@@ -3,7 +3,7 @@
|
||||
* SAREA definitions.
|
||||
*
|
||||
* \author Kevin E. Martin <kevin@precisioninsight.com>
|
||||
* \author Jens Owen <jens@tungstengraphics.com>
|
||||
* \author Jens Owen <jowen@vmware.com>
|
||||
* \author Rickard E. (Rik) Faith <faith@valinux.com>
|
||||
*/
|
||||
|
||||
|
@@ -60,8 +60,8 @@ extern "C" {
|
||||
#include <GL/gl.h>
|
||||
|
||||
|
||||
#define OSMESA_MAJOR_VERSION 6
|
||||
#define OSMESA_MINOR_VERSION 5
|
||||
#define OSMESA_MAJOR_VERSION 10
|
||||
#define OSMESA_MINOR_VERSION 0
|
||||
#define OSMESA_PATCH_VERSION 0
|
||||
|
||||
|
||||
@@ -270,6 +270,21 @@ OSMesaGetProcAddress( const char *funcName );
|
||||
GLAPI void GLAPIENTRY
|
||||
OSMesaColorClamp(GLboolean enable);
|
||||
|
||||
|
||||
/**
|
||||
* Enable/disable Gallium post-process filters.
|
||||
* This should be called after a context is created, but before it is
|
||||
* made current for the first time. After a context has been made
|
||||
* current, this function has no effect.
|
||||
* If the enable_value param is zero, the filter is disabled. Otherwise
|
||||
* the filter is enabled, and the value may control the filter's quality.
|
||||
* New in Mesa 10.0
|
||||
*/
|
||||
GLAPI void GLAPIENTRY
|
||||
OSMesaPostprocess(OSMesaContext osmesa, const char *filter,
|
||||
unsigned enable_value);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -1,56 +1,83 @@
|
||||
#ifndef __gl2_h_
|
||||
#define __gl2_h_
|
||||
|
||||
/* $Revision: 20555 $ on $Date:: 2013-02-12 14:32:47 -0800 #$ */
|
||||
|
||||
#include <GLES2/gl2platform.h>
|
||||
#define __gl2_h_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This document is licensed under the SGI Free Software B License Version
|
||||
* 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
|
||||
** Copyright (c) 2013 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are 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 Materials.
|
||||
**
|
||||
** THE MATERIALS ARE 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
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
*/
|
||||
/*
|
||||
** This header is generated from the Khronos OpenGL / OpenGL ES XML
|
||||
** API Registry. The current version of the Registry, generator scripts
|
||||
** used to make the header, and the header can be found at
|
||||
** http://www.opengl.org/registry/
|
||||
**
|
||||
** Khronos $Revision: 24614 $ on $Date: 2013-12-30 04:44:46 -0800 (Mon, 30 Dec 2013) $
|
||||
*/
|
||||
|
||||
#include <GLES2/gl2platform.h>
|
||||
|
||||
/* Generated on date 20131230 */
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gles2
|
||||
* Profile: common
|
||||
* Versions considered: 2\.[0-9]
|
||||
* Versions emitted: .*
|
||||
* Default extensions included: None
|
||||
* Additional extensions included: _nomatch_^
|
||||
* Extensions removed: _nomatch_^
|
||||
*/
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Data type definitions
|
||||
*-----------------------------------------------------------------------*/
|
||||
|
||||
typedef void GLvoid;
|
||||
typedef char GLchar;
|
||||
typedef unsigned int GLenum;
|
||||
typedef unsigned char GLboolean;
|
||||
typedef unsigned int GLbitfield;
|
||||
typedef khronos_int8_t GLbyte;
|
||||
typedef short GLshort;
|
||||
typedef int GLint;
|
||||
typedef int GLsizei;
|
||||
typedef khronos_uint8_t GLubyte;
|
||||
typedef unsigned short GLushort;
|
||||
typedef unsigned int GLuint;
|
||||
typedef khronos_float_t GLfloat;
|
||||
typedef khronos_float_t GLclampf;
|
||||
typedef khronos_int32_t GLfixed;
|
||||
|
||||
/* GL types for handling large vertex buffer objects */
|
||||
#ifndef GL_ES_VERSION_2_0
|
||||
#define GL_ES_VERSION_2_0 1
|
||||
#include <KHR/khrplatform.h>
|
||||
typedef khronos_int8_t GLbyte;
|
||||
typedef khronos_float_t GLclampf;
|
||||
typedef khronos_int32_t GLfixed;
|
||||
typedef short GLshort;
|
||||
typedef unsigned short GLushort;
|
||||
typedef void GLvoid;
|
||||
typedef struct __GLsync *GLsync;
|
||||
typedef khronos_int64_t GLint64;
|
||||
typedef khronos_uint64_t GLuint64;
|
||||
typedef unsigned int GLenum;
|
||||
typedef unsigned int GLuint;
|
||||
typedef char GLchar;
|
||||
typedef khronos_float_t GLfloat;
|
||||
typedef khronos_ssize_t GLsizeiptr;
|
||||
typedef khronos_intptr_t GLintptr;
|
||||
typedef khronos_ssize_t GLsizeiptr;
|
||||
|
||||
/* OpenGL ES core versions */
|
||||
#define GL_ES_VERSION_2_0 1
|
||||
|
||||
/* ClearBufferMask */
|
||||
typedef unsigned int GLbitfield;
|
||||
typedef int GLint;
|
||||
typedef unsigned char GLboolean;
|
||||
typedef int GLsizei;
|
||||
typedef khronos_uint8_t GLubyte;
|
||||
#define GL_DEPTH_BUFFER_BIT 0x00000100
|
||||
#define GL_STENCIL_BUFFER_BIT 0x00000400
|
||||
#define GL_COLOR_BUFFER_BIT 0x00004000
|
||||
|
||||
/* Boolean */
|
||||
#define GL_FALSE 0
|
||||
#define GL_TRUE 1
|
||||
|
||||
/* BeginMode */
|
||||
#define GL_POINTS 0x0000
|
||||
#define GL_LINES 0x0001
|
||||
#define GL_LINE_LOOP 0x0002
|
||||
@@ -58,18 +85,6 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_TRIANGLES 0x0004
|
||||
#define GL_TRIANGLE_STRIP 0x0005
|
||||
#define GL_TRIANGLE_FAN 0x0006
|
||||
|
||||
/* AlphaFunction (not supported in ES20) */
|
||||
/* GL_NEVER */
|
||||
/* GL_LESS */
|
||||
/* GL_EQUAL */
|
||||
/* GL_LEQUAL */
|
||||
/* GL_GREATER */
|
||||
/* GL_NOTEQUAL */
|
||||
/* GL_GEQUAL */
|
||||
/* GL_ALWAYS */
|
||||
|
||||
/* BlendingFactorDest */
|
||||
#define GL_ZERO 0
|
||||
#define GL_ONE 1
|
||||
#define GL_SRC_COLOR 0x0300
|
||||
@@ -78,29 +93,15 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_ONE_MINUS_SRC_ALPHA 0x0303
|
||||
#define GL_DST_ALPHA 0x0304
|
||||
#define GL_ONE_MINUS_DST_ALPHA 0x0305
|
||||
|
||||
/* BlendingFactorSrc */
|
||||
/* GL_ZERO */
|
||||
/* GL_ONE */
|
||||
#define GL_DST_COLOR 0x0306
|
||||
#define GL_ONE_MINUS_DST_COLOR 0x0307
|
||||
#define GL_SRC_ALPHA_SATURATE 0x0308
|
||||
/* GL_SRC_ALPHA */
|
||||
/* GL_ONE_MINUS_SRC_ALPHA */
|
||||
/* GL_DST_ALPHA */
|
||||
/* GL_ONE_MINUS_DST_ALPHA */
|
||||
|
||||
/* BlendEquationSeparate */
|
||||
#define GL_FUNC_ADD 0x8006
|
||||
#define GL_BLEND_EQUATION 0x8009
|
||||
#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */
|
||||
#define GL_BLEND_EQUATION_RGB 0x8009
|
||||
#define GL_BLEND_EQUATION_ALPHA 0x883D
|
||||
|
||||
/* BlendSubtract */
|
||||
#define GL_FUNC_SUBTRACT 0x800A
|
||||
#define GL_FUNC_REVERSE_SUBTRACT 0x800B
|
||||
|
||||
/* Separate Blend Functions */
|
||||
#define GL_BLEND_DST_RGB 0x80C8
|
||||
#define GL_BLEND_SRC_RGB 0x80C9
|
||||
#define GL_BLEND_DST_ALPHA 0x80CA
|
||||
@@ -110,38 +111,19 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_CONSTANT_ALPHA 0x8003
|
||||
#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004
|
||||
#define GL_BLEND_COLOR 0x8005
|
||||
|
||||
/* Buffer Objects */
|
||||
#define GL_ARRAY_BUFFER 0x8892
|
||||
#define GL_ELEMENT_ARRAY_BUFFER 0x8893
|
||||
#define GL_ARRAY_BUFFER_BINDING 0x8894
|
||||
#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895
|
||||
|
||||
#define GL_STREAM_DRAW 0x88E0
|
||||
#define GL_STATIC_DRAW 0x88E4
|
||||
#define GL_DYNAMIC_DRAW 0x88E8
|
||||
|
||||
#define GL_BUFFER_SIZE 0x8764
|
||||
#define GL_BUFFER_USAGE 0x8765
|
||||
|
||||
#define GL_CURRENT_VERTEX_ATTRIB 0x8626
|
||||
|
||||
/* CullFaceMode */
|
||||
#define GL_FRONT 0x0404
|
||||
#define GL_BACK 0x0405
|
||||
#define GL_FRONT_AND_BACK 0x0408
|
||||
|
||||
/* DepthFunction */
|
||||
/* GL_NEVER */
|
||||
/* GL_LESS */
|
||||
/* GL_EQUAL */
|
||||
/* GL_LEQUAL */
|
||||
/* GL_GREATER */
|
||||
/* GL_NOTEQUAL */
|
||||
/* GL_GEQUAL */
|
||||
/* GL_ALWAYS */
|
||||
|
||||
/* EnableCap */
|
||||
#define GL_TEXTURE_2D 0x0DE1
|
||||
#define GL_CULL_FACE 0x0B44
|
||||
#define GL_BLEND 0x0BE2
|
||||
@@ -152,19 +134,13 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_POLYGON_OFFSET_FILL 0x8037
|
||||
#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E
|
||||
#define GL_SAMPLE_COVERAGE 0x80A0
|
||||
|
||||
/* ErrorCode */
|
||||
#define GL_NO_ERROR 0
|
||||
#define GL_INVALID_ENUM 0x0500
|
||||
#define GL_INVALID_VALUE 0x0501
|
||||
#define GL_INVALID_OPERATION 0x0502
|
||||
#define GL_OUT_OF_MEMORY 0x0505
|
||||
|
||||
/* FrontFaceDirection */
|
||||
#define GL_CW 0x0900
|
||||
#define GL_CCW 0x0901
|
||||
|
||||
/* GetPName */
|
||||
#define GL_LINE_WIDTH 0x0B21
|
||||
#define GL_ALIASED_POINT_SIZE_RANGE 0x846D
|
||||
#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E
|
||||
@@ -191,7 +167,6 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_STENCIL_BACK_WRITEMASK 0x8CA5
|
||||
#define GL_VIEWPORT 0x0BA2
|
||||
#define GL_SCISSOR_BOX 0x0C10
|
||||
/* GL_SCISSOR_TEST */
|
||||
#define GL_COLOR_CLEAR_VALUE 0x0C22
|
||||
#define GL_COLOR_WRITEMASK 0x0C23
|
||||
#define GL_UNPACK_ALIGNMENT 0x0CF5
|
||||
@@ -206,32 +181,18 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_DEPTH_BITS 0x0D56
|
||||
#define GL_STENCIL_BITS 0x0D57
|
||||
#define GL_POLYGON_OFFSET_UNITS 0x2A00
|
||||
/* GL_POLYGON_OFFSET_FILL */
|
||||
#define GL_POLYGON_OFFSET_FACTOR 0x8038
|
||||
#define GL_TEXTURE_BINDING_2D 0x8069
|
||||
#define GL_SAMPLE_BUFFERS 0x80A8
|
||||
#define GL_SAMPLES 0x80A9
|
||||
#define GL_SAMPLE_COVERAGE_VALUE 0x80AA
|
||||
#define GL_SAMPLE_COVERAGE_INVERT 0x80AB
|
||||
|
||||
/* GetTextureParameter */
|
||||
/* GL_TEXTURE_MAG_FILTER */
|
||||
/* GL_TEXTURE_MIN_FILTER */
|
||||
/* GL_TEXTURE_WRAP_S */
|
||||
/* GL_TEXTURE_WRAP_T */
|
||||
|
||||
#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
|
||||
#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3
|
||||
|
||||
/* HintMode */
|
||||
#define GL_DONT_CARE 0x1100
|
||||
#define GL_FASTEST 0x1101
|
||||
#define GL_NICEST 0x1102
|
||||
|
||||
/* HintTarget */
|
||||
#define GL_GENERATE_MIPMAP_HINT 0x8192
|
||||
|
||||
/* DataType */
|
||||
#define GL_GENERATE_MIPMAP_HINT 0x8192
|
||||
#define GL_BYTE 0x1400
|
||||
#define GL_UNSIGNED_BYTE 0x1401
|
||||
#define GL_SHORT 0x1402
|
||||
@@ -240,44 +201,35 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_UNSIGNED_INT 0x1405
|
||||
#define GL_FLOAT 0x1406
|
||||
#define GL_FIXED 0x140C
|
||||
|
||||
/* PixelFormat */
|
||||
#define GL_DEPTH_COMPONENT 0x1902
|
||||
#define GL_ALPHA 0x1906
|
||||
#define GL_RGB 0x1907
|
||||
#define GL_RGBA 0x1908
|
||||
#define GL_LUMINANCE 0x1909
|
||||
#define GL_LUMINANCE_ALPHA 0x190A
|
||||
|
||||
/* PixelType */
|
||||
/* GL_UNSIGNED_BYTE */
|
||||
#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033
|
||||
#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034
|
||||
#define GL_UNSIGNED_SHORT_5_6_5 0x8363
|
||||
|
||||
/* Shaders */
|
||||
#define GL_FRAGMENT_SHADER 0x8B30
|
||||
#define GL_VERTEX_SHADER 0x8B31
|
||||
#define GL_MAX_VERTEX_ATTRIBS 0x8869
|
||||
#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
|
||||
#define GL_MAX_VARYING_VECTORS 0x8DFC
|
||||
#define GL_FRAGMENT_SHADER 0x8B30
|
||||
#define GL_VERTEX_SHADER 0x8B31
|
||||
#define GL_MAX_VERTEX_ATTRIBS 0x8869
|
||||
#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB
|
||||
#define GL_MAX_VARYING_VECTORS 0x8DFC
|
||||
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
|
||||
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
|
||||
#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
|
||||
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
|
||||
#define GL_SHADER_TYPE 0x8B4F
|
||||
#define GL_DELETE_STATUS 0x8B80
|
||||
#define GL_LINK_STATUS 0x8B82
|
||||
#define GL_VALIDATE_STATUS 0x8B83
|
||||
#define GL_ATTACHED_SHADERS 0x8B85
|
||||
#define GL_ACTIVE_UNIFORMS 0x8B86
|
||||
#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
|
||||
#define GL_ACTIVE_ATTRIBUTES 0x8B89
|
||||
#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
|
||||
#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
|
||||
#define GL_CURRENT_PROGRAM 0x8B8D
|
||||
|
||||
/* StencilFunction */
|
||||
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C
|
||||
#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872
|
||||
#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD
|
||||
#define GL_SHADER_TYPE 0x8B4F
|
||||
#define GL_DELETE_STATUS 0x8B80
|
||||
#define GL_LINK_STATUS 0x8B82
|
||||
#define GL_VALIDATE_STATUS 0x8B83
|
||||
#define GL_ATTACHED_SHADERS 0x8B85
|
||||
#define GL_ACTIVE_UNIFORMS 0x8B86
|
||||
#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87
|
||||
#define GL_ACTIVE_ATTRIBUTES 0x8B89
|
||||
#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A
|
||||
#define GL_SHADING_LANGUAGE_VERSION 0x8B8C
|
||||
#define GL_CURRENT_PROGRAM 0x8B8D
|
||||
#define GL_NEVER 0x0200
|
||||
#define GL_LESS 0x0201
|
||||
#define GL_EQUAL 0x0202
|
||||
@@ -286,9 +238,6 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_NOTEQUAL 0x0205
|
||||
#define GL_GEQUAL 0x0206
|
||||
#define GL_ALWAYS 0x0207
|
||||
|
||||
/* StencilOp */
|
||||
/* GL_ZERO */
|
||||
#define GL_KEEP 0x1E00
|
||||
#define GL_REPLACE 0x1E01
|
||||
#define GL_INCR 0x1E02
|
||||
@@ -296,35 +245,21 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_INVERT 0x150A
|
||||
#define GL_INCR_WRAP 0x8507
|
||||
#define GL_DECR_WRAP 0x8508
|
||||
|
||||
/* StringName */
|
||||
#define GL_VENDOR 0x1F00
|
||||
#define GL_RENDERER 0x1F01
|
||||
#define GL_VERSION 0x1F02
|
||||
#define GL_EXTENSIONS 0x1F03
|
||||
|
||||
/* TextureMagFilter */
|
||||
#define GL_NEAREST 0x2600
|
||||
#define GL_LINEAR 0x2601
|
||||
|
||||
/* TextureMinFilter */
|
||||
/* GL_NEAREST */
|
||||
/* GL_LINEAR */
|
||||
#define GL_NEAREST_MIPMAP_NEAREST 0x2700
|
||||
#define GL_LINEAR_MIPMAP_NEAREST 0x2701
|
||||
#define GL_NEAREST_MIPMAP_LINEAR 0x2702
|
||||
#define GL_LINEAR_MIPMAP_LINEAR 0x2703
|
||||
|
||||
/* TextureParameterName */
|
||||
#define GL_TEXTURE_MAG_FILTER 0x2800
|
||||
#define GL_TEXTURE_MIN_FILTER 0x2801
|
||||
#define GL_TEXTURE_WRAP_S 0x2802
|
||||
#define GL_TEXTURE_WRAP_T 0x2803
|
||||
|
||||
/* TextureTarget */
|
||||
/* GL_TEXTURE_2D */
|
||||
#define GL_TEXTURE 0x1702
|
||||
|
||||
#define GL_TEXTURE_CUBE_MAP 0x8513
|
||||
#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514
|
||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515
|
||||
@@ -334,8 +269,6 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519
|
||||
#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A
|
||||
#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C
|
||||
|
||||
/* TextureUnit */
|
||||
#define GL_TEXTURE0 0x84C0
|
||||
#define GL_TEXTURE1 0x84C1
|
||||
#define GL_TEXTURE2 0x84C2
|
||||
@@ -369,13 +302,9 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_TEXTURE30 0x84DE
|
||||
#define GL_TEXTURE31 0x84DF
|
||||
#define GL_ACTIVE_TEXTURE 0x84E0
|
||||
|
||||
/* TextureWrapMode */
|
||||
#define GL_REPEAT 0x2901
|
||||
#define GL_CLAMP_TO_EDGE 0x812F
|
||||
#define GL_MIRRORED_REPEAT 0x8370
|
||||
|
||||
/* Uniform Types */
|
||||
#define GL_FLOAT_VEC2 0x8B50
|
||||
#define GL_FLOAT_VEC3 0x8B51
|
||||
#define GL_FLOAT_VEC4 0x8B52
|
||||
@@ -391,48 +320,34 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_FLOAT_MAT4 0x8B5C
|
||||
#define GL_SAMPLER_2D 0x8B5E
|
||||
#define GL_SAMPLER_CUBE 0x8B60
|
||||
|
||||
/* Vertex Arrays */
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645
|
||||
#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
|
||||
|
||||
/* Read Format */
|
||||
#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
|
||||
#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A
|
||||
#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
|
||||
|
||||
/* Shader Source */
|
||||
#define GL_COMPILE_STATUS 0x8B81
|
||||
#define GL_INFO_LOG_LENGTH 0x8B84
|
||||
#define GL_SHADER_SOURCE_LENGTH 0x8B88
|
||||
#define GL_SHADER_COMPILER 0x8DFA
|
||||
|
||||
/* Shader Binary */
|
||||
#define GL_SHADER_BINARY_FORMATS 0x8DF8
|
||||
#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9
|
||||
|
||||
/* Shader Precision-Specified Types */
|
||||
#define GL_LOW_FLOAT 0x8DF0
|
||||
#define GL_MEDIUM_FLOAT 0x8DF1
|
||||
#define GL_HIGH_FLOAT 0x8DF2
|
||||
#define GL_LOW_INT 0x8DF3
|
||||
#define GL_MEDIUM_INT 0x8DF4
|
||||
#define GL_HIGH_INT 0x8DF5
|
||||
|
||||
/* Framebuffer Object. */
|
||||
#define GL_FRAMEBUFFER 0x8D40
|
||||
#define GL_RENDERBUFFER 0x8D41
|
||||
|
||||
#define GL_RGBA4 0x8056
|
||||
#define GL_RGB5_A1 0x8057
|
||||
#define GL_RGB565 0x8D62
|
||||
#define GL_DEPTH_COMPONENT16 0x81A5
|
||||
#define GL_STENCIL_INDEX8 0x8D48
|
||||
|
||||
#define GL_RENDERBUFFER_WIDTH 0x8D42
|
||||
#define GL_RENDERBUFFER_HEIGHT 0x8D43
|
||||
#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44
|
||||
@@ -442,179 +357,169 @@ typedef khronos_ssize_t GLsizeiptr;
|
||||
#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53
|
||||
#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54
|
||||
#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55
|
||||
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2
|
||||
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
|
||||
|
||||
#define GL_COLOR_ATTACHMENT0 0x8CE0
|
||||
#define GL_DEPTH_ATTACHMENT 0x8D00
|
||||
#define GL_STENCIL_ATTACHMENT 0x8D20
|
||||
|
||||
#define GL_NONE 0
|
||||
|
||||
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
|
||||
#define GL_FRAMEBUFFER_COMPLETE 0x8CD5
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
|
||||
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
|
||||
|
||||
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
|
||||
#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD
|
||||
#define GL_FRAMEBUFFER_BINDING 0x8CA6
|
||||
#define GL_RENDERBUFFER_BINDING 0x8CA7
|
||||
#define GL_MAX_RENDERBUFFER_SIZE 0x84E8
|
||||
|
||||
#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* GL core functions.
|
||||
*-----------------------------------------------------------------------*/
|
||||
|
||||
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
|
||||
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
|
||||
GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
|
||||
GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
|
||||
GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
|
||||
GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode );
|
||||
GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
|
||||
GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
|
||||
GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
||||
GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
|
||||
GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
|
||||
GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target);
|
||||
GL_APICALL void GL_APIENTRY glClear (GLbitfield mask);
|
||||
GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
||||
GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth);
|
||||
GL_APICALL void GL_APIENTRY glClearStencil (GLint s);
|
||||
GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
|
||||
GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
|
||||
GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL GLuint GL_APIENTRY glCreateProgram (void);
|
||||
GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type);
|
||||
GL_APICALL void GL_APIENTRY glCullFace (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
|
||||
GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func);
|
||||
GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag);
|
||||
GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
|
||||
GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glDisable (GLenum cap);
|
||||
GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index);
|
||||
GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
|
||||
GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
|
||||
GL_APICALL void GL_APIENTRY glEnable (GLenum cap);
|
||||
GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index);
|
||||
GL_APICALL void GL_APIENTRY glFinish (void);
|
||||
GL_APICALL void GL_APIENTRY glFlush (void);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
|
||||
GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
|
||||
GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target);
|
||||
GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
|
||||
GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
|
||||
GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
|
||||
GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
|
||||
GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
|
||||
GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
|
||||
GL_APICALL GLenum GL_APIENTRY glGetError (void);
|
||||
GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
|
||||
GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
|
||||
GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
|
||||
GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
|
||||
GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
|
||||
GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture);
|
||||
GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width);
|
||||
GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
|
||||
GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
|
||||
GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
|
||||
GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void);
|
||||
GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
|
||||
GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
|
||||
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
|
||||
GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
|
||||
GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
|
||||
GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
|
||||
GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
|
||||
GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
|
||||
GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
|
||||
GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
|
||||
GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
|
||||
GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x);
|
||||
GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x);
|
||||
GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
|
||||
GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
|
||||
GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
|
||||
GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
|
||||
GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
|
||||
GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
|
||||
GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
|
||||
GL_APICALL void GL_APIENTRY glUseProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
|
||||
GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);
|
||||
GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
|
||||
GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
|
||||
GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
|
||||
GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
|
||||
GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
|
||||
GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
|
||||
GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
|
||||
GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
|
||||
GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
|
||||
GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
|
||||
GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target);
|
||||
GL_APICALL void GL_APIENTRY glClear (GLbitfield mask);
|
||||
GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
||||
GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d);
|
||||
GL_APICALL void GL_APIENTRY glClearStencil (GLint s);
|
||||
GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
||||
GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
|
||||
GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
|
||||
GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
||||
GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL GLuint GL_APIENTRY glCreateProgram (void);
|
||||
GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type);
|
||||
GL_APICALL void GL_APIENTRY glCullFace (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
|
||||
GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
|
||||
GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func);
|
||||
GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag);
|
||||
GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f);
|
||||
GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
|
||||
GL_APICALL void GL_APIENTRY glDisable (GLenum cap);
|
||||
GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index);
|
||||
GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
|
||||
GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
|
||||
GL_APICALL void GL_APIENTRY glEnable (GLenum cap);
|
||||
GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index);
|
||||
GL_APICALL void GL_APIENTRY glFinish (void);
|
||||
GL_APICALL void GL_APIENTRY glFlush (void);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
|
||||
GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode);
|
||||
GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
|
||||
GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target);
|
||||
GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
|
||||
GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
|
||||
GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures);
|
||||
GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
|
||||
GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
|
||||
GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
|
||||
GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data);
|
||||
GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
|
||||
GL_APICALL GLenum GL_APIENTRY glGetError (void);
|
||||
GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data);
|
||||
GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data);
|
||||
GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
|
||||
GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
|
||||
GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name);
|
||||
GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
|
||||
GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
|
||||
GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
|
||||
GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);
|
||||
GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader);
|
||||
GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture);
|
||||
GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width);
|
||||
GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
|
||||
GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
|
||||
GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
|
||||
GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void);
|
||||
GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);
|
||||
GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
|
||||
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
|
||||
GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
|
||||
GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
|
||||
GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
|
||||
GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
|
||||
GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
|
||||
GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
|
||||
GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
|
||||
GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
|
||||
GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
|
||||
GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0);
|
||||
GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0);
|
||||
GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
|
||||
GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
|
||||
GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
|
||||
GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
|
||||
GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
|
||||
GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
|
||||
GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
GL_APICALL void GL_APIENTRY glUseProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
|
||||
GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
|
||||
GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
#endif /* GL_ES_VERSION_2_0 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __gl2_h_ */
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
1920
include/GLES3/gl3.h
1920
include/GLES3/gl3.h
File diff suppressed because it is too large
Load Diff
76
include/HaikuGL/GLRenderer.h
Normal file
76
include/HaikuGL/GLRenderer.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright 2006, Philippe Houdoin. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
|
||||
* This header defines BGLRenderer, the base class making up
|
||||
* the Haiku GL renderer add-ons (essentially selfcontained C++
|
||||
* shared libraries that do the actual rendering such as
|
||||
* libswpipe.so and libswrast.so)
|
||||
*/
|
||||
#ifndef GLRENDERER_H
|
||||
#define GLRENDERER_H
|
||||
|
||||
|
||||
#include <BeBuild.h>
|
||||
#include <GLView.h>
|
||||
|
||||
|
||||
class BGLDispatcher;
|
||||
class GLRendererRoster;
|
||||
|
||||
typedef unsigned long renderer_id;
|
||||
|
||||
class BGLRenderer
|
||||
{
|
||||
// Private unimplemented copy constructors
|
||||
BGLRenderer(const BGLRenderer &);
|
||||
BGLRenderer & operator=(const BGLRenderer &);
|
||||
|
||||
public:
|
||||
BGLRenderer(BGLView *view, ulong bgl_options,
|
||||
BGLDispatcher *dispatcher);
|
||||
virtual ~BGLRenderer();
|
||||
|
||||
void Acquire();
|
||||
void Release();
|
||||
|
||||
virtual void LockGL();
|
||||
virtual void UnlockGL();
|
||||
|
||||
virtual void SwapBuffers(bool VSync = false);
|
||||
virtual void Draw(BRect updateRect);
|
||||
virtual status_t CopyPixelsOut(BPoint source, BBitmap *dest);
|
||||
virtual status_t CopyPixelsIn(BBitmap *source, BPoint dest);
|
||||
|
||||
virtual void FrameResized(float width, float height);
|
||||
|
||||
virtual void DirectConnected(direct_buffer_info *info);
|
||||
virtual void EnableDirectMode(bool enabled);
|
||||
|
||||
inline int32 ReferenceCount() const { return fRefCount; };
|
||||
inline ulong Options() const { return fOptions; };
|
||||
inline BGLView* GLView() { return fView; };
|
||||
inline BGLDispatcher* GLDispatcher() { return fDispatcher; };
|
||||
|
||||
private:
|
||||
friend class GLRendererRoster;
|
||||
|
||||
virtual status_t _Reserved_Renderer_0(int32, void *);
|
||||
virtual status_t _Reserved_Renderer_1(int32, void *);
|
||||
virtual status_t _Reserved_Renderer_2(int32, void *);
|
||||
virtual status_t _Reserved_Renderer_3(int32, void *);
|
||||
virtual status_t _Reserved_Renderer_4(int32, void *);
|
||||
|
||||
int32 fRefCount; // How much we're still useful
|
||||
BGLView* fView; // Never forget who is the boss!
|
||||
ulong fOptions; // Keep that tune in memory
|
||||
BGLDispatcher* fDispatcher;// Our personal GL API call dispatcher
|
||||
|
||||
GLRendererRoster* fOwningRoster;
|
||||
renderer_id fID;
|
||||
};
|
||||
|
||||
extern "C" _EXPORT BGLRenderer* instantiate_gl_renderer(BGLView *view, ulong options, BGLDispatcher *dispatcher);
|
||||
|
||||
|
||||
#endif // GLRENDERER_H
|
193
include/HaikuGL/GLView.h
Normal file
193
include/HaikuGL/GLView.h
Normal file
@@ -0,0 +1,193 @@
|
||||
/*
|
||||
* Copyright 2008-2013, Haiku, Inc. All Rights Reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* This header defines BGLView, the base class making up
|
||||
* the Haiku GL Kit.
|
||||
*
|
||||
*/
|
||||
#ifndef BGLVIEW_H
|
||||
#define BGLVIEW_H
|
||||
|
||||
|
||||
#include <GL/gl.h>
|
||||
|
||||
#define BGL_RGB 0
|
||||
#define BGL_INDEX 1
|
||||
#define BGL_SINGLE 0
|
||||
#define BGL_DOUBLE 2
|
||||
#define BGL_DIRECT 0
|
||||
#define BGL_INDIRECT 4
|
||||
#define BGL_ACCUM 8
|
||||
#define BGL_ALPHA 16
|
||||
#define BGL_DEPTH 32
|
||||
#define BGL_OVERLAY 64
|
||||
#define BGL_UNDERLAY 128
|
||||
#define BGL_STENCIL 512
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <AppKit.h>
|
||||
#include <Bitmap.h>
|
||||
#include <DirectWindow.h>
|
||||
#include <View.h>
|
||||
#include <Window.h>
|
||||
#include <WindowScreen.h>
|
||||
|
||||
|
||||
struct glview_direct_info;
|
||||
class BGLRenderer;
|
||||
class GLRendererRoster;
|
||||
|
||||
class BGLView : public BView {
|
||||
public:
|
||||
BGLView(BRect rect, const char* name,
|
||||
ulong resizingMode, ulong mode,
|
||||
ulong options);
|
||||
virtual ~BGLView();
|
||||
|
||||
void LockGL();
|
||||
void UnlockGL();
|
||||
void SwapBuffers();
|
||||
void SwapBuffers(bool vSync);
|
||||
|
||||
BView* EmbeddedView(); // deprecated, returns NULL
|
||||
void* GetGLProcAddress(const char* procName);
|
||||
|
||||
status_t CopyPixelsOut(BPoint source, BBitmap *dest);
|
||||
status_t CopyPixelsIn(BBitmap *source, BPoint dest);
|
||||
|
||||
// Mesa's GLenum is uint where Be's ones was ulong!
|
||||
virtual void ErrorCallback(unsigned long errorCode);
|
||||
|
||||
virtual void Draw(BRect updateRect);
|
||||
virtual void AttachedToWindow();
|
||||
virtual void AllAttached();
|
||||
virtual void DetachedFromWindow();
|
||||
virtual void AllDetached();
|
||||
|
||||
virtual void FrameResized(float newWidth, float newHeight);
|
||||
virtual status_t Perform(perform_code d, void *arg);
|
||||
|
||||
virtual status_t Archive(BMessage *data, bool deep = true) const;
|
||||
|
||||
virtual void MessageReceived(BMessage *message);
|
||||
virtual void SetResizingMode(uint32 mode);
|
||||
|
||||
virtual void Show();
|
||||
virtual void Hide();
|
||||
|
||||
virtual BHandler* ResolveSpecifier(BMessage *msg, int32 index,
|
||||
BMessage *specifier, int32 form,
|
||||
const char *property);
|
||||
virtual status_t GetSupportedSuites(BMessage *data);
|
||||
|
||||
void DirectConnected(direct_buffer_info *info);
|
||||
void EnableDirectMode(bool enabled);
|
||||
|
||||
void* getGC() { return fGc; } // ???
|
||||
|
||||
virtual void GetPreferredSize(float* width, float* height);
|
||||
|
||||
private:
|
||||
|
||||
virtual void _ReservedGLView1();
|
||||
virtual void _ReservedGLView2();
|
||||
virtual void _ReservedGLView3();
|
||||
virtual void _ReservedGLView4();
|
||||
virtual void _ReservedGLView5();
|
||||
virtual void _ReservedGLView6();
|
||||
virtual void _ReservedGLView7();
|
||||
virtual void _ReservedGLView8();
|
||||
|
||||
BGLView(const BGLView &);
|
||||
BGLView &operator=(const BGLView &);
|
||||
|
||||
void _DitherFront();
|
||||
bool _ConfirmDither();
|
||||
void _Draw(BRect rect);
|
||||
void _CallDirectConnected();
|
||||
|
||||
void* fGc;
|
||||
uint32 fOptions;
|
||||
uint32 fDitherCount;
|
||||
BLocker fDrawLock;
|
||||
BLocker fDisplayLock;
|
||||
glview_direct_info* fClipInfo;
|
||||
|
||||
BGLRenderer* fRenderer;
|
||||
GLRendererRoster* fRoster;
|
||||
|
||||
BBitmap* fDitherMap;
|
||||
BRect fBounds;
|
||||
int16* fErrorBuffer[2];
|
||||
uint64 _reserved[8];
|
||||
|
||||
void _LockDraw();
|
||||
void _UnlockDraw();
|
||||
|
||||
// BeOS compatibility
|
||||
private:
|
||||
BGLView(BRect rect, char* name,
|
||||
ulong resizingMode, ulong mode,
|
||||
ulong options);
|
||||
};
|
||||
|
||||
|
||||
class BGLScreen : public BWindowScreen {
|
||||
public:
|
||||
BGLScreen(char* name,
|
||||
ulong screenMode, ulong options,
|
||||
status_t *error, bool debug=false);
|
||||
~BGLScreen();
|
||||
|
||||
void LockGL();
|
||||
void UnlockGL();
|
||||
void SwapBuffers();
|
||||
// Mesa's GLenum is uint where Be's ones was ulong!
|
||||
virtual void ErrorCallback(unsigned long errorCode);
|
||||
|
||||
virtual void ScreenConnected(bool connected);
|
||||
virtual void FrameResized(float width, float height);
|
||||
virtual status_t Perform(perform_code code, void *arg);
|
||||
|
||||
virtual status_t Archive(BMessage *data, bool deep = true) const;
|
||||
virtual void MessageReceived(BMessage *message);
|
||||
|
||||
virtual void Show();
|
||||
virtual void Hide();
|
||||
|
||||
virtual BHandler* ResolveSpecifier(BMessage *message,
|
||||
int32 index,
|
||||
BMessage *specifier,
|
||||
int32 form,
|
||||
const char *property);
|
||||
virtual status_t GetSupportedSuites(BMessage *data);
|
||||
|
||||
private:
|
||||
|
||||
virtual void _ReservedGLScreen1();
|
||||
virtual void _ReservedGLScreen2();
|
||||
virtual void _ReservedGLScreen3();
|
||||
virtual void _ReservedGLScreen4();
|
||||
virtual void _ReservedGLScreen5();
|
||||
virtual void _ReservedGLScreen6();
|
||||
virtual void _ReservedGLScreen7();
|
||||
virtual void _ReservedGLScreen8();
|
||||
|
||||
BGLScreen(const BGLScreen &);
|
||||
BGLScreen &operator=(const BGLScreen &);
|
||||
|
||||
void* fGc;
|
||||
long fOptions;
|
||||
BLocker fDrawLock;
|
||||
|
||||
int32 fColorSpace;
|
||||
uint32 fScreenMode;
|
||||
|
||||
uint64 _reserved[7];
|
||||
};
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // BGLVIEW_H
|
10
include/HaikuGL/OpenGLKit.h
Normal file
10
include/HaikuGL/OpenGLKit.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Master include file for the Haiku OpenGL Kit.
|
||||
*/
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <GLView.h>
|
||||
|
||||
// Projects needing GL/glu.h and GL/glut.h should now
|
||||
// include these headers independently as glu and glut
|
||||
// are no longe core parts of mesa
|
28
include/HaikuGL/README
Normal file
28
include/HaikuGL/README
Normal file
@@ -0,0 +1,28 @@
|
||||
These headers make up the Haiku Op*nGL kit.
|
||||
|
||||
Headers in this directory preserve some BeOS™ compatibility
|
||||
compatibility, so changes should be mentioned to the Haiku
|
||||
project mailing list.
|
||||
|
||||
http://haiku-os.org
|
||||
|
||||
Normal Haiku Op*enGL layout:
|
||||
|
||||
* headers/os/OpenGLKit.h
|
||||
* headers/os/opengl/GLView.h
|
||||
* headers/os/opengl/GLRenderer.h
|
||||
* headers/os/opengl/GL/gl.h
|
||||
* headers/os/opengl/GL/gl_mangle.h
|
||||
* headers/os/opengl/GL/glext.h
|
||||
* headers/os/opengl/GL/osmesa.h (needed?)
|
||||
|
||||
Extras:
|
||||
|
||||
* headers/os/opengl/GL/glu.h
|
||||
* headers/os/opengl/GL/glut.h
|
||||
|
||||
OpenGL™ is a trademark of SGI. The usage of this trademark
|
||||
in the Haiku GL Kit is not a sign of any certification or
|
||||
endorsement by SGI or its affiliates. Usage is purely to
|
||||
allow legacy compatibility with the BeOS™ and its 3D GL
|
||||
rendering subsystem.
|
79
include/c11/threads.h
Normal file
79
include/c11/threads.h
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* C11 <threads.h> emulation library
|
||||
*
|
||||
* (C) Copyright yohhoy 2012.
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person or organization
|
||||
* obtaining a copy of the software and accompanying documentation covered by
|
||||
* this license (the "Software") to use, reproduce, display, distribute,
|
||||
* execute, and transmit the Software, and to prepare [[derivative work]]s of the
|
||||
* Software, and to permit third-parties to whom the Software is furnished to
|
||||
* do so, all subject to the following:
|
||||
*
|
||||
* The copyright notices in the Software and this entire statement, including
|
||||
* the above license grant, this restriction and the following disclaimer,
|
||||
* must be included in all copies of the Software, in whole or in part, and
|
||||
* all derivative works of the Software, unless such copies or derivative
|
||||
* works are solely in the form of machine-executable object code generated by
|
||||
* a source language processor.
|
||||
*
|
||||
* 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#ifndef EMULATED_THREADS_H_INCLUDED_
|
||||
#define EMULATED_THREADS_H_INCLUDED_
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#ifndef TIME_UTC
|
||||
#define TIME_UTC 1
|
||||
#endif
|
||||
|
||||
#include "c99_compat.h" /* for `inline` */
|
||||
|
||||
/*---------------------------- types ----------------------------*/
|
||||
typedef void (*tss_dtor_t)(void*);
|
||||
typedef int (*thrd_start_t)(void*);
|
||||
|
||||
struct xtime {
|
||||
time_t sec;
|
||||
long nsec;
|
||||
};
|
||||
typedef struct xtime xtime;
|
||||
|
||||
|
||||
/*-------------------- enumeration constants --------------------*/
|
||||
enum {
|
||||
mtx_plain = 0,
|
||||
mtx_try = 1,
|
||||
mtx_timed = 2,
|
||||
mtx_recursive = 4
|
||||
};
|
||||
|
||||
enum {
|
||||
thrd_success = 0, // succeeded
|
||||
thrd_timeout, // timeout
|
||||
thrd_error, // failed
|
||||
thrd_busy, // resource busy
|
||||
thrd_nomem // out of memory
|
||||
};
|
||||
|
||||
/*-------------------------- functions --------------------------*/
|
||||
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
#include "threads_win32.h"
|
||||
#elif defined(HAVE_PTHREAD)
|
||||
#include "threads_posix.h"
|
||||
#else
|
||||
#error Not supported on this platform.
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif /* EMULATED_THREADS_H_INCLUDED_ */
|
375
include/c11/threads_posix.h
Normal file
375
include/c11/threads_posix.h
Normal file
@@ -0,0 +1,375 @@
|
||||
/*
|
||||
* C11 <threads.h> emulation library
|
||||
*
|
||||
* (C) Copyright yohhoy 2012.
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person or organization
|
||||
* obtaining a copy of the software and accompanying documentation covered by
|
||||
* this license (the "Software") to use, reproduce, display, distribute,
|
||||
* execute, and transmit the Software, and to prepare [[derivative work]]s of the
|
||||
* Software, and to permit third-parties to whom the Software is furnished to
|
||||
* do so, all subject to the following:
|
||||
*
|
||||
* The copyright notices in the Software and this entire statement, including
|
||||
* the above license grant, this restriction and the following disclaimer,
|
||||
* must be included in all copies of the Software, in whole or in part, and
|
||||
* all derivative works of the Software, unless such copies or derivative
|
||||
* works are solely in the form of machine-executable object code generated by
|
||||
* a source language processor.
|
||||
*
|
||||
* 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#ifndef assert
|
||||
#include <assert.h>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sched.h>
|
||||
#include <stdint.h> /* for intptr_t */
|
||||
|
||||
/*
|
||||
Configuration macro:
|
||||
|
||||
EMULATED_THREADS_USE_NATIVE_TIMEDLOCK
|
||||
Use pthread_mutex_timedlock() for `mtx_timedlock()'
|
||||
Otherwise use mtx_trylock() + *busy loop* emulation.
|
||||
*/
|
||||
#if !defined(__CYGWIN__) && !defined(__APPLE__) && !defined(__NetBSD__)
|
||||
#define EMULATED_THREADS_USE_NATIVE_TIMEDLOCK
|
||||
#endif
|
||||
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
/*---------------------------- macros ----------------------------*/
|
||||
#define ONCE_FLAG_INIT PTHREAD_ONCE_INIT
|
||||
#ifdef INIT_ONCE_STATIC_INIT
|
||||
#define TSS_DTOR_ITERATIONS PTHREAD_DESTRUCTOR_ITERATIONS
|
||||
#else
|
||||
#define TSS_DTOR_ITERATIONS 1 // assume TSS dtor MAY be called at least once.
|
||||
#endif
|
||||
|
||||
// FIXME: temporary non-standard hack to ease transition
|
||||
#define _MTX_INITIALIZER_NP PTHREAD_MUTEX_INITIALIZER
|
||||
|
||||
/*---------------------------- types ----------------------------*/
|
||||
typedef pthread_cond_t cnd_t;
|
||||
typedef pthread_t thrd_t;
|
||||
typedef pthread_key_t tss_t;
|
||||
typedef pthread_mutex_t mtx_t;
|
||||
typedef pthread_once_t once_flag;
|
||||
|
||||
|
||||
/*
|
||||
Implementation limits:
|
||||
- Conditionally emulation for "mutex with timeout"
|
||||
(see EMULATED_THREADS_USE_NATIVE_TIMEDLOCK macro)
|
||||
*/
|
||||
struct impl_thrd_param {
|
||||
thrd_start_t func;
|
||||
void *arg;
|
||||
};
|
||||
|
||||
static inline void *
|
||||
impl_thrd_routine(void *p)
|
||||
{
|
||||
struct impl_thrd_param pack = *((struct impl_thrd_param *)p);
|
||||
free(p);
|
||||
return (void*)(intptr_t)pack.func(pack.arg);
|
||||
}
|
||||
|
||||
|
||||
/*--------------- 7.25.2 Initialization functions ---------------*/
|
||||
// 7.25.2.1
|
||||
static inline void
|
||||
call_once(once_flag *flag, void (*func)(void))
|
||||
{
|
||||
pthread_once(flag, func);
|
||||
}
|
||||
|
||||
|
||||
/*------------- 7.25.3 Condition variable functions -------------*/
|
||||
// 7.25.3.1
|
||||
static inline int
|
||||
cnd_broadcast(cnd_t *cond)
|
||||
{
|
||||
if (!cond) return thrd_error;
|
||||
pthread_cond_broadcast(cond);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.3.2
|
||||
static inline void
|
||||
cnd_destroy(cnd_t *cond)
|
||||
{
|
||||
assert(cond);
|
||||
pthread_cond_destroy(cond);
|
||||
}
|
||||
|
||||
// 7.25.3.3
|
||||
static inline int
|
||||
cnd_init(cnd_t *cond)
|
||||
{
|
||||
if (!cond) return thrd_error;
|
||||
pthread_cond_init(cond, NULL);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.3.4
|
||||
static inline int
|
||||
cnd_signal(cnd_t *cond)
|
||||
{
|
||||
if (!cond) return thrd_error;
|
||||
pthread_cond_signal(cond);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.3.5
|
||||
static inline int
|
||||
cnd_timedwait(cnd_t *cond, mtx_t *mtx, const xtime *xt)
|
||||
{
|
||||
struct timespec abs_time;
|
||||
int rt;
|
||||
if (!cond || !mtx || !xt) return thrd_error;
|
||||
rt = pthread_cond_timedwait(cond, mtx, &abs_time);
|
||||
if (rt == ETIMEDOUT)
|
||||
return thrd_busy;
|
||||
return (rt == 0) ? thrd_success : thrd_error;
|
||||
}
|
||||
|
||||
// 7.25.3.6
|
||||
static inline int
|
||||
cnd_wait(cnd_t *cond, mtx_t *mtx)
|
||||
{
|
||||
if (!cond || !mtx) return thrd_error;
|
||||
pthread_cond_wait(cond, mtx);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------- 7.25.4 Mutex functions --------------------*/
|
||||
// 7.25.4.1
|
||||
static inline void
|
||||
mtx_destroy(mtx_t *mtx)
|
||||
{
|
||||
assert(mtx);
|
||||
pthread_mutex_destroy(mtx);
|
||||
}
|
||||
|
||||
// 7.25.4.2
|
||||
static inline int
|
||||
mtx_init(mtx_t *mtx, int type)
|
||||
{
|
||||
pthread_mutexattr_t attr;
|
||||
if (!mtx) return thrd_error;
|
||||
if (type != mtx_plain && type != mtx_timed && type != mtx_try
|
||||
&& type != (mtx_plain|mtx_recursive)
|
||||
&& type != (mtx_timed|mtx_recursive)
|
||||
&& type != (mtx_try|mtx_recursive))
|
||||
return thrd_error;
|
||||
pthread_mutexattr_init(&attr);
|
||||
if ((type & mtx_recursive) != 0) {
|
||||
#if defined(__linux__) || defined(__linux)
|
||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||
#else
|
||||
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
|
||||
#endif
|
||||
}
|
||||
pthread_mutex_init(mtx, &attr);
|
||||
pthread_mutexattr_destroy(&attr);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.4.3
|
||||
static inline int
|
||||
mtx_lock(mtx_t *mtx)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
pthread_mutex_lock(mtx);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
static inline int
|
||||
mtx_trylock(mtx_t *mtx);
|
||||
|
||||
static inline void
|
||||
thrd_yield(void);
|
||||
|
||||
// 7.25.4.4
|
||||
static inline int
|
||||
mtx_timedlock(mtx_t *mtx, const xtime *xt)
|
||||
{
|
||||
if (!mtx || !xt) return thrd_error;
|
||||
{
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_TIMEDLOCK
|
||||
struct timespec ts;
|
||||
int rt;
|
||||
ts.tv_sec = xt->sec;
|
||||
ts.tv_nsec = xt->nsec;
|
||||
rt = pthread_mutex_timedlock(mtx, &ts);
|
||||
if (rt == 0)
|
||||
return thrd_success;
|
||||
return (rt == ETIMEDOUT) ? thrd_busy : thrd_error;
|
||||
#else
|
||||
time_t expire = time(NULL);
|
||||
expire += xt->sec;
|
||||
while (mtx_trylock(mtx) != thrd_success) {
|
||||
time_t now = time(NULL);
|
||||
if (expire < now)
|
||||
return thrd_busy;
|
||||
// busy loop!
|
||||
thrd_yield();
|
||||
}
|
||||
return thrd_success;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// 7.25.4.5
|
||||
static inline int
|
||||
mtx_trylock(mtx_t *mtx)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
return (pthread_mutex_trylock(mtx) == 0) ? thrd_success : thrd_busy;
|
||||
}
|
||||
|
||||
// 7.25.4.6
|
||||
static inline int
|
||||
mtx_unlock(mtx_t *mtx)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
pthread_mutex_unlock(mtx);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
|
||||
/*------------------- 7.25.5 Thread functions -------------------*/
|
||||
// 7.25.5.1
|
||||
static inline int
|
||||
thrd_create(thrd_t *thr, thrd_start_t func, void *arg)
|
||||
{
|
||||
struct impl_thrd_param *pack;
|
||||
if (!thr) return thrd_error;
|
||||
pack = (struct impl_thrd_param *)malloc(sizeof(struct impl_thrd_param));
|
||||
if (!pack) return thrd_nomem;
|
||||
pack->func = func;
|
||||
pack->arg = arg;
|
||||
if (pthread_create(thr, NULL, impl_thrd_routine, pack) != 0) {
|
||||
free(pack);
|
||||
return thrd_error;
|
||||
}
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.5.2
|
||||
static inline thrd_t
|
||||
thrd_current(void)
|
||||
{
|
||||
return pthread_self();
|
||||
}
|
||||
|
||||
// 7.25.5.3
|
||||
static inline int
|
||||
thrd_detach(thrd_t thr)
|
||||
{
|
||||
return (pthread_detach(thr) == 0) ? thrd_success : thrd_error;
|
||||
}
|
||||
|
||||
// 7.25.5.4
|
||||
static inline int
|
||||
thrd_equal(thrd_t thr0, thrd_t thr1)
|
||||
{
|
||||
return pthread_equal(thr0, thr1);
|
||||
}
|
||||
|
||||
// 7.25.5.5
|
||||
static inline void
|
||||
thrd_exit(int res)
|
||||
{
|
||||
pthread_exit((void*)(intptr_t)res);
|
||||
}
|
||||
|
||||
// 7.25.5.6
|
||||
static inline int
|
||||
thrd_join(thrd_t thr, int *res)
|
||||
{
|
||||
void *code;
|
||||
if (pthread_join(thr, &code) != 0)
|
||||
return thrd_error;
|
||||
if (res)
|
||||
*res = (int)(intptr_t)code;
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.5.7
|
||||
static inline void
|
||||
thrd_sleep(const xtime *xt)
|
||||
{
|
||||
struct timespec req;
|
||||
assert(xt);
|
||||
req.tv_sec = xt->sec;
|
||||
req.tv_nsec = xt->nsec;
|
||||
nanosleep(&req, NULL);
|
||||
}
|
||||
|
||||
// 7.25.5.8
|
||||
static inline void
|
||||
thrd_yield(void)
|
||||
{
|
||||
sched_yield();
|
||||
}
|
||||
|
||||
|
||||
/*----------- 7.25.6 Thread-specific storage functions -----------*/
|
||||
// 7.25.6.1
|
||||
static inline int
|
||||
tss_create(tss_t *key, tss_dtor_t dtor)
|
||||
{
|
||||
if (!key) return thrd_error;
|
||||
return (pthread_key_create(key, dtor) == 0) ? thrd_success : thrd_error;
|
||||
}
|
||||
|
||||
// 7.25.6.2
|
||||
static inline void
|
||||
tss_delete(tss_t key)
|
||||
{
|
||||
pthread_key_delete(key);
|
||||
}
|
||||
|
||||
// 7.25.6.3
|
||||
static inline void *
|
||||
tss_get(tss_t key)
|
||||
{
|
||||
return pthread_getspecific(key);
|
||||
}
|
||||
|
||||
// 7.25.6.4
|
||||
static inline int
|
||||
tss_set(tss_t key, void *val)
|
||||
{
|
||||
return (pthread_setspecific(key, val) == 0) ? thrd_success : thrd_error;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------- 7.25.7 Time functions --------------------*/
|
||||
// 7.25.6.1
|
||||
static inline int
|
||||
xtime_get(xtime *xt, int base)
|
||||
{
|
||||
if (!xt) return 0;
|
||||
if (base == TIME_UTC) {
|
||||
xt->sec = time(NULL);
|
||||
xt->nsec = 0;
|
||||
return base;
|
||||
}
|
||||
return 0;
|
||||
}
|
642
include/c11/threads_win32.h
Normal file
642
include/c11/threads_win32.h
Normal file
@@ -0,0 +1,642 @@
|
||||
/*
|
||||
* C11 <threads.h> emulation library
|
||||
*
|
||||
* (C) Copyright yohhoy 2012.
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person or organization
|
||||
* obtaining a copy of the software and accompanying documentation covered by
|
||||
* this license (the "Software") to use, reproduce, display, distribute,
|
||||
* execute, and transmit the Software, and to prepare [[derivative work]]s of the
|
||||
* Software, and to permit third-parties to whom the Software is furnished to
|
||||
* do so, all subject to the following:
|
||||
*
|
||||
* The copyright notices in the Software and this entire statement, including
|
||||
* the above license grant, this restriction and the following disclaimer,
|
||||
* must be included in all copies of the Software, in whole or in part, and
|
||||
* all derivative works of the Software, unless such copies or derivative
|
||||
* works are solely in the form of machine-executable object code generated by
|
||||
* a source language processor.
|
||||
*
|
||||
* 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#ifndef assert
|
||||
#include <assert.h>
|
||||
#endif
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <process.h> // MSVCRT
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
Configuration macro:
|
||||
|
||||
EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
Use native WindowsAPI one-time initialization function.
|
||||
(requires WinVista or later)
|
||||
Otherwise emulate by mtx_trylock() + *busy loop* for WinXP.
|
||||
|
||||
EMULATED_THREADS_USE_NATIVE_CV
|
||||
Use native WindowsAPI condition variable object.
|
||||
(requires WinVista or later)
|
||||
Otherwise use emulated implementation for WinXP.
|
||||
|
||||
EMULATED_THREADS_TSS_DTOR_SLOTNUM
|
||||
Max registerable TSS dtor number.
|
||||
*/
|
||||
|
||||
// XXX: Retain XP compatability
|
||||
#if 0
|
||||
#if _WIN32_WINNT >= 0x0600
|
||||
// Prefer native WindowsAPI on newer environment.
|
||||
#if !defined(__MINGW32__)
|
||||
#define EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
#endif
|
||||
#define EMULATED_THREADS_USE_NATIVE_CV
|
||||
#endif
|
||||
#endif
|
||||
#define EMULATED_THREADS_TSS_DTOR_SLOTNUM 64 // see TLS_MINIMUM_AVAILABLE
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
// check configuration
|
||||
#if defined(EMULATED_THREADS_USE_NATIVE_CALL_ONCE) && (_WIN32_WINNT < 0x0600)
|
||||
#error EMULATED_THREADS_USE_NATIVE_CALL_ONCE requires _WIN32_WINNT>=0x0600
|
||||
#endif
|
||||
|
||||
#if defined(EMULATED_THREADS_USE_NATIVE_CV) && (_WIN32_WINNT < 0x0600)
|
||||
#error EMULATED_THREADS_USE_NATIVE_CV requires _WIN32_WINNT>=0x0600
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------- macros ----------------------------*/
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
#define ONCE_FLAG_INIT INIT_ONCE_STATIC_INIT
|
||||
#else
|
||||
#define ONCE_FLAG_INIT {0}
|
||||
#endif
|
||||
#define TSS_DTOR_ITERATIONS 1
|
||||
|
||||
// FIXME: temporary non-standard hack to ease transition
|
||||
#define _MTX_INITIALIZER_NP {(PCRITICAL_SECTION_DEBUG)-1, -1, 0, 0, 0, 0}
|
||||
|
||||
/*---------------------------- types ----------------------------*/
|
||||
typedef struct cnd_t {
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
CONDITION_VARIABLE condvar;
|
||||
#else
|
||||
int blocked;
|
||||
int gone;
|
||||
int to_unblock;
|
||||
HANDLE sem_queue;
|
||||
HANDLE sem_gate;
|
||||
CRITICAL_SECTION monitor;
|
||||
#endif
|
||||
} cnd_t;
|
||||
|
||||
typedef HANDLE thrd_t;
|
||||
|
||||
typedef DWORD tss_t;
|
||||
|
||||
typedef CRITICAL_SECTION mtx_t;
|
||||
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
typedef INIT_ONCE once_flag;
|
||||
#else
|
||||
typedef struct once_flag_t {
|
||||
volatile LONG status;
|
||||
} once_flag;
|
||||
#endif
|
||||
|
||||
|
||||
static inline void * tss_get(tss_t key);
|
||||
static inline void thrd_yield(void);
|
||||
static inline int mtx_trylock(mtx_t *mtx);
|
||||
static inline int mtx_lock(mtx_t *mtx);
|
||||
static inline int mtx_unlock(mtx_t *mtx);
|
||||
|
||||
/*
|
||||
Implementation limits:
|
||||
- Conditionally emulation for "Initialization functions"
|
||||
(see EMULATED_THREADS_USE_NATIVE_CALL_ONCE macro)
|
||||
- Emulated `mtx_timelock()' with mtx_trylock() + *busy loop*
|
||||
*/
|
||||
static void impl_tss_dtor_invoke(void); // forward decl.
|
||||
|
||||
struct impl_thrd_param {
|
||||
thrd_start_t func;
|
||||
void *arg;
|
||||
};
|
||||
|
||||
static unsigned __stdcall impl_thrd_routine(void *p)
|
||||
{
|
||||
struct impl_thrd_param pack;
|
||||
int code;
|
||||
memcpy(&pack, p, sizeof(struct impl_thrd_param));
|
||||
free(p);
|
||||
code = pack.func(pack.arg);
|
||||
impl_tss_dtor_invoke();
|
||||
return (unsigned)code;
|
||||
}
|
||||
|
||||
static DWORD impl_xtime2msec(const xtime *xt)
|
||||
{
|
||||
return (DWORD)((xt->sec * 1000U) + (xt->nsec / 1000000L));
|
||||
}
|
||||
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
struct impl_call_once_param { void (*func)(void); };
|
||||
static BOOL CALLBACK impl_call_once_callback(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context)
|
||||
{
|
||||
struct impl_call_once_param *param = (struct impl_call_once_param*)Parameter;
|
||||
(param->func)();
|
||||
((void)InitOnce); ((void)Context); // suppress warning
|
||||
return TRUE;
|
||||
}
|
||||
#endif // ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
|
||||
#ifndef EMULATED_THREADS_USE_NATIVE_CV
|
||||
/*
|
||||
Note:
|
||||
The implementation of condition variable is ported from Boost.Interprocess
|
||||
See http://www.boost.org/boost/interprocess/sync/windows/condition.hpp
|
||||
*/
|
||||
static void impl_cond_do_signal(cnd_t *cond, int broadcast)
|
||||
{
|
||||
int nsignal = 0;
|
||||
|
||||
EnterCriticalSection(&cond->monitor);
|
||||
if (cond->to_unblock != 0) {
|
||||
if (cond->blocked == 0) {
|
||||
LeaveCriticalSection(&cond->monitor);
|
||||
return;
|
||||
}
|
||||
if (broadcast) {
|
||||
cond->to_unblock += nsignal = cond->blocked;
|
||||
cond->blocked = 0;
|
||||
} else {
|
||||
nsignal = 1;
|
||||
cond->to_unblock++;
|
||||
cond->blocked--;
|
||||
}
|
||||
} else if (cond->blocked > cond->gone) {
|
||||
WaitForSingleObject(cond->sem_gate, INFINITE);
|
||||
if (cond->gone != 0) {
|
||||
cond->blocked -= cond->gone;
|
||||
cond->gone = 0;
|
||||
}
|
||||
if (broadcast) {
|
||||
nsignal = cond->to_unblock = cond->blocked;
|
||||
cond->blocked = 0;
|
||||
} else {
|
||||
nsignal = cond->to_unblock = 1;
|
||||
cond->blocked--;
|
||||
}
|
||||
}
|
||||
LeaveCriticalSection(&cond->monitor);
|
||||
|
||||
if (0 < nsignal)
|
||||
ReleaseSemaphore(cond->sem_queue, nsignal, NULL);
|
||||
}
|
||||
|
||||
static int impl_cond_do_wait(cnd_t *cond, mtx_t *mtx, const xtime *xt)
|
||||
{
|
||||
int nleft = 0;
|
||||
int ngone = 0;
|
||||
int timeout = 0;
|
||||
DWORD w;
|
||||
|
||||
WaitForSingleObject(cond->sem_gate, INFINITE);
|
||||
cond->blocked++;
|
||||
ReleaseSemaphore(cond->sem_gate, 1, NULL);
|
||||
|
||||
mtx_unlock(mtx);
|
||||
|
||||
w = WaitForSingleObject(cond->sem_queue, xt ? impl_xtime2msec(xt) : INFINITE);
|
||||
timeout = (w == WAIT_TIMEOUT);
|
||||
|
||||
EnterCriticalSection(&cond->monitor);
|
||||
if ((nleft = cond->to_unblock) != 0) {
|
||||
if (timeout) {
|
||||
if (cond->blocked != 0) {
|
||||
cond->blocked--;
|
||||
} else {
|
||||
cond->gone++;
|
||||
}
|
||||
}
|
||||
if (--cond->to_unblock == 0) {
|
||||
if (cond->blocked != 0) {
|
||||
ReleaseSemaphore(cond->sem_gate, 1, NULL);
|
||||
nleft = 0;
|
||||
}
|
||||
else if ((ngone = cond->gone) != 0) {
|
||||
cond->gone = 0;
|
||||
}
|
||||
}
|
||||
} else if (++cond->gone == INT_MAX/2) {
|
||||
WaitForSingleObject(cond->sem_gate, INFINITE);
|
||||
cond->blocked -= cond->gone;
|
||||
ReleaseSemaphore(cond->sem_gate, 1, NULL);
|
||||
cond->gone = 0;
|
||||
}
|
||||
LeaveCriticalSection(&cond->monitor);
|
||||
|
||||
if (nleft == 1) {
|
||||
while (ngone--)
|
||||
WaitForSingleObject(cond->sem_queue, INFINITE);
|
||||
ReleaseSemaphore(cond->sem_gate, 1, NULL);
|
||||
}
|
||||
|
||||
mtx_lock(mtx);
|
||||
return timeout ? thrd_busy : thrd_success;
|
||||
}
|
||||
#endif // ifndef EMULATED_THREADS_USE_NATIVE_CV
|
||||
|
||||
static struct impl_tss_dtor_entry {
|
||||
tss_t key;
|
||||
tss_dtor_t dtor;
|
||||
} impl_tss_dtor_tbl[EMULATED_THREADS_TSS_DTOR_SLOTNUM];
|
||||
|
||||
static int impl_tss_dtor_register(tss_t key, tss_dtor_t dtor)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < EMULATED_THREADS_TSS_DTOR_SLOTNUM; i++) {
|
||||
if (!impl_tss_dtor_tbl[i].dtor)
|
||||
break;
|
||||
}
|
||||
if (i == EMULATED_THREADS_TSS_DTOR_SLOTNUM)
|
||||
return 1;
|
||||
impl_tss_dtor_tbl[i].key = key;
|
||||
impl_tss_dtor_tbl[i].dtor = dtor;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void impl_tss_dtor_invoke()
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < EMULATED_THREADS_TSS_DTOR_SLOTNUM; i++) {
|
||||
if (impl_tss_dtor_tbl[i].dtor) {
|
||||
void* val = tss_get(impl_tss_dtor_tbl[i].key);
|
||||
if (val)
|
||||
(impl_tss_dtor_tbl[i].dtor)(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*--------------- 7.25.2 Initialization functions ---------------*/
|
||||
// 7.25.2.1
|
||||
static inline void
|
||||
call_once(once_flag *flag, void (*func)(void))
|
||||
{
|
||||
assert(!flag && !func);
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CALL_ONCE
|
||||
{
|
||||
struct impl_call_once_param param;
|
||||
param.func = func;
|
||||
InitOnceExecuteOnce(flag, impl_call_once_callback, (PVOID)¶m, NULL);
|
||||
}
|
||||
#else
|
||||
if (InterlockedCompareExchange(&flag->status, 1, 0) == 0) {
|
||||
(func)();
|
||||
InterlockedExchange(&flag->status, 2);
|
||||
} else {
|
||||
while (flag->status == 1) {
|
||||
// busy loop!
|
||||
thrd_yield();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*------------- 7.25.3 Condition variable functions -------------*/
|
||||
// 7.25.3.1
|
||||
static inline int
|
||||
cnd_broadcast(cnd_t *cond)
|
||||
{
|
||||
if (!cond) return thrd_error;
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
WakeAllConditionVariable(&cond->condvar);
|
||||
#else
|
||||
impl_cond_do_signal(cond, 1);
|
||||
#endif
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.3.2
|
||||
static inline void
|
||||
cnd_destroy(cnd_t *cond)
|
||||
{
|
||||
assert(cond);
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
// do nothing
|
||||
#else
|
||||
CloseHandle(cond->sem_queue);
|
||||
CloseHandle(cond->sem_gate);
|
||||
DeleteCriticalSection(&cond->monitor);
|
||||
#endif
|
||||
}
|
||||
|
||||
// 7.25.3.3
|
||||
static inline int
|
||||
cnd_init(cnd_t *cond)
|
||||
{
|
||||
if (!cond) return thrd_error;
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
InitializeConditionVariable(&cond->condvar);
|
||||
#else
|
||||
cond->blocked = 0;
|
||||
cond->gone = 0;
|
||||
cond->to_unblock = 0;
|
||||
cond->sem_queue = CreateSemaphore(NULL, 0, LONG_MAX, NULL);
|
||||
cond->sem_gate = CreateSemaphore(NULL, 1, 1, NULL);
|
||||
InitializeCriticalSection(&cond->monitor);
|
||||
#endif
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.3.4
|
||||
static inline int
|
||||
cnd_signal(cnd_t *cond)
|
||||
{
|
||||
if (!cond) return thrd_error;
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
WakeConditionVariable(&cond->condvar);
|
||||
#else
|
||||
impl_cond_do_signal(cond, 0);
|
||||
#endif
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.3.5
|
||||
static inline int
|
||||
cnd_timedwait(cnd_t *cond, mtx_t *mtx, const xtime *xt)
|
||||
{
|
||||
if (!cond || !mtx || !xt) return thrd_error;
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
if (SleepConditionVariableCS(&cond->condvar, mtx, impl_xtime2msec(xt)))
|
||||
return thrd_success;
|
||||
return (GetLastError() == ERROR_TIMEOUT) ? thrd_busy : thrd_error;
|
||||
#else
|
||||
return impl_cond_do_wait(cond, mtx, xt);
|
||||
#endif
|
||||
}
|
||||
|
||||
// 7.25.3.6
|
||||
static inline int
|
||||
cnd_wait(cnd_t *cond, mtx_t *mtx)
|
||||
{
|
||||
if (!cond || !mtx) return thrd_error;
|
||||
#ifdef EMULATED_THREADS_USE_NATIVE_CV
|
||||
SleepConditionVariableCS(&cond->condvar, mtx, INFINITE);
|
||||
#else
|
||||
impl_cond_do_wait(cond, mtx, NULL);
|
||||
#endif
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------- 7.25.4 Mutex functions --------------------*/
|
||||
// 7.25.4.1
|
||||
static inline void
|
||||
mtx_destroy(mtx_t *mtx)
|
||||
{
|
||||
assert(mtx);
|
||||
DeleteCriticalSection(mtx);
|
||||
}
|
||||
|
||||
// 7.25.4.2
|
||||
static inline int
|
||||
mtx_init(mtx_t *mtx, int type)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
if (type != mtx_plain && type != mtx_timed && type != mtx_try
|
||||
&& type != (mtx_plain|mtx_recursive)
|
||||
&& type != (mtx_timed|mtx_recursive)
|
||||
&& type != (mtx_try|mtx_recursive))
|
||||
return thrd_error;
|
||||
InitializeCriticalSection(mtx);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.4.3
|
||||
static inline int
|
||||
mtx_lock(mtx_t *mtx)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
EnterCriticalSection(mtx);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.4.4
|
||||
static inline int
|
||||
mtx_timedlock(mtx_t *mtx, const xtime *xt)
|
||||
{
|
||||
time_t expire, now;
|
||||
if (!mtx || !xt) return thrd_error;
|
||||
expire = time(NULL);
|
||||
expire += xt->sec;
|
||||
while (mtx_trylock(mtx) != thrd_success) {
|
||||
now = time(NULL);
|
||||
if (expire < now)
|
||||
return thrd_busy;
|
||||
// busy loop!
|
||||
thrd_yield();
|
||||
}
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.4.5
|
||||
static inline int
|
||||
mtx_trylock(mtx_t *mtx)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
return TryEnterCriticalSection(mtx) ? thrd_success : thrd_busy;
|
||||
}
|
||||
|
||||
// 7.25.4.6
|
||||
static inline int
|
||||
mtx_unlock(mtx_t *mtx)
|
||||
{
|
||||
if (!mtx) return thrd_error;
|
||||
LeaveCriticalSection(mtx);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
|
||||
/*------------------- 7.25.5 Thread functions -------------------*/
|
||||
// 7.25.5.1
|
||||
static inline int
|
||||
thrd_create(thrd_t *thr, thrd_start_t func, void *arg)
|
||||
{
|
||||
struct impl_thrd_param *pack;
|
||||
uintptr_t handle;
|
||||
if (!thr) return thrd_error;
|
||||
pack = (struct impl_thrd_param *)malloc(sizeof(struct impl_thrd_param));
|
||||
if (!pack) return thrd_nomem;
|
||||
pack->func = func;
|
||||
pack->arg = arg;
|
||||
handle = _beginthreadex(NULL, 0, impl_thrd_routine, pack, 0, NULL);
|
||||
if (handle == 0) {
|
||||
if (errno == EAGAIN || errno == EACCES)
|
||||
return thrd_nomem;
|
||||
return thrd_error;
|
||||
}
|
||||
*thr = (thrd_t)handle;
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// 7.25.5.2
|
||||
static inline thrd_t
|
||||
thrd_current(void)
|
||||
{
|
||||
HANDLE hCurrentThread;
|
||||
BOOL bRet;
|
||||
|
||||
/* GetCurrentThread() returns a pseudo-handle, which is useless. We need
|
||||
* to call DuplicateHandle to get a real handle. However the handle value
|
||||
* will not match the one returned by thread_create.
|
||||
*
|
||||
* Other potential solutions would be:
|
||||
* - define thrd_t as a thread Ids, but this would mean we'd need to OpenThread for many operations
|
||||
* - use malloc'ed memory for thrd_t. This would imply using TLS for current thread.
|
||||
*
|
||||
* Neither is particularly nice.
|
||||
*
|
||||
* Life would be much easier if C11 threads had different abstractions for
|
||||
* threads and thread IDs, just like C++11 threads does...
|
||||
*/
|
||||
|
||||
bRet = DuplicateHandle(GetCurrentProcess(), // source process (pseudo) handle
|
||||
GetCurrentThread(), // source (pseudo) handle
|
||||
GetCurrentProcess(), // target process
|
||||
&hCurrentThread, // target handle
|
||||
0,
|
||||
FALSE,
|
||||
DUPLICATE_SAME_ACCESS);
|
||||
assert(bRet);
|
||||
if (!bRet) {
|
||||
hCurrentThread = GetCurrentThread();
|
||||
}
|
||||
return hCurrentThread;
|
||||
}
|
||||
#endif
|
||||
|
||||
// 7.25.5.3
|
||||
static inline int
|
||||
thrd_detach(thrd_t thr)
|
||||
{
|
||||
CloseHandle(thr);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.5.4
|
||||
static inline int
|
||||
thrd_equal(thrd_t thr0, thrd_t thr1)
|
||||
{
|
||||
return GetThreadId(thr0) == GetThreadId(thr1);
|
||||
}
|
||||
|
||||
// 7.25.5.5
|
||||
static inline void
|
||||
thrd_exit(int res)
|
||||
{
|
||||
impl_tss_dtor_invoke();
|
||||
_endthreadex((unsigned)res);
|
||||
}
|
||||
|
||||
// 7.25.5.6
|
||||
static inline int
|
||||
thrd_join(thrd_t thr, int *res)
|
||||
{
|
||||
DWORD w, code;
|
||||
w = WaitForSingleObject(thr, INFINITE);
|
||||
if (w != WAIT_OBJECT_0)
|
||||
return thrd_error;
|
||||
if (res) {
|
||||
if (!GetExitCodeThread(thr, &code)) {
|
||||
CloseHandle(thr);
|
||||
return thrd_error;
|
||||
}
|
||||
*res = (int)code;
|
||||
}
|
||||
CloseHandle(thr);
|
||||
return thrd_success;
|
||||
}
|
||||
|
||||
// 7.25.5.7
|
||||
static inline void
|
||||
thrd_sleep(const xtime *xt)
|
||||
{
|
||||
assert(xt);
|
||||
Sleep(impl_xtime2msec(xt));
|
||||
}
|
||||
|
||||
// 7.25.5.8
|
||||
static inline void
|
||||
thrd_yield(void)
|
||||
{
|
||||
SwitchToThread();
|
||||
}
|
||||
|
||||
|
||||
/*----------- 7.25.6 Thread-specific storage functions -----------*/
|
||||
// 7.25.6.1
|
||||
static inline int
|
||||
tss_create(tss_t *key, tss_dtor_t dtor)
|
||||
{
|
||||
if (!key) return thrd_error;
|
||||
*key = TlsAlloc();
|
||||
if (dtor) {
|
||||
if (impl_tss_dtor_register(*key, dtor)) {
|
||||
TlsFree(*key);
|
||||
return thrd_error;
|
||||
}
|
||||
}
|
||||
return (*key != 0xFFFFFFFF) ? thrd_success : thrd_error;
|
||||
}
|
||||
|
||||
// 7.25.6.2
|
||||
static inline void
|
||||
tss_delete(tss_t key)
|
||||
{
|
||||
TlsFree(key);
|
||||
}
|
||||
|
||||
// 7.25.6.3
|
||||
static inline void *
|
||||
tss_get(tss_t key)
|
||||
{
|
||||
return TlsGetValue(key);
|
||||
}
|
||||
|
||||
// 7.25.6.4
|
||||
static inline int
|
||||
tss_set(tss_t key, void *val)
|
||||
{
|
||||
return TlsSetValue(key, val) ? thrd_success : thrd_error;
|
||||
}
|
||||
|
||||
|
||||
/*-------------------- 7.25.7 Time functions --------------------*/
|
||||
// 7.25.6.1
|
||||
static inline int
|
||||
xtime_get(xtime *xt, int base)
|
||||
{
|
||||
if (!xt) return 0;
|
||||
if (base == TIME_UTC) {
|
||||
xt->sec = time(NULL);
|
||||
xt->nsec = 0;
|
||||
return base;
|
||||
}
|
||||
return 0;
|
||||
}
|
@@ -91,3 +91,23 @@ CHIPSET(0x0F32, byt, "Intel(R) Bay Trail")
|
||||
CHIPSET(0x0F33, byt, "Intel(R) Bay Trail")
|
||||
CHIPSET(0x0157, byt, "Intel(R) Bay Trail")
|
||||
CHIPSET(0x0155, byt, "Intel(R) Bay Trail")
|
||||
#ifdef INTEL_PRELIMINARY_HW_SUPPORT
|
||||
CHIPSET(0x1602, bdw_gt1, "Intel(R) Broadwell")
|
||||
CHIPSET(0x1606, bdw_gt1, "Intel(R) Broadwell")
|
||||
CHIPSET(0x160A, bdw_gt1, "Intel(R) Broadwell")
|
||||
CHIPSET(0x160B, bdw_gt1, "Intel(R) Broadwell")
|
||||
CHIPSET(0x160D, bdw_gt1, "Intel(R) Broadwell")
|
||||
CHIPSET(0x160E, bdw_gt1, "Intel(R) Broadwell")
|
||||
CHIPSET(0x1612, bdw_gt2, "Intel(R) Broadwell")
|
||||
CHIPSET(0x1616, bdw_gt2, "Intel(R) Broadwell")
|
||||
CHIPSET(0x161A, bdw_gt2, "Intel(R) Broadwell")
|
||||
CHIPSET(0x161B, bdw_gt2, "Intel(R) Broadwell")
|
||||
CHIPSET(0x161D, bdw_gt2, "Intel(R) Broadwell")
|
||||
CHIPSET(0x161E, bdw_gt2, "Intel(R) Broadwell")
|
||||
CHIPSET(0x1622, bdw_gt3, "Intel(R) Broadwell")
|
||||
CHIPSET(0x1626, bdw_gt3, "Intel(R) Broadwell")
|
||||
CHIPSET(0x162A, bdw_gt3, "Intel(R) Broadwell")
|
||||
CHIPSET(0x162B, bdw_gt3, "Intel(R) Broadwell")
|
||||
CHIPSET(0x162D, bdw_gt3, "Intel(R) Broadwell")
|
||||
CHIPSET(0x162E, bdw_gt3, "Intel(R) Broadwell")
|
||||
#endif
|
||||
|
@@ -208,7 +208,7 @@ CHIPSET(0x9644, SUMO2_9644, SUMO2)
|
||||
CHIPSET(0x9645, SUMO2_9645, SUMO2)
|
||||
CHIPSET(0x9647, SUMO_9647, SUMO)
|
||||
CHIPSET(0x9648, SUMO_9648, SUMO)
|
||||
CHIPSET(0x9649, SUMO_9649, SUMO)
|
||||
CHIPSET(0x9649, SUMO2_9649, SUMO2)
|
||||
CHIPSET(0x964a, SUMO_964A, SUMO)
|
||||
CHIPSET(0x964b, SUMO_964B, SUMO)
|
||||
CHIPSET(0x964c, SUMO_964C, SUMO)
|
||||
|
@@ -118,3 +118,16 @@ CHIPSET(0x1317, KAVERI_1317, KAVERI)
|
||||
CHIPSET(0x131B, KAVERI_131B, KAVERI)
|
||||
CHIPSET(0x131C, KAVERI_131C, KAVERI)
|
||||
CHIPSET(0x131D, KAVERI_131D, KAVERI)
|
||||
|
||||
CHIPSET(0x67A0, HAWAII_67A0, HAWAII)
|
||||
CHIPSET(0x67A1, HAWAII_67A1, HAWAII)
|
||||
CHIPSET(0x67A2, HAWAII_67A2, HAWAII)
|
||||
CHIPSET(0x67A8, HAWAII_67A8, HAWAII)
|
||||
CHIPSET(0x67A9, HAWAII_67A9, HAWAII)
|
||||
CHIPSET(0x67AA, HAWAII_67AA, HAWAII)
|
||||
CHIPSET(0x67B0, HAWAII_67B0, HAWAII)
|
||||
CHIPSET(0x67B1, HAWAII_67B1, HAWAII)
|
||||
CHIPSET(0x67B8, HAWAII_67B8, HAWAII)
|
||||
CHIPSET(0x67B9, HAWAII_67B9, HAWAII)
|
||||
CHIPSET(0x67BA, HAWAII_67BA, HAWAII)
|
||||
CHIPSET(0x67BE, HAWAII_67BE, HAWAII)
|
||||
|
14
install-lib-links.mk
Normal file
14
install-lib-links.mk
Normal file
@@ -0,0 +1,14 @@
|
||||
# Provide compatibility with scripts for the old Mesa build system for
|
||||
# a while by putting a link to the driver into /lib of the build tree.
|
||||
|
||||
all-local : .libs/install-mesa-links
|
||||
|
||||
.libs/install-mesa-links : $(lib_LTLIBRARIES)
|
||||
$(MKDIR_P) $(top_builddir)/$(LIB_DIR)
|
||||
for f in $(lib_LTLIBRARIES:%.la=.libs/%.so*); do \
|
||||
if test -h .libs/$$f; then \
|
||||
cp -d $$f $(top_builddir)/$(LIB_DIR); \
|
||||
else \
|
||||
ln -f $$f $(top_builddir)/$(LIB_DIR); \
|
||||
fi; \
|
||||
done && touch $@
|
72
m4/ax_check_compile_flag.m4
Normal file
72
m4/ax_check_compile_flag.m4
Normal file
@@ -0,0 +1,72 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
@@ -5,7 +5,7 @@ Custom builders and methods.
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
# Copyright 2008 VMware, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -23,7 +23,7 @@ Custom builders and methods.
|
||||
# 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 NON-INFRINGEMENT.
|
||||
# IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
# IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
|
||||
|
@@ -5,7 +5,7 @@ Frontend-tool for Gallium3D architecture.
|
||||
"""
|
||||
|
||||
#
|
||||
# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
# Copyright 2008 VMware, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -23,7 +23,7 @@ Frontend-tool for Gallium3D architecture.
|
||||
# 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 NON-INFRINGEMENT.
|
||||
# IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||
# IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
|
||||
@@ -269,6 +269,11 @@ def generate(env):
|
||||
cppdefines += ['HAVE_ALIAS']
|
||||
else:
|
||||
cppdefines += ['GLX_ALIAS_UNSUPPORTED']
|
||||
if env['platform'] == 'haiku':
|
||||
cppdefines += [
|
||||
'HAVE_PTHREAD',
|
||||
'HAVE_POSIX_MEMALIGN'
|
||||
]
|
||||
if platform == 'windows':
|
||||
cppdefines += [
|
||||
'WIN32',
|
||||
|
@@ -202,6 +202,8 @@ def generate(env):
|
||||
|
||||
env.ParseConfig('llvm-config --libs ' + ' '.join(components))
|
||||
env.ParseConfig('llvm-config --ldflags')
|
||||
if llvm_version >= distutils.version.LooseVersion('3.5'):
|
||||
env.ParseConfig('llvm-config --system-libs')
|
||||
except OSError:
|
||||
print 'scons: llvm-config version %s failed' % llvm_version
|
||||
return
|
||||
|
@@ -19,7 +19,7 @@
|
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
# IN THE SOFTWARE.
|
||||
|
||||
SUBDIRS = gtest mapi
|
||||
SUBDIRS = gtest loader mapi
|
||||
|
||||
if NEED_OPENGL_COMMON
|
||||
SUBDIRS += glsl mesa
|
||||
|
@@ -11,6 +11,7 @@ if env['hostonly']:
|
||||
# compilation
|
||||
Return()
|
||||
|
||||
SConscript('loader/SConscript')
|
||||
|
||||
# When env['gles'] is set, the targets defined in mapi/glapi/SConscript are not
|
||||
# used. libgl-xlib and libgl-gdi adapt themselves to use the targets defined
|
||||
@@ -18,6 +19,11 @@ if env['hostonly']:
|
||||
# enable OpenGL ES support.
|
||||
SConscript('mapi/glapi/gen/SConscript')
|
||||
SConscript('mapi/glapi/SConscript')
|
||||
|
||||
# Haiku C++ libGL dispatch (renderers depend on libgl)
|
||||
if env['platform'] in ['haiku']:
|
||||
SConscript('hgl/SConscript')
|
||||
|
||||
SConscript('mesa/SConscript')
|
||||
|
||||
SConscript('mapi/vgapi/SConscript')
|
||||
|
@@ -39,9 +39,12 @@ LOCAL_CFLAGS := \
|
||||
LOCAL_C_INCLUDES := \
|
||||
$(MESA_TOP)/src/mapi \
|
||||
$(MESA_TOP)/src/egl/main \
|
||||
$(DRM_GRALLOC_TOP) \
|
||||
$(DRM_TOP) \
|
||||
$(DRM_TOP)/include/drm
|
||||
$(MESA_TOP)/src/loader \
|
||||
$(DRM_TOP)/include/drm \
|
||||
$(DRM_GRALLOC_TOP)
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libloader
|
||||
|
||||
LOCAL_MODULE := libmesa_egl_dri2
|
||||
|
||||
|
@@ -22,6 +22,7 @@
|
||||
AM_CFLAGS = \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/src/egl/main \
|
||||
-I$(top_srcdir)/src/loader \
|
||||
-I$(top_srcdir)/src/gbm/main \
|
||||
-I$(top_srcdir)/src/gbm/backends/dri \
|
||||
-I$(top_srcdir)/src/egl/wayland/wayland-egl \
|
||||
@@ -37,10 +38,10 @@ AM_CFLAGS = \
|
||||
noinst_LTLIBRARIES = libegl_dri2.la
|
||||
|
||||
libegl_dri2_la_SOURCES = \
|
||||
egl_dri2.c \
|
||||
common.c
|
||||
egl_dri2.c
|
||||
|
||||
libegl_dri2_la_LIBADD = \
|
||||
$(top_builddir)/src/loader/libloader.la \
|
||||
$(EGL_LIB_DEPS)
|
||||
|
||||
if HAVE_SHARED_GLAPI
|
||||
|
@@ -1,144 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2011 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Authors:
|
||||
* Kristian Høgsberg <krh@bitplanet.net>
|
||||
* Benjamin Franzke <benjaminfranzke@googlemail.com>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "egl_dri2.h"
|
||||
|
||||
#ifdef HAVE_LIBUDEV
|
||||
|
||||
#define DRIVER_MAP_DRI2_ONLY
|
||||
#include "pci_ids/pci_id_driver_map.h"
|
||||
|
||||
#include <libudev.h>
|
||||
|
||||
static struct udev_device *
|
||||
dri2_udev_device_new_from_fd(struct udev *udev, int fd)
|
||||
{
|
||||
struct udev_device *device;
|
||||
struct stat buf;
|
||||
|
||||
if (fstat(fd, &buf) < 0) {
|
||||
_eglLog(_EGL_WARNING, "EGL-DRI2: failed to stat fd %d", fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
device = udev_device_new_from_devnum(udev, 'c', buf.st_rdev);
|
||||
if (device == NULL) {
|
||||
_eglLog(_EGL_WARNING,
|
||||
"EGL-DRI2: could not create udev device for fd %d", fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
char *
|
||||
dri2_get_device_name_for_fd(int fd)
|
||||
{
|
||||
struct udev *udev;
|
||||
struct udev_device *device;
|
||||
const char *const_device_name;
|
||||
char *device_name = NULL;
|
||||
|
||||
udev = udev_new();
|
||||
device = dri2_udev_device_new_from_fd(udev, fd);
|
||||
if (device == NULL)
|
||||
return NULL;
|
||||
|
||||
const_device_name = udev_device_get_devnode(device);
|
||||
if (!const_device_name)
|
||||
goto out;
|
||||
device_name = strdup(const_device_name);
|
||||
|
||||
out:
|
||||
udev_device_unref(device);
|
||||
udev_unref(udev);
|
||||
|
||||
return device_name;
|
||||
}
|
||||
|
||||
char *
|
||||
dri2_get_driver_for_fd(int fd)
|
||||
{
|
||||
struct udev *udev;
|
||||
struct udev_device *device, *parent;
|
||||
const char *pci_id;
|
||||
char *driver = NULL;
|
||||
int vendor_id, chip_id, i, j;
|
||||
|
||||
udev = udev_new();
|
||||
device = dri2_udev_device_new_from_fd(udev, fd);
|
||||
if (device == NULL)
|
||||
return NULL;
|
||||
|
||||
parent = udev_device_get_parent(device);
|
||||
if (parent == NULL) {
|
||||
_eglLog(_EGL_WARNING, "DRI2: could not get parent device");
|
||||
goto out;
|
||||
}
|
||||
|
||||
pci_id = udev_device_get_property_value(parent, "PCI_ID");
|
||||
if (pci_id == NULL ||
|
||||
sscanf(pci_id, "%x:%x", &vendor_id, &chip_id) != 2) {
|
||||
_eglLog(_EGL_WARNING, "EGL-DRI2: malformed or no PCI ID");
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (i = 0; driver_map[i].driver; i++) {
|
||||
if (vendor_id != driver_map[i].vendor_id)
|
||||
continue;
|
||||
if (driver_map[i].num_chips_ids == -1) {
|
||||
driver = strdup(driver_map[i].driver);
|
||||
_eglLog(_EGL_DEBUG, "pci id for %d: %04x:%04x, driver %s",
|
||||
fd, vendor_id, chip_id, driver);
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (j = 0; j < driver_map[i].num_chips_ids; j++)
|
||||
if (driver_map[i].chip_ids[j] == chip_id) {
|
||||
driver = strdup(driver_map[i].driver);
|
||||
_eglLog(_EGL_DEBUG, "pci id for %d: %04x:%04x, driver %s",
|
||||
fd, vendor_id, chip_id, driver);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
udev_device_unref(device);
|
||||
udev_unref(udev);
|
||||
|
||||
return driver;
|
||||
}
|
||||
|
||||
#endif /* HAVE_LIBUDEV */
|
@@ -33,8 +33,10 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
#include <xf86drm.h>
|
||||
#include <drm_fourcc.h>
|
||||
#endif
|
||||
#include <GL/gl.h>
|
||||
#include <GL/internal/dri_interface.h>
|
||||
#include <sys/types.h>
|
||||
@@ -401,6 +403,9 @@ dri2_open_driver(_EGLDisplay *disp)
|
||||
if (dri2_dpy->driver == NULL)
|
||||
_eglLog(_EGL_DEBUG, "failed to open %s: %s\n", path, dlerror());
|
||||
}
|
||||
/* not need continue to loop all paths once the driver is found */
|
||||
if (dri2_dpy->driver != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dri2_dpy->driver == NULL) {
|
||||
@@ -520,10 +525,12 @@ dri2_setup_screen(_EGLDisplay *disp)
|
||||
disp->Extensions.KHR_gl_texture_2D_image = EGL_TRUE;
|
||||
disp->Extensions.KHR_gl_texture_cubemap_image = EGL_TRUE;
|
||||
}
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
if (dri2_dpy->image->base.version >= 8 &&
|
||||
dri2_dpy->image->createImageFromDmaBufs) {
|
||||
disp->Extensions.EXT_image_dma_buf_import = EGL_TRUE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -619,7 +626,6 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
return dri2_initialize_x11(drv, disp);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBUDEV
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
case _EGL_PLATFORM_DRM:
|
||||
if (disp->Options.TestOnly)
|
||||
@@ -632,7 +638,6 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
return EGL_TRUE;
|
||||
return dri2_initialize_wayland(drv, disp);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAVE_ANDROID_PLATFORM
|
||||
case _EGL_PLATFORM_ANDROID:
|
||||
if (disp->Options.TestOnly)
|
||||
@@ -1158,6 +1163,7 @@ dri2_create_image_khr_renderbuffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
return dri2_create_image(disp, dri_image);
|
||||
}
|
||||
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
static _EGLImage *
|
||||
dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
EGLClientBuffer buffer, const EGLint *attr_list)
|
||||
@@ -1202,6 +1208,7 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
|
||||
return dri2_create_image(disp, dri_image);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
|
||||
@@ -1375,6 +1382,7 @@ dri2_create_image_khr_texture(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
return &dri2_img->base;
|
||||
}
|
||||
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
static EGLBoolean
|
||||
dri2_check_dma_buf_attribs(const _EGLImageAttribs *attrs)
|
||||
{
|
||||
@@ -1629,6 +1637,7 @@ dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
|
||||
_EGLImage *
|
||||
dri2_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
@@ -1648,14 +1657,18 @@ dri2_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
return dri2_create_image_khr_texture(disp, ctx, target, buffer, attr_list);
|
||||
case EGL_GL_RENDERBUFFER_KHR:
|
||||
return dri2_create_image_khr_renderbuffer(disp, ctx, buffer, attr_list);
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
case EGL_DRM_BUFFER_MESA:
|
||||
return dri2_create_image_mesa_drm_buffer(disp, ctx, buffer, attr_list);
|
||||
#endif
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
case EGL_WAYLAND_BUFFER_WL:
|
||||
return dri2_create_image_wayland_wl_buffer(disp, ctx, buffer, attr_list);
|
||||
#endif
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
case EGL_LINUX_DMA_BUF_EXT:
|
||||
return dri2_create_image_dma_buf(disp, ctx, buffer, attr_list);
|
||||
#endif
|
||||
default:
|
||||
_eglError(EGL_BAD_PARAMETER, "dri2_create_image_khr");
|
||||
return EGL_NO_IMAGE_KHR;
|
||||
@@ -1676,6 +1689,7 @@ dri2_destroy_image_khr(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *image)
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
static _EGLImage *
|
||||
dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
const EGLint *attr_list)
|
||||
@@ -1786,6 +1800,7 @@ dri2_export_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *img,
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
|
||||
@@ -1877,10 +1892,12 @@ dri2_bind_wayland_display_wl(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
if (!dri2_dpy->wl_server_drm)
|
||||
return EGL_FALSE;
|
||||
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
/* We have to share the wl_drm instance with gbm, so gbm can convert
|
||||
* wl_buffers to gbm bos. */
|
||||
if (dri2_dpy->gbm_dri)
|
||||
dri2_dpy->gbm_dri->wl_drm = dri2_dpy->wl_server_drm;
|
||||
#endif
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
@@ -2020,8 +2037,10 @@ _eglBuiltInDriverDRI2(const char *args)
|
||||
dri2_drv->base.API.ReleaseTexImage = dri2_release_tex_image;
|
||||
dri2_drv->base.API.CreateImageKHR = dri2_create_image_khr;
|
||||
dri2_drv->base.API.DestroyImageKHR = dri2_destroy_image_khr;
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
dri2_drv->base.API.CreateDRMImageMESA = dri2_create_drm_image_mesa;
|
||||
dri2_drv->base.API.ExportDRMImageMESA = dri2_export_drm_image_mesa;
|
||||
#endif
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
dri2_drv->base.API.BindWaylandDisplayWL = dri2_bind_wayland_display_wl;
|
||||
dri2_drv->base.API.UnbindWaylandDisplayWL = dri2_unbind_wayland_display_wl;
|
||||
|
@@ -117,7 +117,7 @@ struct dri2_egl_display
|
||||
|
||||
__DRIdri2LoaderExtension dri2_loader_extension;
|
||||
__DRIswrastLoaderExtension swrast_loader_extension;
|
||||
const __DRIextension *extensions[4];
|
||||
const __DRIextension *extensions[5];
|
||||
const __DRIextension **driver_extensions;
|
||||
|
||||
#ifdef HAVE_X11_PLATFORM
|
||||
@@ -160,7 +160,6 @@ struct dri2_egl_surface
|
||||
__DRIbuffer buffers[5];
|
||||
int buffer_count;
|
||||
int have_fake_front;
|
||||
int swap_interval;
|
||||
|
||||
#ifdef HAVE_X11_PLATFORM
|
||||
xcb_drawable_t drawable;
|
||||
@@ -175,7 +174,7 @@ struct dri2_egl_surface
|
||||
struct wl_egl_window *wl_win;
|
||||
int dx;
|
||||
int dy;
|
||||
struct wl_callback *frame_callback;
|
||||
struct wl_callback *throttle_callback;
|
||||
int format;
|
||||
#endif
|
||||
|
||||
@@ -189,14 +188,13 @@ struct dri2_egl_surface
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
struct wl_buffer *wl_buffer;
|
||||
__DRIimage *dri_image;
|
||||
int pitch, name;
|
||||
#endif
|
||||
#ifdef HAVE_DRM_PLATFORM
|
||||
struct gbm_bo *bo;
|
||||
#endif
|
||||
int locked;
|
||||
int age;
|
||||
} color_buffers[3], *back, *current;
|
||||
} color_buffers[4], *back, *current;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ANDROID_PLATFORM
|
||||
@@ -222,6 +220,12 @@ struct dri2_egl_image
|
||||
__DRIimage *dri_image;
|
||||
};
|
||||
|
||||
/* From xmlpool/options.h, user exposed so should be stable */
|
||||
#define DRI_CONF_VBLANK_NEVER 0
|
||||
#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1
|
||||
#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2
|
||||
#define DRI_CONF_VBLANK_ALWAYS_SYNC 3
|
||||
|
||||
/* standard typecasts */
|
||||
_EGL_DRIVER_STANDARD_TYPECASTS(dri2_egl)
|
||||
_EGL_DRIVER_TYPECAST(dri2_egl_image, _EGLImage, obj)
|
||||
@@ -267,9 +271,4 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp);
|
||||
EGLBoolean
|
||||
dri2_initialize_android(_EGLDriver *drv, _EGLDisplay *disp);
|
||||
|
||||
char *
|
||||
dri2_get_driver_for_fd(int fd);
|
||||
char *
|
||||
dri2_get_device_name_for_fd(int fd);
|
||||
|
||||
#endif /* EGL_DRI2_INCLUDED */
|
||||
|
@@ -34,11 +34,7 @@
|
||||
#include <sync/sync.h>
|
||||
#endif
|
||||
|
||||
/* for droid_get_pci_id */
|
||||
#include <xf86drm.h>
|
||||
#include <i915_drm.h>
|
||||
#include <radeon_drm.h>
|
||||
|
||||
#include "loader.h"
|
||||
#include "egl_dri2.h"
|
||||
#include "gralloc_drm.h"
|
||||
|
||||
@@ -602,103 +598,6 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
return (count != 0);
|
||||
}
|
||||
|
||||
static EGLBoolean
|
||||
droid_get_pci_id(int fd, int *vendor_id, int *chip_id)
|
||||
{
|
||||
drmVersionPtr version;
|
||||
|
||||
*chip_id = -1;
|
||||
|
||||
version = drmGetVersion(fd);
|
||||
if (!version) {
|
||||
_eglLog(_EGL_WARNING, "invalid drm fd");
|
||||
return EGL_FALSE;
|
||||
}
|
||||
if (!version->name) {
|
||||
_eglLog(_EGL_WARNING, "unable to determine the driver name");
|
||||
drmFreeVersion(version);
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
if (strcmp(version->name, "i915") == 0) {
|
||||
struct drm_i915_getparam gp;
|
||||
int ret;
|
||||
|
||||
*vendor_id = 0x8086;
|
||||
|
||||
memset(&gp, 0, sizeof(gp));
|
||||
gp.param = I915_PARAM_CHIPSET_ID;
|
||||
gp.value = chip_id;
|
||||
ret = drmCommandWriteRead(fd, DRM_I915_GETPARAM, &gp, sizeof(gp));
|
||||
if (ret) {
|
||||
_eglLog(_EGL_WARNING, "failed to get param for i915");
|
||||
*chip_id = -1;
|
||||
}
|
||||
}
|
||||
else if (strcmp(version->name, "radeon") == 0) {
|
||||
struct drm_radeon_info info;
|
||||
int ret;
|
||||
|
||||
*vendor_id = 0x1002;
|
||||
|
||||
memset(&info, 0, sizeof(info));
|
||||
info.request = RADEON_INFO_DEVICE_ID;
|
||||
info.value = (unsigned long) chip_id;
|
||||
ret = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
|
||||
if (ret) {
|
||||
_eglLog(_EGL_WARNING, "failed to get info for radeon");
|
||||
*chip_id = -1;
|
||||
}
|
||||
}
|
||||
else if (strcmp(version->name, "nouveau") == 0) {
|
||||
*vendor_id = 0x10de;
|
||||
/* not used */
|
||||
*chip_id = 0;
|
||||
}
|
||||
else if (strcmp(version->name, "vmwgfx") == 0) {
|
||||
*vendor_id = 0x15ad;
|
||||
/* assume SVGA II */
|
||||
*chip_id = 0x0405;
|
||||
}
|
||||
|
||||
drmFreeVersion(version);
|
||||
|
||||
return (*chip_id >= 0);
|
||||
}
|
||||
|
||||
#define DRIVER_MAP_DRI2_ONLY
|
||||
#include "pci_ids/pci_id_driver_map.h"
|
||||
static const char *
|
||||
droid_get_driver_name(int fd)
|
||||
{
|
||||
int vendor_id = -1, chip_id = -1;
|
||||
int idx, i;
|
||||
char *name;
|
||||
|
||||
if (!droid_get_pci_id(fd, &vendor_id, &chip_id))
|
||||
return NULL;
|
||||
|
||||
for (idx = 0; driver_map[idx].driver; idx++) {
|
||||
if (vendor_id != driver_map[idx].vendor_id)
|
||||
continue;
|
||||
|
||||
if (driver_map[idx].num_chips_ids == -1)
|
||||
break;
|
||||
|
||||
for (i = 0; i < driver_map[idx].num_chips_ids; i++) {
|
||||
if (driver_map[idx].chip_ids[i] == chip_id)
|
||||
break;
|
||||
}
|
||||
if (i < driver_map[idx].num_chips_ids)
|
||||
break;
|
||||
}
|
||||
|
||||
_eglLog(_EGL_INFO, "pci id for fd %d: %04x:%04x, driver %s",
|
||||
fd, vendor_id, chip_id, driver_map[idx].driver);
|
||||
|
||||
return driver_map[idx].driver;
|
||||
}
|
||||
|
||||
static int
|
||||
droid_open_device(void)
|
||||
{
|
||||
@@ -761,6 +660,8 @@ dri2_initialize_android(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
|
||||
_eglSetLogProc(droid_log);
|
||||
|
||||
loader_set_logger(_eglLog);
|
||||
|
||||
dri2_dpy = calloc(1, sizeof(*dri2_dpy));
|
||||
if (!dri2_dpy)
|
||||
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
|
||||
@@ -773,7 +674,7 @@ dri2_initialize_android(_EGLDriver *drv, _EGLDisplay *dpy)
|
||||
goto cleanup_display;
|
||||
}
|
||||
|
||||
dri2_dpy->driver_name = (char *) droid_get_driver_name(dri2_dpy->fd);
|
||||
dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd, 0);
|
||||
if (dri2_dpy->driver_name == NULL) {
|
||||
err = "DRI2: failed to get driver name";
|
||||
goto cleanup_device;
|
||||
|
@@ -36,6 +36,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include "egl_dri2.h"
|
||||
#include "loader.h"
|
||||
|
||||
static struct gbm_bo *
|
||||
lock_front_buffer(struct gbm_surface *_surf)
|
||||
@@ -175,13 +176,12 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
|
||||
}
|
||||
|
||||
static int
|
||||
get_back_bo(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
get_back_bo(struct dri2_egl_surface *dri2_surf)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
struct gbm_dri_bo *bo;
|
||||
struct gbm_dri_surface *surf = dri2_surf->gbm_surf;
|
||||
int i, name, pitch;
|
||||
int i;
|
||||
|
||||
if (dri2_surf->back == NULL) {
|
||||
for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
|
||||
@@ -201,6 +201,17 @@ get_back_bo(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
if (dri2_surf->back->bo == NULL)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
back_bo_to_dri_buffer(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
struct gbm_dri_bo *bo;
|
||||
int name, pitch;
|
||||
|
||||
bo = (struct gbm_dri_bo *) dri2_surf->back->bo;
|
||||
|
||||
dri2_dpy->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_NAME, &name);
|
||||
@@ -211,8 +222,6 @@ get_back_bo(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
buffer->pitch = pitch;
|
||||
buffer->cpp = 4;
|
||||
buffer->flags = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -254,10 +263,11 @@ dri2_get_buffers_with_format(__DRIdrawable *driDrawable,
|
||||
|
||||
switch (attachments[i]) {
|
||||
case __DRI_BUFFER_BACK_LEFT:
|
||||
if (get_back_bo(dri2_surf, &dri2_surf->buffers[j]) < 0) {
|
||||
if (get_back_bo(dri2_surf) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "failed to allocate color buffer");
|
||||
return NULL;
|
||||
}
|
||||
back_bo_to_dri_buffer(dri2_surf, &dri2_surf->buffers[j]);
|
||||
break;
|
||||
default:
|
||||
if (get_aux_bo(dri2_surf, attachments[i], attachments[i + 1],
|
||||
@@ -312,6 +322,27 @@ dri2_get_buffers(__DRIdrawable * driDrawable,
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static int
|
||||
dri_image_get_buffers(__DRIdrawable *driDrawable,
|
||||
unsigned int format,
|
||||
uint32_t *stamp,
|
||||
void *loaderPrivate,
|
||||
uint32_t buffer_mask,
|
||||
struct __DRIimageList *buffers)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = loaderPrivate;
|
||||
struct gbm_dri_bo *bo;
|
||||
|
||||
if (get_back_bo(dri2_surf) < 0)
|
||||
return 0;
|
||||
|
||||
bo = (struct gbm_dri_bo *) dri2_surf->back->bo;
|
||||
buffers->image_mask = __DRI_IMAGE_BUFFER_BACK;
|
||||
buffers->back = bo->image;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
dri2_flush_front_buffer(__DRIdrawable * driDrawable, void *loaderPrivate)
|
||||
{
|
||||
@@ -348,9 +379,8 @@ dri2_query_buffer_age(_EGLDriver *drv,
|
||||
_EGLDisplay *disp, _EGLSurface *surface)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surface);
|
||||
__DRIbuffer buffer;
|
||||
|
||||
if (get_back_bo(dri2_surf, &buffer) < 0) {
|
||||
if (get_back_bo(dri2_surf) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "dri2_query_buffer_age");
|
||||
return 0;
|
||||
}
|
||||
@@ -418,6 +448,8 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
int fd = -1;
|
||||
int i;
|
||||
|
||||
loader_set_logger(_eglLog);
|
||||
|
||||
dri2_dpy = calloc(1, sizeof *dri2_dpy);
|
||||
if (!dri2_dpy)
|
||||
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
|
||||
@@ -426,7 +458,12 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
|
||||
gbm = disp->PlatformDisplay;
|
||||
if (gbm == NULL) {
|
||||
fd = open("/dev/dri/card0", O_RDWR);
|
||||
char buf[64];
|
||||
int n = snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, 0);
|
||||
if (n != -1 && n < sizeof(buf))
|
||||
fd = open(buf, O_RDWR);
|
||||
if (fd < 0)
|
||||
fd = open("/dev/dri/card0", O_RDWR);
|
||||
dri2_dpy->own_device = 1;
|
||||
gbm = gbm_create_device(fd);
|
||||
if (gbm == NULL)
|
||||
@@ -453,7 +490,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
}
|
||||
|
||||
dri2_dpy->fd = fd;
|
||||
dri2_dpy->device_name = dri2_get_device_name_for_fd(dri2_dpy->fd);
|
||||
dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd);
|
||||
dri2_dpy->driver_name = dri2_dpy->gbm_dri->base.driver_name;
|
||||
|
||||
dri2_dpy->dri_screen = dri2_dpy->gbm_dri->screen;
|
||||
@@ -469,6 +506,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
dri2_dpy->gbm_dri->get_buffers = dri2_get_buffers;
|
||||
dri2_dpy->gbm_dri->flush_front_buffer = dri2_flush_front_buffer;
|
||||
dri2_dpy->gbm_dri->get_buffers_with_format = dri2_get_buffers_with_format;
|
||||
dri2_dpy->gbm_dri->image_get_buffers = dri_image_get_buffers;
|
||||
|
||||
dri2_dpy->gbm_dri->base.base.surface_lock_front_buffer = lock_front_buffer;
|
||||
dri2_dpy->gbm_dri->base.base.surface_release_buffer = release_buffer;
|
||||
|
@@ -36,6 +36,7 @@
|
||||
#include <xf86drm.h>
|
||||
|
||||
#include "egl_dri2.h"
|
||||
#include "loader.h"
|
||||
|
||||
#include <wayland-client.h>
|
||||
#include "wayland-drm-client-protocol.h"
|
||||
@@ -183,8 +184,16 @@ dri2_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
_EGLConfig *conf, EGLNativeWindowType window,
|
||||
const EGLint *attrib_list)
|
||||
{
|
||||
return dri2_create_surface(drv, disp, EGL_WINDOW_BIT, conf,
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
_EGLSurface *surf;
|
||||
|
||||
surf = dri2_create_surface(drv, disp, EGL_WINDOW_BIT, conf,
|
||||
window, attrib_list);
|
||||
|
||||
if (surf != NULL)
|
||||
drv->API.SwapInterval(drv, disp, surf, dri2_dpy->default_swap_interval);
|
||||
|
||||
return surf;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -217,8 +226,8 @@ dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf)
|
||||
dri2_dpy->dri2->releaseBuffer(dri2_dpy->dri_screen,
|
||||
dri2_surf->dri_buffers[i]);
|
||||
|
||||
if (dri2_surf->frame_callback)
|
||||
wl_callback_destroy(dri2_surf->frame_callback);
|
||||
if (dri2_surf->throttle_callback)
|
||||
wl_callback_destroy(dri2_surf->throttle_callback);
|
||||
|
||||
if (dri2_surf->base.Type == EGL_WINDOW_BIT) {
|
||||
dri2_surf->wl_win->private = NULL;
|
||||
@@ -257,26 +266,31 @@ dri2_release_buffers(struct dri2_egl_surface *dri2_surf)
|
||||
}
|
||||
|
||||
static int
|
||||
get_back_bo(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
get_back_bo(struct dri2_egl_surface *dri2_surf)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
__DRIimage *image;
|
||||
int i, name, pitch;
|
||||
int i;
|
||||
|
||||
/* There might be a buffer release already queued that wasn't processed */
|
||||
wl_display_dispatch_queue_pending(dri2_dpy->wl_dpy, dri2_dpy->wl_queue);
|
||||
/* We always want to throttle to some event (either a frame callback or
|
||||
* a sync request) after the commit so that we can be sure the
|
||||
* compositor has had a chance to handle it and send us a release event
|
||||
* before we look for a free buffer */
|
||||
while (dri2_surf->throttle_callback != NULL)
|
||||
if (wl_display_dispatch_queue(dri2_dpy->wl_dpy,
|
||||
dri2_dpy->wl_queue) == -1)
|
||||
return -1;
|
||||
|
||||
if (dri2_surf->back == NULL) {
|
||||
for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
|
||||
/* Get an unlocked buffer, preferrably one with a dri_buffer already
|
||||
* allocated. */
|
||||
if (dri2_surf->color_buffers[i].locked)
|
||||
/* Get an unlocked buffer, preferrably one with a dri_buffer
|
||||
* already allocated. */
|
||||
if (dri2_surf->color_buffers[i].locked)
|
||||
continue;
|
||||
if (dri2_surf->back == NULL)
|
||||
dri2_surf->back = &dri2_surf->color_buffers[i];
|
||||
dri2_surf->back = &dri2_surf->color_buffers[i];
|
||||
else if (dri2_surf->back->dri_image == NULL)
|
||||
dri2_surf->back = &dri2_surf->color_buffers[i];
|
||||
dri2_surf->back = &dri2_surf->color_buffers[i];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,23 +309,30 @@ get_back_bo(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
if (dri2_surf->back->dri_image == NULL)
|
||||
return -1;
|
||||
|
||||
dri2_surf->back->locked = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
back_bo_to_dri_buffer(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
__DRIimage *image;
|
||||
int name, pitch;
|
||||
|
||||
image = dri2_surf->back->dri_image;
|
||||
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_NAME, &name);
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_STRIDE, &pitch);
|
||||
|
||||
dri2_surf->back->name = name;
|
||||
dri2_surf->back->pitch = pitch;
|
||||
|
||||
buffer->attachment = __DRI_BUFFER_BACK_LEFT;
|
||||
buffer->name = name;
|
||||
buffer->pitch = pitch;
|
||||
buffer->cpp = 4;
|
||||
buffer->flags = 0;
|
||||
|
||||
dri2_surf->back->locked = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -337,16 +358,12 @@ get_aux_bo(struct dri2_egl_surface *dri2_surf,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __DRIbuffer *
|
||||
dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
int *width, int *height,
|
||||
unsigned int *attachments, int count,
|
||||
int *out_count, void *loaderPrivate)
|
||||
static int
|
||||
update_buffers(struct dri2_egl_surface *dri2_surf)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = loaderPrivate;
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
int i, j;
|
||||
int i;
|
||||
|
||||
if (dri2_surf->base.Type == EGL_WINDOW_BIT &&
|
||||
(dri2_surf->base.Width != dri2_surf->wl_win->width ||
|
||||
@@ -360,22 +377,9 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
dri2_surf->dy = dri2_surf->wl_win->dy;
|
||||
}
|
||||
|
||||
for (i = 0, j = 0; i < 2 * count; i += 2, j++) {
|
||||
switch (attachments[i]) {
|
||||
case __DRI_BUFFER_BACK_LEFT:
|
||||
if (get_back_bo(dri2_surf, &dri2_surf->buffers[j]) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "failed to allocate color buffer");
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (get_aux_bo(dri2_surf, attachments[i], attachments[i + 1],
|
||||
&dri2_surf->buffers[j]) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "failed to allocate aux buffer");
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (get_back_bo(dri2_surf) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "failed to allocate color buffer");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* If we have an extra unlocked buffer at this point, we had to do triple
|
||||
@@ -391,6 +395,36 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __DRIbuffer *
|
||||
dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
|
||||
int *width, int *height,
|
||||
unsigned int *attachments, int count,
|
||||
int *out_count, void *loaderPrivate)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = loaderPrivate;
|
||||
int i, j;
|
||||
|
||||
if (update_buffers(dri2_surf) < 0)
|
||||
return NULL;
|
||||
|
||||
for (i = 0, j = 0; i < 2 * count; i += 2, j++) {
|
||||
switch (attachments[i]) {
|
||||
case __DRI_BUFFER_BACK_LEFT:
|
||||
back_bo_to_dri_buffer(dri2_surf, &dri2_surf->buffers[j]);
|
||||
break;
|
||||
default:
|
||||
if (get_aux_bo(dri2_surf, attachments[i], attachments[i + 1],
|
||||
&dri2_surf->buffers[j]) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "failed to allocate aux buffer");
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
*out_count = j;
|
||||
if (j == 0)
|
||||
return NULL;
|
||||
@@ -434,6 +468,25 @@ dri2_get_buffers(__DRIdrawable * driDrawable,
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static int
|
||||
image_get_buffers(__DRIdrawable *driDrawable,
|
||||
unsigned int format,
|
||||
uint32_t *stamp,
|
||||
void *loaderPrivate,
|
||||
uint32_t buffer_mask,
|
||||
struct __DRIimageList *buffers)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = loaderPrivate;
|
||||
|
||||
if (update_buffers(dri2_surf) < 0)
|
||||
return 0;
|
||||
|
||||
buffers->image_mask = __DRI_IMAGE_BUFFER_BACK;
|
||||
buffers->back = dri2_surf->back->dri_image;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
dri2_flush_front_buffer(__DRIdrawable * driDrawable, void *loaderPrivate)
|
||||
{
|
||||
@@ -441,17 +494,25 @@ dri2_flush_front_buffer(__DRIdrawable * driDrawable, void *loaderPrivate)
|
||||
(void) loaderPrivate;
|
||||
}
|
||||
|
||||
static const __DRIimageLoaderExtension image_loader_extension = {
|
||||
{ __DRI_IMAGE_LOADER, 1 },
|
||||
image_get_buffers,
|
||||
dri2_flush_front_buffer
|
||||
};
|
||||
|
||||
static void
|
||||
wayland_frame_callback(void *data, struct wl_callback *callback, uint32_t time)
|
||||
wayland_throttle_callback(void *data,
|
||||
struct wl_callback *callback,
|
||||
uint32_t time)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = data;
|
||||
|
||||
dri2_surf->frame_callback = NULL;
|
||||
dri2_surf->throttle_callback = NULL;
|
||||
wl_callback_destroy(callback);
|
||||
}
|
||||
|
||||
static const struct wl_callback_listener frame_listener = {
|
||||
wayland_frame_callback
|
||||
static const struct wl_callback_listener throttle_listener = {
|
||||
wayland_throttle_callback
|
||||
};
|
||||
|
||||
static void
|
||||
@@ -459,7 +520,7 @@ create_wl_buffer(struct dri2_egl_surface *dri2_surf)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy =
|
||||
dri2_egl_display(dri2_surf->base.Resource.Display);
|
||||
int fd;
|
||||
int fd, stride, name;
|
||||
|
||||
if (dri2_surf->current->wl_buffer != NULL)
|
||||
return;
|
||||
@@ -467,6 +528,8 @@ create_wl_buffer(struct dri2_egl_surface *dri2_surf)
|
||||
if (dri2_dpy->capabilities & WL_DRM_CAPABILITY_PRIME) {
|
||||
dri2_dpy->image->queryImage(dri2_surf->current->dri_image,
|
||||
__DRI_IMAGE_ATTRIB_FD, &fd);
|
||||
dri2_dpy->image->queryImage(dri2_surf->current->dri_image,
|
||||
__DRI_IMAGE_ATTRIB_STRIDE, &stride);
|
||||
|
||||
dri2_surf->current->wl_buffer =
|
||||
wl_drm_create_prime_buffer(dri2_dpy->wl_drm,
|
||||
@@ -474,17 +537,22 @@ create_wl_buffer(struct dri2_egl_surface *dri2_surf)
|
||||
dri2_surf->base.Width,
|
||||
dri2_surf->base.Height,
|
||||
dri2_surf->format,
|
||||
0, dri2_surf->current->pitch,
|
||||
0, stride,
|
||||
0, 0,
|
||||
0, 0);
|
||||
close(fd);
|
||||
} else {
|
||||
dri2_dpy->image->queryImage(dri2_surf->current->dri_image,
|
||||
__DRI_IMAGE_ATTRIB_NAME, &name);
|
||||
dri2_dpy->image->queryImage(dri2_surf->current->dri_image,
|
||||
__DRI_IMAGE_ATTRIB_STRIDE, &stride);
|
||||
|
||||
dri2_surf->current->wl_buffer =
|
||||
wl_drm_create_buffer(dri2_dpy->wl_drm,
|
||||
dri2_surf->current->name,
|
||||
name,
|
||||
dri2_surf->base.Width,
|
||||
dri2_surf->base.Height,
|
||||
dri2_surf->current->pitch,
|
||||
stride,
|
||||
dri2_surf->format);
|
||||
}
|
||||
|
||||
@@ -506,19 +574,9 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv,
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
|
||||
__DRIbuffer buffer;
|
||||
int i, ret = 0;
|
||||
|
||||
while (dri2_surf->frame_callback && ret != -1)
|
||||
ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, dri2_dpy->wl_queue);
|
||||
if (ret < 0)
|
||||
return EGL_FALSE;
|
||||
|
||||
dri2_surf->frame_callback = wl_surface_frame(dri2_surf->wl_win->surface);
|
||||
wl_callback_add_listener(dri2_surf->frame_callback,
|
||||
&frame_listener, dri2_surf);
|
||||
wl_proxy_set_queue((struct wl_proxy *) dri2_surf->frame_callback,
|
||||
dri2_dpy->wl_queue);
|
||||
struct dri2_egl_context *dri2_ctx;
|
||||
_EGLContext *ctx;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++)
|
||||
if (dri2_surf->color_buffers[i].age > 0)
|
||||
@@ -526,11 +584,20 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv,
|
||||
|
||||
/* Make sure we have a back buffer in case we're swapping without ever
|
||||
* rendering. */
|
||||
if (get_back_bo(dri2_surf, &buffer) < 0) {
|
||||
if (get_back_bo(dri2_surf) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "dri2_swap_buffers");
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
if (draw->SwapInterval > 0) {
|
||||
dri2_surf->throttle_callback =
|
||||
wl_surface_frame(dri2_surf->wl_win->surface);
|
||||
wl_callback_add_listener(dri2_surf->throttle_callback,
|
||||
&throttle_listener, dri2_surf);
|
||||
wl_proxy_set_queue((struct wl_proxy *) dri2_surf->throttle_callback,
|
||||
dri2_dpy->wl_queue);
|
||||
}
|
||||
|
||||
dri2_surf->back->age = 1;
|
||||
dri2_surf->current = dri2_surf->back;
|
||||
dri2_surf->back = NULL;
|
||||
@@ -548,8 +615,8 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv,
|
||||
dri2_surf->dy = 0;
|
||||
|
||||
if (n_rects == 0) {
|
||||
wl_surface_damage(dri2_surf->wl_win->surface, 0, 0,
|
||||
dri2_surf->base.Width, dri2_surf->base.Height);
|
||||
wl_surface_damage(dri2_surf->wl_win->surface,
|
||||
0, 0, INT32_MAX, INT32_MAX);
|
||||
} else {
|
||||
for (i = 0; i < n_rects; i++) {
|
||||
const int *rect = &rects[i * 4];
|
||||
@@ -560,10 +627,34 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv,
|
||||
}
|
||||
}
|
||||
|
||||
if (dri2_dpy->flush->base.version >= 4) {
|
||||
ctx = _eglGetCurrentContext();
|
||||
dri2_ctx = dri2_egl_context(ctx);
|
||||
(*dri2_dpy->flush->flush_with_flags)(dri2_ctx->dri_context,
|
||||
dri2_surf->dri_drawable,
|
||||
__DRI2_FLUSH_DRAWABLE,
|
||||
__DRI2_THROTTLE_SWAPBUFFER);
|
||||
} else {
|
||||
(*dri2_dpy->flush->flush)(dri2_surf->dri_drawable);
|
||||
}
|
||||
|
||||
(*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable);
|
||||
|
||||
wl_surface_commit(dri2_surf->wl_win->surface);
|
||||
|
||||
(*dri2_dpy->flush->flush)(dri2_surf->dri_drawable);
|
||||
(*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable);
|
||||
/* If we're not waiting for a frame callback then we'll at least throttle
|
||||
* to a sync callback so that we always give a chance for the compositor to
|
||||
* handle the commit and send a release event before checking for a free
|
||||
* buffer */
|
||||
if (dri2_surf->throttle_callback == NULL) {
|
||||
dri2_surf->throttle_callback = wl_display_sync(dri2_dpy->wl_dpy);
|
||||
wl_callback_add_listener(dri2_surf->throttle_callback,
|
||||
&throttle_listener, dri2_surf);
|
||||
wl_proxy_set_queue((struct wl_proxy *) dri2_surf->throttle_callback,
|
||||
dri2_dpy->wl_queue);
|
||||
}
|
||||
|
||||
wl_display_flush(dri2_dpy->wl_dpy);
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
@@ -573,9 +664,8 @@ dri2_query_buffer_age(_EGLDriver *drv,
|
||||
_EGLDisplay *disp, _EGLSurface *surface)
|
||||
{
|
||||
struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surface);
|
||||
__DRIbuffer buffer;
|
||||
|
||||
if (get_back_bo(dri2_surf, &buffer) < 0) {
|
||||
if (get_back_bo(dri2_surf) < 0) {
|
||||
_eglError(EGL_BAD_ALLOC, "dri2_query_buffer_age");
|
||||
return 0;
|
||||
}
|
||||
@@ -589,6 +679,81 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
|
||||
return dri2_swap_buffers_with_damage (drv, disp, draw, NULL, 0);
|
||||
}
|
||||
|
||||
static struct wl_buffer *
|
||||
dri2_create_wayland_buffer_from_image_wl(_EGLDriver *drv,
|
||||
_EGLDisplay *disp,
|
||||
_EGLImage *img)
|
||||
{
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
struct dri2_egl_image *dri2_img = dri2_egl_image(img);
|
||||
__DRIimage *image = dri2_img->dri_image;
|
||||
struct wl_buffer *buffer;
|
||||
int width, height, format, pitch;
|
||||
enum wl_drm_format wl_format;
|
||||
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FORMAT, &format);
|
||||
|
||||
switch (format) {
|
||||
case __DRI_IMAGE_FORMAT_ARGB8888:
|
||||
if (!(dri2_dpy->formats & HAS_ARGB8888))
|
||||
goto bad_format;
|
||||
wl_format = WL_DRM_FORMAT_ARGB8888;
|
||||
break;
|
||||
case __DRI_IMAGE_FORMAT_XRGB8888:
|
||||
if (!(dri2_dpy->formats & HAS_XRGB8888))
|
||||
goto bad_format;
|
||||
wl_format = WL_DRM_FORMAT_XRGB8888;
|
||||
break;
|
||||
default:
|
||||
goto bad_format;
|
||||
}
|
||||
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_WIDTH, &width);
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_HEIGHT, &height);
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_STRIDE, &pitch);
|
||||
|
||||
if (dri2_dpy->capabilities & WL_DRM_CAPABILITY_PRIME) {
|
||||
int fd;
|
||||
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FD, &fd);
|
||||
|
||||
buffer =
|
||||
wl_drm_create_prime_buffer(dri2_dpy->wl_drm,
|
||||
fd,
|
||||
width, height,
|
||||
wl_format,
|
||||
0, pitch,
|
||||
0, 0,
|
||||
0, 0);
|
||||
|
||||
close(fd);
|
||||
} else {
|
||||
int name;
|
||||
|
||||
dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_NAME, &name);
|
||||
|
||||
buffer =
|
||||
wl_drm_create_buffer(dri2_dpy->wl_drm,
|
||||
name,
|
||||
width, height,
|
||||
pitch,
|
||||
wl_format);
|
||||
}
|
||||
|
||||
/* The buffer object will have been created with our internal event queue
|
||||
* because it is using the wl_drm object as a proxy factory. We want the
|
||||
* buffer to be used by the application so we'll reset it to the display's
|
||||
* default event queue */
|
||||
if (buffer)
|
||||
wl_proxy_set_queue((struct wl_proxy *) buffer, NULL);
|
||||
|
||||
return buffer;
|
||||
|
||||
bad_format:
|
||||
_eglError(EGL_BAD_MATCH, "unsupported image format");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
dri2_wayland_authenticate(_EGLDisplay *disp, uint32_t id)
|
||||
{
|
||||
@@ -732,6 +897,60 @@ static const struct wl_registry_listener registry_listener = {
|
||||
registry_handle_global_remove
|
||||
};
|
||||
|
||||
static EGLBoolean
|
||||
dri2_swap_interval(_EGLDriver *drv,
|
||||
_EGLDisplay *disp,
|
||||
_EGLSurface *surf,
|
||||
EGLint interval)
|
||||
{
|
||||
if (interval > surf->Config->MaxSwapInterval)
|
||||
interval = surf->Config->MaxSwapInterval;
|
||||
else if (interval < surf->Config->MinSwapInterval)
|
||||
interval = surf->Config->MinSwapInterval;
|
||||
|
||||
surf->SwapInterval = interval;
|
||||
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
dri2_setup_swap_interval(struct dri2_egl_display *dri2_dpy)
|
||||
{
|
||||
GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
|
||||
|
||||
/* We can't use values greater than 1 on Wayland because we are using the
|
||||
* frame callback to synchronise the frame and the only way we be sure to
|
||||
* get a frame callback is to attach a new buffer. Therefore we can't just
|
||||
* sit drawing nothing to wait until the next ‘n’ frame callbacks */
|
||||
|
||||
if (dri2_dpy->config)
|
||||
dri2_dpy->config->configQueryi(dri2_dpy->dri_screen,
|
||||
"vblank_mode", &vblank_mode);
|
||||
switch (vblank_mode) {
|
||||
case DRI_CONF_VBLANK_NEVER:
|
||||
dri2_dpy->min_swap_interval = 0;
|
||||
dri2_dpy->max_swap_interval = 0;
|
||||
dri2_dpy->default_swap_interval = 0;
|
||||
break;
|
||||
case DRI_CONF_VBLANK_ALWAYS_SYNC:
|
||||
dri2_dpy->min_swap_interval = 1;
|
||||
dri2_dpy->max_swap_interval = 1;
|
||||
dri2_dpy->default_swap_interval = 1;
|
||||
break;
|
||||
case DRI_CONF_VBLANK_DEF_INTERVAL_0:
|
||||
dri2_dpy->min_swap_interval = 0;
|
||||
dri2_dpy->max_swap_interval = 1;
|
||||
dri2_dpy->default_swap_interval = 0;
|
||||
break;
|
||||
default:
|
||||
case DRI_CONF_VBLANK_DEF_INTERVAL_1:
|
||||
dri2_dpy->min_swap_interval = 0;
|
||||
dri2_dpy->max_swap_interval = 1;
|
||||
dri2_dpy->default_swap_interval = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EGLBoolean
|
||||
dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
{
|
||||
@@ -744,13 +963,19 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
static const unsigned int rgb_masks[4] = { 0xff0000, 0xff00, 0xff, 0 };
|
||||
static const unsigned int rgb565_masks[4] = { 0xf800, 0x07e0, 0x001f, 0 };
|
||||
|
||||
loader_set_logger(_eglLog);
|
||||
|
||||
drv->API.CreateWindowSurface = dri2_create_window_surface;
|
||||
drv->API.DestroySurface = dri2_destroy_surface;
|
||||
drv->API.SwapBuffers = dri2_swap_buffers;
|
||||
drv->API.SwapBuffersWithDamageEXT = dri2_swap_buffers_with_damage;
|
||||
drv->API.SwapInterval = dri2_swap_interval;
|
||||
drv->API.Terminate = dri2_terminate;
|
||||
drv->API.QueryBufferAge = dri2_query_buffer_age;
|
||||
|
||||
drv->API.CreateWaylandBufferFromImageWL =
|
||||
dri2_create_wayland_buffer_from_image_wl;
|
||||
|
||||
dri2_dpy = calloc(1, sizeof *dri2_dpy);
|
||||
if (!dri2_dpy)
|
||||
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
|
||||
@@ -784,7 +1009,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
if (roundtrip(dri2_dpy) < 0 || !dri2_dpy->authenticated)
|
||||
goto cleanup_fd;
|
||||
|
||||
dri2_dpy->driver_name = dri2_get_driver_for_fd(dri2_dpy->fd);
|
||||
dri2_dpy->driver_name = loader_get_driver_for_fd(dri2_dpy->fd, 0);
|
||||
if (dri2_dpy->driver_name == NULL) {
|
||||
_eglError(EGL_BAD_ALLOC, "DRI2: failed to get driver name");
|
||||
goto cleanup_fd;
|
||||
@@ -799,15 +1024,20 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
dri2_dpy->dri2_loader_extension.flushFrontBuffer = dri2_flush_front_buffer;
|
||||
dri2_dpy->dri2_loader_extension.getBuffersWithFormat =
|
||||
dri2_get_buffers_with_format;
|
||||
|
||||
|
||||
dri2_dpy->extensions[0] = &dri2_dpy->dri2_loader_extension.base;
|
||||
dri2_dpy->extensions[1] = &image_lookup_extension.base;
|
||||
dri2_dpy->extensions[2] = &use_invalidate.base;
|
||||
dri2_dpy->extensions[3] = NULL;
|
||||
dri2_dpy->extensions[1] = &image_loader_extension.base;
|
||||
dri2_dpy->extensions[2] = &image_lookup_extension.base;
|
||||
dri2_dpy->extensions[3] = &use_invalidate.base;
|
||||
dri2_dpy->extensions[4] = NULL;
|
||||
|
||||
dri2_dpy->swap_available = EGL_TRUE;
|
||||
|
||||
if (!dri2_create_screen(disp))
|
||||
goto cleanup_driver;
|
||||
|
||||
dri2_setup_swap_interval(dri2_dpy);
|
||||
|
||||
/* The server shouldn't advertise WL_DRM_CAPABILITY_PRIME if the driver
|
||||
* doesn't have createImageFromFds, since we're using the same driver on
|
||||
* both sides. We don't want crash if that happens anyway, so fall back to
|
||||
@@ -815,7 +1045,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
|
||||
if (dri2_dpy->image->base.version < 7 ||
|
||||
dri2_dpy->image->createImageFromFds == NULL)
|
||||
dri2_dpy->capabilities &= WL_DRM_CAPABILITY_PRIME;
|
||||
dri2_dpy->capabilities &= ~WL_DRM_CAPABILITY_PRIME;
|
||||
|
||||
types = EGL_WINDOW_BIT;
|
||||
for (i = 0; dri2_dpy->driver_configs[i]; i++) {
|
||||
@@ -829,6 +1059,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
}
|
||||
|
||||
disp->Extensions.WL_bind_wayland_display = EGL_TRUE;
|
||||
disp->Extensions.WL_create_wayland_buffer_from_image = EGL_TRUE;
|
||||
disp->Extensions.EXT_buffer_age = EGL_TRUE;
|
||||
dri2_dpy->authenticate = dri2_wayland_authenticate;
|
||||
|
||||
|
@@ -33,18 +33,14 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#ifdef HAVE_LIBDRM
|
||||
#include <xf86drm.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "egl_dri2.h"
|
||||
|
||||
/* From xmlpool/options.h, user exposed so should be stable */
|
||||
#define DRI_CONF_VBLANK_NEVER 0
|
||||
#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1
|
||||
#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2
|
||||
#define DRI_CONF_VBLANK_ALWAYS_SYNC 3
|
||||
|
||||
static void
|
||||
swrastCreateDrawable(struct dri2_egl_display * dri2_dpy,
|
||||
struct dri2_egl_surface * dri2_surf,
|
||||
@@ -606,6 +602,7 @@ dri2_x11_authenticate(_EGLDisplay *disp, uint32_t id)
|
||||
static EGLBoolean
|
||||
dri2_authenticate(_EGLDisplay *disp)
|
||||
{
|
||||
#ifdef HAVE_LIBDRM
|
||||
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
|
||||
drm_magic_t magic;
|
||||
|
||||
@@ -618,7 +615,7 @@ dri2_authenticate(_EGLDisplay *disp)
|
||||
_eglLog(_EGL_WARNING, "DRI2: failed to authenticate");
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
@@ -1198,11 +1195,6 @@ dri2_initialize_x11_dri2(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
|
||||
dri2_setup_swap_interval(dri2_dpy);
|
||||
|
||||
if (dri2_dpy->conn) {
|
||||
if (!dri2_add_configs_for_visuals(dri2_dpy, disp))
|
||||
goto cleanup_configs;
|
||||
}
|
||||
|
||||
disp->Extensions.KHR_image_pixmap = EGL_TRUE;
|
||||
disp->Extensions.NOK_swap_region = EGL_TRUE;
|
||||
disp->Extensions.NOK_texture_from_pixmap = EGL_TRUE;
|
||||
@@ -1211,6 +1203,12 @@ dri2_initialize_x11_dri2(_EGLDriver *drv, _EGLDisplay *disp)
|
||||
#ifdef HAVE_WAYLAND_PLATFORM
|
||||
disp->Extensions.WL_bind_wayland_display = EGL_TRUE;
|
||||
#endif
|
||||
|
||||
if (dri2_dpy->conn) {
|
||||
if (!dri2_add_configs_for_visuals(dri2_dpy, disp))
|
||||
goto cleanup_configs;
|
||||
}
|
||||
|
||||
dri2_dpy->authenticate = dri2_x11_authenticate;
|
||||
|
||||
/* we're supporting EGL 1.4 */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -32,7 +32,7 @@
|
||||
* This is an EGL driver that wraps GLX. This gives the benefit of being
|
||||
* completely agnostic of the direct rendering implementation.
|
||||
*
|
||||
* Authors: Alan Hourihane <alanh@tungstengraphics.com>
|
||||
* Authors: Alan Hourihane <alanh@vmware.com>
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@@ -158,6 +158,10 @@ LOCAL_STATIC_LIBRARIES := \
|
||||
|
||||
endif # MESA_BUILD_GALLIUM
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
$(LOCAL_STATIC_LIBRARIES) \
|
||||
libloader
|
||||
|
||||
LOCAL_MODULE := libGLES_mesa
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl
|
||||
|
||||
|
@@ -112,15 +112,10 @@ if HAVE_EGL_DRIVER_DRI2
|
||||
AM_CFLAGS += -D_EGL_BUILT_IN_DRIVER_DRI2
|
||||
AM_CFLAGS += -DHAVE_XCB_DRI2
|
||||
libEGL_la_LIBADD += ../drivers/dri2/libegl_dri2.la
|
||||
libEGL_la_LIBADD += $(LIBUDEV_LIBS) $(DLOPEN_LIBS) $(LIBDRM_LIBS)
|
||||
libEGL_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS)
|
||||
endif
|
||||
|
||||
# Provide compatibility with scripts for the old Mesa build system for
|
||||
# a while by putting a link to the driver into /lib of the build tree.
|
||||
all-local: libEGL.la
|
||||
$(MKDIR_P) $(top_builddir)/$(LIB_DIR);
|
||||
ln -f .libs/libEGL.so.1.0.0 $(top_builddir)/$(LIB_DIR)/libEGL.so.1
|
||||
ln -sf libEGL.so.1 $(top_builddir)/$(LIB_DIR)/libEGL.so
|
||||
include $(top_srcdir)/install-lib-links.mk
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -87,6 +87,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "eglglobals.h"
|
||||
#include "eglcontext.h"
|
||||
#include "egldisplay.h"
|
||||
#include "egltypedefs.h"
|
||||
@@ -354,10 +355,15 @@ eglTerminate(EGLDisplay dpy)
|
||||
const char * EGLAPIENTRY
|
||||
eglQueryString(EGLDisplay dpy, EGLint name)
|
||||
{
|
||||
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||
_EGLDisplay *disp;
|
||||
_EGLDriver *drv;
|
||||
const char *ret;
|
||||
|
||||
if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) {
|
||||
RETURN_EGL_SUCCESS(NULL, _eglGlobal.ClientExtensionString);
|
||||
}
|
||||
|
||||
disp = _eglLockDisplay(dpy);
|
||||
_EGL_CHECK_DISPLAY(disp, NULL, drv);
|
||||
ret = drv->API.QueryString(drv, disp, name);
|
||||
|
||||
@@ -484,8 +490,12 @@ eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read,
|
||||
if (!context && ctx != EGL_NO_CONTEXT)
|
||||
RETURN_EGL_ERROR(disp, EGL_BAD_CONTEXT, EGL_FALSE);
|
||||
if (!draw_surf || !read_surf) {
|
||||
/* surfaces may be NULL if surfaceless */
|
||||
if (!disp->Extensions.KHR_surfaceless_context)
|
||||
/* From the EGL 1.4 (20130211) spec:
|
||||
*
|
||||
* To release the current context without assigning a new one, set ctx
|
||||
* to EGL_NO_CONTEXT and set draw and read to EGL_NO_SURFACE.
|
||||
*/
|
||||
if (!disp->Extensions.KHR_surfaceless_context && ctx != EGL_NO_CONTEXT)
|
||||
RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
|
||||
|
||||
if ((!draw_surf && draw != EGL_NO_SURFACE) ||
|
||||
@@ -966,6 +976,9 @@ eglGetProcAddress(const char *procname)
|
||||
{ "eglBindWaylandDisplayWL", (_EGLProc) eglBindWaylandDisplayWL },
|
||||
{ "eglUnbindWaylandDisplayWL", (_EGLProc) eglUnbindWaylandDisplayWL },
|
||||
{ "eglQueryWaylandBufferWL", (_EGLProc) eglQueryWaylandBufferWL },
|
||||
#endif
|
||||
#ifdef EGL_WL_create_wayland_buffer_from_image
|
||||
{ "eglCreateWaylandBufferFromImageWL", (_EGLProc) eglCreateWaylandBufferFromImageWL },
|
||||
#endif
|
||||
{ "eglPostSubBufferNV", (_EGLProc) eglPostSubBufferNV },
|
||||
#ifdef EGL_EXT_swap_buffers_with_damage
|
||||
@@ -1595,6 +1608,28 @@ eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef EGL_WL_create_wayland_buffer_from_image
|
||||
struct wl_buffer * EGLAPIENTRY
|
||||
eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, EGLImageKHR image)
|
||||
{
|
||||
_EGLDisplay *disp = _eglLockDisplay(dpy);
|
||||
_EGLImage *img;
|
||||
_EGLDriver *drv;
|
||||
struct wl_buffer *ret;
|
||||
|
||||
_EGL_CHECK_DISPLAY(disp, NULL, drv);
|
||||
assert(disp->Extensions.WL_create_wayland_buffer_from_image);
|
||||
|
||||
img = _eglLookupImage(image, disp);
|
||||
|
||||
if (!img)
|
||||
RETURN_EGL_ERROR(disp, EGL_BAD_PARAMETER, NULL);
|
||||
|
||||
ret = drv->API.CreateWaylandBufferFromImageWL(drv, disp, img);
|
||||
|
||||
RETURN_EGL_EVAL(disp, ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
EGLBoolean EGLAPIENTRY
|
||||
eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface,
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -126,6 +126,10 @@ typedef EGLBoolean (*UnbindWaylandDisplayWL_t)(_EGLDriver *drv, _EGLDisplay *dis
|
||||
typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay *displ, struct wl_resource *buffer, EGLint attribute, EGLint *value);
|
||||
#endif
|
||||
|
||||
#ifdef EGL_WL_create_wayland_buffer_from_image
|
||||
typedef struct wl_buffer * (*CreateWaylandBufferFromImageWL_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *img);
|
||||
#endif
|
||||
|
||||
typedef EGLBoolean (*PostSubBufferNV_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surface, EGLint x, EGLint y, EGLint width, EGLint height);
|
||||
|
||||
typedef EGLint (*QueryBufferAge_t)(_EGLDriver *drv,
|
||||
@@ -210,6 +214,10 @@ struct _egl_api
|
||||
QueryWaylandBufferWL_t QueryWaylandBufferWL;
|
||||
#endif
|
||||
|
||||
#ifdef EGL_WL_create_wayland_buffer_from_image
|
||||
CreateWaylandBufferFromImageWL_t CreateWaylandBufferFromImageWL;
|
||||
#endif
|
||||
|
||||
#ifdef EGL_EXT_swap_buffers_with_damage
|
||||
SwapBuffersWithDamageEXT_t SwapBuffersWithDamageEXT;
|
||||
#endif /* EGL_EXT_swap_buffers_with_damage */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
|
@@ -45,7 +45,7 @@ static _EGLThreadInfo dummy_thread = _EGL_THREAD_INFO_INITIALIZER;
|
||||
#if HAVE_PTHREAD
|
||||
#include <pthread.h>
|
||||
|
||||
static _EGL_DECLARE_MUTEX(_egl_TSDMutex);
|
||||
static _EGLMutex _egl_TSDMutex = _EGL_MUTEX_INITIALIZER;
|
||||
static EGLBoolean _egl_TSDInitialized;
|
||||
static pthread_key_t _egl_TSD;
|
||||
static void (*_egl_FreeTSD)(_EGLThreadInfo *);
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -91,6 +91,7 @@ struct _egl_extensions
|
||||
EGLBoolean MESA_drm_image;
|
||||
|
||||
EGLBoolean WL_bind_wayland_display;
|
||||
EGLBoolean WL_create_wayland_buffer_from_image;
|
||||
|
||||
EGLBoolean KHR_image_base;
|
||||
EGLBoolean KHR_image_pixmap;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -60,7 +60,7 @@ typedef struct _egl_module {
|
||||
_EGLDriver *Driver;
|
||||
} _EGLModule;
|
||||
|
||||
static _EGL_DECLARE_MUTEX(_eglModuleMutex);
|
||||
static _EGLMutex _eglModuleMutex = _EGL_MUTEX_INITIALIZER;
|
||||
static _EGLArray *_eglModules;
|
||||
|
||||
const struct {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -36,7 +36,8 @@
|
||||
#include "eglmutex.h"
|
||||
|
||||
|
||||
static _EGL_DECLARE_MUTEX(_eglGlobalMutex);
|
||||
static _EGLMutex _eglGlobalMutex = _EGL_MUTEX_INITIALIZER;
|
||||
|
||||
struct _egl_global _eglGlobal =
|
||||
{
|
||||
&_eglGlobalMutex, /* Mutex */
|
||||
@@ -47,6 +48,14 @@ struct _egl_global _eglGlobal =
|
||||
_eglUnloadDrivers, /* always called last */
|
||||
_eglFiniDisplay
|
||||
},
|
||||
|
||||
/* ClientExtensions */
|
||||
{
|
||||
true /* EGL_EXT_client_extensions */
|
||||
},
|
||||
|
||||
/* ClientExtensionsString */
|
||||
"EGL_EXT_client_extensions"
|
||||
};
|
||||
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
|
||||
* Copyright 2008 VMware, Inc.
|
||||
* Copyright 2009-2010 Chia-I Wu <olvaffe@gmail.com>
|
||||
* Copyright 2010-2011 LunarG, Inc.
|
||||
* All Rights Reserved.
|
||||
@@ -31,6 +31,7 @@
|
||||
#ifndef EGLGLOBALS_INCLUDED
|
||||
#define EGLGLOBALS_INCLUDED
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "egltypedefs.h"
|
||||
#include "eglmutex.h"
|
||||
@@ -48,6 +49,12 @@ struct _egl_global
|
||||
|
||||
EGLint NumAtExitCalls;
|
||||
void (*AtExitCalls[10])(void);
|
||||
|
||||
struct _egl_client_extensions {
|
||||
bool EXT_client_extensions;
|
||||
} ClientExtensions;
|
||||
|
||||
const char *ClientExtensionString;
|
||||
};
|
||||
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user