Compare commits
878 Commits
Glide3-64b
...
retrodebia
| Author | SHA1 | Date | |
|---|---|---|---|
| 48e1209c00 | |||
| d360e9684e | |||
| 4253416778 | |||
| a0f1117bc7 | |||
| 2fb623617d | |||
| 8c63c25d3d | |||
| 1458b8f773 | |||
| 57d57e8161 | |||
| 58692a7fd8 | |||
| 79f59f3c97 | |||
| c111f47e42 | |||
| a7ffcad6a3 | |||
| ea6b9fa72a | |||
| 272994024c | |||
| ec0b7e35b9 | |||
| 583de68697 | |||
| 1acaf93b2d | |||
| 92b702246d | |||
| c83f76c089 | |||
| 69aede93a6 | |||
| 7ba493dec6 | |||
| 53aff71bbd | |||
| 85266ef91e | |||
| 4c9d7d88f0 | |||
| 6a464b6985 | |||
| 76dd80b647 | |||
| d3b0a2617e | |||
| 8f164d5664 | |||
| c416c1b7a2 | |||
| 8d7d0b0ab9 | |||
| 2ec5dc2709 | |||
| 4816fb5893 | |||
| 4267922ec2 | |||
| a9cc616aeb | |||
| 6234780d24 | |||
| ed1812e9ce | |||
| 159f4518d5 | |||
| 578e623aad | |||
| 759ac19aff | |||
| df592b464f | |||
| 6717a618ac | |||
| 8a704cd926 | |||
| d0735d0b99 | |||
|
|
ee38094805 | ||
|
|
6e79c3d9b7 | ||
|
|
d86e089d35 | ||
|
|
7d4a1ddda1 | ||
|
|
5ba939612e | ||
|
|
85186e0206 | ||
|
|
587e01e573 | ||
|
|
a20bb982cc | ||
|
|
5ffccc63b8 | ||
|
|
c9727c8829 | ||
|
|
d254f7f28e | ||
|
|
170185784e | ||
|
|
a6ceeebd00 | ||
|
|
67ad843c88 | ||
|
|
f7bcf2ba77 | ||
|
|
5e6b39fb2b | ||
|
|
43fbe0bf3c | ||
|
|
438ac12be4 | ||
|
|
1f827a4602 | ||
|
|
acddb52685 | ||
|
|
fe35279d12 | ||
|
|
6d671089f6 | ||
|
|
1ceb326d78 | ||
|
|
9fbf8482a8 | ||
|
|
f0adaa0423 | ||
|
|
0cfcfe0e88 | ||
|
|
8522edee5c | ||
|
|
8be8bb66b5 | ||
|
|
91669cea49 | ||
|
|
305fab3650 | ||
|
|
a5e52f47f5 | ||
|
|
671cee61eb | ||
|
|
7f50068a47 | ||
|
|
ccadf5f395 | ||
|
|
1096fc0efb | ||
|
|
0e352d42c1 | ||
|
|
ee5fecf71f | ||
|
|
26c95e24f6 | ||
|
|
a0f4e5a4e6 | ||
|
|
347ccd8391 | ||
|
|
c468e627e7 | ||
|
|
426c3988a3 | ||
|
|
da8d31c9d5 | ||
|
|
50de6810a0 | ||
|
|
cd39eb5320 | ||
|
|
99ee5eec74 | ||
|
|
186bb19d28 | ||
|
|
274d0d31c2 | ||
|
|
01f2e823f7 | ||
|
|
fa2272350a | ||
|
|
4a33160a11 | ||
|
|
c93f294492 | ||
|
|
34fa903aea | ||
|
|
2a770d57d5 | ||
|
|
a7b3d9290c | ||
|
|
e2dd1b0ba0 | ||
|
|
11f9ba7f56 | ||
|
|
5db23883e9 | ||
|
|
72028096b9 | ||
|
|
ed0fb7ba52 | ||
|
|
dbcbbb1313 | ||
|
|
db8ef4d0ef | ||
|
|
575bafe6c9 | ||
|
|
e11ac4e5db | ||
|
|
0402d46e43 | ||
|
|
cec38774f4 | ||
|
|
661f489f88 | ||
|
|
c430cef2b2 | ||
|
|
4a72d2061d | ||
|
|
eb40729806 | ||
|
|
bd3e0372c1 | ||
|
|
d565bf19ef | ||
|
|
2ab9b505eb | ||
|
|
f2e22ecf56 | ||
|
|
8574e105f2 | ||
|
|
a4a70bba5b | ||
|
|
e649ca4613 | ||
|
|
64b744733d | ||
|
|
e7cc47e93e | ||
|
|
c6de03a346 | ||
|
|
40230a559e | ||
|
|
ffac0696a3 | ||
|
|
1567a193fe | ||
|
|
14c8945a32 | ||
|
|
e3612b4f58 | ||
|
|
b8c4edab9d | ||
|
|
66386d5ac4 | ||
|
|
c30be75227 | ||
|
|
7ced8d7f32 | ||
|
|
5d1a34c31c | ||
|
|
2d63cec195 | ||
|
|
4a6f09253a | ||
|
|
85ec47f22b | ||
|
|
d04deb23d6 | ||
|
|
c4b365abdf | ||
|
|
e4fc9db7db | ||
|
|
537a15a2fc | ||
|
|
46ca75c1dd | ||
|
|
36dc997a1d | ||
|
|
d2c076b8ab | ||
|
|
19c5f4e705 | ||
|
|
ee6f124929 | ||
|
|
4d29b7f47f | ||
|
|
8ee1de4bcf | ||
|
|
c8f2b9f621 | ||
|
|
c94050cb87 | ||
|
|
3e2cc50867 | ||
|
|
fa071d0a93 | ||
|
|
d39173dfd2 | ||
|
|
ccf3cc1dc9 | ||
|
|
3be55b6512 | ||
|
|
0f6ca06167 | ||
|
|
61ebabbc40 | ||
|
|
103dec9ab9 | ||
|
|
a5352b0145 | ||
|
|
34b5d19350 | ||
|
|
9ba0795fc7 | ||
|
|
e9133561f1 | ||
|
|
5ebace29f9 | ||
|
|
ece8c244f3 | ||
|
|
1488d68cff | ||
|
|
ed2350c8f0 | ||
|
|
54e3669349 | ||
|
|
ed11fcc3cc | ||
|
|
90d647cfa6 | ||
|
|
ffb144a87e | ||
|
|
415127f697 | ||
|
|
2b2d13f32e | ||
|
|
e2a15684a1 | ||
|
|
e0d29a1656 | ||
|
|
6d7be29632 | ||
|
|
16f66e6d28 | ||
|
|
377f8d78a8 | ||
|
|
9f5fb2a342 | ||
|
|
4f59670015 | ||
|
|
eb96ad7944 | ||
|
|
d13007941b | ||
|
|
bc1d8f3932 | ||
|
|
d917bb66ab | ||
|
|
5672bdf2be | ||
|
|
5c3ead43e6 | ||
|
|
6e6171b857 | ||
|
|
14b3357ab8 | ||
|
|
4e3b368794 | ||
|
|
8a425599ef | ||
|
|
8080e4a845 | ||
|
|
3a00e0af75 | ||
|
|
e42511abcc | ||
|
|
bfad389fff | ||
|
|
a23359fc29 | ||
|
|
e9384d45a3 | ||
|
|
cdd969974a | ||
|
|
eeb8c98bb9 | ||
|
|
23b0364245 | ||
|
|
62cc477a02 | ||
|
|
60d8447b98 | ||
|
|
fe99a42068 | ||
|
|
8844a3f2e7 | ||
|
|
e6797e4fd8 | ||
|
|
9d646ac504 | ||
|
|
8e9e9acbb1 | ||
|
|
1ee5e06295 | ||
|
|
a1f750e924 | ||
|
|
902edc7a66 | ||
|
|
49be990209 | ||
|
|
04bc43e39c | ||
|
|
c195d7acdc | ||
|
|
84728cbfb0 | ||
|
|
542a45b6e9 | ||
|
|
b35c0478be | ||
|
|
02a608c61c | ||
|
|
21fa4b55f0 | ||
|
|
3e461e9f67 | ||
|
|
99f02c80e6 | ||
|
|
76d8804c33 | ||
|
|
0ff42bceb5 | ||
|
|
0652ba3057 | ||
|
|
41324bf11c | ||
|
|
789be06f0f | ||
|
|
208cbf570f | ||
|
|
673403f9cf | ||
|
|
6c40713033 | ||
|
|
32b399b380 | ||
|
|
7bfd3b95f9 | ||
|
|
2a711e29fe | ||
|
|
3b522046d6 | ||
|
|
898013970a | ||
|
|
ca1e7fd506 | ||
|
|
ccbd5a7b41 | ||
|
|
c62583a3ee | ||
|
|
93dcdb9390 | ||
|
|
797d81af4a | ||
|
|
8a406cba3d | ||
|
|
da4d6857ba | ||
|
|
b6d45d842c | ||
|
|
355dca22a1 | ||
|
|
57230a2161 | ||
|
|
b594bf89aa | ||
|
|
043f38b035 | ||
|
|
f3ed63fc58 | ||
|
|
d92d50efc8 | ||
|
|
2a7cfdfec7 | ||
|
|
faf890d878 | ||
|
|
5f69e69154 | ||
|
|
6759df5ead | ||
|
|
7dbc64777a | ||
|
|
5c6e58e4e2 | ||
|
|
b5a555a538 | ||
|
|
b4c30b1693 | ||
|
|
721b6fcf1b | ||
|
|
43f6bbc977 | ||
|
|
64bae86d19 | ||
|
|
43291704cb | ||
|
|
12d926449a | ||
|
|
b62e3fd33c | ||
|
|
3c54cfde1e | ||
|
|
40ee824879 | ||
|
|
bc18c519d7 | ||
|
|
1fe48886a8 | ||
|
|
de0e7ca28f | ||
|
|
1e89ef2670 | ||
|
|
8c917cb2a2 | ||
|
|
8adf484af7 | ||
|
|
e710954c4e | ||
|
|
59d59bad72 | ||
|
|
380a78de05 | ||
|
|
42c8b28993 | ||
|
|
d6fce294b4 | ||
|
|
0aa1e159bf | ||
|
|
d6448ee662 | ||
|
|
29212e8a14 | ||
|
|
af4ebfce0c | ||
|
|
19efdba7e0 | ||
|
|
032b25b708 | ||
|
|
d46910aa23 | ||
|
|
2ee4b4f583 | ||
|
|
b33d69b0a3 | ||
|
|
1f08466bc6 | ||
|
|
30ec87871d | ||
|
|
f053d6b0cf | ||
|
|
ef5108ae49 | ||
|
|
9fee9e454d | ||
|
|
46226e7d14 | ||
|
|
383731e840 | ||
|
|
08e1e599fd | ||
|
|
4f81f1ed1b | ||
|
|
ae760389ae | ||
|
|
486276471e | ||
|
|
1a273ba12a | ||
|
|
8b047bb95c | ||
|
|
bbbb581698 | ||
|
|
cb46d5b49c | ||
|
|
8bdf368c58 | ||
|
|
720d0b125e | ||
|
|
35be4ad445 | ||
|
|
dc5f7d0065 | ||
|
|
9b83acbefd | ||
|
|
bc892aff15 | ||
|
|
16a4feb6e6 | ||
|
|
78a5774bc8 | ||
|
|
eea61facf8 | ||
|
|
dd7cb10225 | ||
|
|
e8c99cbad5 | ||
|
|
4092b17053 | ||
|
|
e6d386eb3c | ||
|
|
8448392757 | ||
|
|
c2eaa35f54 | ||
|
|
7415325040 | ||
|
|
5ca0c8b42f | ||
|
|
fdeb88fac5 | ||
|
|
14e33eb51d | ||
|
|
d257dd2bc2 | ||
|
|
371f2af8ec | ||
|
|
6a898856bb | ||
|
|
de08f2ebbf | ||
|
|
dde408cf00 | ||
|
|
76a8dc0416 | ||
|
|
4819e38cc4 | ||
|
|
4fd268232a | ||
|
|
ec57d92c97 | ||
|
|
968e385010 | ||
|
|
367a3b66c4 | ||
|
|
2c11e03776 | ||
|
|
d7086902f1 | ||
|
|
944b60eac8 | ||
|
|
9ab3c4634c | ||
|
|
d37f7b7a70 | ||
|
|
348d63fc2b | ||
|
|
cfdb4dcafe | ||
|
|
51b434999b | ||
|
|
d0db8256e4 | ||
|
|
f4f0afe53d | ||
|
|
b10938edc0 | ||
|
|
0a7f20cf1f | ||
|
|
154718fe78 | ||
|
|
858e6f7e15 | ||
|
|
ec48aba80f | ||
|
|
2832abfc79 | ||
|
|
2952168561 | ||
|
|
09fae37520 | ||
|
|
408a154309 | ||
|
|
f0f02c3383 | ||
|
|
02f96edc18 | ||
|
|
39adf6422d | ||
|
|
e46c92242b | ||
|
|
9490b841d7 | ||
|
|
e8d880e66f | ||
|
|
d6004952bd | ||
|
|
6385e41d0e | ||
|
|
95831f0553 | ||
|
|
c1791171c5 | ||
|
|
234f54da93 | ||
|
|
cb5c93a417 | ||
|
|
4f5beb723c | ||
|
|
6a4a030bb3 | ||
|
|
2bc2ada7fa | ||
|
|
18c63bcf35 | ||
|
|
ee0637513a | ||
|
|
0e30810868 | ||
|
|
7f952e5fd9 | ||
|
|
59f561890c | ||
|
|
eac64a908e | ||
|
|
04ef64970f | ||
|
|
8749e39edc | ||
|
|
9a6eac9c31 | ||
|
|
075b942975 | ||
|
|
034de08665 | ||
|
|
8756ab93d2 | ||
|
|
0d1c03ec4f | ||
|
|
4d5cadd8c8 | ||
|
|
e2a6f44d01 | ||
|
|
4fece0a55b | ||
|
|
c00327dd0a | ||
|
|
682ffd4d33 | ||
|
|
06e25214f1 | ||
|
|
9072e6d7f9 | ||
|
|
47aabade08 | ||
|
|
7bbce2ccdb | ||
|
|
57a15b8aab | ||
|
|
1f3ee6bb30 | ||
|
|
6fccc2cbdb | ||
|
|
d919a05407 | ||
|
|
b06c63abed | ||
|
|
8f254569e5 | ||
|
|
42a995335e | ||
|
|
e0fdb356a3 | ||
|
|
e4d0ae4ff1 | ||
|
|
22a95077f9 | ||
|
|
8c2fdd661a | ||
|
|
3a78ad5818 | ||
|
|
b92f14b42c | ||
|
|
3afa27274d | ||
|
|
97b9d60875 | ||
|
|
054807b1dd | ||
|
|
526262f4a6 | ||
|
|
0ee0b2add4 | ||
|
|
871c2bcf65 | ||
|
|
37d9fc555e | ||
|
|
4372942b61 | ||
|
|
acbd24bb88 | ||
|
|
a1e9017af6 | ||
|
|
1ffbd85481 | ||
|
|
9c38a603a0 | ||
|
|
b11bb573b0 | ||
|
|
019a1ff4dc | ||
|
|
fd08c9c716 | ||
|
|
1d47a8de8e | ||
|
|
6cc1fe6e7e | ||
|
|
959334ad71 | ||
|
|
910bd84cf8 | ||
|
|
00a387e94f | ||
|
|
dfd3327037 | ||
|
|
0070c1729d | ||
|
|
84cd0d554f | ||
|
|
5a517c8e2f | ||
|
|
f82d3a3a0a | ||
|
|
87f391fec1 | ||
|
|
1738b62d40 | ||
|
|
ebbc49b41b | ||
|
|
91fdbf4feb | ||
|
|
1561d5a656 | ||
|
|
d2e6e8062f | ||
|
|
c67e1e2526 | ||
|
|
fd64b6ac96 | ||
|
|
fef69dbf9a | ||
|
|
93f42cc6f8 | ||
|
|
a30877fb0f | ||
|
|
4338d7a4e9 | ||
|
|
12dbdd977a | ||
|
|
0c312424e3 | ||
|
|
23a241e1c7 | ||
|
|
87a74e1a2b | ||
|
|
759cde16ea | ||
|
|
a072e43eb1 | ||
|
|
fb1109315a | ||
|
|
6f3645a1cf | ||
|
|
8106609282 | ||
|
|
4b63afa845 | ||
|
|
dca89ecb08 | ||
|
|
5eff1f0e44 | ||
|
|
a96ecc4d15 | ||
|
|
1d189c8b84 | ||
|
|
2f942cc686 | ||
|
|
a905834f07 | ||
|
|
e2d97af291 | ||
|
|
292e2fba9c | ||
|
|
4c00987aa2 | ||
|
|
47daaa8aad | ||
|
|
4a8fdd2725 | ||
|
|
c5dff3e9da | ||
|
|
bc2d475372 | ||
|
|
9fcb0ace2a | ||
|
|
1a365fe143 | ||
|
|
7768c6150f | ||
|
|
c9e2c802f9 | ||
|
|
7e265ee0e5 | ||
|
|
8bc22af8d8 | ||
|
|
fe7ea78d17 | ||
|
|
72f246a7c9 | ||
|
|
a5eca811b3 | ||
|
|
92f8d35750 | ||
|
|
74da7049a3 | ||
|
|
881c63f226 | ||
|
|
0c01d45d7a | ||
|
|
d795e8907d | ||
|
|
eff4c4ebc5 | ||
|
|
aa932364fe | ||
|
|
2007f26c53 | ||
|
|
7df16681b6 | ||
|
|
c0ff0141d6 | ||
|
|
6d736fd608 | ||
|
|
8040c684ef | ||
|
|
f0cb59432c | ||
|
|
e8812e71bf | ||
|
|
cfbaebc615 | ||
|
|
d9fa6f7198 | ||
|
|
5414eddde4 | ||
|
|
79b31d35a4 | ||
|
|
489324c55a | ||
|
|
a04cbf9994 | ||
|
|
5958659f70 | ||
|
|
0074568397 | ||
|
|
3309cb7dd1 | ||
|
|
bcdf3a20e4 | ||
|
|
56cd565a3e | ||
|
|
8cb69ddacd | ||
|
|
ec0fb6b1f0 | ||
|
|
1b65b3fe37 | ||
|
|
65c280be54 | ||
|
|
c59d79b104 | ||
|
|
5f51d98eb1 | ||
|
|
6d9fbdee4a | ||
|
|
f952be1383 | ||
|
|
5e0365a93a | ||
|
|
471935edbb | ||
|
|
3568e6bebb | ||
|
|
6406255463 | ||
|
|
b523ad8b58 | ||
|
|
9477334927 | ||
|
|
b3b3bf4853 | ||
|
|
3dff6714b3 | ||
|
|
d3b76d2e16 | ||
|
|
899068c963 | ||
|
|
9d14fa297e | ||
|
|
1af5c552fe | ||
|
|
e36b40e673 | ||
|
|
752b1f6e3d | ||
|
|
97fbce5c9c | ||
|
|
c5cc9ba363 | ||
|
|
1ed952f4b6 | ||
|
|
ef890f8425 | ||
|
|
c6986acec1 | ||
|
|
d431b91202 | ||
|
|
34936e9bc3 | ||
|
|
b2b8265a5d | ||
|
|
e64083bdfe | ||
|
|
c9e2822c70 | ||
|
|
e424d6ab07 | ||
|
|
f05af3ceec | ||
|
|
2244ac2d97 | ||
|
|
a575ff59d4 | ||
|
|
10093a8902 | ||
|
|
cb935e9a6f | ||
|
|
1b53dbd236 | ||
|
|
e870206226 | ||
|
|
c1b24a67e7 | ||
|
|
e6cf09e358 | ||
|
|
f3753d29fe | ||
|
|
c4ca1c5f84 | ||
|
|
d75a3e2029 | ||
|
|
5c5664acc5 | ||
|
|
25a4af8b52 | ||
|
|
4998a36679 | ||
|
|
7f45a997ab | ||
|
|
8b98c55564 | ||
|
|
32f0f47956 | ||
|
|
0e1f6972b0 | ||
|
|
727ec864fb | ||
|
|
9e1fbb7dd9 | ||
|
|
e41a4dddeb | ||
|
|
e805228038 | ||
|
|
7a84ec28e0 | ||
|
|
da70978cfd | ||
|
|
8932dd3ffe | ||
|
|
6045061d5b | ||
|
|
12ba1ce38b | ||
|
|
8bb1bb352d | ||
|
|
b3e4a22e6d | ||
|
|
0406bce42f | ||
|
|
d0657978d8 | ||
|
|
b410bb7e20 | ||
|
|
7f19a09dc5 | ||
|
|
0633a3231f | ||
|
|
f4ddf221d6 | ||
|
|
4dd1af0e85 | ||
|
|
a5115738b3 | ||
|
|
46295978d5 | ||
|
|
57e51764f8 | ||
|
|
73db6676a4 | ||
|
|
8341485146 | ||
|
|
5d59cd4e2f | ||
|
|
22d4f642cb | ||
|
|
3707221248 | ||
|
|
024bd0832f | ||
|
|
d5cdfe9374 | ||
|
|
b292afdb71 | ||
|
|
9c02fa48e5 | ||
|
|
329ac0931f | ||
|
|
833ae187e5 | ||
|
|
2d1b632d7b | ||
|
|
ec7faefa52 | ||
|
|
0b4dbea566 | ||
|
|
ada722548b | ||
|
|
4bb204b929 | ||
|
|
a803ae4ed1 | ||
|
|
f9001acfe6 | ||
|
|
54c4601dd0 | ||
|
|
fa967172f3 | ||
|
|
e79dd613ee | ||
|
|
2506470f93 | ||
|
|
5484926668 | ||
|
|
e1a07c1ff2 | ||
|
|
90cb835f39 | ||
|
|
05750ad397 | ||
|
|
1a752ef706 | ||
|
|
e049e53976 | ||
|
|
b7ca0e0fa7 | ||
|
|
c89df99c6e | ||
|
|
d34710e10d | ||
|
|
b58bfd998c | ||
|
|
d67cd249c0 | ||
|
|
914d1d9149 | ||
|
|
ce994a7077 | ||
|
|
9c378ee7c6 | ||
|
|
24b6f748c5 | ||
|
|
ac5cdd19bf | ||
|
|
bab2f1ce05 | ||
|
|
2ce94fd316 | ||
|
|
a24bf3695d | ||
|
|
d46a668566 | ||
|
|
4d853558e1 | ||
|
|
9ab5549e22 | ||
|
|
f305b6c853 | ||
|
|
915ba05f03 | ||
|
|
867d9be05d | ||
|
|
df77cf56d7 | ||
|
|
8753ab9f02 | ||
|
|
0423c58099 | ||
|
|
1bb2e0b0d2 | ||
|
|
68cf1e1da6 | ||
|
|
ad0696197c | ||
|
|
ff03d4b88f | ||
|
|
9ba0dc01b9 | ||
|
|
0b554c2612 | ||
|
|
91e7543a18 | ||
|
|
74574721b7 | ||
|
|
7338f90ad4 | ||
|
|
250ed3ef5b | ||
|
|
6f3748e9c4 | ||
|
|
8a883aaec9 | ||
|
|
099a207814 | ||
|
|
18720fa683 | ||
|
|
0cbd7ad567 | ||
|
|
2de9805027 | ||
|
|
b965f50702 | ||
|
|
6ee0f85391 | ||
|
|
230c88f374 | ||
|
|
88b0b8a650 | ||
|
|
13d6a0f4e5 | ||
|
|
6ce0e9ab42 | ||
|
|
397102116f | ||
|
|
36aa323d87 | ||
|
|
08220f02bd | ||
|
|
a9362d59c3 | ||
|
|
ca68a1e33e | ||
|
|
55aa3d89dd | ||
|
|
2dbc6d696e | ||
|
|
26c4247cdd | ||
|
|
0c15f5c91a | ||
|
|
ab1fe87f14 | ||
|
|
873a724200 | ||
|
|
3b11585bb0 | ||
|
|
87e90b9541 | ||
|
|
d0a9cb47d6 | ||
|
|
0b9e4e1c84 | ||
|
|
b57e2c294b | ||
|
|
6ffeebc162 | ||
|
|
21a713dc68 | ||
|
|
da0be8d904 | ||
|
|
1452e51cdd | ||
|
|
9110ab17f1 | ||
|
|
a5e24cc268 | ||
|
|
beb671ed0e | ||
|
|
e869300446 | ||
|
|
698db33051 | ||
|
|
a20451f387 | ||
|
|
bc8321de06 | ||
|
|
0c477a7afb | ||
|
|
6b5e8acf71 | ||
|
|
517dfb03be | ||
|
|
148fd0ada3 | ||
|
|
faf822daf3 | ||
|
|
69f957db74 | ||
|
|
e08300cb43 | ||
|
|
e229833d24 | ||
|
|
42132e3665 | ||
|
|
15848b504f | ||
|
|
4c956aa0a6 | ||
|
|
2ff376b852 | ||
|
|
b19d6d3bf5 | ||
|
|
ff0a4a4905 | ||
|
|
9d5ef92b50 | ||
|
|
ee8430cb2c | ||
|
|
2ffb39127f | ||
|
|
b0551a7c4b | ||
|
|
b80cf1c1de | ||
|
|
deae98043b | ||
|
|
3d453046cc | ||
|
|
c54d6a2ee4 | ||
|
|
7558076800 | ||
|
|
28535c886e | ||
|
|
e778c12ca2 | ||
|
|
0754713319 | ||
|
|
f44571f658 | ||
|
|
ff9b98e56f | ||
|
|
c9a74b1b17 | ||
|
|
29570c57c4 | ||
|
|
05fdf9461a | ||
|
|
d8d62a1e70 | ||
|
|
63c3c6a873 | ||
|
|
4bcd5665b0 | ||
|
|
ffd7598574 | ||
|
|
9a910ee5f8 | ||
|
|
6ad857c9e0 | ||
|
|
095bb6777a | ||
|
|
89ff5c6968 | ||
|
|
5f1285c441 | ||
|
|
cedb308d38 | ||
|
|
a65846e4d6 | ||
|
|
6b3b2afb74 | ||
|
|
7c059e2029 | ||
|
|
01013ad51e | ||
|
|
cfeb5c8a20 | ||
|
|
b5896cf6e6 | ||
|
|
9eb8ae93c6 | ||
|
|
b6b71a4d68 | ||
|
|
7aa4e220de | ||
|
|
03e59b7e59 | ||
|
|
eb9ca4dbed | ||
|
|
5d26edba88 | ||
|
|
6dab1639d5 | ||
|
|
4e71aa3eed | ||
|
|
00c107305c | ||
|
|
6932027116 | ||
|
|
c5bcf24387 | ||
|
|
e536bd8f3a | ||
|
|
359a05b2d5 | ||
|
|
0657059cff | ||
|
|
fdb64e3424 | ||
|
|
758d3324e5 | ||
|
|
cfbd5e7bde | ||
|
|
07ce126519 | ||
|
|
3e5ddeacce | ||
|
|
2687c043af | ||
|
|
c0979a598b | ||
|
|
8283931df7 | ||
|
|
796f119669 | ||
|
|
07ccf2d302 | ||
|
|
890926228a | ||
|
|
69259445a7 | ||
|
|
92dfa218b4 | ||
|
|
787776dc0e | ||
|
|
0c31bd094c | ||
|
|
53a8d8b1b0 | ||
|
|
533a477142 | ||
|
|
d83e85c6a4 | ||
|
|
babd8326bd | ||
|
|
285b967be2 | ||
|
|
535ade3552 | ||
|
|
4a53bfb160 | ||
|
|
6f367986f4 | ||
|
|
8f048f464d | ||
|
|
63c16626f8 | ||
|
|
59ee0209d0 | ||
|
|
d570839952 | ||
|
|
d183c81f39 | ||
|
|
2eacd87ff3 | ||
|
|
796540cd5b | ||
|
|
8f32bcb3b3 | ||
|
|
c11ed99fa3 | ||
|
|
e42f28137a | ||
|
|
8b76cc1944 | ||
|
|
8eec69e649 | ||
|
|
61494a9258 | ||
|
|
c3c5f2e0f0 | ||
|
|
bd04c38ade | ||
|
|
0c87f5dad8 | ||
|
|
5d727e3651 | ||
|
|
dc6c1c036c | ||
|
|
99355828b0 | ||
|
|
1df56889ab | ||
|
|
72a46fc1ad | ||
|
|
d0251d38ed | ||
|
|
30d2c54cba | ||
|
|
4b715ac8be | ||
|
|
ed1f80f916 | ||
|
|
83c37ba65b | ||
|
|
d158b58a28 | ||
|
|
4591450d8e | ||
|
|
9d17415f93 | ||
|
|
1c65fd4046 | ||
|
|
20e154479a | ||
|
|
c2d3c2695a | ||
|
|
1655f07627 | ||
|
|
3f9a537344 | ||
|
|
4d57a8ac56 | ||
|
|
d136e83778 | ||
|
|
a577528108 | ||
|
|
aaa1fe6d5d | ||
|
|
23c393d4b2 | ||
|
|
59d1ea8cc1 | ||
|
|
c9c41ef84b | ||
|
|
578c360bf4 | ||
|
|
004928ff15 | ||
|
|
4ac226f1b5 | ||
|
|
787ac42bf2 | ||
|
|
da40699dd9 | ||
|
|
ec0e9dc38b | ||
|
|
4768c1f721 | ||
|
|
061cb96484 | ||
|
|
979effcff2 | ||
|
|
c0820d2e93 | ||
|
|
03622b4b3e | ||
|
|
5dd058b7ae | ||
|
|
f726c002ec | ||
|
|
1dc8c723d6 | ||
|
|
a03b54c2e9 | ||
|
|
eaf0155978 | ||
|
|
c80b119803 | ||
|
|
79248afda5 | ||
|
|
913a569838 | ||
|
|
0ddbb273b6 | ||
|
|
e115acc717 | ||
|
|
2880476dbf | ||
|
|
12741a635b | ||
|
|
9221bcb46a | ||
|
|
0b5e52ab40 | ||
|
|
8a2c5318c0 | ||
|
|
75931c9a1d | ||
|
|
8dc98e970a | ||
|
|
83d9fcba9b | ||
|
|
5be1e23a0c | ||
|
|
e791da7f5d | ||
|
|
28b6186e43 | ||
|
|
fac64e3dc4 | ||
|
|
b1363fbf0f | ||
|
|
12753febc7 | ||
|
|
f99e23b323 | ||
|
|
608d808cfc | ||
|
|
16a5b539db | ||
|
|
463f37d20e | ||
|
|
64216c4eaf | ||
|
|
60452f0d6f | ||
|
|
970f823ed6 | ||
|
|
9a64ace60c | ||
|
|
ba980646b9 | ||
|
|
3e642e03c4 | ||
|
|
11cf13c445 | ||
|
|
3b8ff42693 | ||
|
|
0b8571b620 | ||
|
|
f65153dfe9 | ||
|
|
e11ce4f2d6 | ||
|
|
aa7ed8a4ee | ||
|
|
191ef6482f | ||
|
|
1e58a2b677 | ||
|
|
b7d74ee9de | ||
|
|
58ece79b77 | ||
|
|
660ac4eef4 | ||
|
|
8632c51168 | ||
|
|
4eb87a496f | ||
|
|
3a9fbd102e | ||
|
|
b141b886ce | ||
|
|
11dd6742ca | ||
|
|
7af730791b | ||
|
|
5a917c34f6 | ||
|
|
db65e7ae20 | ||
|
|
0e2ea3df40 | ||
|
|
b36fcc2d3c | ||
|
|
49b177642f | ||
|
|
f66c82faa0 | ||
|
|
3c8fc15b39 | ||
|
|
780652ecad | ||
|
|
5ccd4caf65 | ||
|
|
b3ee445a2a | ||
|
|
ee145101d4 | ||
|
|
d2e6f85c43 | ||
|
|
f2ad0dfdc3 | ||
|
|
f256ce1ac3 | ||
|
|
fa556faeb0 | ||
|
|
9bbe51f887 | ||
|
|
9d4712b735 | ||
|
|
4440d3ed94 | ||
|
|
7c24221d66 | ||
|
|
9a5b01b41c | ||
|
|
098165b921 | ||
|
|
fba7cae79d | ||
|
|
df4085a80e | ||
|
|
0aa3f36a94 | ||
|
|
ce1325b90b | ||
|
|
b5e57a476a | ||
|
|
3c118f915e | ||
|
|
de998a021b | ||
|
|
659837a56d | ||
|
|
a1c96224d7 | ||
|
|
f3e0e811fc |
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
*.o
|
||||
*.a
|
||||
*.lo
|
||||
*.so
|
||||
*.exe
|
||||
fxgasm.h
|
||||
*.exe
|
||||
fxgasm
|
||||
fxinline.h
|
||||
File diff suppressed because it is too large
Load Diff
300
Device3Dfx/ChangeLog
Normal file
300
Device3Dfx/ChangeLog
Normal file
@@ -0,0 +1,300 @@
|
||||
2011-07-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Makefile (KBUILD): Handle Linux 3.x versions.
|
||||
|
||||
2011-07-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Makefile (help): Do not print command only their output.
|
||||
|
||||
2011-05-27 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (MODULE_VERSION): Bump to '2011.05.27'.
|
||||
|
||||
2011-05-27 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c [HAVE_UNLOCKED_IOCTL] (ioctl_3dfx): Use new
|
||||
prototype for unlocked_ioctl.
|
||||
(fops_3dfx) [HAVE_UNLOCKED_IOCTL]: Assign ioctl_3dfx to
|
||||
.unlocked_ioctl instead of .ioctl.
|
||||
|
||||
2011-05-27 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c: On Linux >= 2.6.33, use <generated/autoconf.h>
|
||||
instead of <linux/autoconf.h>. Include it after <linux/version.h>.
|
||||
* Makefile (VERSION_HEADER): Use generated/utsrelease.h if present
|
||||
instead of linux/utsrelease.h or linux/version.h.
|
||||
|
||||
2011-05-27 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Makefile: Do not use negative exit codes.
|
||||
|
||||
2008-06-24 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (MODULE_VERSION): Bump to '2008.06.24'.
|
||||
|
||||
2008-06-24 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (KERNEL_MIN_VER): Remove defenition, and replace all
|
||||
users with its contents.
|
||||
|
||||
2008-06-24 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (pci_dev_put): Define to nothing on kernels < 2.5.73.
|
||||
(setmtrr_3dfx): Call pci_dev_put to release the refcount on the
|
||||
Intel 82441FX PCI device when done with it.
|
||||
|
||||
2008-06-22 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (id_table_3dfx): Terminate the list with an empty
|
||||
element.
|
||||
|
||||
2008-06-22 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (pci_get_device): On Linux < 2.5.73 define it as
|
||||
pci_find_device.
|
||||
(findCardType, setmtrr_3dfx): Use pci_get_device instead of deprecated
|
||||
pci_find_device.
|
||||
|
||||
2008-06-22 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (cleanup_module): Ignore return value from
|
||||
unregister_chrdev as it actually returns void now.
|
||||
|
||||
2007-02-06 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (MODULE_VERSION): Bump to '2007.02.06'.
|
||||
|
||||
2007-02-06 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
Fix warnings when not checking pci_register_driver return codes.
|
||||
|
||||
* 3dfx_driver.c (findCards): Return int instead of void, and normalize
|
||||
error code to be always negative, otherwise return numCards.
|
||||
(init_module): Check for findCards return code, print a warning and
|
||||
exit the module on error.
|
||||
(init_3dfx): Likewise.
|
||||
|
||||
2007-02-06 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_driver.c (HAVE_DEVFS): Define to 1 if
|
||||
LINUX_VERSION_CODE >= 2.3.46 and LINUX_VERSION_CODE <= 2.6.17 or
|
||||
if DEVFS_SUPPORT is defined, define to 0 otherwise.
|
||||
(devfs_handle): Only use if HAVE_DEVFS.
|
||||
(init_module): Only use devfs_mk_cdev or devfs_register if HAVE_DEVFS.
|
||||
(cleanup_module): Only use devfs_remove or devfs_unregister if
|
||||
HAVE_DEVFS.
|
||||
|
||||
2007-02-06 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Makefile (CFLAGS): Use '-march' instead of the deprecated '-mcpu'.
|
||||
|
||||
2007-02-06 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* kinfo.c: Removed.
|
||||
* kver.c: New file.
|
||||
* Makefile: Include kver.mak.
|
||||
(KVERS): Move this variable to 'kver.mak', which is a generated file.
|
||||
(VERSION_HEADER): New variable to cope with UTS_RELEASE being moved
|
||||
from 'linux/version.h' to 'linux/utsrelease.h' in 2.6.18.
|
||||
(kver, kver.mak): New targets.
|
||||
(KBUILD): New variable.
|
||||
(KVER_MAJOR, KVER_MINOR, BUILD_TYPE, MODULE_TDFX): Likewise, moved
|
||||
from the generated file 'config'.
|
||||
(config, kinfo, kinfo.h): Remove targets.
|
||||
(modules, intstall, clean): Do not depend on config target.
|
||||
(modules, intstall): Depend on sanity target .
|
||||
|
||||
2007-02-06 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Makefile (.PHONY): Add clean_kbuild. Rename modules-legacy,
|
||||
modules-kbuild, install-legacy, install-kbuild and clean-legacy to
|
||||
modules_legacy, modules_kbuild, install_legacy, install_kbuild
|
||||
and clean_legacy.
|
||||
|
||||
2007-01-31 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c (cardInfo_t): Make dev be 'struct pci_dev *' even for
|
||||
kernels < 2.6.0.
|
||||
(findCardType): Assign to cards[n].dev the dev variable instead of
|
||||
devfn. Fix macro to use devfn instead.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c (my_remap_page_range): Define as remap_pfn_range for
|
||||
linux 2.6.10 or higher.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
Use the "new" kernel level exception handling for memory accesses
|
||||
introduced in linux 2.1.8, which obsoletes verify_aread.
|
||||
|
||||
* 3dfx_device.c (doQueryFetch): Remove verify_area and check for
|
||||
copy_to_user return values.
|
||||
(doPIORead): Likewise.
|
||||
(doQueryUpdate): Remove verify_area and check for copy_from_user
|
||||
return values.
|
||||
(doQuery): Likewise.
|
||||
(doPIOWrite): Likewise.
|
||||
(doPIO): Likewise.
|
||||
(verify_area) [DEBUG]: Remove function.
|
||||
(a_last_dummy_function) [DEBUG]: Likewise.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c (doQueryFetch): Assign desc->device to i, and use it
|
||||
when referencing cards.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c (setmtrr_3dfx): Make it static.
|
||||
(resetmtrr_3dfx): Likewise.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c (id_table_3dfx): Move near the corresponding ifdef
|
||||
for older kernels.
|
||||
(findCards): Likewise.
|
||||
(driver_3dfx): Forward declare.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
Rename functions obsoleted in linux 2.1.93.
|
||||
|
||||
* 3dfx_device.c (pcibios_read_config_byte): Rename to ...
|
||||
(pci_read_config_byte): ... this and remove first argument.
|
||||
(pcibios_read_config_word): Rename to ...
|
||||
(pci_read_config_word): ... this and remove first argument.
|
||||
(pcibios_read_config_dword): Rename to ...
|
||||
(pci_read_config_dword): ... this and remove first argument.
|
||||
(pcibios_write_config_dword): Rename to ...
|
||||
(pci_write_config_dword): ... this and remove first argument.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c (VM_OFFSET_ALIGNED): New macro.
|
||||
(mmap_3dfx): Use VM_OFFSET_ALIGNED, instead of checking for specific
|
||||
kernel versions and changing behaviour.
|
||||
|
||||
2006-12-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c: Indentation fixes.
|
||||
|
||||
2006-03-03 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c: Rename HAVE_MTRR to CONFIG_MTRR.
|
||||
|
||||
2005-04-23 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c: Add GPL notice.
|
||||
|
||||
2005-04-24 Ozkan Sezer <sezeroz@gmail.com>
|
||||
|
||||
* 3dfx_device.c: Add Macronix MX86251 Voodoo Rush support.
|
||||
|
||||
2005-04-24 Ozkan Sezer <sezeroz@gmail.com>
|
||||
|
||||
* 3dfx_device.c (setmtrr_3dfx): Add missing break on default case.
|
||||
|
||||
2005-04-23 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c: Fix comment format. Remove obsolete compiler flags
|
||||
info.
|
||||
|
||||
2005-04-23 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* 3dfx_device.c: Move ChangeLog entries to ...
|
||||
* ChangeLog: ... here.
|
||||
|
||||
2004-05-05 Guillem Jover <guillem@debian.org>
|
||||
|
||||
* Use designators in fops_3dfx instead of the obsolete colon syntax.
|
||||
|
||||
2004-05-04 Guillem Jover <guillem@debian.org>
|
||||
|
||||
* Cleaned new kernel build system.
|
||||
* Indentation fixes. Normalized ChangeLog date format.
|
||||
|
||||
2004-02-13 Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
|
||||
|
||||
* Use kernel build system.
|
||||
* Use new pci probe present in 2.6.x kernels.
|
||||
* Use module auto-loading.
|
||||
|
||||
2004-01-22 Guillem Jover <guillem@debian.org>
|
||||
|
||||
* Ported to 2.6 kernels.
|
||||
|
||||
2002-05-05 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Re-included VOODOO pci id, accidentally removed in last patch,
|
||||
thanks to Jan Kuipers to point this out.
|
||||
|
||||
2002-01-29 Guillem Jover <guillem@hadrons.org>
|
||||
|
||||
* Fixed bug when compiling for 2.4 kernels with modversions.
|
||||
* Added devfs support.
|
||||
* Added MODULE_* declarations.
|
||||
* Cleaned detection code.
|
||||
|
||||
2000-02-04 Joseph Kain <joseph@3dfx.com>
|
||||
|
||||
* Updated Carlo Woord's email address.
|
||||
|
||||
1999-12-22 Joseph Kain <joseph@3dfx.com>
|
||||
|
||||
* Support for new VMA structure in Kernels 2.3.14 and higher.
|
||||
This patch is based on Dieter Nuetzel's work.
|
||||
|
||||
1999-11-09 Joseph Kain <joseph@3dfx.com>
|
||||
|
||||
* Made cards static to remove conflict with hisax ISDN driver.
|
||||
|
||||
1998-10-30 Carlo Wood <carlo@alinoe.com>
|
||||
|
||||
* Re-included module versions (this source was based on the
|
||||
source by Jon Taylor which was based on an older version
|
||||
by Daryll Straus. I now included the later changes made
|
||||
by Daryll in this source too).
|
||||
* Use pci_find_device for 2.1/2.2 kernels instead of the old
|
||||
pcibios_find_device. Idem pci_present().
|
||||
|
||||
1998-10-21 Carlo Wood <carlo@alinoe.com>
|
||||
|
||||
* Fixed compile bugs related to 2.0 kernels.
|
||||
|
||||
1998-10-21 Carlo Wood <carlo@alinoe.com>
|
||||
|
||||
* `struct file_operations' was changed as of kernel 2.1.118,
|
||||
fixed this module to also work with versions > 2.1.117.
|
||||
|
||||
* Machines that don't have mtrr still need <asm/uaccess.h>.
|
||||
|
||||
1998-10-20 Carlo Wood <carlo@alinoe.com>
|
||||
|
||||
* Finally fixed in init_module() the right way. This time I tested
|
||||
it too (it now really works).
|
||||
|
||||
* Added resetmtrr_3dfx() to clean up the MTRR settings when the
|
||||
module is unloaded. This is not really necessary but its clean.
|
||||
It allows to compare using this device WITH MTRR with another
|
||||
method WITHOUT MTRR, without being confused by sticky MTRR settings
|
||||
for instance.
|
||||
|
||||
1998-10-18 Carlo Wood <carlo@alinoe.com>
|
||||
|
||||
* Forgot the '== -EBUSY' in init_module(), causing the registration
|
||||
of character device to always fail. You need to reboot if you
|
||||
tried the previous version (if there is junk in `cat /proc/devices'
|
||||
major 107).
|
||||
|
||||
1998-10-18 Carlo Wood <carlo@alinoe.com>
|
||||
|
||||
* struct file_operations fops_3dfx was initialized wrong:
|
||||
`release_3dfx' was put on the place of `fsync', causing weird
|
||||
behaviour :).
|
||||
|
||||
* Several warning fixes.
|
||||
|
||||
* setmtrr_3dfx did not always return a value, and the value was
|
||||
ignored, effectively ignoring errors returned by mtrr_add().
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Summary: Device driver for 3Dfx boards for 2.x kernels
|
||||
Summary: Device driver for 3Dfx boards for Linux kernels
|
||||
Name: Device3Dfx
|
||||
Version: 2.3
|
||||
Release: 5
|
||||
@@ -121,9 +121,9 @@ Group: Drivers
|
||||
|
||||
%description
|
||||
This package installs the 3Dfx device driver to allow access to 3Dfx
|
||||
boards without the user having root privledges. It should work on both
|
||||
2.0 and 2.1/2.2 kernels and set the MTRR settings correctly. It should
|
||||
also work with SMP kernels (2.1/2.2).
|
||||
boards without the user having root privledges. It should work on >= 2.x
|
||||
kernels and set the MTRR settings correctly. It should also work with
|
||||
SMP kernels (>= 2.1).
|
||||
|
||||
%prep
|
||||
%setup -c
|
||||
|
||||
@@ -1,127 +1,155 @@
|
||||
###############################################################################
|
||||
# Makefile by Carlo Wood (and others)
|
||||
|
||||
ifeq ($(OPT_CFLAGS),)
|
||||
|
||||
# Determine the machine type
|
||||
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
|
||||
|
||||
# Setup machine dependant compiler flags
|
||||
ifeq ($(ARCH), i386)
|
||||
OPT_CFLAGS = -O2 -m486 -fomit-frame-pointer \
|
||||
-fno-strength-reduce \
|
||||
-malign-loops=2 -malign-jumps=2 -malign-functions=2
|
||||
CFLAGS ?= -O2 -march=pentium -fomit-frame-pointer -fno-strength-reduce \
|
||||
-falign-loops=2 -falign-jumps=2 -falign-functions=2
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH), alpha)
|
||||
OPT_CFLAGS = -O2 -mno-fp-regs -mcpu=ev4 \
|
||||
-ffixed-8 \
|
||||
-Wa,-mev6 \
|
||||
-fomit-frame-pointer -fno-strict-aliasing
|
||||
CFLAGS ?= -O2 -mno-fp-regs -mcpu=ev4 -ffixed-8 -Wa,-mev6 \
|
||||
-fomit-frame-pointer -fno-strict-aliasing
|
||||
endif
|
||||
|
||||
endif # ifeq ($OPT_CFLAGS),)
|
||||
KSRC ?= /usr/src/linux
|
||||
KHEADERS ?= $(KSRC)/include
|
||||
|
||||
CFLAGS := -DMODULE -D__KERNEL__ -I/usr/src/linux/include $(OPT_CFLAGS)
|
||||
-include kver.mak
|
||||
|
||||
MODULES_DIR = $(DESTDIR)/lib/modules/$(KVERS)
|
||||
|
||||
ALL_CFLAGS := -DMODULE -D__KERNEL__ \
|
||||
-I$(KHEADERS) -I$(KHEADERS)/asm/mach-default \
|
||||
$(CFLAGS)
|
||||
|
||||
ifneq ($(wildcard $(KHEADERS)/generated/utsrelease.h),)
|
||||
VERSION_HEADER := $(KHEADERS)/generated/utsrelease.h
|
||||
else
|
||||
ifneq ($(wildcard $(KHEADERS)/linux/utsrelease.h),)
|
||||
VERSION_HEADER := $(KHEADERS)/linux/utsrelease.h
|
||||
else
|
||||
VERSION_HEADER := $(KHEADERS)/linux/version.h
|
||||
endif
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# You should never need to change anything below.
|
||||
|
||||
all: sanity 3dfx.o
|
||||
NAME := 3dfx
|
||||
|
||||
all: modules
|
||||
|
||||
kver: kver.c
|
||||
$(CC) -include $(VERSION_HEADER) -x c -o $@ $<
|
||||
|
||||
kver.mak: kver
|
||||
./$^ > $@
|
||||
|
||||
# Sanity checks
|
||||
sanity:
|
||||
@( \
|
||||
if [ ! -e /usr/src/linux ]; then \
|
||||
echo "Expect kernel source at location /usr/src/linux"; \
|
||||
echo "Sym.link /usr/src/linux -> where you have your sources"; \
|
||||
exit -1; \
|
||||
if [ ! -r $(KHEADERS)/linux ]; then \
|
||||
echo "Expect readable headers in $(KHEADERS)/linux"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if [ ! -r /usr/src/linux/include ]; then \
|
||||
echo "Expect readable headers in /usr/src/linux/include"; \
|
||||
exit -1; \
|
||||
fi; \
|
||||
if [ ! -r /usr/src/linux/include/linux/version.h ]; then \
|
||||
echo "Missing /usr/src/linux/include/linux/version.h"; \
|
||||
if [ ! -r $(KHEADERS)/linux/version.h ]; then \
|
||||
echo "Missing $(KHEADERS)/linux/version.h"; \
|
||||
echo "Configure and install the kernel first"; \
|
||||
exit -1; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
if [ ! -e /proc/cpuinfo ]; then \
|
||||
echo "You need the /proc file system"; \
|
||||
echo "Reconfigure kernel and say Yes to CONFIG_PROC_FS"; \
|
||||
exit -1; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
)
|
||||
|
||||
kinfo: kinfo.c
|
||||
$(CC) -o kinfo kinfo.c
|
||||
KVER_MAJOR = $(shell echo "$(KVERS)" | cut -d. -f1 )
|
||||
KVER_MINOR = $(shell echo "$(KVERS)" | cut -d. -f2 )
|
||||
|
||||
kinfo.h: kinfo
|
||||
./kinfo
|
||||
KBUILD = $(shell [ "$(KVER_MAJOR)" = 2 ] && [ "$(KVER_MINOR)" -ge 6 ] || \
|
||||
[ "$(KVER_MAJOR)" -ge 3 ] && echo yes )
|
||||
|
||||
ifneq ($(KERNEL_VERSION_MAJOR),2.0)
|
||||
|
||||
###############################################################################
|
||||
# kernel 2.1+
|
||||
|
||||
3dfx.o: kinfo.h 3dfx_driver.c Makefile
|
||||
$(CC) $(CFLAGS) -c -o $@ 3dfx_driver.c
|
||||
help:
|
||||
@echo KVER_MAJOR = $(KVER_MAJOR)
|
||||
@echo KVER_MINOR = $(KVER_MINOR)
|
||||
@echo KBUILD = $(KBUILD)
|
||||
|
||||
ifeq ($(KBUILD),yes)
|
||||
BUILD_TYPE = kbuild
|
||||
MODULE_TDFX = kbuild/$(NAME).ko
|
||||
else
|
||||
|
||||
###############################################################################
|
||||
# Kernel 2.0
|
||||
|
||||
OBJS = 3dfx_driver.o
|
||||
ifneq ($(HAVE_MTRR),)
|
||||
OBJS += mtrrs.o
|
||||
BUILD_TYPE = legacy
|
||||
MODULE_TDFX = $(NAME).o
|
||||
endif
|
||||
|
||||
3dfx.o: kinfo.h $(OBJS) Makefile
|
||||
$(LD) -r -o $@ $(OBJS)
|
||||
|
||||
endif
|
||||
clean_type = clean_$(BUILD_TYPE)
|
||||
module_type = module_$(BUILD_TYPE)
|
||||
|
||||
###############################################################################
|
||||
|
||||
install:
|
||||
mkdir -p /lib/modules/$(shell ./kinfo --UTS)/misc
|
||||
cp 3dfx.o /lib/modules/$(shell ./kinfo --UTS)/misc/3dfx.o
|
||||
modules: sanity $(module_type)
|
||||
|
||||
module_legacy: $(NAME).o
|
||||
|
||||
$(NAME).o: 3dfx_driver.c Makefile
|
||||
$(CC) $(ALL_CFLAGS) -c -o $@ 3dfx_driver.c
|
||||
|
||||
module_kbuild:
|
||||
$(MAKE) -C kbuild
|
||||
|
||||
###############################################################################
|
||||
|
||||
install: sanity install_modules
|
||||
@( \
|
||||
if [ -e /lib/modules/$(shell ./kinfo --UTS)/modules.dep ]; then \
|
||||
indep=`grep 'misc/3dfx.o:' /lib/modules/$(shell ./kinfo --UTS)/modules.dep`; \
|
||||
if [ -e $(MODULES_DIR)/modules.dep ]; then \
|
||||
indep=`grep '$(NAME)/$(MODULE_TDFX):' $(MODULES_DIR)/modules.dep`; \
|
||||
if [ -z "$$indep" ]; then \
|
||||
echo "/lib/modules/$(shell ./kinfo --UTS)/misc/3dfx.o:" >> /lib/modules/$(shell ./kinfo --UTS)/modules.dep; \
|
||||
echo "" >> /lib/modules/$(shell ./kinfo --UTS)/modules.dep; \
|
||||
echo "$(MODULES_DIR)/$(NAME)/$(MODULE_TDFX):" >> $(MODULES_DIR)/modules.dep; \
|
||||
echo "" >> $(MODULES_DIR)/modules.dep; \
|
||||
fi; \
|
||||
fi; \
|
||||
if [ ! -c /dev/3dfx ]; then \
|
||||
mknod /dev/3dfx c 107 0; \
|
||||
chmod go+w /dev/3dfx; \
|
||||
if [ ! -e $(DESTDIR)/dev/.devfsd -a ! -c $(DESTDIR)/dev/$(NAME) ]; then \
|
||||
mknod $(DESTDIR)/dev/$(NAME) c 107 0; \
|
||||
chmod go+w $(DESTDIR)/dev/$(NAME); \
|
||||
fi; \
|
||||
if [ "$(RPM_INSTALL)" = "1" ]; then \
|
||||
echo "/lib/modules/$(shell ./kinfo --UTS)/misc/3dfx.o"; \
|
||||
echo "$(MODULES_DIR)/$(NAME)/$(MODULE_TDFX)"; \
|
||||
else \
|
||||
inconf=`grep 'alias char-major-107 3dfx' /etc/conf.modules`; \
|
||||
inconf=`grep 'alias char-major-107 $(NAME)' $(DESTDIR)/etc/modules.conf`; \
|
||||
if [ -z "$$inconf" ]; then \
|
||||
echo "alias char-major-107 3dfx" >> /etc/conf.modules; \
|
||||
echo "alias char-major-107 $(NAME)" >> $(DESTDIR)/etc/modules.conf; \
|
||||
fi; \
|
||||
fi; \
|
||||
)
|
||||
|
||||
install_modules: modules
|
||||
mkdir -p $(MODULES_DIR)/$(NAME)
|
||||
cp $(MODULE_TDFX) $(MODULES_DIR)/$(NAME)/
|
||||
|
||||
###############################################################################
|
||||
# This is for debugging purposes by the developers:
|
||||
|
||||
clean:
|
||||
rm -f *.o *.s kinfo kinfo.h
|
||||
clean: $(clean_type)
|
||||
rm -f kver.mak kver
|
||||
|
||||
3dfx.s: 3dfx_driver.c Makefile
|
||||
$(CC) $(CFLAGS) -S -c 3dfx_driver.c
|
||||
clean_legacy:
|
||||
rm -f *.ko *.o *.mod.* .*.mod.* .*.cmd
|
||||
|
||||
clean_kbuild:
|
||||
$(MAKE) -C kbuild clean
|
||||
|
||||
tar:
|
||||
tar czf ../../SOURCES/Dev3Dfx-2.5.tar.gz 3dfx_driver.c mtrrs.c Makefile
|
||||
|
||||
tar czf ../../SOURCES/Dev3Dfx-2.5.tar.gz 3dfx_driver.c Makefile
|
||||
|
||||
debug:
|
||||
make OPT_CFLAGS="-g -Wall -Wstrict-prototypes -DDEBUG"
|
||||
$(MAKE) CFLAGS="-g -Wall -Wstrict-prototypes -DDEBUG"
|
||||
|
||||
.PHONY: all sanity modules modules_legacy modules_kbuild
|
||||
.PHONY: install install_legacy install_kbuild
|
||||
.PHONY: clean clean_legacy clean_kbuild tar debug
|
||||
|
||||
|
||||
20
Device3Dfx/README
Normal file
20
Device3Dfx/README
Normal file
@@ -0,0 +1,20 @@
|
||||
Build instructions
|
||||
------------------
|
||||
|
||||
The new build system supports Linux kernel legacy build systems
|
||||
as used on 2.4.x or earlier and the new kbuild system used on 2.6
|
||||
and up.
|
||||
|
||||
Current make targets are:
|
||||
|
||||
modules
|
||||
clean
|
||||
install
|
||||
|
||||
If your kernel source is in some place different than /usr/src/linux
|
||||
specify the KSRC variable, like:
|
||||
|
||||
$ make KSRC=~/src/linux
|
||||
|
||||
If you want to install in a different base dir specify DESTDIR.
|
||||
|
||||
5
Device3Dfx/debian/changelog
Normal file
5
Device3Dfx/debian/changelog
Normal file
@@ -0,0 +1,5 @@
|
||||
device3dfx (2.3-1) unstable; urgency=low
|
||||
|
||||
* Initial package.
|
||||
|
||||
-- RetroDebian <root@retrodebian.local> Thu, 20 Mar 2026 10:00:00 +0000
|
||||
1
Device3Dfx/debian/compat
Normal file
1
Device3Dfx/debian/compat
Normal file
@@ -0,0 +1 @@
|
||||
5
|
||||
14
Device3Dfx/debian/control.modules.in
Normal file
14
Device3Dfx/debian/control.modules.in
Normal file
@@ -0,0 +1,14 @@
|
||||
Source: device3dfx
|
||||
Section: misc
|
||||
Priority: optional
|
||||
Maintainer: RetroDebian <root@retrodebian.local>
|
||||
Standards-Version: 3.7.3
|
||||
|
||||
Package: device3dfx-modules-_KVERS_
|
||||
Architecture: any
|
||||
Provides: device3dfx-modules
|
||||
Depends: linux-modules-_KVERS_ | linux-image-_KVERS_
|
||||
Description: Device3Dfx kernel module for Debian Linux kernels
|
||||
External kernel module providing /dev/3dfx support for 3dfx hardware.
|
||||
.
|
||||
This package contains the compiled kernel module for _KVERS_.
|
||||
37
Device3Dfx/debian/rules
Executable file
37
Device3Dfx/debian/rules
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- mode: makefile; coding: utf-8 -*-
|
||||
|
||||
PACKAGE=device3dfx-modules
|
||||
MA_DIR ?= /usr/share/modass
|
||||
|
||||
-include $(MA_DIR)/include/generic.make
|
||||
-include $(MA_DIR)/include/common-rules.make
|
||||
|
||||
kdist_config: prep-deb-files
|
||||
ln -sf ../3dfx_driver.c kbuild/3dfx.c
|
||||
|
||||
kdist_clean:
|
||||
rm -f kbuild/3dfx.c
|
||||
$(MAKE) -C $(KSRC) M=$(PWD)/kbuild clean
|
||||
|
||||
binary-modules:
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
dh_installdirs
|
||||
|
||||
ln -sf ../3dfx_driver.c kbuild/3dfx.c
|
||||
$(MAKE) -C $(KSRC) M=$(PWD)/kbuild modules
|
||||
|
||||
mkdir -p debian/$(PACKAGE)-$(KVERS)/lib/modules/$(KVERS)/extra
|
||||
cp kbuild/3dfx.ko debian/$(PACKAGE)-$(KVERS)/lib/modules/$(KVERS)/extra/
|
||||
|
||||
dh_installdocs
|
||||
dh_installchangelogs
|
||||
dh_installmodules
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_installdeb
|
||||
dh_gencontrol -- -v$(VERSION)
|
||||
dh_md5sums
|
||||
dh_builddeb --destdir=$(DEB_DESTDIR)
|
||||
dh_clean -k
|
||||
16
Device3Dfx/kbuild/Makefile
Normal file
16
Device3Dfx/kbuild/Makefile
Normal file
@@ -0,0 +1,16 @@
|
||||
KSRC ?= /usr/src/linux
|
||||
|
||||
obj-m += 3dfx.o
|
||||
|
||||
modules:
|
||||
ln -sf ../3dfx_driver.c 3dfx.c
|
||||
$(MAKE) -C $(KSRC) M=$(shell pwd) modules
|
||||
|
||||
clean:
|
||||
rm -f 3dfx.c
|
||||
$(MAKE) -C $(KSRC) M=$(shell pwd) clean
|
||||
|
||||
install: modules
|
||||
$(MAKE) -C $(KSRC) M=$(shell pwd) INSTALL_MOD_PATH="$(DESTDIR)" \
|
||||
modules_install
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
/*
|
||||
kinfo.c: A small program that includes several kernel heades
|
||||
and builds a header defining options for 3dfx_driver.c.
|
||||
|
||||
1999/12/22 Joseph Kain <joseph@3dfx.com>
|
||||
|
||||
* Initial version
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* These include files will bring in the information we need */
|
||||
#include <linux/autoconf.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
/* Here is the strategy. The old Makefile would have grepped the kernel
|
||||
* headers and put these defines on the command line. Now we include
|
||||
* the kernel headers and extract the information. Then we create a
|
||||
* new header with all of the options we need. */
|
||||
|
||||
if (argc == 1)
|
||||
{
|
||||
FILE *f = fopen ("kinfo.h", "w");
|
||||
FILE *p = NULL;
|
||||
int result;
|
||||
char temp[1000];
|
||||
|
||||
#ifdef CONFIG_MTRR
|
||||
/* It is not enough to just check if the kernel supports MTRRs, if the
|
||||
* processor doesn't have MTRRs then its possible (and likely) that
|
||||
* the kernel was still compiled with MTRR support. So we also have to
|
||||
* check the processor has MTRRs. */
|
||||
|
||||
result = system ("grep mtrr /proc/cpuinfo > /dev/null");
|
||||
|
||||
/* See if grep found anything */
|
||||
if (result == 0) /* Grep reported a match */
|
||||
{
|
||||
fprintf (f, "#define HAVE_MTRR\n");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
fprintf (f, "#define __SMP__\n");
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MODVERSIONS
|
||||
fprintf (f, "#define MODVERSIONS\n");
|
||||
#endif
|
||||
|
||||
fclose (f);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strcmp (argv[1], "--UTS") == 0)
|
||||
{
|
||||
printf ("%s", UTS_RELEASE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
8
Device3Dfx/kver.c
Normal file
8
Device3Dfx/kver.c
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("KVERS = %s\n", UTS_RELEASE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,935 +0,0 @@
|
||||
/* Generic MTRR (Memory Type Range Register) driver.
|
||||
|
||||
Copyright (C) 1997-1998 Richard Gooch
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Richard Gooch may be reached by email at rgooch@atnf.csiro.au
|
||||
The postal address is:
|
||||
Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia.
|
||||
|
||||
Source: "Pentium Pro Family Developer's Manual, Volume 3:
|
||||
Operating System Writer's Guide" (Intel document number 242692),
|
||||
section 11.11.7
|
||||
|
||||
ChangeLog
|
||||
|
||||
Prehistory Martin Tischhäuser <martin@ikcbarka.fzk.de>
|
||||
Initial register-setting code (from proform-1.0).
|
||||
19971216 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Original version for /proc/mtrr interface, SMP-safe.
|
||||
v1.0
|
||||
19971217 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Bug fix for ioctls()'s.
|
||||
Added sample code in Documentation/mtrr.txt
|
||||
v1.1
|
||||
19971218 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Disallow overlapping regions.
|
||||
19971219 Jens Maurer <jmaurer@menuett.rhein-main.de>
|
||||
Register-setting fixups.
|
||||
v1.2
|
||||
19971222 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Fixups for kernel 2.1.75.
|
||||
v1.3
|
||||
19971229 David Wragg <dpw@doc.ic.ac.uk>
|
||||
Register-setting fixups and conformity with Intel conventions.
|
||||
19971229 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Cosmetic changes and wrote this ChangeLog ;-)
|
||||
19980106 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Fixups for kernel 2.1.78.
|
||||
v1.4
|
||||
19980119 David Wragg <dpw@doc.ic.ac.uk>
|
||||
Included passive-release enable code (elsewhere in PCI setup).
|
||||
v1.5
|
||||
19980131 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Replaced global kernel lock with private spinlock.
|
||||
v1.6
|
||||
19980201 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Added wait for other CPUs to complete changes.
|
||||
v1.7
|
||||
19980202 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Bug fix in definition of <set_mtrr> for UP.
|
||||
v1.8
|
||||
19980319 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Fixups for kernel 2.1.90.
|
||||
19980323 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Move SMP BIOS fixup before secondary CPUs call <calibrate_delay>
|
||||
v1.9
|
||||
19980325 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Fixed test for overlapping regions: confused by adjacent regions
|
||||
19980326 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Added wbinvd in <set_mtrr_prepare>.
|
||||
19980401 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Bug fix for non-SMP compilation.
|
||||
19980418 David Wragg <dpw@doc.ic.ac.uk>
|
||||
Fixed-MTRR synchronisation for SMP and use atomic operations
|
||||
instead of spinlocks.
|
||||
19980418 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Differentiate different MTRR register classes for BIOS fixup.
|
||||
v1.10
|
||||
19980419 David Wragg <dpw@doc.ic.ac.uk>
|
||||
Bug fix in variable MTRR synchronisation.
|
||||
v1.11
|
||||
19980419 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Fixups for kernel 2.1.97.
|
||||
v1.12
|
||||
19980421 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Safer synchronisation across CPUs when changing MTRRs.
|
||||
v1.13
|
||||
19980423 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Bugfix for SMP systems without MTRR support.
|
||||
v1.14
|
||||
19980427 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Trap calls to <mtrr_add> and <mtrr_del> on non-MTRR machines.
|
||||
v1.15
|
||||
19980427 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Use atomic bitops for setting SMP change mask.
|
||||
v1.16
|
||||
19980428 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Removed spurious diagnostic message.
|
||||
v1.17
|
||||
19980429 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Moved register-setting macros into this file.
|
||||
Moved setup code from init/main.c to i386-specific areas.
|
||||
v1.18
|
||||
19980502 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Moved MTRR detection outside conditionals in <mtrr_init>.
|
||||
v1.19
|
||||
19980502 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Documentation improvement: mention Pentium II and AGP.
|
||||
v1.20
|
||||
19980521 Richard Gooch <rgooch@atnf.csiro.au>
|
||||
Only manipulate interrupt enable flag on local CPU.
|
||||
Allow enclosed uncachable regions.
|
||||
v1.21
|
||||
|
||||
v1.21-- Emil Briggs <briggs@tick.physics.ncsu.edu>
|
||||
Backported to 2.0.x kernels, /proc and ioctl
|
||||
interfaces removed and the result incorporated
|
||||
into the 3dfx device driver. Not SMP safe. If
|
||||
you have an SMP use the 2.2 series kernels.
|
||||
|
||||
v1.22
|
||||
19991222 Joseph Kain <joseph@3dfx.com>
|
||||
Do kernel version checks here instead of in
|
||||
Makefile. The Makefile now only needs the
|
||||
kernel version for install.
|
||||
*/
|
||||
|
||||
|
||||
/* Include this first as it defines things that affect the kernel headers */
|
||||
#include "kinfo.h"
|
||||
|
||||
/* MTRR support is only available in kerenls versioned 2.1.0 or higher.
|
||||
* For earlier kernels this code compiles to nothing. */
|
||||
#include <linux/version.h>
|
||||
|
||||
#ifndef KERNEL_VERSION
|
||||
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 0)
|
||||
|
||||
|
||||
#ifndef _LINUX_MTRR_H
|
||||
#define _LINUX_MTRR_H
|
||||
|
||||
struct mtrr_sentry
|
||||
{
|
||||
unsigned long base; /* Base address */
|
||||
unsigned long size; /* Size of region */
|
||||
unsigned int type; /* Type of region */
|
||||
};
|
||||
|
||||
struct mtrr_gentry
|
||||
{
|
||||
unsigned int regnum; /* Register number */
|
||||
unsigned long base; /* Base address */
|
||||
unsigned long size; /* Size of region */
|
||||
unsigned int type; /* Type of region */
|
||||
};
|
||||
|
||||
|
||||
/* These are the region types */
|
||||
#define MTRR_TYPE_UNCACHABLE 0
|
||||
#define MTRR_TYPE_WRCOMB 1
|
||||
/*#define MTRR_TYPE_ 2*/
|
||||
/*#define MTRR_TYPE_ 3*/
|
||||
#define MTRR_TYPE_WRTHROUGH 4
|
||||
#define MTRR_TYPE_WRPROT 5
|
||||
#define MTRR_TYPE_WRBACK 6
|
||||
#define MTRR_NUM_TYPES 7
|
||||
|
||||
static char *mtrr_strings[MTRR_NUM_TYPES] =
|
||||
{
|
||||
"uncachable", /* 0 */
|
||||
"write-combining", /* 1 */
|
||||
"?", /* 2 */
|
||||
"?", /* 3 */
|
||||
"write-through", /* 4 */
|
||||
"write-protect", /* 5 */
|
||||
"write-back", /* 6 */
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/* The following functions are for use by other drivers */
|
||||
extern int mtrr_add (unsigned long base, unsigned long size,
|
||||
unsigned int type, char increment);
|
||||
extern int mtrr_del (int reg, unsigned long base, unsigned long size);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_MTRR_H */
|
||||
|
||||
#ifdef MODULE
|
||||
#include <linux/autoconf.h>
|
||||
#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
|
||||
#define MODVERSIONS
|
||||
#endif
|
||||
#ifdef MODVERSIONS
|
||||
#include <linux/modversions.h>
|
||||
#endif
|
||||
#endif
|
||||
#include <linux/sched.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/config.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/malloc.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#define MTRR_NEED_STRINGS
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/segment.h>
|
||||
#include <asm/bitops.h>
|
||||
#include <asm/smp_lock.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <linux/smp.h>
|
||||
|
||||
#undef __SMP__
|
||||
|
||||
#define MTRR_VERSION "1.21 (19980521)"
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define X86_FEATURE_MTRR 0x1000 /* memory type registers */
|
||||
|
||||
#define MTRRcap_MSR 0x0fe
|
||||
#define MTRRdefType_MSR 0x2ff
|
||||
|
||||
#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
|
||||
#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
|
||||
|
||||
#define NUM_FIXED_RANGES 88
|
||||
#define MTRRfix64K_00000_MSR 0x250
|
||||
#define MTRRfix16K_80000_MSR 0x258
|
||||
#define MTRRfix16K_A0000_MSR 0x259
|
||||
#define MTRRfix4K_C0000_MSR 0x268
|
||||
#define MTRRfix4K_C8000_MSR 0x269
|
||||
#define MTRRfix4K_D0000_MSR 0x26a
|
||||
#define MTRRfix4K_D8000_MSR 0x26b
|
||||
#define MTRRfix4K_E0000_MSR 0x26c
|
||||
#define MTRRfix4K_E8000_MSR 0x26d
|
||||
#define MTRRfix4K_F0000_MSR 0x26e
|
||||
#define MTRRfix4K_F8000_MSR 0x26f
|
||||
|
||||
|
||||
#ifdef __SMP__
|
||||
# define MTRR_CHANGE_MASK_FIXED 0x01
|
||||
# define MTRR_CHANGE_MASK_VARIABLE 0x02
|
||||
# define MTRR_CHANGE_MASK_DEFTYPE 0x04
|
||||
#endif
|
||||
|
||||
/* In the processor's MTRR interface, the MTRR type is always held in
|
||||
an 8 bit field: */
|
||||
typedef u8 mtrr_type;
|
||||
|
||||
#define LINE_SIZE 80
|
||||
#define JIFFIE_TIMEOUT 100
|
||||
|
||||
#define set_mtrr(reg,base,size,type) set_mtrr_up (reg, base, size, type,TRUE)
|
||||
|
||||
|
||||
static unsigned int *usage_table = NULL;
|
||||
|
||||
|
||||
struct set_mtrr_context
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned long deftype_lo;
|
||||
unsigned long deftype_hi;
|
||||
unsigned long cr4val;
|
||||
};
|
||||
|
||||
/*
|
||||
* Access to machine-specific registers (available on 586 and better only)
|
||||
* Note: the rd* operations modify the parameters directly (without using
|
||||
* pointer indirection), this allows gcc to optimize better
|
||||
*/
|
||||
#define rdmsr(msr,val1,val2) \
|
||||
__asm__ __volatile__("rdmsr" \
|
||||
: "=a" (val1), "=d" (val2) \
|
||||
: "c" (msr))
|
||||
|
||||
#define wrmsr(msr,val1,val2) \
|
||||
__asm__ __volatile__("wrmsr" \
|
||||
: /* no outputs */ \
|
||||
: "c" (msr), "a" (val1), "d" (val2))
|
||||
|
||||
#define rdtsc(low,high) \
|
||||
__asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
|
||||
|
||||
#define rdpmc(counter,low,high) \
|
||||
__asm__ __volatile__("rdpmc" \
|
||||
: "=a" (low), "=d" (high) \
|
||||
: "c" (counter))
|
||||
|
||||
|
||||
/* Put the processor into a state where MTRRs can be safely set. */
|
||||
static void set_mtrr_prepare(struct set_mtrr_context *ctxt)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
/* disable interrupts locally */
|
||||
save_flags (ctxt->flags); cli ();
|
||||
|
||||
/* save value of CR4 and clear Page Global Enable (bit 7) */
|
||||
asm volatile ("movl %%cr4, %0\n\t"
|
||||
"movl %0, %1\n\t"
|
||||
"andb $0x7f, %b1\n\t"
|
||||
"movl %1, %%cr4\n\t"
|
||||
: "=r" (ctxt->cr4val), "=q" (tmp) : : "memory");
|
||||
|
||||
/* disable and flush caches. Note that wbinvd flushes the TLBs as
|
||||
a side-effect. */
|
||||
asm volatile ("movl %%cr0, %0\n\t"
|
||||
"orl $0x40000000, %0\n\t"
|
||||
"wbinvd\n\t"
|
||||
"movl %0, %%cr0\n\t"
|
||||
"wbinvd\n\t"
|
||||
: "=r" (tmp) : : "memory");
|
||||
|
||||
/* disable MTRRs, and set the default type to uncached. */
|
||||
rdmsr(MTRRdefType_MSR, ctxt->deftype_lo, ctxt->deftype_hi);
|
||||
wrmsr(MTRRdefType_MSR, ctxt->deftype_lo & 0xf300UL, ctxt->deftype_hi);
|
||||
} /* End Function set_mtrr_prepare */
|
||||
|
||||
|
||||
/* Restore the processor after a set_mtrr_prepare */
|
||||
static void set_mtrr_done(struct set_mtrr_context *ctxt)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
/* flush caches and TLBs */
|
||||
asm volatile ("wbinvd" : : : "memory" );
|
||||
|
||||
/* restore MTRRdefType */
|
||||
wrmsr(MTRRdefType_MSR, ctxt->deftype_lo, ctxt->deftype_hi);
|
||||
|
||||
/* enable caches */
|
||||
asm volatile ("movl %%cr0, %0\n\t"
|
||||
"andl $0xbfffffff, %0\n\t"
|
||||
"movl %0, %%cr0\n\t"
|
||||
: "=r" (tmp) : : "memory");
|
||||
|
||||
/* restore value of CR4 */
|
||||
asm volatile ("movl %0, %%cr4"
|
||||
: : "r" (ctxt->cr4val) : "memory");
|
||||
|
||||
/* re-enable interrupts locally (if enabled previously) */
|
||||
restore_flags (ctxt->flags);
|
||||
} /* End Function set_mtrr_done */
|
||||
|
||||
|
||||
/* this function returns the number of variable MTRRs */
|
||||
static unsigned int get_num_var_ranges (void)
|
||||
{
|
||||
unsigned long config, dummy;
|
||||
|
||||
rdmsr(MTRRcap_MSR, config, dummy);
|
||||
return (config & 0xff);
|
||||
} /* End Function get_num_var_ranges */
|
||||
|
||||
|
||||
/* non-zero if we have the write-combining memory type. */
|
||||
static int have_wrcomb (void)
|
||||
{
|
||||
unsigned long config, dummy;
|
||||
|
||||
rdmsr(MTRRcap_MSR, config, dummy);
|
||||
return (config & (1<<10));
|
||||
}
|
||||
|
||||
|
||||
static void get_mtrr (unsigned int reg, unsigned long *base,
|
||||
unsigned long *size, mtrr_type *type)
|
||||
{
|
||||
unsigned long dummy, mask_lo, base_lo;
|
||||
|
||||
rdmsr(MTRRphysMask_MSR(reg), mask_lo, dummy);
|
||||
if ((mask_lo & 0x800) == 0) {
|
||||
/* Invalid (i.e. free) range. */
|
||||
*base = 0;
|
||||
*size = 0;
|
||||
*type = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
rdmsr(MTRRphysBase_MSR(reg), base_lo, dummy);
|
||||
|
||||
/* We ignore the extra address bits (32-35). If someone wants to
|
||||
run x86 Linux on a machine with >4GB memory, this will be the
|
||||
least of their problems. */
|
||||
|
||||
/* Clean up mask_lo so it gives the real address mask. */
|
||||
mask_lo = (mask_lo & 0xfffff000UL);
|
||||
|
||||
/* This works correctly if size is a power of two, i.e. a
|
||||
contiguous range. */
|
||||
*size = ~(mask_lo - 1);
|
||||
|
||||
*base = (base_lo & 0xfffff000UL);
|
||||
*type = (base_lo & 0xff);
|
||||
} /* End Function get_mtrr */
|
||||
|
||||
|
||||
static void set_mtrr_up (unsigned int reg, unsigned long base,
|
||||
unsigned long size, mtrr_type type, int do_safe)
|
||||
/* [SUMMARY] Set variable MTRR register on the local CPU.
|
||||
<reg> The register to set.
|
||||
<base> The base address of the region.
|
||||
<size> The size of the region. If this is 0 the region is disabled.
|
||||
<type> The type of the region.
|
||||
<do_safe> If TRUE, do the change safely. If FALSE, safety measures should
|
||||
be done externally.
|
||||
*/
|
||||
{
|
||||
struct set_mtrr_context ctxt;
|
||||
|
||||
if (do_safe) set_mtrr_prepare (&ctxt);
|
||||
if (size == 0)
|
||||
{
|
||||
/* The invalid bit is kept in the mask, so we simply clear the
|
||||
relevant mask register to disable a range. */
|
||||
wrmsr (MTRRphysMask_MSR (reg), 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrmsr (MTRRphysBase_MSR (reg), base | type, 0);
|
||||
wrmsr (MTRRphysMask_MSR (reg), ~(size - 1) | 0x800, 0);
|
||||
}
|
||||
if (do_safe) set_mtrr_done (&ctxt);
|
||||
} /* End Function set_mtrr_up */
|
||||
|
||||
|
||||
#ifdef __SMP__
|
||||
|
||||
struct mtrr_var_range
|
||||
{
|
||||
unsigned long base_lo;
|
||||
unsigned long base_hi;
|
||||
unsigned long mask_lo;
|
||||
unsigned long mask_hi;
|
||||
};
|
||||
|
||||
|
||||
/* Get the MSR pair relating to a var range. */
|
||||
static void get_mtrr_var_range (unsigned int index,
|
||||
struct mtrr_var_range *vr)
|
||||
{
|
||||
rdmsr (MTRRphysBase_MSR (index), vr->base_lo, vr->base_hi);
|
||||
rdmsr (MTRRphysMask_MSR (index), vr->mask_lo, vr->mask_hi);
|
||||
} /* End Function get_mtrr_var_range */
|
||||
|
||||
|
||||
/* Set the MSR pair relating to a var range. Returns TRUE if
|
||||
changes are made. */
|
||||
static int set_mtrr_var_range_testing (unsigned int index,
|
||||
struct mtrr_var_range *vr)
|
||||
{
|
||||
unsigned int lo, hi;
|
||||
int changed = FALSE;
|
||||
|
||||
rdmsr(MTRRphysBase_MSR(index), lo, hi);
|
||||
|
||||
if ((vr->base_lo & 0xfffff0ffUL) != (lo & 0xfffff0ffUL)
|
||||
|| (vr->base_hi & 0xfUL) != (hi & 0xfUL)) {
|
||||
wrmsr(MTRRphysBase_MSR(index), vr->base_lo, vr->base_hi);
|
||||
changed = TRUE;
|
||||
}
|
||||
|
||||
rdmsr(MTRRphysMask_MSR(index), lo, hi);
|
||||
|
||||
if ((vr->mask_lo & 0xfffff800UL) != (lo & 0xfffff800UL)
|
||||
|| (vr->mask_hi & 0xfUL) != (hi & 0xfUL)) {
|
||||
wrmsr(MTRRphysMask_MSR(index), vr->mask_lo, vr->mask_hi);
|
||||
changed = TRUE;
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
||||
static void get_fixed_ranges(mtrr_type *frs)
|
||||
{
|
||||
unsigned long *p = (unsigned long *)frs;
|
||||
int i;
|
||||
|
||||
rdmsr(MTRRfix64K_00000_MSR, p[0], p[1]);
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
rdmsr(MTRRfix16K_80000_MSR + i, p[2 + i*2], p[3 + i*2]);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
rdmsr(MTRRfix4K_C0000_MSR + i, p[6 + i*2], p[7 + i*2]);
|
||||
}
|
||||
|
||||
|
||||
static int set_fixed_ranges_testing(mtrr_type *frs)
|
||||
{
|
||||
unsigned long *p = (unsigned long *)frs;
|
||||
int changed = FALSE;
|
||||
int i;
|
||||
unsigned long lo, hi;
|
||||
|
||||
rdmsr(MTRRfix64K_00000_MSR, lo, hi);
|
||||
if (p[0] != lo || p[1] != hi) {
|
||||
wrmsr(MTRRfix64K_00000_MSR, p[0], p[1]);
|
||||
changed = TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
rdmsr(MTRRfix16K_80000_MSR + i, lo, hi);
|
||||
if (p[2 + i*2] != lo || p[3 + i*2] != hi) {
|
||||
wrmsr(MTRRfix16K_80000_MSR + i, p[2 + i*2], p[3 + i*2]);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
rdmsr(MTRRfix4K_C0000_MSR + i, lo, hi);
|
||||
if (p[6 + i*2] != lo || p[7 + i*2] != hi) {
|
||||
wrmsr(MTRRfix4K_C0000_MSR + i, p[6 + i*2], p[7 + i*2]);
|
||||
changed = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
||||
struct mtrr_state
|
||||
{
|
||||
unsigned int num_var_ranges;
|
||||
struct mtrr_var_range *var_ranges;
|
||||
mtrr_type fixed_ranges[NUM_FIXED_RANGES];
|
||||
unsigned char enabled;
|
||||
mtrr_type def_type;
|
||||
};
|
||||
|
||||
|
||||
/* Grab all of the MTRR state for this CPU into *state. */
|
||||
static void get_mtrr_state(struct mtrr_state *state)
|
||||
{
|
||||
unsigned int nvrs, i;
|
||||
struct mtrr_var_range *vrs;
|
||||
unsigned long lo, dummy;
|
||||
|
||||
nvrs = state->num_var_ranges = get_num_var_ranges();
|
||||
vrs = state->var_ranges
|
||||
= kmalloc(nvrs * sizeof(struct mtrr_var_range), GFP_KERNEL);
|
||||
if (vrs == NULL)
|
||||
nvrs = state->num_var_ranges = 0;
|
||||
|
||||
for (i = 0; i < nvrs; i++)
|
||||
get_mtrr_var_range(i, &vrs[i]);
|
||||
|
||||
get_fixed_ranges(state->fixed_ranges);
|
||||
|
||||
rdmsr(MTRRdefType_MSR, lo, dummy);
|
||||
state->def_type = (lo & 0xff);
|
||||
state->enabled = (lo & 0xc00) >> 10;
|
||||
} /* End Function get_mtrr_state */
|
||||
|
||||
|
||||
/* Free resources associated with a struct mtrr_state */
|
||||
static void finalize_mtrr_state(struct mtrr_state *state)
|
||||
{
|
||||
if (state->var_ranges) kfree (state->var_ranges);
|
||||
} /* End Function finalize_mtrr_state */
|
||||
|
||||
|
||||
static unsigned long set_mtrr_state (struct mtrr_state *state,
|
||||
struct set_mtrr_context *ctxt)
|
||||
/* [SUMMARY] Set the MTRR state for this CPU.
|
||||
<state> The MTRR state information to read.
|
||||
<ctxt> Some relevant CPU context.
|
||||
[NOTE] The CPU must already be in a safe state for MTRR changes.
|
||||
[RETURNS] 0 if no changes made, else a mask indication what was changed.
|
||||
*/
|
||||
{
|
||||
unsigned int i;
|
||||
unsigned long change_mask = 0;
|
||||
|
||||
for (i = 0; i < state->num_var_ranges; i++)
|
||||
if (set_mtrr_var_range_testing(i, &state->var_ranges[i]))
|
||||
change_mask |= MTRR_CHANGE_MASK_VARIABLE;
|
||||
|
||||
if (set_fixed_ranges_testing(state->fixed_ranges))
|
||||
change_mask |= MTRR_CHANGE_MASK_FIXED;
|
||||
|
||||
/* set_mtrr_restore restores the old value of MTRRdefType,
|
||||
so to set it we fiddle with the saved value. */
|
||||
if ((ctxt->deftype_lo & 0xff) != state->def_type
|
||||
|| ((ctxt->deftype_lo & 0xc00) >> 10) != state->enabled)
|
||||
{
|
||||
ctxt->deftype_lo |= (state->def_type | state->enabled << 10);
|
||||
change_mask |= MTRR_CHANGE_MASK_DEFTYPE;
|
||||
}
|
||||
|
||||
return change_mask;
|
||||
} /* End Function set_mtrr_state */
|
||||
|
||||
|
||||
static atomic_t undone_count;
|
||||
static void (*handler_func) (struct set_mtrr_context *ctxt, void *info);
|
||||
static void *handler_info;
|
||||
static volatile int wait_barrier_execute = FALSE;
|
||||
static volatile int wait_barrier_cache_enable = FALSE;
|
||||
|
||||
static void sync_handler (void)
|
||||
/* [SUMMARY] Synchronisation handler. Executed by "other" CPUs.
|
||||
[RETURNS] Nothing.
|
||||
*/
|
||||
{
|
||||
struct set_mtrr_context ctxt;
|
||||
|
||||
set_mtrr_prepare (&ctxt);
|
||||
/* Notify master CPU that I'm at the barrier and then wait */
|
||||
atomic_dec (&undone_count);
|
||||
while (wait_barrier_execute) barrier ();
|
||||
/* The master has cleared me to execute */
|
||||
(*handler_func) (&ctxt, handler_info);
|
||||
/* Notify master CPU that I've executed the function */
|
||||
atomic_dec (&undone_count);
|
||||
/* Wait for master to clear me to enable cache and return */
|
||||
while (wait_barrier_cache_enable) barrier ();
|
||||
set_mtrr_done (&ctxt);
|
||||
} /* End Function sync_handler */
|
||||
|
||||
static void do_all_cpus (void (*handler) (struct set_mtrr_context *ctxt,
|
||||
void *info),
|
||||
void *info, int local)
|
||||
/* [SUMMARY] Execute a function on all CPUs, with caches flushed and disabled.
|
||||
[PURPOSE] This function will synchronise all CPUs, flush and disable caches
|
||||
on all CPUs, then call a specified function. When the specified function
|
||||
finishes on all CPUs, caches are enabled on all CPUs.
|
||||
<handler> The function to execute.
|
||||
<info> An arbitrary information pointer which is passed to <<handler>>.
|
||||
<local> If TRUE <<handler>> is executed locally.
|
||||
[RETURNS] Nothing.
|
||||
*/
|
||||
{
|
||||
unsigned long timeout;
|
||||
struct set_mtrr_context ctxt;
|
||||
|
||||
mtrr_hook = sync_handler;
|
||||
handler_func = handler;
|
||||
handler_info = info;
|
||||
wait_barrier_execute = TRUE;
|
||||
wait_barrier_cache_enable = TRUE;
|
||||
/* Send a message to all other CPUs and wait for them to enter the
|
||||
barrier */
|
||||
atomic_set (&undone_count, smp_num_cpus - 1);
|
||||
smp_message_pass (MSG_ALL_BUT_SELF, MSG_MTRR_CHANGE, 0, 0);
|
||||
/* Wait for it to be done */
|
||||
timeout = jiffies + JIFFIE_TIMEOUT;
|
||||
while ( (atomic_read (&undone_count) > 0) && (jiffies < timeout) )
|
||||
barrier ();
|
||||
if (atomic_read (&undone_count) > 0)
|
||||
{
|
||||
panic ("mtrr: timed out waiting for other CPUs\n");
|
||||
}
|
||||
mtrr_hook = NULL;
|
||||
/* All other CPUs should be waiting for the barrier, with their caches
|
||||
already flushed and disabled. Prepare for function completion
|
||||
notification */
|
||||
atomic_set (&undone_count, smp_num_cpus - 1);
|
||||
/* Flush and disable the local CPU's cache and release the barier, which
|
||||
should cause the other CPUs to execute the function. Also execute it
|
||||
locally if required */
|
||||
set_mtrr_prepare (&ctxt);
|
||||
wait_barrier_execute = FALSE;
|
||||
if (local) (*handler) (&ctxt, info);
|
||||
/* Now wait for other CPUs to complete the function */
|
||||
while (atomic_read (&undone_count) > 0) barrier ();
|
||||
/* Now all CPUs should have finished the function. Release the barrier to
|
||||
allow them to re-enable their caches and return from their interrupt,
|
||||
then enable the local cache and return */
|
||||
wait_barrier_cache_enable = FALSE;
|
||||
set_mtrr_done (&ctxt);
|
||||
handler_func = NULL;
|
||||
handler_info = NULL;
|
||||
} /* End Function do_all_cpus */
|
||||
|
||||
|
||||
struct set_mtrr_data
|
||||
{
|
||||
unsigned long smp_base;
|
||||
unsigned long smp_size;
|
||||
unsigned int smp_reg;
|
||||
mtrr_type smp_type;
|
||||
};
|
||||
|
||||
static void set_mtrr_handler (struct set_mtrr_context *ctxt, void *info)
|
||||
{
|
||||
struct set_mtrr_data *data = info;
|
||||
|
||||
set_mtrr_up (data->smp_reg, data->smp_base, data->smp_size, data->smp_type,
|
||||
FALSE);
|
||||
} /* End Function set_mtrr_handler */
|
||||
|
||||
|
||||
|
||||
/* A warning that is common to the module and non-module cases. */
|
||||
/* Some BIOS's are fucked and don't set all MTRRs the same! */
|
||||
#ifdef MODULE
|
||||
static void mtrr_state_warn (unsigned long mask)
|
||||
#else
|
||||
static void mtrr_state_warn (unsigned long mask)
|
||||
#endif
|
||||
{
|
||||
if (!mask) return;
|
||||
if (mask & MTRR_CHANGE_MASK_FIXED)
|
||||
printk ("mtrr: your CPUs had inconsistent fixed MTRR settings\n");
|
||||
if (mask & MTRR_CHANGE_MASK_VARIABLE)
|
||||
printk ("mtrr: your CPUs had inconsistent variable MTRR settings\n");
|
||||
if (mask & MTRR_CHANGE_MASK_DEFTYPE)
|
||||
printk ("mtrr: your CPUs had inconsistent MTRRdefType settings\n");
|
||||
printk ("mtrr: probably your BIOS does not setup all CPUs\n");
|
||||
} /* End Function mtrr_state_warn */
|
||||
|
||||
#ifdef MODULE
|
||||
/* As a module, copy the MTRR state using an IPI handler. */
|
||||
|
||||
static volatile unsigned long smp_changes_mask = 0;
|
||||
|
||||
static void copy_mtrr_state_handler (struct set_mtrr_context *ctxt, void *info)
|
||||
{
|
||||
unsigned long mask, count;
|
||||
struct mtrr_state *smp_mtrr_state = info;
|
||||
|
||||
mask = set_mtrr_state (smp_mtrr_state, ctxt);
|
||||
/* Use the atomic bitops to update the global mask */
|
||||
for (count = 0; count < sizeof mask * 8; ++count)
|
||||
{
|
||||
if (mask & 0x01) set_bit (count, &smp_changes_mask);
|
||||
mask >>= 1;
|
||||
}
|
||||
} /* End Function copy_mtrr_state_handler */
|
||||
|
||||
/* Copies the entire MTRR state of this CPU to all the others. */
|
||||
static void copy_mtrr_state (void)
|
||||
{
|
||||
struct mtrr_state ms;
|
||||
|
||||
get_mtrr_state (&ms);
|
||||
do_all_cpus (copy_mtrr_state_handler, &ms, FALSE);
|
||||
finalize_mtrr_state (&ms);
|
||||
mtrr_state_warn (smp_changes_mask);
|
||||
} /* End Function copy_mtrr_state */
|
||||
|
||||
#endif /* MODULE */
|
||||
#endif /* __SMP__ */
|
||||
|
||||
static char *attrib_to_str (int x)
|
||||
{
|
||||
return (x <= 6) ? mtrr_strings[x] : "?";
|
||||
} /* End Function attrib_to_str */
|
||||
|
||||
static void init_table (void)
|
||||
{
|
||||
int i, max;
|
||||
|
||||
max = get_num_var_ranges ();
|
||||
if ( ( usage_table = kmalloc (max * sizeof *usage_table, GFP_KERNEL) )
|
||||
== NULL )
|
||||
{
|
||||
printk ("mtrr: could not allocate\n");
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < max; i++) usage_table[i] = 1;
|
||||
|
||||
} /* End Function init_table */
|
||||
|
||||
int mtrr_add (unsigned long base, unsigned long size, unsigned int type,
|
||||
char increment)
|
||||
/* [SUMMARY] Add an MTRR entry.
|
||||
<base> The starting (base) address of the region.
|
||||
<size> The size (in bytes) of the region.
|
||||
<type> The type of the new region.
|
||||
<increment> If true and the region already exists, the usage count will be
|
||||
incremented.
|
||||
[RETURNS] The MTRR register on success, else a negative number indicating
|
||||
the error code.
|
||||
[NOTE] This routine uses a spinlock.
|
||||
*/
|
||||
{
|
||||
int i, max;
|
||||
mtrr_type ltype;
|
||||
unsigned long lbase, lsize, last;
|
||||
|
||||
if (!usage_table) init_table();
|
||||
if ( (base & 0xfff) || (size & 0xfff) )
|
||||
{
|
||||
printk ("mtrr: size and base must be multiples of 4kB\n");
|
||||
printk ("mtrr: size: %lx base: %lx\n", size, base);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (base + size < 0x100000)
|
||||
{
|
||||
printk ("mtrr: cannot set region below 1 MByte (0x%lx,0x%lx)\n",
|
||||
base, size);
|
||||
return -EINVAL;
|
||||
}
|
||||
/* Check upper bits of base and last are equal and lower bits are 0 for
|
||||
base and 1 for last */
|
||||
last = base + size - 1;
|
||||
for (lbase = base; !(lbase & 1) && (last & 1);
|
||||
lbase = lbase >> 1, last = last >> 1);
|
||||
if (lbase != last)
|
||||
{
|
||||
printk ("mtrr: base(0x%lx) is not aligned on a size(0x%lx) boundary\n",
|
||||
base, size);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (type >= MTRR_NUM_TYPES)
|
||||
{
|
||||
printk ("mtrr: type: %u illegal\n", type);
|
||||
return -EINVAL;
|
||||
}
|
||||
/* If the type is WC, check that this processor supports it */
|
||||
if ( (type == MTRR_TYPE_WRCOMB) && !have_wrcomb () )
|
||||
{
|
||||
printk ("mtrr: your processor doesn't support write-combining\n");
|
||||
return -ENOSYS;
|
||||
}
|
||||
increment = increment ? 1 : 0;
|
||||
max = get_num_var_ranges ();
|
||||
/* Search for existing MTRR */
|
||||
|
||||
for (i = 0; i < max; ++i)
|
||||
{
|
||||
get_mtrr (i, &lbase, &lsize, <ype);
|
||||
if (base >= lbase + lsize) continue;
|
||||
if ( (base < lbase) && (base + size <= lbase) ) continue;
|
||||
/* At this point we know there is some kind of overlap/enclosure */
|
||||
if ( (base < lbase) || (base + size > lbase + lsize) )
|
||||
{
|
||||
printk ("mtrr: 0x%lx,0x%lx overlaps existing 0x%lx,0x%lx\n",
|
||||
base, size, lbase, lsize);
|
||||
return -EINVAL;
|
||||
}
|
||||
/* New region is enclosed by an existing region */
|
||||
if (ltype != type)
|
||||
{
|
||||
if (type == MTRR_TYPE_UNCACHABLE) continue;
|
||||
printk ( "mtrr: type mismatch for %lx,%lx old: %s new: %s\n",
|
||||
base, size, attrib_to_str (ltype), attrib_to_str (type) );
|
||||
return -EINVAL;
|
||||
}
|
||||
if (increment) ++usage_table[i];
|
||||
return i;
|
||||
}
|
||||
/* Search for an empty MTRR */
|
||||
for (i = 0; i < max; ++i)
|
||||
{
|
||||
get_mtrr (i, &lbase, &lsize, <ype);
|
||||
if (lsize > 0) continue;
|
||||
set_mtrr (i, base, size, type);
|
||||
usage_table[i] = 1;
|
||||
return i;
|
||||
}
|
||||
printk ("mtrr: no more MTRRs available\n");
|
||||
return -ENOSPC;
|
||||
} /* End Function mtrr_add */
|
||||
|
||||
int mtrr_del (int reg, unsigned long base, unsigned long size)
|
||||
/* [SUMMARY] Delete MTRR/decrement usage count.
|
||||
<reg> The register. If this is less than 0 then <<base>> and <<size>> must
|
||||
be supplied.
|
||||
<base> The base address of the region. This is ignored if <<reg>> is >= 0.
|
||||
<size> The size of the region. This is ignored if <<reg>> is >= 0.
|
||||
[RETURNS] The register on success, else a negative number indicating
|
||||
the error code.
|
||||
[NOTE] This routine uses a spinlock.
|
||||
*/
|
||||
{
|
||||
int i, max;
|
||||
mtrr_type ltype;
|
||||
unsigned long lbase, lsize;
|
||||
|
||||
if (!usage_table) init_table();
|
||||
max = get_num_var_ranges ();
|
||||
if (reg < 0)
|
||||
{
|
||||
/* Search for existing MTRR */
|
||||
for (i = 0; i < max; ++i)
|
||||
{
|
||||
get_mtrr (i, &lbase, &lsize, <ype);
|
||||
if ( (lbase == base) && (lsize == size) )
|
||||
{
|
||||
reg = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (reg < 0)
|
||||
{
|
||||
printk ("mtrr: no MTRR for %lx,%lx found\n", base, size);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
if (reg >= max)
|
||||
{
|
||||
printk ("mtrr: register: %d too big\n", reg);
|
||||
return -EINVAL;
|
||||
}
|
||||
get_mtrr (reg, &lbase, &lsize, <ype);
|
||||
if (lsize < 1)
|
||||
{
|
||||
printk ("mtrr: MTRR %d not used\n", reg);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (usage_table[reg] < 1)
|
||||
{
|
||||
printk ("mtrr: reg: %d has count=0\n", reg);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (--usage_table[reg] < 1) set_mtrr (reg, 0, 0, 0);
|
||||
return reg;
|
||||
} /* End Function mtrr_del */
|
||||
|
||||
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 0) */
|
||||
255
LICENSE
Normal file
255
LICENSE
Normal file
@@ -0,0 +1,255 @@
|
||||
3DFX GLIDE Source Code General Public License
|
||||
|
||||
|
||||
1. PREAMBLE
|
||||
|
||||
This license is for software that provides a 3D graphics application
|
||||
program interface (API).The license is intended to offer terms similar
|
||||
to some standard General Public Licenses designed to foster open
|
||||
standards and unrestricted accessibility to source code. Some of these
|
||||
licenses require that, as a condition of the license of the software,
|
||||
any derivative works (that is, new software which is a work containing
|
||||
the original program or a portion of it) must be available for general
|
||||
use, without restriction other than for a minor transfer fee, and that
|
||||
the source code for such derivative works must likewise be made
|
||||
available. The only restriction is that such derivative works must be
|
||||
subject to the same General Public License terms as the original work.
|
||||
|
||||
This 3dfx GLIDE Source Code General Public License differs from the
|
||||
standard licenses of this type in that it does not require the entire
|
||||
derivative work to be made available under the terms of this license
|
||||
nor is the recipient required to make available the source code for
|
||||
the entire derivative work. Rather, the license is limited to only the
|
||||
identifiable portion of the derivative work that is derived from the
|
||||
licensed software. The precise terms and conditions for copying,
|
||||
distribution and modification follow.
|
||||
|
||||
|
||||
2. DEFINITIONS
|
||||
|
||||
2.1 This License applies to any program (or other "work") which
|
||||
contains a notice placed by the copyright holder saying it may be
|
||||
distributed under the terms of this 3dfx GLIDE Source Code General
|
||||
Public License.
|
||||
|
||||
2.2 The term "Program" as used in this Agreement refers to 3DFX's
|
||||
GLIDE source code and object code and any Derivative Work.
|
||||
|
||||
2.3 "Derivative Work" means, for the purpose of the License, that
|
||||
portion of any work that contains the Program or the identifiable
|
||||
portion of a work that is derived from the Program, either verbatim or
|
||||
with modifications and/or translated into another language, and that
|
||||
performs 3D graphics API operations. It does not include any other
|
||||
portions of a work.
|
||||
|
||||
2.4 "Modifications of the Program" means any work, which includes a
|
||||
Derivative Work, and includes the whole of such work.
|
||||
|
||||
2.5 "License" means this 3dfx GLIDE Source Code General Public License.
|
||||
|
||||
2.6 The "Source Code" for a work means the preferred form of the work
|
||||
for making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, any
|
||||
associated interface definition files, and the scripts used to control
|
||||
compilation and installation of the executable work.
|
||||
|
||||
2.7 "3dfx" means 3dfx Interactive, Inc.
|
||||
|
||||
|
||||
3. LICENSED ACTIVITIES
|
||||
|
||||
3.1 COPYING - You may copy and distribute verbatim copies of the
|
||||
Program's Source Code as you receive it, in any medium, subject to the
|
||||
provision of section 3.3 and provided also that:
|
||||
|
||||
(a) you conspicuously and appropriately publish on each copy
|
||||
an appropriate copyright notice (3dfx Interactive, Inc. 1999), a notice
|
||||
that recipients who wish to copy, distribute or modify the Program can
|
||||
only do so subject to this License, and a disclaimer of warranty as
|
||||
set forth in section 5;
|
||||
|
||||
(b) keep intact all the notices that refer to this License and
|
||||
to the absence of any warranty; and
|
||||
|
||||
(c) do not make any use of the GLIDE trademark without the prior
|
||||
written permission of 3dfx, and
|
||||
|
||||
(d) give all recipients of the Program a copy of this License
|
||||
along with the Program or instructions on how to easily receive a copy
|
||||
of this License.
|
||||
|
||||
|
||||
3.2 MODIFICATION OF THE PROGRAM/DERIVATIVE WORKS - You may modify your
|
||||
copy or copies of the Program or any portion of it, and copy and
|
||||
distribute such modifications subject to the provisions of section 3.3
|
||||
and provided that you also meet all of the following conditions:
|
||||
|
||||
(a) you conspicuously and appropriately publish on each copy
|
||||
of a Derivative Work an appropriate copyright notice, a notice that
|
||||
recipients who wish to copy, distribute or modify the Derivative Work
|
||||
can only do so subject to this License, and a disclaimer of warranty
|
||||
as set forth in section 5;
|
||||
|
||||
(b) keep intact all the notices that refer to this License and
|
||||
to the absence of any warranty; and
|
||||
|
||||
(c) give all recipients of the Derivative Work a copy of this
|
||||
License along with the Derivative Work or instructions on how to easily
|
||||
receive a copy of this License.
|
||||
|
||||
(d) You must cause the modified files of the Derivative Work
|
||||
to carry prominent notices stating that you changed the files and the
|
||||
date of any change.
|
||||
|
||||
(e) You must cause any Derivative Work that you distribute or
|
||||
publish to be licensed at no charge to all third parties under the
|
||||
terms of this License.
|
||||
|
||||
(f) You do not make any use of the GLIDE trademark without the
|
||||
prior written permission of 3dfx.
|
||||
|
||||
(g) If the Derivative Work normally reads commands
|
||||
interactively when run, you must cause it, when started running for
|
||||
such interactive use, to print or display an announcement as follows:
|
||||
|
||||
"COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED THIS
|
||||
SOFTWARE IS FREE AND PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND,
|
||||
EITHER EXPRESSED OR IMPLIED. THERE IS NO RIGHT TO USE THE GLIDE
|
||||
TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX INTERACTIVE,
|
||||
INC. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A FULL TEXT OF THE
|
||||
DISTRIBUTION AND NON-WARRANTY PROVISIONS (REQUEST COPY FROM
|
||||
INFO@3DFX.COM)."
|
||||
|
||||
(h) The requirements of this section 3.2 do not apply to the
|
||||
modified work as a whole but only to the Derivative Work. It is not
|
||||
the intent of this License to claim rights or contest your rights to
|
||||
work written entirely by you; rather, the intent is to exercise the
|
||||
right to control the distribution of Derivative Works.
|
||||
|
||||
|
||||
3.3 DISTRIBUTION
|
||||
|
||||
(a) All copies of the Program or Derivative Works which are
|
||||
distributed must include in the file headers the following language
|
||||
verbatim:
|
||||
|
||||
"THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED
|
||||
ONLY PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO
|
||||
RIGHT TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF
|
||||
3DFX INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM
|
||||
THE DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC (info@3dfx.com).
|
||||
THIS PROGRAM. IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
|
||||
USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS
|
||||
IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
THE UNITED STATES.
|
||||
|
||||
COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED"
|
||||
|
||||
(b) You may distribute the Program or a Derivative Work in
|
||||
object code or executable form under the terms of Sections 3.1 and 3.2
|
||||
provided that you also do one of the following:
|
||||
|
||||
(1) Accompany it with the complete corresponding
|
||||
machine-readable source code, which must be distributed under the
|
||||
terms of Sections 3.1 and 3.2; or,
|
||||
|
||||
(2) Accompany it with a written offer, valid for at
|
||||
least three years, to give any third party, for a charge no more than
|
||||
your cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 3.1 and 3.2 on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
(3) Accompany it with the information you received as
|
||||
to the offer to distribute corresponding source code. (This alternative
|
||||
is allowed only for noncommercial distribution and only if you received
|
||||
the program in object code or executable form with such an offer, in
|
||||
accord with Subsection 3.3(b)(2) above.)
|
||||
|
||||
(c) The source code distributed need not include anything
|
||||
that is normally distributed (in either source or binary form) with
|
||||
the major components (compiler, kernel, and so on) of the operating
|
||||
system on which the executable runs, unless that component itself
|
||||
accompanies the executable code.
|
||||
|
||||
(d) If distribution of executable code or object code is made
|
||||
by offering access to copy from a designated place, then offering
|
||||
equivalent access to copy the source code from the same place counts
|
||||
as distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
(e) Each time you redistribute the Program or any Derivative
|
||||
Work, the recipient automatically receives a license from 3dfx and
|
||||
successor licensors to copy, distribute or modify the Program and
|
||||
Derivative Works subject to the terms and conditions of the License.
|
||||
You may not impose any further restrictions on the recipients'
|
||||
exercise of the rights granted herein. You are not responsible for
|
||||
enforcing compliance by third parties to this License.
|
||||
|
||||
(f) You may not make any use of the GLIDE trademark without
|
||||
the prior written permission of 3dfx.
|
||||
|
||||
(g) You may not copy, modify, sublicense, or distribute the
|
||||
Program or any Derivative Works except as expressly provided under
|
||||
this License. Any attempt otherwise to copy, modify, sublicense or
|
||||
distribute the Program or any Derivative Works is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
|
||||
4. MISCELLANEOUS
|
||||
|
||||
4.1 Acceptance of this License is voluntary. By using, modifying or
|
||||
distributing the Program or any Derivative Work, you indicate your
|
||||
acceptance of this License to do so, and all its terms and conditions
|
||||
for copying, distributing or modifying the Program or works based on
|
||||
it. Nothing else grants you permission to modify or distribute the
|
||||
Program or Derivative Works and doing so without acceptance of this
|
||||
License is in violation of the U.S. and international copyright laws.
|
||||
|
||||
4.2 If the distribution and/or use of the Program or Derivative Works
|
||||
is restricted in certain countries either by patents or by copyrighted
|
||||
interfaces, the original copyright holder who places the Program under
|
||||
this License may add an explicit geographical distribution limitation
|
||||
excluding those countries, so that distribution is permitted only in
|
||||
or among countries not thus excluded. In such case, this License
|
||||
incorporates the limitation as if written in the body of this License.
|
||||
|
||||
4.3 This License is to be construed according to the laws of the
|
||||
State of California and you consent to personal jurisdiction in the
|
||||
State of California in the event it is necessary to enforce the
|
||||
provisions of this License.
|
||||
|
||||
|
||||
5. NO WARRANTIES
|
||||
|
||||
5.1 TO THE EXTENT PERMITTED BY APPLICABLE LAW, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM. OR DERIVATIVE WORKS THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE PROGRAM AND ANY DERIVATIVE WORKS"AS IS"
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY
|
||||
AND PERFORMANCE OF THE PROGRAM AND ANY DERIVATIVE WORK IS WITH YOU.
|
||||
SHOULD THE PROGRAM OR ANY DERIVATIVE WORK PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
5.2 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL 3DFX
|
||||
INTERACTIVE, INC., OR ANY OTHER COPYRIGHT HOLDER, OR ANY OTHER PARTY
|
||||
WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM OR DERIVATIVE WORKS AS
|
||||
PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
|
||||
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
||||
INABILITY TO USE THE PROGRAM OR DERIVATIVE WORKS (INCLUDING BUT NOT
|
||||
LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
|
||||
SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM OR
|
||||
DERIVATIVE WORKS TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
|
||||
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
5
README
Normal file
5
README
Normal file
@@ -0,0 +1,5 @@
|
||||
This is the source code to 3Dfx Glide for Voodoo graphics accelerators.
|
||||
It's forked from the original CVS repo of Glide open source project at
|
||||
sourceforge: https://sourceforge.net/projects/glide/
|
||||
|
||||
Source is licensed under 3DFX GLIDE Source Code General Public License.
|
||||
@@ -21,8 +21,8 @@ DEBUG=1: Turn on debugging information, note this disables
|
||||
FX_GLIDE_PIC=1: Enable PIC in shared libraries.
|
||||
FX_GLIDE_CTRISETUP=1: Use C versions as opposed to ASM versions of triangle
|
||||
setup code.
|
||||
GL_AMD3D=1: Enable AMD 3DNow! optimizations. Note this is broken
|
||||
on several platforms.
|
||||
GL_AMD3D=1: Enable AMD 3DNow! optimizations. Note this is
|
||||
currently broken on several platforms.
|
||||
|
||||
All glide source trees use a common set of libraries kept in the
|
||||
swlibs branch. In order to build any glide library the swlibs branch
|
||||
|
||||
@@ -21,6 +21,6 @@
|
||||
# $Date$
|
||||
#
|
||||
|
||||
LDIRT = $(patsubst makefile%,,$(wildcard *))
|
||||
LDIRT = $(patsubst CVS,,$(patsubst makefile%,,$(wildcard *)))
|
||||
|
||||
include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/* This should be exported, but isn't yet */
|
||||
#define SST1INIT_MAX_BOARDS 16
|
||||
|
||||
int main (int argc[], char* argv[])
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
FxU32* sst[SST1INIT_MAX_BOARDS];
|
||||
int num_sst;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#
|
||||
# COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
|
||||
!if "$(FX_GLIDE_HW)" == "SST96"
|
||||
!if "$(FX_GLIDE_HW)" == "sst96"
|
||||
GLIDE_SRC_BASE = sst1
|
||||
!else
|
||||
GLIDE_SRC_BASE = $(FX_GLIDE_HW)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#
|
||||
# COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),SST96)
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
GLIDE_SRC_BASE = sst1
|
||||
else
|
||||
GLIDE_SRC_BASE = $(FX_GLIDE_HW)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
*/
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef __linux__
|
||||
#include <windows.h>
|
||||
@@ -106,10 +107,11 @@ MyDebugPrintf(FILE* outputFile, const char* fmtString, ...)
|
||||
|
||||
va_start(args, fmtString);
|
||||
{
|
||||
char msgBuf[256];
|
||||
//char msgBuf[256];
|
||||
|
||||
vsprintf(msgBuf, fmtString, args);
|
||||
OutputDebugString(msgBuf);
|
||||
vfprintf(stderr, fmtString, args);
|
||||
//vsprintf(msgBuf, fmtString, args);
|
||||
//OutputDebugString(msgBuf);
|
||||
}
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
@@ -89,5 +89,5 @@ FX_EXPORT FxU32 FX_CSTYLE fxoemInitSetVideo(OemInitInfo *oem);
|
||||
FX_EXPORT FxU32 FX_CSTYLE fxoemRestoreVideo(OemInitInfo *oem);
|
||||
FX_EXPORT FxU32 FX_CSTYLE fxoemControl(FxU32 mode);
|
||||
|
||||
#endif __OEMINIT_H__
|
||||
#endif /* __OEMINIT_H__ */
|
||||
|
||||
|
||||
352
glide2x/cvg/glide/src/Makefile.win32
Normal file
352
glide2x/cvg/glide/src/Makefile.win32
Normal file
@@ -0,0 +1,352 @@
|
||||
# Win32 makefile for Glide2/CVG and Texus2
|
||||
# This makefile MUST be processed by GNU make!!!
|
||||
#
|
||||
# Copyright (c) 2004
|
||||
#
|
||||
# Daniel Borca
|
||||
# Email : dborca@users.sourceforge.net
|
||||
# Web : http://www.geocities.com/dborca
|
||||
#
|
||||
# Hiroshi Morii
|
||||
# Email : koolsmoky@users.sourceforge.net
|
||||
# Web : http://www.3dfxzone.it/koolsmoky
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# Available options:
|
||||
#
|
||||
# Environment variables:
|
||||
# FX_GLIDE_HW build for the given ASIC (cvg).
|
||||
# default = cvg
|
||||
# CPU optimize for the given processor.
|
||||
# default = 6 (PentiumPro)
|
||||
# DEBUG=1 disable optimizations and build for debug.
|
||||
# default = no
|
||||
# USE_X86=1 use assembler triangle specializations; req by CVG
|
||||
# default = yes
|
||||
# USE_3DNOW=1 allow 3DNow! specializations. However, the true CPU
|
||||
# capabilities are still checked at run-time to avoid
|
||||
# crashes.
|
||||
# default = no
|
||||
# USE_MMX=1 allow MMX specializations.
|
||||
# default = no
|
||||
# TEXUS2=1 embed Texus2 functions into Glide2.
|
||||
# default = no
|
||||
# FXOEM2X=1 build fxoem2x.dll
|
||||
# default = no
|
||||
#
|
||||
# Targets:
|
||||
# all: build everything
|
||||
# glide2x: build Glide2x lib
|
||||
# clean: remove object files
|
||||
# realclean: remove all generated files
|
||||
#
|
||||
|
||||
|
||||
|
||||
.PHONY: all glide2x clean realclean
|
||||
.INTERMEDIATE: fxgasm.exe
|
||||
.SUFFIXES: .c .obj .rc .res
|
||||
|
||||
###############################################################################
|
||||
# general defines (user settable?)
|
||||
###############################################################################
|
||||
|
||||
GLIDE_RES = glide.res
|
||||
GLIDE_DLL = glide2x.dll
|
||||
GLIDE_IMP = glide2x.lib
|
||||
TEXUS_EXE = texus2.exe
|
||||
|
||||
FX_GLIDE_HW ?= cvg
|
||||
FX_GLIDE_SW = ../../../swlibs
|
||||
GLIDE_LIBDIR = ../../lib
|
||||
TEXUS_EXEDIR = $(FX_GLIDE_SW)/bin
|
||||
|
||||
###############################################################################
|
||||
# tools
|
||||
###############################################################################
|
||||
|
||||
CC = cl
|
||||
AS = nasm
|
||||
LD = link
|
||||
RC = rc
|
||||
|
||||
ifeq ($(wildcard $(addsuffix /rm.exe,$(subst ;, ,$(PATH)))),)
|
||||
UNLINK = del $(subst /,\,$(1))
|
||||
else
|
||||
UNLINK = $(RM) $(1)
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# defines
|
||||
###############################################################################
|
||||
|
||||
# platform
|
||||
CDEFS = -D__WIN32__ -DDIRECTX -DFX_DLL_ENABLE -D__3Dfx_PCI_CFG__
|
||||
|
||||
# general
|
||||
CDEFS += -DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKED_RGB=1 -DGLIDE_TRI_CULLING=1 -DGLIDE_DEFAULT_GAMMA=1.3f -DGLIDE_LIB=1
|
||||
#CDEFS += -DGLIDE3 -DGLIDE3_ALPHA -DGLIDE3_SCALER
|
||||
|
||||
# special sli buffer clears
|
||||
CDEFS += -DGLIDE_BLIT_CLEAR=1
|
||||
|
||||
# workaround for CVGs with broken tsus which cannot send commands to multiple
|
||||
# tmus using chipfield. chipfield will always be set to 0xf
|
||||
CDEFS += -DGLIDE_CHIP_BROADCAST=1
|
||||
|
||||
# subsystem
|
||||
CDEFS += -DCVG
|
||||
|
||||
# debug
|
||||
ifdef DEBUG
|
||||
CDEFS += -DGDBG_INFO_ON -DGLIDE_DEBUG -DGLIDE_SANITY_ASSERT -DGLIDE_SANITY_SIZE
|
||||
endif
|
||||
|
||||
override USE_FIFO = 1
|
||||
#override USE_X86 = 1
|
||||
|
||||
ifeq ($(USE_X86),1)
|
||||
CDEFS += -DGLIDE_DISPATCH_SETUP=1 -DGLIDE_DISPATCH_DOWNLOAD=1
|
||||
override USE_FIFO = 1
|
||||
else
|
||||
CDEFS += -DGLIDE_USE_C_TRISETUP=1
|
||||
endif
|
||||
|
||||
# fifo
|
||||
ifeq ($(USE_FIFO),1)
|
||||
CDEFS += -DUSE_PACKET_FIFO=1 -DGLIDE_PACKET3_TRI_SETUP=1
|
||||
endif
|
||||
|
||||
# other
|
||||
CDEFS += -DGLIDE_PLUG -DGLIDE_SPLASH
|
||||
|
||||
ifeq ($(TEXUS2),1)
|
||||
CDEFS += -DHAVE_TEXUS2
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# flags
|
||||
###############################################################################
|
||||
|
||||
# linker
|
||||
LDFLAGS = -nologo -dll -opt:WIN98 -machine:IX86 -nodefaultlib
|
||||
|
||||
# assembler
|
||||
ASFLAGS = -O6 -fwin32 -D__WIN32__ --prefix _
|
||||
ASFLAGS += $(CDEFS)
|
||||
|
||||
# compiler
|
||||
CFLAGS = -nologo -W3 -WX -D__MSC__=1
|
||||
|
||||
LDLIBS = user32.lib kernel32.lib advapi32.lib
|
||||
ifdef DEBUG
|
||||
CFLAGS += -Od -MTd -Zi
|
||||
LDFLAGS += -debugtype:both -debug
|
||||
LDLIBS += LIBCMTD.lib
|
||||
else
|
||||
CPU ?= 6
|
||||
CFLAGS += -DNDEBUG -G$(CPU) -O2 -MT
|
||||
LDLIBS += LIBCMT.lib
|
||||
endif
|
||||
|
||||
CFLAGS += -I. -I../../incsrc -I../../init
|
||||
CFLAGS += -I$(FX_GLIDE_SW)/fxmisc -I$(FX_GLIDE_SW)/newpci/pcilib -I$(FX_GLIDE_SW)/fxmemmap
|
||||
CFLAGS += -I$(FX_GLIDE_SW)/texus2/lib
|
||||
CFLAGS += $(CDEFS)
|
||||
|
||||
# cpu optimized triangle
|
||||
ifeq ($(USE_MMX),1)
|
||||
CFLAGS += -DGL_MMX
|
||||
override USE_X86 = 1
|
||||
endif
|
||||
|
||||
ifeq ($(USE_3DNOW),1)
|
||||
CFLAGS += -DGL_AMD3D
|
||||
override USE_X86 = 1
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# objects
|
||||
###############################################################################
|
||||
|
||||
GLIDE_OBJECTS = \
|
||||
fifo.obj \
|
||||
gsplash.obj \
|
||||
g3df.obj \
|
||||
gu.obj \
|
||||
guclip.obj \
|
||||
gpci.obj \
|
||||
gump.obj \
|
||||
diglide.obj \
|
||||
disst.obj \
|
||||
ditex.obj \
|
||||
gbanner.obj \
|
||||
gerror.obj \
|
||||
gmovie.obj \
|
||||
digutex.obj \
|
||||
ddgump.obj \
|
||||
gaa.obj \
|
||||
gdraw.obj \
|
||||
gglide.obj \
|
||||
glfb.obj \
|
||||
gsst.obj \
|
||||
gtex.obj \
|
||||
gtexdl.obj \
|
||||
gutex.obj \
|
||||
cpuid.obj \
|
||||
fpu.obj \
|
||||
xtexdl_def.obj
|
||||
|
||||
ifeq ($(USE_X86),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw2_def.obj
|
||||
ifeq ($(USE_MMX),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xtexdl_mmx.obj
|
||||
endif
|
||||
ifeq ($(USE_3DNOW),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw2_3dnow.obj \
|
||||
xtexdl_3dnow.obj
|
||||
endif
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
gxdraw.obj
|
||||
endif
|
||||
|
||||
GLIDE_OBJECTS += \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxpci.obj \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxw32.obj \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxvxd.obj \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxnt.obj \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxmsr.obj \
|
||||
../../init/canopus.obj \
|
||||
../../init/dac.obj \
|
||||
../../init/gamma.obj \
|
||||
../../init/gdebug.obj \
|
||||
../../init/info.obj \
|
||||
../../init/parse.obj \
|
||||
../../init/print.obj \
|
||||
../../init/sli.obj \
|
||||
../../init/sst1init.obj \
|
||||
../../init/util.obj \
|
||||
../../init/video.obj \
|
||||
../../init/fxremap.obj
|
||||
|
||||
TEXUS_SOURCES = \
|
||||
$(FX_GLIDE_SW)/texus2/lib/texuslib.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/clamp.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/read.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/resample.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/mipmap.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/quantize.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/ncc.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/nccnnet.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/pal256.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/pal6666.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/dequant.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/view.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/util.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/diffuse.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/write.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/tga.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/3df.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/ppm.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/rgt.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/txs.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/codec.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/eigen.c \
|
||||
$(FX_GLIDE_SW)/texus2/lib/bitcoder.c
|
||||
|
||||
ifeq ($(TEXUS2),1)
|
||||
GLIDE_OBJECTS += $(TEXUS_SOURCES:.c=.obj)
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# rules
|
||||
###############################################################################
|
||||
|
||||
.c.obj:
|
||||
$(CC) -Fo$@ $(CFLAGS) -c $<
|
||||
.rc.res:
|
||||
$(RC) -Fo$@ $(CDEFS) -I$(FX_GLIDE_SW)/fxmisc $<
|
||||
|
||||
###############################################################################
|
||||
# main
|
||||
###############################################################################
|
||||
all: glide2x $(TEXUS_EXEDIR)/$(TEXUS_EXE) fxoem2x
|
||||
|
||||
glide2x: $(GLIDE_LIBDIR)/$(GLIDE_DLL)
|
||||
|
||||
$(GLIDE_LIBDIR)/$(GLIDE_DLL): $(GLIDE_OBJECTS) $(GLIDE_RES)
|
||||
$(LD) -out:$@ $(LDFLAGS) $(GLIDE_OBJECTS) $(LDLIBS) $(GLIDE_RES)
|
||||
|
||||
$(TEXUS_EXEDIR)/$(TEXUS_EXE): $(FX_GLIDE_SW)/texus2/cmd/cmd.c $(GLIDE_LIBDIR)/$(GLIDE_IMP)
|
||||
#ifeq ($(TEXUS2),1)
|
||||
# $(CC) -o $@ $(CFLAGS) $^
|
||||
#else
|
||||
# $(warning Texus2 not enabled... Skipping $(TEXUS_EXE))
|
||||
#endif
|
||||
|
||||
fxoem2x: $(GLIDE_LIBDIR)/fxoem2x.dll
|
||||
|
||||
ifeq ($(FXOEM2X),1)
|
||||
$(GLIDE_LIBDIR)/fxoem2x.dll: ../oem/oeminit.obj ../oem/oeminit.res
|
||||
# $(LD) -out:$@ $(LDFLAGS) ../oem/oeminit.obj $(LDLIBS) ../oem/oeminit.res
|
||||
else
|
||||
$(GLIDE_LIBDIR)/fxoem2x.dll:
|
||||
# $(warning FxOem2x not enabled... Skipping fxoem2x.dll)
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# rules(2)
|
||||
###############################################################################
|
||||
|
||||
#cpuid.obj: cpudtect.asm
|
||||
# $(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw2_def.obj: xdraw2.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xtexdl_def.obj: xtexdl.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -c $<
|
||||
xtexdl_mmx.obj: xtexdl.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_MMX=1 $<
|
||||
xdraw2_3dnow.obj: xdraw2.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $<
|
||||
xtexdl_3dnow.obj: xtexdl.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $<
|
||||
|
||||
$(GLIDE_OBJECTS): fxinline.h fxgasm.h
|
||||
|
||||
fxinline.h: fxgasm.exe
|
||||
./$< -inline > $@
|
||||
|
||||
fxgasm.h: fxgasm.exe
|
||||
./$< -hex > $@
|
||||
|
||||
fxgasm.exe: fxgasm.c
|
||||
$(CC) -o $@ $(CFLAGS) $<
|
||||
|
||||
###############################################################################
|
||||
# clean, realclean
|
||||
###############################################################################
|
||||
|
||||
clean:
|
||||
-$(call UNLINK,*.obj)
|
||||
-$(call UNLINK,../../init/*.obj)
|
||||
-$(call UNLINK,$(FX_GLIDE_SW)/newpci/pcilib/*.obj)
|
||||
-$(call UNLINK,fxinline.h)
|
||||
-$(call UNLINK,fxgasm.h)
|
||||
-$(call UNLINK,$(FX_GLIDE_SW)/texus2/lib/*.obj)
|
||||
-$(call UNLINK,../oem/oeminit.obj)
|
||||
-$(call UNLINK,../oem/oeminit.res)
|
||||
|
||||
realclean: clean
|
||||
-$(call UNLINK,$(GLIDE_LIBDIR)/glide2x.exp)
|
||||
-$(call UNLINK,$(GLIDE_LIBDIR)/$(GLIDE_DLL))
|
||||
-$(call UNLINK,$(GLIDE_LIBDIR)/$(GLIDE_IMP))
|
||||
-$(call UNLINK,$(TEXUS_EXEDIR)/$(TEXUS_EXE))
|
||||
-$(call UNLINK,$(GLIDE_LIBDIR)/fxoem2x.exp)
|
||||
-$(call UNLINK,$(GLIDE_LIBDIR)/fxoem2x.dll)
|
||||
-$(call UNLINK,$(GLIDE_LIBDIR)/fxoem2x.lib)
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <sys/utsname.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int _cpu_detect_asm() {
|
||||
struct utsname name;
|
||||
|
||||
352
glide2x/cvg/glide/src/cpuid.c
Normal file
352
glide2x/cvg/glide/src/cpuid.c
Normal file
@@ -0,0 +1,352 @@
|
||||
/*
|
||||
* CPU detection code
|
||||
*
|
||||
*
|
||||
* Revision 1.1.2.2 2006/09/02 03:12:29 guillemj
|
||||
* Backport glide3 fix for PIC compilation with gcc 4.1 from Hans de Goede.
|
||||
*
|
||||
* Revision 1.1.2.1 2004/12/12 15:16:02 koolsmoky
|
||||
* new cpuid
|
||||
*
|
||||
* Revision 1.1.2.10 2004/10/05 14:54:29 dborca
|
||||
* DOS/OpenWatcom woes
|
||||
*
|
||||
* Revision 1.1.2.9 2003/08/04 12:45:47 dborca
|
||||
* Preparing for MinGW 2.0
|
||||
*
|
||||
* Revision 1.1.2.8 2003/07/29 10:04:32 dborca
|
||||
* Shamelessness.
|
||||
* Safeguard in CPUID.
|
||||
* Changed contact address!
|
||||
* Koolsmoky's texture download fixes.
|
||||
*
|
||||
* Revision 1.1.2.7 2003/07/25 07:14:58 dborca
|
||||
* ... in the name of the Linux, DRI and the sacred Glide...
|
||||
*
|
||||
* Revision 1.1.2.6 2003/07/24 13:13:03 koolsmoky
|
||||
* use __try/__except mechanism for win32 to catch SSE sigillegal in win95
|
||||
*
|
||||
* Revision 1.1.2.5 2003/07/01 11:16:42 dborca
|
||||
* fixed a bug in GNUC code when running Intel; also removed detritus
|
||||
*
|
||||
* Revision 1.1.2.3 2003/06/13 07:22:58 dborca
|
||||
* more fixes to NASM sources
|
||||
*
|
||||
*/
|
||||
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "cpuid.h"
|
||||
|
||||
#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3)))
|
||||
typedef unsigned int __attribute__((__may_alias__)) word32;
|
||||
#else
|
||||
typedef unsigned int word32;
|
||||
#endif
|
||||
|
||||
/* These are the bit flags that get set on calling cpuid
|
||||
* with register eax set to 1
|
||||
*/
|
||||
#define _MMX_FEATURE_BIT 0x00800000
|
||||
#define _SSE_FEATURE_BIT 0x02000000
|
||||
#define _SSE2_FEATURE_BIT 0x04000000
|
||||
|
||||
/* This bit is set when cpuid is called with
|
||||
* register set to 80000001h (only applicable to AMD)
|
||||
*/
|
||||
#define _3DNOW_FEATURE_BIT 0x80000000
|
||||
#define _3DNOWPLUS_FEATURE_BIT 0x40000000
|
||||
#define _MMXPLUS_FEATURE_BIT 0x00400000
|
||||
|
||||
/* Testing code:
|
||||
* TEST_SSE = xorps xmm0, xmm0
|
||||
* TEST_SSE2 = xorpd xmm0, xmm0
|
||||
* TEST_3DNOW = femms
|
||||
* TEST_MMX = emms
|
||||
* TEST_3DNOWPLUS = femms | pswapd mm0, mm0 | femms
|
||||
* TEST_MMXPLUS = emms | pminsw mm0, mm0 | emms
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
#define TEST_CPUID(f) __asm __volatile ("pushl %%ebx; cpuid; popl %%ebx"::"a"(f):"%ecx", "%edx")
|
||||
#define TEST_SSE() __asm __volatile (".byte 0x0f, 0x57, 0xc0")
|
||||
#define TEST_SSE2() __asm __volatile (".byte 0x66, 0x0f, 0x57, 0xc0")
|
||||
#define TEST_3DNOW() __asm __volatile (".byte 0x0f, 0x0e")
|
||||
#define TEST_MMX() __asm __volatile (".byte 0x0f, 0x77")
|
||||
#define TEST_3DNOWPLUS() __asm __volatile (".byte 0x0f, 0x0e, 0x0f, 0x0f, 0xc0, 0xbb, 0x0f, 0x0e")
|
||||
#define TEST_MMXPLUS() __asm __volatile (".byte 0x0f, 0x77, 0x0f, 0xea, 0xc0, 0x0f, 0x77")
|
||||
#else
|
||||
#define TEST_CPUID(f) __asm { _asm mov eax, f _asm cpuid }
|
||||
#define TEST_SSE() __asm { _asm _emit 0x0f _asm _emit 0x57 _asm _emit 0xc0 }
|
||||
#define TEST_SSE2() __asm { _asm _emit 0x66 _asm _emit 0x0f _asm _emit 0x57 _asm _emit 0xc0 }
|
||||
#define TEST_3DNOW() __asm { _asm _emit 0x0f _asm _emit 0x0e }
|
||||
#define TEST_MMX() __asm { _asm _emit 0x0f _asm _emit 0x77 }
|
||||
#define TEST_3DNOWPLUS() __asm { _asm _emit 0x0f _asm _emit 0x0e _asm _emit 0x0f _asm _emit 0x0f _asm _emit 0xc0 _asm _emit 0xbb _asm _emit 0x0f _asm _emit 0x0e }
|
||||
#define TEST_MMXPLUS() __asm { _asm _emit 0x0f _asm _emit 0x77 _asm _emit 0x0f _asm _emit 0xea _asm _emit 0xc0 _asm _emit 0x0f _asm _emit 0x77 }
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __MSC__
|
||||
static jmp_buf j;
|
||||
|
||||
|
||||
|
||||
/* Desc: signal handler
|
||||
*
|
||||
* In : signal number
|
||||
* Out : -
|
||||
*
|
||||
* Note: returns by `longjmp'ing
|
||||
*/
|
||||
static void handler (int signal)
|
||||
{
|
||||
longjmp(j, signal + 1); /* so we can tell... also ensure we don't pass 0 */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Desc: check if CPU has specific feature
|
||||
*
|
||||
* In : feature request
|
||||
* Out : 0 == fail, input == pass
|
||||
*
|
||||
* Note: this should be in the `has_feature' body. The reason it isn't:
|
||||
* under some systems (notably Linux), the `setjmp' may thrash EBX,
|
||||
* which is used for PositionIndependentCode/GlobalOffsetTable system.
|
||||
* Since EBX is non-volatile register, it should be restored upon return.
|
||||
*/
|
||||
static int check_feature (int feature)
|
||||
{
|
||||
if (setjmp(j)) {
|
||||
/* we got here only when `longjmp'ed by signal handlers */
|
||||
return 0;
|
||||
} else {
|
||||
/* we have signals and jump buffer set */
|
||||
switch (feature) {
|
||||
case _CPU_HAS_CPUID: TEST_CPUID(0); break;
|
||||
case _CPU_FEATURE_SSE: TEST_SSE(); break;
|
||||
case _CPU_FEATURE_SSE2: TEST_SSE2(); break;
|
||||
case _CPU_FEATURE_3DNOW: TEST_3DNOW(); break;
|
||||
case _CPU_FEATURE_MMX: TEST_MMX(); break;
|
||||
case _CPU_FEATURE_3DNOWPLUS: TEST_3DNOWPLUS(); break;
|
||||
case _CPU_FEATURE_MMXPLUS: TEST_MMXPLUS(); break;
|
||||
default: return 0;
|
||||
}
|
||||
return feature;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* Desc: perform (possibly faulting) instructions in a safe manner
|
||||
*
|
||||
* In : feature request
|
||||
* Out : 0 == fail, input == pass
|
||||
*
|
||||
* Note: pure ANSI code; stupid Watcom cannot handle this.
|
||||
*/
|
||||
static int has_feature (int feature)
|
||||
{
|
||||
#ifndef __MSC__
|
||||
int rv;
|
||||
|
||||
/* register signal handlers */
|
||||
void (*old_sigill)(int) = signal(SIGILL, handler);
|
||||
if (old_sigill == SIG_ERR) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
rv = check_feature(feature);
|
||||
|
||||
/* restore the signal handlers */
|
||||
signal(SIGILL, old_sigill);
|
||||
return rv;
|
||||
#else
|
||||
/* Use the non-standard __try/__except mechanism because win95 fails to catch
|
||||
* sigillegal for SSE using standard signal mechanism.
|
||||
* HACK ALERT! HACK ALERT! HACK ALERT!
|
||||
* This means the MinGW version cannot be safely run under Win95!
|
||||
*/
|
||||
#define _TRY() __try {
|
||||
#define _EXCEPTION() } __except(1) { return 0; } /* EXCEPTION_EXECUTE_HANDLER=1 */
|
||||
switch (feature) {
|
||||
case _CPU_HAS_CPUID: _TRY() TEST_CPUID(0) _EXCEPTION() break;
|
||||
case _CPU_FEATURE_SSE: _TRY() TEST_SSE() _EXCEPTION() break;
|
||||
case _CPU_FEATURE_SSE2: _TRY() TEST_SSE2() _EXCEPTION() break;
|
||||
case _CPU_FEATURE_3DNOW: _TRY() TEST_3DNOW() _EXCEPTION() break;
|
||||
case _CPU_FEATURE_MMX: _TRY() TEST_MMX() _EXCEPTION() break;
|
||||
case _CPU_FEATURE_3DNOWPLUS: _TRY() TEST_3DNOWPLUS() _EXCEPTION() break;
|
||||
case _CPU_FEATURE_MMXPLUS: _TRY() TEST_MMXPLUS() _EXCEPTION() break;
|
||||
default: return 0;
|
||||
}
|
||||
return feature;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Desc: get CPU info
|
||||
*
|
||||
* In : pointer to _p_info
|
||||
* Out : features
|
||||
*
|
||||
* Note: -
|
||||
*/
|
||||
int _cpuid (_p_info *pinfo)
|
||||
{
|
||||
word32 dwId = 0;
|
||||
word32 dwFeature = 0;
|
||||
word32 dwExt = 0;
|
||||
int feature = 0, os_support = 0;
|
||||
char Ident[13];
|
||||
|
||||
if (!has_feature(_CPU_HAS_CPUID)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
__asm("\n\
|
||||
/* get the vendor string */ \n\
|
||||
pushl %%ebx \n\
|
||||
xorl %%eax, %%eax \n\
|
||||
cpuid \n\
|
||||
movl %%ebx, %%eax \n\
|
||||
popl %%ebx \n\
|
||||
movl %%eax, %3 \n\
|
||||
movl %%edx, %4 \n\
|
||||
movl %%ecx, %5 \n\
|
||||
/* get the Standard bits */ \n\
|
||||
pushl %%ebx \n\
|
||||
movl $1, %%eax \n\
|
||||
cpuid \n\
|
||||
popl %%ebx \n\
|
||||
movl %%eax, %1 \n\
|
||||
movl %%edx, %2 \n\
|
||||
/* get AMD-specials */ \n\
|
||||
pushl %%ebx \n\
|
||||
movl $0x80000000, %%eax \n\
|
||||
cpuid \n\
|
||||
popl %%ebx \n\
|
||||
cmpl $0x80000000, %%eax \n\
|
||||
jc 0f \n\
|
||||
pushl %%ebx \n\
|
||||
movl $0x80000001, %%eax \n\
|
||||
cpuid \n\
|
||||
popl %%ebx \n\
|
||||
movl %%edx, %0 \n\
|
||||
0: \n\
|
||||
":"=g"(dwExt), "=g"(dwId), "=g"(dwFeature),
|
||||
"=g"(((long *)Ident)[0]), "=g"(((long *)Ident)[1]), "=g"(((long *)Ident)[2])
|
||||
::"%eax", "%ecx", "%edx");
|
||||
#else
|
||||
_asm
|
||||
{
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
|
||||
/* get the vendor string */
|
||||
xor eax,eax
|
||||
cpuid
|
||||
mov dword ptr [Ident],ebx
|
||||
mov dword ptr [Ident+4],edx
|
||||
mov dword ptr [Ident+8],ecx
|
||||
|
||||
/* get the Standard bits */
|
||||
mov eax,1
|
||||
cpuid
|
||||
mov dwId,eax
|
||||
mov dwFeature,edx
|
||||
|
||||
/* get AMD-specials */
|
||||
mov eax,80000000h
|
||||
cpuid
|
||||
cmp eax,80000000h
|
||||
jc notamd
|
||||
mov eax,80000001h
|
||||
cpuid
|
||||
mov dwExt,edx
|
||||
|
||||
notamd:
|
||||
pop ecx
|
||||
pop ebx
|
||||
pop edx
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef __WATCOMC__
|
||||
/* stupid watcom does not sigill... */
|
||||
if (dwFeature & _MMX_FEATURE_BIT) {
|
||||
feature |= _CPU_FEATURE_MMX;
|
||||
os_support |= has_feature(_CPU_FEATURE_MMX);
|
||||
}
|
||||
if (dwExt & _3DNOW_FEATURE_BIT) {
|
||||
feature |= _CPU_FEATURE_3DNOW;
|
||||
os_support |= has_feature(_CPU_FEATURE_3DNOW);
|
||||
}
|
||||
if (dwExt & _3DNOWPLUS_FEATURE_BIT) {
|
||||
feature |= _CPU_FEATURE_3DNOWPLUS;
|
||||
os_support |= has_feature(_CPU_FEATURE_3DNOWPLUS);
|
||||
}
|
||||
if (dwExt & _MMXPLUS_FEATURE_BIT) {
|
||||
feature |= _CPU_FEATURE_MMXPLUS;
|
||||
os_support |= has_feature(_CPU_FEATURE_MMXPLUS);
|
||||
}
|
||||
if (dwFeature & _SSE_FEATURE_BIT) {
|
||||
feature |= _CPU_FEATURE_SSE;
|
||||
os_support |= has_feature(_CPU_FEATURE_SSE);
|
||||
}
|
||||
if (dwFeature & _SSE2_FEATURE_BIT) {
|
||||
feature |= _CPU_FEATURE_SSE2;
|
||||
os_support |= has_feature(_CPU_FEATURE_SSE2);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (pinfo) {
|
||||
memset(pinfo, 0, sizeof(_p_info));
|
||||
pinfo->os_support = os_support;
|
||||
pinfo->feature = feature;
|
||||
pinfo->family = (dwId >> 8) & 0xF; /* retrieving family */
|
||||
pinfo->model = (dwId >> 4) & 0xF; /* retrieving model */
|
||||
pinfo->stepping = dwId & 0xF; /* retrieving stepping */
|
||||
Ident[12] = 0;
|
||||
strcpy(pinfo->v_name, Ident);
|
||||
}
|
||||
|
||||
return feature;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#if CPUTEST
|
||||
#include <stdio.h>
|
||||
/* Desc:
|
||||
*
|
||||
* In :
|
||||
* Out :
|
||||
*
|
||||
* Note:
|
||||
*/
|
||||
int main (void)
|
||||
{
|
||||
_p_info p;
|
||||
_cpuid(&p);
|
||||
printf("vendor : %s\n", p.v_name);
|
||||
printf("family : %d\n", p.family);
|
||||
printf("model : %d\n", p.model);
|
||||
printf("stepping: %X\n", p.stepping);
|
||||
printf("feature : %08x\n", p.feature);
|
||||
printf("support : %08x\n", p.os_support);
|
||||
printf("--------\n");
|
||||
printf("cpuid : %d\n", has_feature(_CPU_HAS_CPUID));
|
||||
printf("MMX : %d\n", has_feature(_CPU_FEATURE_MMX));
|
||||
printf("SSE : %d\n", has_feature(_CPU_FEATURE_SSE));
|
||||
printf("SSE2 : %d\n", has_feature(_CPU_FEATURE_SSE2));
|
||||
printf("3DNow! : %d\n", has_feature(_CPU_FEATURE_3DNOW));
|
||||
printf("3DNow!+ : %d\n", has_feature(_CPU_FEATURE_3DNOWPLUS));
|
||||
printf("MMX+ : %d\n", has_feature(_CPU_FEATURE_MMXPLUS));
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@@ -19,6 +19,15 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2.2.1 2005/01/22 14:52:01 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.2 2000/10/03 18:28:33 mercury
|
||||
** 003-clean_up_cvg-000, cvg tree cleanup.
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 16 2/20/98 11:00a Peter
|
||||
** removed glide3 from glid2 tree
|
||||
@@ -279,8 +288,8 @@ GR_ENTRY(guMPDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const Gr
|
||||
|
||||
FxU32 alphamode, alphamode_orig;
|
||||
FxU32 fbzcolorpath, fbzcolorpath_orig;
|
||||
FxU32 fbzmode, fbzmode_orig;
|
||||
FxU32 fogmode, fogmode_orig;
|
||||
FxU32 fbzmode, fbzmode_orig = 0;
|
||||
FxU32 fogmode, fogmode_orig = 0;
|
||||
|
||||
alphamode = alphamode_orig = gc->state.fbi_config.alphaMode;
|
||||
fbzcolorpath = fbzcolorpath_orig = gc->state.fbi_config.fbzColorPath;
|
||||
@@ -399,8 +408,8 @@ GR_ENTRY(guMPDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const Gr
|
||||
|
||||
FxU32 alphamode, alphamode_orig;
|
||||
FxU32 fbzcolorpath, fbzcolorpath_orig;
|
||||
FxU32 fbzmode, fbzmode_orig;
|
||||
FxU32 fogmode, fogmode_orig;
|
||||
FxU32 fbzmode, fbzmode_orig = 0;
|
||||
FxU32 fogmode, fogmode_orig = 0;
|
||||
|
||||
alphamode = alphamode_orig = gc->state.fbi_config.alphaMode;
|
||||
fbzcolorpath = fbzcolorpath_orig = gc->state.fbi_config.fbzColorPath;
|
||||
|
||||
@@ -19,6 +19,19 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.3 2005/01/22 14:52:01 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.1.1.1.2.2 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.1.1.1.2.1 2004/12/12 15:18:58 koolsmoky
|
||||
** changes to support new cpuid; moved single_precision_asm(), double_precision_asm() from cpudetect.asm
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 40 6/23/98 5:38p Peter
|
||||
** lfb hinting
|
||||
@@ -212,26 +225,26 @@ _grSwizzleColor(GrColor_t *color)
|
||||
break;
|
||||
|
||||
case GR_COLORFORMAT_ABGR:
|
||||
red = *color & 0x00ff;
|
||||
blue = (*color >> 16) & 0xff;
|
||||
*color &= 0xff00ff00;
|
||||
*color |= ((red << 16) | blue);
|
||||
red = (*color & 0x000000ff) << 16; /* 00RR0000 */
|
||||
blue = (*color & 0x00ff0000) >> 16; /* 000000BB */
|
||||
*color &= 0xff00ff00; /* AA00GG00 */
|
||||
*color |= (red | blue); /* AARRGGBB */
|
||||
break;
|
||||
|
||||
case GR_COLORFORMAT_RGBA:
|
||||
blue = (*color & 0x0000ff00) >> 8;
|
||||
green = (*color & 0x00ff0000) >> 16;
|
||||
red = (*color & 0xff000000) >> 24;
|
||||
alpha = (*color & 0x000000ff);
|
||||
*color = (alpha << 24) | (red << 16) | (green << 8) | blue;
|
||||
blue = (*color & 0x0000ff00) >> 8; /* 000000BB */
|
||||
green = (*color & 0x00ff0000) >> 8; /* 0000GG00 */
|
||||
red = (*color & 0xff000000) >> 8; /* 00RR0000 */
|
||||
alpha = (*color & 0x000000ff) << 24; /* AA000000 */
|
||||
*color = alpha | red | green | blue; /* AARRGGBB */
|
||||
break;
|
||||
|
||||
case GR_COLORFORMAT_BGRA:
|
||||
blue = (*color & 0xff000000) >> 24;
|
||||
green = (*color & 0x00ff0000) >> 16;
|
||||
red = (*color & 0x0000ff00) >> 8;
|
||||
alpha = (*color & 0x000000ff);
|
||||
*color = (alpha << 24) | (red << 16) | (green << 8) | blue;
|
||||
blue = (*color & 0xff000000) >> 24; /* 000000BB */
|
||||
green = (*color & 0x00ff0000) >> 8; /* 0000GG00 */
|
||||
red = (*color & 0x0000ff00) << 8; /* 00RR0000 */
|
||||
alpha = (*color & 0x000000ff) << 24; /* AA000000 */
|
||||
*color = alpha | red | green | blue; /* AARRGGBB */
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 22 4/21/98 10:05a Peter
|
||||
** grSstSelect cleanup (Thanks John/Rufus)
|
||||
@@ -109,7 +112,7 @@ GR_DIENTRY(grSstQueryBoards, FxBool, ( GrHwConfiguration *hwc ))
|
||||
GDBG_INIT();
|
||||
GDBG_INFO(80,"grSstQueryBoards(0x%x)\n",hwc);
|
||||
|
||||
#if GLIDE_INIT_HAL
|
||||
#if 1 /*GLIDE_INIT_HAL*/
|
||||
hwc->num_sst = (_grSstDetectResources()
|
||||
? _GlideRoot.hwConfig.num_sst
|
||||
: 0);
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 22 3/14/98 1:07p Peter
|
||||
** mac port happiness
|
||||
@@ -512,7 +515,7 @@ const FxU32 kFifoCheckMask = 0xFFFF;
|
||||
FxU32 gFifoCheckCount = 0;
|
||||
#endif
|
||||
|
||||
void GR_CDECL
|
||||
void FX_CALL
|
||||
_FifoMakeRoom(const FxI32 blockSize, const char* fName, const int fLine)
|
||||
{
|
||||
#define FN_NAME "_FifoMakeRoom"
|
||||
|
||||
85
glide2x/cvg/glide/src/fpu.c
Normal file
85
glide2x/cvg/glide/src/fpu.c
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* FPU handling code
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This routine sets the precision to single which effects all
|
||||
* adds, mults, and divs.
|
||||
*/
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
void single_precision_asm()
|
||||
{
|
||||
#if defined(__MSC__)
|
||||
__asm {
|
||||
push eax ; make room
|
||||
fnclex ; clear pending exceptions
|
||||
fstcw WORD PTR [esp]
|
||||
mov eax, DWORD PTR [esp]
|
||||
and eax, 0000fcffh ; clear bits 9:8
|
||||
mov DWORD PTR [esp], eax
|
||||
fldcw WORD PTR [esp]
|
||||
pop eax
|
||||
}
|
||||
#elif defined(__GNUC__)
|
||||
asm("push %eax\n"
|
||||
"fnclex\n"
|
||||
"fstcw (%esp)\n"
|
||||
"movl (%esp), %eax\n"
|
||||
"and $0x0000fcff, %eax\n"
|
||||
"movl %eax, (%esp)\n"
|
||||
"fldcw (%esp)\n"
|
||||
"pop %eax");
|
||||
#else
|
||||
#error "Need to implement single_precision_asm() for this compiler"
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
#warning "Using a stub for single_precision_asm() for this architecture"
|
||||
void single_precision_asm()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This routine sets the precision to double which effects all
|
||||
* adds, mults, and divs.
|
||||
*/
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
void double_precision_asm()
|
||||
{
|
||||
#if defined(__MSC__)
|
||||
__asm {
|
||||
push eax ; make room
|
||||
fnclex ; clear pending exceptions
|
||||
fstcw WORD PTR [esp]
|
||||
mov eax, DWORD PTR [esp]
|
||||
and eax, 0000fcffh ; clear bits 9:8
|
||||
or eax, 000002ffh ; set 9:8 to 10
|
||||
mov DWORD PTR [esp], eax
|
||||
fldcw WORD PTR [esp]
|
||||
pop eax
|
||||
}
|
||||
#elif defined(__GNUC__)
|
||||
asm("push %eax\n"
|
||||
"fnclex\n"
|
||||
"fstcw (%esp)\n"
|
||||
"movw (%esp), %eax\n"
|
||||
"and $0x0000fcff, %eax\n"
|
||||
"or $0x000002ff, %eax\n"
|
||||
"mov %eax, (%esp)\n"
|
||||
"fldcw (%esp)\n"
|
||||
"pop %eax");
|
||||
#else
|
||||
#error "Need to implement double_precision_asm() for this compiler"
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
#warning "Using a stub for double_precision_asm() for this architecture"
|
||||
void double_precision_asm()
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
* macros for creating assembler offset files
|
||||
*----------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __linux__
|
||||
#define NEWLINE printf("\n")
|
||||
#define COMMENT printf(";----------------------------------------------------------------------\n")
|
||||
|
||||
@@ -46,44 +45,16 @@
|
||||
COMMENT; NEWLINE
|
||||
|
||||
#define OFFSET(p,o,pname) if (hex) \
|
||||
printf("%s\t= %08xh\n",pname,((int)&p.o)-(int)&p); \
|
||||
else printf("%s\t= %10d\n",pname,((int)&p.o)-(int)&p)
|
||||
printf("%s\tequ %08xh\n",pname,((int)&p.o)-(int)&p); \
|
||||
else printf("%s\tequ %10d\n",pname,((int)&p.o)-(int)&p)
|
||||
|
||||
#define OFFSET2(p,o,pname) if (hex) \
|
||||
printf("%s\t= %08xh\n",pname,((int)&o)-(int)&p); \
|
||||
else printf("%s\t= %10d\n",pname,((int)&o)-(int)&p)
|
||||
printf("%s\tequ %08xh\n",pname,((int)&o)-(int)&p); \
|
||||
else printf("%s\tequ %10d\n",pname,((int)&o)-(int)&p)
|
||||
|
||||
#define SIZEOF(p,pname) if (hex) \
|
||||
printf("SIZEOF_%s\t= %08xh\n",pname,sizeof(p)); \
|
||||
else printf("SIZEOF_%s\t= %10d\n",pname,sizeof(p))
|
||||
|
||||
#else
|
||||
|
||||
#define NEWLINE printf("\n");
|
||||
#define COMMENT printf("#----------------------------------------------------------------------\n")
|
||||
|
||||
#define HEADER(str) NEWLINE; COMMENT; \
|
||||
printf("# Assembler offsets for %s struct\n",str);\
|
||||
COMMENT; NEWLINE
|
||||
|
||||
#define OFFSET(p,o,pname) if (hex) \
|
||||
printf("%s\t .EQU %08x\n",pname,((int)&p.o)-(int)&p); \
|
||||
else printf("%s\t .EQU %10d\n",pname,((int)&p.o)-(int)&p)
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
|
||||
#define HWOFFSET(p, o, pname) if (hex) \
|
||||
printf("%s\t .EQU %08x\n",pname,(((int) &p.o)-(int)&p)>>2);\
|
||||
else printf("%s\t .EQU %10d\n",pname,(((int)&p.o)-(int)&p))
|
||||
#endif /* (GLIDE_PLATFORM & GLIDE_HW_SST96) */
|
||||
|
||||
#define OFFSET2(p,o,pname) if (hex) \
|
||||
printf("%s\t .EQU %08x\n",pname,((int)&o)-(int)&p); \
|
||||
else printf("%s\t .EQU %10d\n",pname,((int)&o)-(int)&p)
|
||||
|
||||
#define SIZEOF(p,pname) if (hex) \
|
||||
printf("SIZEOF_%s\t .EQU %08x\n",pname,sizeof(p)); \
|
||||
else printf("SIZEOF_%s\t .EQU %10d\n",pname,sizeof(p))
|
||||
#endif
|
||||
printf("SIZEOF_%s\tequ %08lxh\n",pname,sizeof(p)); \
|
||||
else printf("SIZEOF_%s\tequ %10ld\n",pname,sizeof(p))
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
@@ -106,17 +77,17 @@ main (int argc, char **argv)
|
||||
printf("\n");
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
printf("#define kCurGCOffset 0x%XUL\n",
|
||||
printf("#define kCurGCOffset 0x%lXUL\n",
|
||||
offsetof(struct _GlideRoot_s, curGC));
|
||||
|
||||
printf("#define kTriProcOffset 0x%XUL\n",
|
||||
offsetof(struct GrGC_s, cmdTransportInfo.triSetupProc));
|
||||
printf("#define kTriProcOffset 0x%lXUL\n",
|
||||
offsetof(struct GrGC_s, curArchProcs.triSetupProc));
|
||||
printf("#define kTriProcOffsetClean %d\n",
|
||||
offsetof(struct GrGC_s, cmdTransportInfo.triSetupProc));
|
||||
offsetof(struct GrGC_s, curArchProcs.triSetupProc));
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
|
||||
printf("/* The # of 2-byte entries in the hw fog table */\n");
|
||||
printf("#define kInternalFogTableEntryCount 0x%XUL\n",
|
||||
printf("#define kInternalFogTableEntryCount 0x%lXUL\n",
|
||||
sizeof(dummyRegs.fogTable) >> 1);
|
||||
|
||||
printf("\n");
|
||||
@@ -135,6 +106,7 @@ main (int argc, char **argv)
|
||||
OFFSET (gc,base_ptr,"base_ptr\t");
|
||||
OFFSET (gc,reg_ptr,"reg_ptr\t\t");
|
||||
OFFSET (gc,lfb_ptr,"lfb_ptr\t\t");
|
||||
OFFSET (gc,tex_ptr,"tex_ptr\t\t");
|
||||
OFFSET (gc,state.cull_mode,"cull_mode\t");
|
||||
OFFSET (gc, regDataList,"regDataList\t");
|
||||
OFFSET (gc, tsuDataList,"tsuDataList\t");
|
||||
@@ -157,6 +129,10 @@ main (int argc, char **argv)
|
||||
OFFSET (gc, cmdTransportInfo.fifoLfbP, "fifoLfbP");
|
||||
OFFSET (gc, cmdTransportInfo.lfbLockCount, "lfbLockCount");
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
OFFSET (gc,curArchProcs.triSetupProc,"kTriProcOffset\t\t");
|
||||
#endif
|
||||
|
||||
SIZEOF (gr.GCs[0].state,"GrState\t");
|
||||
SIZEOF (gr.hwConfig,"GrHwConfiguration");
|
||||
SIZEOF (gr.GCs[0],"GC\t");
|
||||
|
||||
@@ -19,6 +19,23 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2.2.3 2005/01/22 14:52:01 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.2.2.2 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.2.2.1 2004/12/12 15:17:18 koolsmoky
|
||||
** support new cpuid
|
||||
**
|
||||
** Revision 1.2 2003/06/28 19:31:06 guillemj
|
||||
** Fix compilation warnings.
|
||||
** Removed some trailing spaces.
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:09 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 206 6/06/98 12:06p Peter
|
||||
** gmt's trilinear hell bug
|
||||
@@ -272,6 +289,7 @@
|
||||
#include <3dfx.h>
|
||||
#include <glidesys.h>
|
||||
#include <gdebug.h>
|
||||
#include <cpuid.h>
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_HW_H3)
|
||||
#include <h3.h>
|
||||
@@ -418,7 +436,7 @@ do { \
|
||||
**
|
||||
*/
|
||||
|
||||
struct _GrState_s
|
||||
struct _GrState_s
|
||||
{
|
||||
GrCullMode_t /* these go in front for cache hits */
|
||||
cull_mode; /* cull neg, cull pos, don't cull */
|
||||
@@ -500,6 +518,102 @@ struct _GrState_s
|
||||
a, r, g, b; /* Constant color values for Delta0 mode */
|
||||
};
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
/* gpci.c
|
||||
*
|
||||
* Set of procs for the current cpu type. These are selected out of
|
||||
* the _archXXXX proc list that is selected at grGlideInit time.
|
||||
*/
|
||||
|
||||
typedef FxI32 (FX_CALL* GrTriSetupProc)(const void*, const void*, const void*);
|
||||
typedef GrTriSetupProc GrTriSetupProcVector[2];
|
||||
#if GLIDE_PACKED_RGB
|
||||
typedef GrTriSetupProcVector GrTriSetupProcArchVector[3];
|
||||
#else
|
||||
typedef GrTriSetupProcVector GrTriSetupProcArchVector[1];
|
||||
#endif
|
||||
|
||||
/* Decalrations of the dispatchable procs found in xdraw2.asm and
|
||||
* xtexdl.c for teh triangle and texture download procs respectively.
|
||||
*/
|
||||
extern FxI32 FX_CALL _trisetup(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_cull(const void*, const void*, const void*);
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
extern FxI32 FX_CALL _trisetup_rgb(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_cull_rgb(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_argb(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_cull_argb(const void*, const void*, const void*);
|
||||
#endif /* GLIDE_PACKED_RBG */
|
||||
|
||||
#if GL_AMD3D
|
||||
extern FxI32 FX_CALL _trisetup_3DNow(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_cull_3DNow(const void*, const void*, const void*);
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
extern FxI32 FX_CALL _trisetup_rgb_3DNow(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_cull_rgb_3DNow(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_argb_3DNow(const void*, const void*, const void*);
|
||||
extern FxI32 FX_CALL _trisetup_cull_argb_3DNow(const void*, const void*, const void*);
|
||||
#endif /* GLIDE_PACKED_RBG */
|
||||
#endif /* GL_AMD3D */
|
||||
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
/* _GlideRoot.curTexProcs is an array of (possibly specialized
|
||||
* function pointers indexed by texture format size (8/16 bits) and
|
||||
* texture line width (1/2/4/>4).
|
||||
*
|
||||
* xtexdl.c
|
||||
*/
|
||||
struct GrGC_s;
|
||||
typedef void (FX_CALL* GrTexDownloadProc)(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
typedef GrTexDownloadProc GrTexDownloadProcVector[2][4];
|
||||
|
||||
extern void FX_CALL _grTexDownload_Default_8_1(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
extern void FX_CALL _grTexDownload_Default_8_2(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
extern void FX_CALL _grTexDownload_Default_8_4(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
extern void FX_CALL _grTexDownload_Default_8_WideS(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
|
||||
extern void FX_CALL _grTexDownload_Default_16_1(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
extern void FX_CALL _grTexDownload_Default_16_2(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
extern void FX_CALL _grTexDownload_Default_16_4(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
extern void FX_CALL _grTexDownload_Default_16_WideS(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
|
||||
#if GL_AMD3D
|
||||
/* xtexdl.asm */
|
||||
extern void FX_CALL _grTexDownload_3DNow_MMX(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
#endif /* GL_AMD3D */
|
||||
|
||||
#if GL_MMX
|
||||
/* xtexdl.asm */
|
||||
extern void FX_CALL _grTexDownload_MMX(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData);
|
||||
#endif /* GL_MMX */
|
||||
#endif /* GLIDE_DISPATCH_DOWNLOAD */
|
||||
|
||||
typedef struct GrGC_s
|
||||
{
|
||||
FxU32
|
||||
@@ -524,6 +638,15 @@ typedef struct GrGC_s
|
||||
GrState
|
||||
state; /* state of Glide/SST */
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
struct {
|
||||
/* Current triangle rendering proc specialized for culling/no
|
||||
* culling and viewport/window coordinates.
|
||||
*/
|
||||
GrTriSetupProc triSetupProc;
|
||||
} curArchProcs;
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
|
||||
struct cmdTransportInfo {
|
||||
FxU32 triPacketHdr; /* Pre-computed packet header for
|
||||
* independent triangles.
|
||||
@@ -565,10 +688,6 @@ typedef struct GrGC_s
|
||||
|
||||
FxBool fifoLfbP; /* Do we expect lfb writes to go through the fifo? */
|
||||
FxBool lfbLockCount; /* Have we done an lfb lock? Count of the locks. */
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
FxI32 (FX_CALL *triSetupProc)(const GrVertex* a, const GrVertex* b, const GrVertex* c);
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
|
||||
#if GLIDE_USE_SHADOW_FIFO
|
||||
FxU32* fifoShadowBase; /* Buffer that shadows the hw fifo for debugging */
|
||||
@@ -716,7 +835,7 @@ typedef struct GrGC_s
|
||||
struct _GlideRoot_s {
|
||||
int p6Fencer; /* xchg to here to keep this in cache!!! */
|
||||
int current_sst;
|
||||
FxU32 CPUType;
|
||||
_p_info CPUType; /* CPUID */
|
||||
GrGC *curGC; /* point to the current GC */
|
||||
FxU32 packerFixAddress; /* address to write packer fix to */
|
||||
FxBool windowsInit; /* Is the Windows part of glide initialized? */
|
||||
@@ -812,6 +931,17 @@ struct _GlideRoot_s {
|
||||
* sst's and actual boards.
|
||||
*/
|
||||
GrGC GCs[MAX_NUM_SST]; /* one GC per board */
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP || GLIDE_DISPATCH_DOWNLOAD
|
||||
struct {
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
GrTriSetupProcArchVector* curTriProcs;
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
GrTexDownloadProcVector* curTexProcs;
|
||||
#endif /* GLIDE_DISPATCH_DOWNLOAD */
|
||||
} deviceArchProcs;
|
||||
#endif /* GLIDE_DISPATCH_SETUP || GLIDE_DISPATCH_DOWNLOAD */
|
||||
};
|
||||
|
||||
extern struct _GlideRoot_s GR_CDECL _GlideRoot;
|
||||
@@ -879,37 +1009,13 @@ extern GrGCFuncs _curGCFuncs;
|
||||
void _grMipMapInit(void);
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup_cull(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
|
||||
#define TRISETUP_NORGB(__cullMode) (((__cullMode) == GR_CULL_DISABLE) \
|
||||
? _trisetup \
|
||||
: _trisetup_cull)
|
||||
|
||||
#define TRISETUP_NORGB (*_GlideRoot.deviceArchProcs.curTriProcs + 0)
|
||||
#if GLIDE_PACKED_RGB
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup_cull_rgb(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup_cull_argb(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup_rgb(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup_argb(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
|
||||
#define TRISETUP_RGB(__cullMode) (((__cullMode) == GR_CULL_DISABLE) \
|
||||
? _trisetup_rgb \
|
||||
: _trisetup_cull_rgb)
|
||||
#define TRISETUP_ARGB(__cullMode) (((__cullMode) == GR_CULL_DISABLE) \
|
||||
? _trisetup_argb \
|
||||
: _trisetup_cull_argb)
|
||||
|
||||
#else /* !GLIDE_PACKED_RGB */
|
||||
#define TRISETUP_RGB(__cullMode) TRISETUP_NORGB(__cullMode)
|
||||
#define TRISETUP_ARGB(__cullMode) TRISETUP_NORGB(__cullMode)
|
||||
#define TRISETUP_RGB (*_GlideRoot.deviceArchProcs.curTriProcs + 1)
|
||||
#define TRISETUP_ARGB (*_GlideRoot.deviceArchProcs.curTriProcs + 2)
|
||||
#endif /* !GLIDE_PACKED_RGB */
|
||||
#define TRISETUP (*gc->cmdTransportInfo.triSetupProc)
|
||||
#define PROC_SELECT_TRISETUP(__procVector, __cullMode) (__procVector)[(__cullMode) != GR_CULL_DISABLE]
|
||||
#define TRISETUP (*gc->curArchProcs.triSetupProc)
|
||||
#else /* !GLIDE_DISPATCH_SETUP */
|
||||
FxI32 FX_CSTYLE
|
||||
_trisetup_asm(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
|
||||
@@ -1154,7 +1260,7 @@ ASSERT_FAULT_IMMED((FxU32)gc->cmdTransportInfo.fifoRoom < gc->cmdTransportInfo.f
|
||||
ASSERT_FAULT_IMMED((FxU32)gc->cmdTransportInfo.fifoPtr < (FxU32)gc->cmdTransportInfo.fifoEnd)
|
||||
#endif /* !FIFO_ASSERT_FULL */
|
||||
|
||||
void GR_CDECL
|
||||
extern void FX_CALL
|
||||
_FifoMakeRoom(const FxI32 blockSize, const char* fName, const int fLine);
|
||||
|
||||
#define GR_CHECK_FOR_ROOM(__n, __p) \
|
||||
@@ -1904,11 +2010,21 @@ _grCVGFifoDump_Linear(const FxU32* const linearPacketAddr);
|
||||
* probably do something silly like wrap around zero.
|
||||
*/
|
||||
#if GLIDE_PACKED_RGB
|
||||
#define RGBA_COMP(__fpVal, __fpBias, __fpShift, __fpMask) \
|
||||
/*#define RGBA_COMP(__fpVal, __fpBias, __fpShift, __fpMask) \
|
||||
((_GlideRoot.pool.ftemp1 = (float)((float)(__fpVal) + (float)(__fpBias))), \
|
||||
GR_ASSERT((__fpVal) >= 0.0f), \
|
||||
GR_ASSERT((__fpVal) < 256.0f), \
|
||||
(((*(const FxU32*)&_GlideRoot.pool.ftemp1) & (__fpMask)) << (__fpShift)))
|
||||
(((*(const FxU32*)&_GlideRoot.pool.ftemp1) & (__fpMask)) << (__fpShift)))*/
|
||||
/* dpc - 10 feb 1998 -
|
||||
* Some apps send color values outside of the range [0..255]
|
||||
*/
|
||||
#define RGBA_COMP(__fpVal, __fpBias, __fpShift, __fpMask) \
|
||||
((_GlideRoot.pool.ftemp1 = (float)((float)(__fpVal) + (float)(__fpBias))), \
|
||||
((((float)(__fpVal)) > 255.0f) \
|
||||
? (__fpMask) \
|
||||
: ((((float)(__fpVal)) < 0.0f) \
|
||||
? 0x00UL \
|
||||
: ((*(const FxU32*)&_GlideRoot.pool.ftemp1) & (__fpMask)))) << (__fpShift))
|
||||
|
||||
#define RGBA_COMP_CLAMP(__fpVal, __compToken) \
|
||||
RGBA_COMP(__fpVal, kPackBias##__compToken, kPackShift##__compToken, kPackMask##__compToken)
|
||||
@@ -2078,7 +2194,7 @@ enum {
|
||||
};
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_HW_CVG)
|
||||
#define TEX_ROW_ADDR_INCR(__t, __lod) ((__t) << 9)
|
||||
#define TEX_ROW_ADDR_INCR(__t) ((__t) << 9)
|
||||
#elif (GLIDE_PLATFORM & GLIDE_HW_H3)
|
||||
#define TEX_ROW_ADDR_INCR(__t, __lod) ((__t) << 7)
|
||||
#else
|
||||
@@ -2222,7 +2338,7 @@ do { \
|
||||
#define REG_GROUP_SETF_CLAMP(__regBase, __regAddr, __val) \
|
||||
do { \
|
||||
const FxU32 fpClampVal = FP_FLOAT_CLAMP(__val); \
|
||||
REG_GROUP_ASSERT(__regAddr, fpClampVal, FXTRUE); \
|
||||
REG_GROUP_ASSERT(__regAddr, fpClampVal, FXTRUE); \
|
||||
SET(((FxU32*)(__regBase))[offsetof(SstRegs, __regAddr) >> 2], fpClampVal); \
|
||||
GR_INC_SIZE(sizeof(FxU32)); \
|
||||
} while(0)
|
||||
@@ -2372,8 +2488,8 @@ _grErrorCallback(const char* const procName,
|
||||
va_list args);
|
||||
#endif
|
||||
|
||||
extern FxU32 GR_CDECL
|
||||
_cpu_detect_asm(void);
|
||||
/*extern FxU32 GR_CDECL
|
||||
_cpu_detect_asm(void);*/
|
||||
|
||||
extern void GR_CDECL
|
||||
single_precision_asm(void);
|
||||
|
||||
61
glide2x/cvg/glide/src/fxsplash.h
Normal file
61
glide2x/cvg/glide/src/fxsplash.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Header$
|
||||
** $Log:
|
||||
** 3 3dfx 1.0.1.0.1.0 10/11/00 Brent Forced check in to enforce
|
||||
** branching.
|
||||
** 2 3dfx 1.0.1.0 06/20/00 Joseph Kain Changes to support the
|
||||
** Napalm Glide open source release. Changes include cleaned up offensive
|
||||
** comments and new legal headers.
|
||||
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
|
||||
** $
|
||||
**
|
||||
** 1 2/19/99 5:50p Peter
|
||||
** type definitions for new splash screen
|
||||
*/
|
||||
|
||||
#ifndef _FX_SPLASH_H_
|
||||
#define _FX_SPLASH_H_
|
||||
|
||||
#include "3dfx.h"
|
||||
#define FX_DLL_DEFINITION
|
||||
#include "fxdll.h"
|
||||
#include "glide.h"
|
||||
|
||||
typedef FxBool
|
||||
(FX_CALL* GrSplashInitProc)(FxU32 hWnd,
|
||||
FxU32 screenWidth, FxU32 screenHeight,
|
||||
FxU32 numColBuf, FxU32 numAuxBuf,
|
||||
GrColorFormat_t colorFormat);
|
||||
|
||||
typedef void
|
||||
(FX_CALL* GrSplashShutdownProc)(void);
|
||||
|
||||
typedef void
|
||||
(FX_CALL* GrSplashProc)(float x, float y,
|
||||
float w, float h,
|
||||
FxU32 frameNumber);
|
||||
|
||||
typedef const void*
|
||||
(FX_CALL* GrSplashPlugProc)(FxU32* w, FxU32* h,
|
||||
FxI32* strideInBytes,
|
||||
GrLfbWriteMode_t* format);
|
||||
|
||||
#endif /* _FX_SPLASH_H_ */
|
||||
@@ -19,6 +19,15 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.2 2006/12/03 04:49:19 guillemj
|
||||
** Backport "sequence point" fix for string upper code from glide3x.
|
||||
**
|
||||
** Revision 1.1.1.1.2.1 2004/12/12 15:20:35 koolsmoky
|
||||
** use toupper for __MSC__
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:09 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 17 2/20/98 11:00a Peter
|
||||
** removed glide3 from glid2 tree
|
||||
@@ -55,7 +64,7 @@
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <3dfx.h>
|
||||
|
||||
#define FX_DLL_DEFINITION
|
||||
@@ -297,18 +306,13 @@ GR_DIENTRY(gu3dfGetInfo, FxBool,
|
||||
/*
|
||||
** determine the color format of the input image
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
/* This function is not found in libgcc.a */
|
||||
{
|
||||
char* tempStr = (char*)color_format;
|
||||
while(*tempStr != '\0') *tempStr++ = toupper(*tempStr);
|
||||
char *tempStr = (char*)color_format;
|
||||
while (*tempStr != '\0') {
|
||||
*tempStr = toupper(*tempStr);
|
||||
tempStr++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
{
|
||||
extern char* strupr(char*);
|
||||
strupr(color_format);
|
||||
}
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
i = 0;
|
||||
format_found = FXFALSE;
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.1 2005/01/22 14:52:01 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:09 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 64 5/18/98 12:15p Peter
|
||||
** crybaby check for alpha enable
|
||||
@@ -246,13 +252,12 @@ GR_ENTRY(grAADrawPoint, void, (const GrVertex *e))
|
||||
|
||||
dataList++;
|
||||
}
|
||||
|
||||
|
||||
packedColor |= RGBA_COMP_CLAMP(FARRAY(fp, (GR_VERTEX_A_OFFSET << 2)), A);
|
||||
dataList++;
|
||||
|
||||
TRI_SET(packedColor);
|
||||
} else {
|
||||
TRI_SETF(FARRAY(fp, (GR_VERTEX_A_OFFSET << 2)));
|
||||
}
|
||||
dataList++;
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
#if GLIDE_FP_CLAMP_TEX
|
||||
@@ -300,12 +305,12 @@ GR_ENTRY(grAADrawPoint, void, (const GrVertex *e))
|
||||
|
||||
dataList++;
|
||||
}
|
||||
|
||||
/* Alpha set to 0.0 */
|
||||
|
||||
TRI_SET(packedColor);
|
||||
} else {
|
||||
TRI_SETF(0.0f);
|
||||
}
|
||||
#else /* !GLIDE_PACKED_RGB */
|
||||
#endif /* !GLIDE_PACKED_RGB */
|
||||
/* Parameters up to alpha.
|
||||
*
|
||||
* NB: It is up to the user to correctly set this up
|
||||
@@ -318,6 +323,8 @@ GR_ENTRY(grAADrawPoint, void, (const GrVertex *e))
|
||||
|
||||
/* Send constant Alpha == 0.0f */
|
||||
TRI_SETF(0.0f);
|
||||
#if GLIDE_PACKED_RGB
|
||||
}
|
||||
#endif /* !GLIDE_PACKED_RGB */
|
||||
|
||||
/* Skip the actual alpha value in the data list */
|
||||
@@ -426,13 +433,12 @@ grAADrawStrip(const FxU32 cullMode, const float* const vectorList[], const FxU32
|
||||
|
||||
dataList++;
|
||||
}
|
||||
|
||||
|
||||
packedColor |= RGBA_COMP_CLAMP(FARRAY(vector, (GR_VERTEX_A_OFFSET << 2)), A);
|
||||
dataList++;
|
||||
|
||||
TRI_SET(packedColor);
|
||||
} else {
|
||||
TRI_SETF(FARRAY(vector, (GR_VERTEX_A_OFFSET << 2)));
|
||||
}
|
||||
dataList++;
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
#if GLIDE_FP_CLAMP_TEX
|
||||
@@ -663,6 +669,27 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
|
||||
v2->a = 0.0f;
|
||||
datalist = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0) {
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*datalist == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
|
||||
datalist++;
|
||||
}
|
||||
|
||||
/* Alpha set to 0.0 */
|
||||
|
||||
TRI_SET(packedColor);
|
||||
|
||||
/* Skip the actual alpha value in the data list */
|
||||
datalist++;
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
while( *datalist != 0 ) {
|
||||
TRI_SETF(FARRAY(v2, *datalist));
|
||||
datalist++;
|
||||
@@ -680,6 +707,27 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
|
||||
v1->a = 0.0f;
|
||||
datalist = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0) {
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*datalist == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
|
||||
datalist++;
|
||||
}
|
||||
|
||||
/* Alpha set to 0.0 */
|
||||
|
||||
TRI_SET(packedColor);
|
||||
|
||||
/* Skip the actual alpha value in the data list */
|
||||
datalist++;
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
while( *datalist != 0 ) {
|
||||
TRI_SETF(FARRAY(v1, *datalist));
|
||||
datalist++;
|
||||
@@ -692,6 +740,25 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
|
||||
|
||||
TRI_SETF( v2->x );
|
||||
TRI_SETF( v2->y );
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0) {
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*datalist == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
|
||||
datalist++;
|
||||
}
|
||||
|
||||
packedColor |= RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_A_OFFSET << 2)), A);
|
||||
datalist++;
|
||||
|
||||
TRI_SET(packedColor);
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
while( *datalist != 0 ) {
|
||||
TRI_SETF(FARRAY(v2, *datalist));
|
||||
@@ -703,6 +770,25 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
|
||||
|
||||
TRI_SETF( v1->x );
|
||||
TRI_SETF( v1->y );
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0) {
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*datalist == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
|
||||
datalist++;
|
||||
}
|
||||
|
||||
packedColor |= RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_A_OFFSET << 2)), A);
|
||||
datalist++;
|
||||
|
||||
TRI_SET(packedColor);
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
while( *datalist != 0 ) {
|
||||
TRI_SETF(FARRAY(v1, *datalist));
|
||||
@@ -719,6 +805,27 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
|
||||
v2->a = 0.0f;
|
||||
datalist = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0) {
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*datalist == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v2, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
|
||||
datalist++;
|
||||
}
|
||||
|
||||
/* Alpha set to 0.0 */
|
||||
|
||||
TRI_SET(packedColor);
|
||||
|
||||
/* Skip the actual alpha value in the data list */
|
||||
datalist++;
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
while( *datalist != 0 ) {
|
||||
TRI_SETF(FARRAY(v2, *datalist));
|
||||
datalist++;
|
||||
@@ -736,6 +843,26 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
|
||||
v1->a = 0.0f;
|
||||
datalist = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0) {
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*datalist == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(v1, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
|
||||
datalist++;
|
||||
}
|
||||
|
||||
/* Alpha set to 0.0 */
|
||||
|
||||
TRI_SET(packedColor);
|
||||
|
||||
/* Skip the actual alpha value in the data list */
|
||||
datalist++;
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
while( *datalist != 0 ) {
|
||||
TRI_SETF(FARRAY(v1, *datalist));
|
||||
|
||||
@@ -17,8 +17,23 @@
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.4.2.4 2005/04/25 23:53:59 koolsmoky
|
||||
** Fix grDrawTriangle calling convention for Linux.
|
||||
** Thanks to Ozkan Sezer <sezeroz@gmail.com>.
|
||||
**
|
||||
** Revision 1.4.2.3 2005/04/23 18:27:26 koolsmoky
|
||||
** fixed grDrawTriangle triangle dispatch code
|
||||
**
|
||||
** Revision 1.4.2.2 2005/01/22 14:52:01 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.4.2.1 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.4 2000/01/28 20:52:17 joseph
|
||||
** Changes to support building shared libraries with PIC support.
|
||||
**
|
||||
** Revision 1.3 2000/01/17 22:18:41 joseph
|
||||
** A nicer, cleaner fix than the evil hack.
|
||||
**
|
||||
@@ -635,7 +650,10 @@ all_done: /* come here on degenerate lines */
|
||||
/*---------------------------------------------------------------------------
|
||||
** grDrawTriangle
|
||||
*/
|
||||
|
||||
#ifndef HAVE_XDRAWTRI_ASM /* grDrawTriangle() not in asm */
|
||||
#if defined(_MSC_VER) && !GLIDE_USE_C_TRISETUP && !defined(GLIDE_DEBUG)
|
||||
__declspec(naked)
|
||||
#endif
|
||||
GR_ENTRY(grDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const GrVertex *c))
|
||||
{
|
||||
#define FN_NAME grDrawTriangle
|
||||
@@ -677,70 +695,22 @@ GR_ENTRY(grDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const GrVe
|
||||
|
||||
all_done:
|
||||
GR_END();
|
||||
#else
|
||||
#if defined(__MSC__)
|
||||
{
|
||||
extern struct _GlideRoot_s _GlideRoot;
|
||||
|
||||
_asm {
|
||||
mov eax, [_GlideRoot + kCurGCOffset];
|
||||
mov eax, [eax + kTriProcOffset];
|
||||
#elif defined(_MSC_VER)
|
||||
{
|
||||
__asm {
|
||||
mov edx, [_GlideRoot + kCurGCOffset];
|
||||
mov eax, [edx + kTriProcOffset];
|
||||
jmp eax;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined( __linux__ )
|
||||
|
||||
/* Here's the basic strategy for this dispatch code:
|
||||
* We jump to _GlideRoot.curGC->archDispatchProcs.triSetupProc
|
||||
* which contains code that looks like a function, we leave the
|
||||
* paramters passed to grDrawTriangle on the stack and the dispatched
|
||||
* function picks them up. However we have to compensate for
|
||||
* the compiler pushing anything on the stack. The following describes
|
||||
* why and when we have to pop.
|
||||
*
|
||||
* BIG_OPT: gcc pushes a frame pointer to maintain things, BIG_OPT
|
||||
* turns on -fomit-frame-pointer so we don't have to pop it.
|
||||
*
|
||||
* PIC: When using position independant code gcc stores eip in ebx
|
||||
* so it saves ebx from the previous call automatically.
|
||||
* Therefore, once we have the jump address we have to pop ebx
|
||||
* to restore the stack.
|
||||
*
|
||||
* The syntax is further complicated by the fact that gcc can (and will)
|
||||
* emit code between the asm statements, so they all need to be in a single
|
||||
* asm statement, wrapped with #ifdef's. This means we have fun with
|
||||
* deciding if we need to list trashed registers and when we need commas
|
||||
* between them.
|
||||
*/
|
||||
|
||||
asm (
|
||||
#if defined(PIC)
|
||||
"popl %%ebx\n\t"
|
||||
#endif
|
||||
#if !defined(BIG_OPT)
|
||||
"popl %%ebp\n\t"
|
||||
#endif
|
||||
"jmp *%0"
|
||||
: /* no outputs */
|
||||
: "m" (_GlideRoot.curGC->cmdTransportInfo.triSetupProc)
|
||||
#if defined (PIC) || !defined (BIG_OPT)
|
||||
:
|
||||
#endif
|
||||
#if defined (PIC)
|
||||
"ebx"
|
||||
#endif
|
||||
#if defined (PIC) && !defined (BIG_OPT)
|
||||
,
|
||||
#endif
|
||||
#if !defined(BIG_OPT)
|
||||
"ebp"
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
#else
|
||||
#error "Write triangle proc dispatch for this compiler"
|
||||
#endif
|
||||
#undef FN_NAME
|
||||
} /* grDrawTriangle */
|
||||
#endif /* HAVE_XDRAWTRI_ASM */
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
** grDrawPlanarPolygon
|
||||
@@ -885,25 +855,23 @@ __doPolyVertexSend:
|
||||
const int* dataList = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0)
|
||||
{
|
||||
FxBool doColorP = FXFALSE;
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*dataList == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
doColorP = FXTRUE;
|
||||
dataList++;
|
||||
}
|
||||
|
||||
if (*dataList == (GR_VERTEX_A_OFFSET << 2)) {
|
||||
packedColor |= RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_A_OFFSET << 2)), A);
|
||||
doColorP = FXTRUE;
|
||||
dataList++;
|
||||
}
|
||||
|
||||
if (doColorP) TRI_SET(packedColor);
|
||||
TRI_SET(packedColor);
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
@@ -1007,37 +975,23 @@ __doPolyVertexSend:
|
||||
const int* dataList = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
/* dpc - 10 feb 1998 -
|
||||
* Some apps send color values outside of the range [0..255]
|
||||
*/
|
||||
#undef RGBA_COMP
|
||||
#define RGBA_COMP(__fpVal, __fpBias, __fpShift, __fpMask) \
|
||||
((_GlideRoot.pool.ftemp1 = (float)((float)(__fpVal) + (float)(__fpBias))), \
|
||||
((((float)(__fpVal)) > 255.0f) \
|
||||
? (__fpMask) \
|
||||
: ((((float)(__fpVal)) < 0.0f) \
|
||||
? 0x00UL \
|
||||
: ((*(const FxU32*)&_GlideRoot.pool.ftemp1) & (__fpMask)))) << (__fpShift))
|
||||
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0)
|
||||
{
|
||||
FxBool doColorP = FXFALSE;
|
||||
FxU32 packedColor = 0x00;
|
||||
|
||||
if (*dataList == (GR_VERTEX_R_OFFSET << 2)) {
|
||||
packedColor = (RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_B_OFFSET << 2)), B) |
|
||||
RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_G_OFFSET << 2)), G) |
|
||||
RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_R_OFFSET << 2)), R));
|
||||
doColorP = FXTRUE;
|
||||
dataList++;
|
||||
}
|
||||
|
||||
if (*dataList == (GR_VERTEX_A_OFFSET << 2)) {
|
||||
packedColor |= RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_A_OFFSET << 2)), A);
|
||||
doColorP = FXTRUE;
|
||||
dataList++;
|
||||
}
|
||||
|
||||
if (doColorP) TRI_SET(packedColor);
|
||||
TRI_SET(packedColor);
|
||||
}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 28 3/14/98 1:07p Peter
|
||||
** mac port happiness
|
||||
@@ -240,6 +243,7 @@ _grAssert(char *exp, char *fileName, int lineNo)
|
||||
#if !GLIDE_INIT_HAL
|
||||
if (gc->scanline_interleaved) {
|
||||
SstRegs* slaveHw = (SstRegs*)gc->slave_ptr;
|
||||
slaveHw = slaveHw; // FIXME: Below might not exist. *sigh*
|
||||
|
||||
GDBG_INFO_MORE(gc->myLevel, "\tsli: 0x%X : (0x%X : 0x%X : 0x%X)\n",
|
||||
HW_FIFO_PTR(FXFALSE),
|
||||
|
||||
@@ -19,6 +19,29 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2.2.5 2005/01/22 14:52:02 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.2.2.4 2004/12/27 20:46:37 koolsmoky
|
||||
** added dll entry point to call grGlideShutdown when a process is detached
|
||||
**
|
||||
** Revision 1.2.2.3 2004/12/23 21:03:14 koolsmoky
|
||||
** swapinterval
|
||||
**
|
||||
** Revision 1.2.2.2 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.2.2.1 2004/12/12 15:24:40 koolsmoky
|
||||
** grDitherMode(): force 2x2 dithering for 4x1 dither
|
||||
** grBufferSwap(): enable vsync and set swapbufferinterval to 0 for tripple buffering.
|
||||
**
|
||||
** Revision 1.2 2000/10/03 18:28:33 mercury
|
||||
** 003-clean_up_cvg-000, cvg tree cleanup.
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 168 7/02/98 6:59p Peter
|
||||
** Fixed merge problem from previous checkin
|
||||
@@ -510,7 +533,7 @@ GR_ENTRY(grBufferClear, void, (GrColor_t color, GrAlpha_t alpha, FxU16 depth))
|
||||
{
|
||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
||||
GR_SET(BROADCAST_ID, hw, bltSize,
|
||||
(((((tileHi - tileLow) * gc->hwDep.cvgDep.xTilePages) - 1) << 16) | (0x1000 >> 3) - 1));
|
||||
((((((tileHi - tileLow) * gc->hwDep.cvgDep.xTilePages) - 1) << 16) | (0x1000 >> 3)) - 1));
|
||||
GR_CHECK_SIZE();
|
||||
}
|
||||
|
||||
@@ -778,6 +801,12 @@ GR_ENTRY(grBufferSwap, void, (int swapInterval))
|
||||
|
||||
/* if the interval is non-zero turn on VSYNC waiting */
|
||||
vSync = (swapInterval > 0);
|
||||
|
||||
/* when triple buffering, vsync must be enabled and swapbuffer interval must be 0 */
|
||||
/*if (gc->grColBuf >= 3) {
|
||||
vSync = FXTRUE;
|
||||
swapInterval = 0;
|
||||
}*/
|
||||
|
||||
if (swapInterval > 0) swapInterval--;
|
||||
|
||||
@@ -1495,21 +1524,24 @@ GR_STATE_ENTRY(grDitherMode, void, (GrDitherMode_t mode))
|
||||
GDBG_INFO_MORE(gc->myLevel, "(%d)\n", mode);
|
||||
|
||||
fbzMode = gc->state.fbi_config.fbzMode;
|
||||
if (_GlideRoot.environment.disableDitherSub == FXTRUE)
|
||||
fbzMode &= ~(SST_ENDITHER | SST_DITHER2x2);
|
||||
else
|
||||
fbzMode &= ~(SST_ENDITHER | SST_DITHER2x2 | SST_ENDITHERSUBTRACT);
|
||||
fbzMode &= ~(SST_ENDITHER | SST_DITHER2x2 | SST_ENDITHERSUBTRACT);
|
||||
|
||||
switch (mode) {
|
||||
case GR_DITHER_DISABLE:
|
||||
break;
|
||||
|
||||
case GR_DITHER_2x2:
|
||||
fbzMode |= (SST_ENDITHER | SST_DITHER2x2);
|
||||
/* alpha dither subtract should be disabled */
|
||||
break;
|
||||
|
||||
case GR_DITHER_2x2:
|
||||
case GR_DITHER_4x4:
|
||||
/* force 4x4 dither with alpha dither subtraction */
|
||||
fbzMode |= (SST_ENDITHER | SST_ENDITHERSUBTRACT);
|
||||
|
||||
/* disable alpha blending dither subtraction according to user request */
|
||||
if (_GlideRoot.environment.disableDitherSub == FXTRUE) {
|
||||
/* without alpha dither subtraction, 2x2 dither looks better */
|
||||
fbzMode |= SST_DITHER2x2;
|
||||
fbzMode &= ~(SST_ENDITHERSUBTRACT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1701,9 +1733,9 @@ GR_ENTRY(grGlideShutdown, void, (void))
|
||||
*/
|
||||
for(i = 0; i < _GlideRoot.hwConfig.num_sst; i++) {
|
||||
if (_GlideRoot.GCs[i].hwInitP) {
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching(_GlideRoot.GCs[i].base_ptr, FXFALSE);
|
||||
}
|
||||
/*}*/
|
||||
sst1InitShutdown(_GlideRoot.GCs[i].base_ptr);
|
||||
|
||||
_GlideRoot.GCs[i].hwInitP = FXFALSE;
|
||||
@@ -1715,6 +1747,8 @@ GR_ENTRY(grGlideShutdown, void, (void))
|
||||
gc->grSstRez = GR_RESOLUTION_NONE;
|
||||
gc->grSstRefresh = GR_REFRESH_NONE;
|
||||
}
|
||||
|
||||
_GlideRoot.initialized = FXFALSE;
|
||||
} /* grGlideShutdown */
|
||||
|
||||
|
||||
@@ -2112,11 +2146,11 @@ _grUpdateTriPacketHdr(FxU32 paramMask,
|
||||
? kSetupCullPositive
|
||||
: kSetupCullNegative);
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
#define COLOR_COMP_ARGB ((SST_SETUP_RGB | SST_SETUP_A) << SSTCP_PKT3_PMASK_SHIFT)
|
||||
#define COLOR_COMP_RGB (SST_SETUP_RGB << SSTCP_PKT3_PMASK_SHIFT)
|
||||
#define COLOR_COMP_MASK COLOR_COMP_ARGB
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
/* Setup custom triangle/strip procs.
|
||||
*
|
||||
* NB: Currently this selection is based entirely on if
|
||||
@@ -2124,30 +2158,51 @@ _grUpdateTriPacketHdr(FxU32 paramMask,
|
||||
* select on cpu type as well to determine if we should
|
||||
* do sw culling or not.
|
||||
*/
|
||||
if ((paramMask & SSTCP_PKT3_PACKEDCOLOR) == SSTCP_PKT3_PACKEDCOLOR) {
|
||||
const FxU32 colorComp = paramMask & COLOR_COMP_MASK;
|
||||
{
|
||||
GrTriSetupProcVector* curTriProcVector = TRISETUP_NORGB;
|
||||
|
||||
switch(colorComp) {
|
||||
case COLOR_COMP_ARGB:
|
||||
gc->cmdTransportInfo.triSetupProc = TRISETUP_ARGB(cullMode);
|
||||
break;
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((paramMask & SSTCP_PKT3_PACKEDCOLOR) == SSTCP_PKT3_PACKEDCOLOR) {
|
||||
const FxU32 colorComp = paramMask & COLOR_COMP_MASK;
|
||||
|
||||
case COLOR_COMP_RGB:
|
||||
gc->cmdTransportInfo.triSetupProc = TRISETUP_RGB(cullMode);
|
||||
break;
|
||||
switch(colorComp) {
|
||||
case COLOR_COMP_ARGB:
|
||||
curTriProcVector = TRISETUP_ARGB;
|
||||
break;
|
||||
|
||||
/* If no rgb data then it is not worthwhile to pack
|
||||
* just alpha so just mask off the packed color bit
|
||||
* and just use the looping proc.
|
||||
*/
|
||||
default:
|
||||
gc->cmdTransportInfo.triSetupProc = TRISETUP_NORGB(cullMode);
|
||||
paramMask &= ~SSTCP_PKT3_PACKEDCOLOR;
|
||||
break;
|
||||
case COLOR_COMP_RGB:
|
||||
curTriProcVector = TRISETUP_RGB;
|
||||
break;
|
||||
|
||||
/* If no rgb data then it is not worthwhile to pack
|
||||
* just alpha so just mask off the packed color bit
|
||||
* and just use the looping proc.
|
||||
*/
|
||||
default:
|
||||
curTriProcVector = TRISETUP_NORGB;
|
||||
paramMask &= ~SSTCP_PKT3_PACKEDCOLOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
gc->cmdTransportInfo.triSetupProc = TRISETUP_NORGB(cullMode);
|
||||
#endif
|
||||
|
||||
gc->curArchProcs.triSetupProc = PROC_SELECT_TRISETUP(*curTriProcVector, cullMode);
|
||||
}
|
||||
#else
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((paramMask & SSTCP_PKT3_PACKEDCOLOR) == SSTCP_PKT3_PACKEDCOLOR) {
|
||||
const FxU32 colorComp = paramMask & COLOR_COMP_MASK;
|
||||
|
||||
switch(colorComp) {
|
||||
case COLOR_COMP_ARGB:
|
||||
case COLOR_COMP_RGB:
|
||||
break;
|
||||
default:
|
||||
paramMask &= ~SSTCP_PKT3_PACKEDCOLOR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
|
||||
gc->cmdTransportInfo.paramMask = paramMask;
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 75 6/23/98 5:38p Peter
|
||||
** lfb hinting
|
||||
@@ -206,7 +209,7 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
|
||||
{
|
||||
#define FN_NAME "grLfbLock"
|
||||
FxBool rv = FXTRUE;
|
||||
FxU32 lfbMode, zaColor, fbzMode;
|
||||
FxU32 lfbMode = 0, zaColor = 0, fbzMode = 0;
|
||||
const FxBool idleLockP = ((type & GR_LFB_NOIDLE) == 0);
|
||||
#if (GLIDE_PLATFORM & GLIDE_OS_MACOS) && SET_BSWAP
|
||||
FxBool swizzleByteP = FXFALSE;
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.1 2004/12/12 15:29:44 koolsmoky
|
||||
** cosmetics
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
*/
|
||||
|
||||
#define OFFICIAL 1
|
||||
@@ -26,7 +32,7 @@
|
||||
|
||||
#include <fxver.h>
|
||||
#include "rcver.h"
|
||||
#include "fxbldno.h"
|
||||
//#include "fxbldno.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
@@ -56,11 +62,12 @@ BEGIN
|
||||
VALUE "FileDescription", "3Dfx Interactive, Inc. Glide DLL\0"
|
||||
VALUE "FileVersion", VERSIONSTR
|
||||
VALUE "InternalName", VERSIONNAME
|
||||
VALUE "LegalCopyright", "Copyright \251 3Dfx Interactive, Inc. 1997\0"
|
||||
VALUE "LegalCopyright", "Copyright \251 3Dfx Interactive, Inc. 2004\0"
|
||||
VALUE "OriginalFilename", VERSIONNAME
|
||||
VALUE "ProductName", PRODNAME
|
||||
VALUE "ProductVersion", VERSIONSTR
|
||||
VALUE "Graphics Subsystem", HWSTR
|
||||
VALUE "Contact", "The Glide Open Source Project http://glide.sourceforge.net/"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
||||
@@ -19,6 +19,33 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.7 2005/04/25 23:58:41 koolsmoky
|
||||
** Fix _texDownloadProcs comma separator.
|
||||
** Thanks to Ozkan Sezer <sezeroz@gmail.com>.
|
||||
**
|
||||
** Revision 1.1.1.1.2.6 2005/01/22 14:52:02 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.1.1.1.2.5 2005/01/13 16:09:05 koolsmoky
|
||||
** Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode.
|
||||
**
|
||||
** Revision 1.1.1.1.2.4 2005/01/02 04:15:53 koolsmoky
|
||||
** disabled mtrr's on sli slave devices
|
||||
**
|
||||
** Revision 1.1.1.1.2.3 2004/12/27 20:46:37 koolsmoky
|
||||
** added dll entry point to call grGlideShutdown when a process is detached
|
||||
**
|
||||
** Revision 1.1.1.1.2.2 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.1.1.1.2.1 2004/12/12 15:27:47 koolsmoky
|
||||
** changes to support new cpuid
|
||||
** set default to disable alpha dither subtraction
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 110 6/30/98 6:08p Jeske
|
||||
** fixed bug where we tried to setup MTRRs on old (<p6) systems which
|
||||
@@ -226,6 +253,123 @@
|
||||
#include <glide.h>
|
||||
#include "fxglide.h"
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
/* Collection of all of the known procs for a given system */
|
||||
#if GLIDE_PACKED_RGB
|
||||
static GrTriSetupProc _triSetupProcs[][3][2] =
|
||||
#else /* !GLIDE_PACKED_RGB */
|
||||
static GrTriSetupProc _triSetupProcs[][1][2] =
|
||||
#endif /* !GLIDE_PACKED_RGB */
|
||||
{
|
||||
/* Default Procs */
|
||||
{
|
||||
{_trisetup, _trisetup_cull}
|
||||
#if GLIDE_PACKED_RGB
|
||||
,{_trisetup_rgb, _trisetup_cull_rgb},
|
||||
{_trisetup_argb, _trisetup_cull_argb}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
},
|
||||
#if GL_AMD3D
|
||||
/* 3DNow!(tm) Procs */
|
||||
{
|
||||
{_trisetup_3DNow, _trisetup_cull_3DNow}
|
||||
#if GLIDE_PACKED_RGB
|
||||
,{_trisetup_rgb_3DNow, _trisetup_cull_rgb_3DNow},
|
||||
{_trisetup_argb_3DNow, _trisetup_cull_argb_3DNow}
|
||||
#endif /* GLIDE_PACKED_RGB */
|
||||
},
|
||||
#endif /* GL_AMD3D */
|
||||
};
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
static GrTexDownloadProc _texDownloadProcs[][2][4] =
|
||||
{
|
||||
/* Default Procs */
|
||||
{
|
||||
{
|
||||
_grTexDownload_Default_8_1,
|
||||
_grTexDownload_Default_8_2,
|
||||
_grTexDownload_Default_8_4,
|
||||
_grTexDownload_Default_8_WideS
|
||||
},
|
||||
{
|
||||
_grTexDownload_Default_16_1,
|
||||
_grTexDownload_Default_16_2,
|
||||
_grTexDownload_Default_16_WideS,
|
||||
_grTexDownload_Default_16_WideS
|
||||
}
|
||||
},
|
||||
#if GL_AMD3D
|
||||
{
|
||||
{
|
||||
_grTexDownload_Default_8_1,
|
||||
_grTexDownload_Default_8_2,
|
||||
_grTexDownload_Default_8_4,
|
||||
_grTexDownload_3DNow_MMX,
|
||||
},
|
||||
{
|
||||
_grTexDownload_Default_16_1,
|
||||
_grTexDownload_Default_16_2,
|
||||
_grTexDownload_3DNow_MMX,
|
||||
_grTexDownload_3DNow_MMX,
|
||||
}
|
||||
},
|
||||
#endif /* GL_AMD3D */
|
||||
#if GL_MMX
|
||||
{
|
||||
{
|
||||
_grTexDownload_Default_8_1,
|
||||
_grTexDownload_Default_8_2,
|
||||
_grTexDownload_Default_8_4,
|
||||
_grTexDownload_MMX,
|
||||
},
|
||||
{
|
||||
_grTexDownload_Default_16_1,
|
||||
_grTexDownload_Default_16_2,
|
||||
_grTexDownload_MMX,
|
||||
_grTexDownload_MMX,
|
||||
}
|
||||
},
|
||||
#endif /* GL_MMX */
|
||||
};
|
||||
#endif /* GLIDE_DISPATCH_DOWNLOAD */
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
BOOL WINAPI
|
||||
DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
|
||||
{
|
||||
switch( ul_reason_for_call ) {
|
||||
case DLL_PROCESS_DETACH:
|
||||
GDBG_INFO(80, "DllMain: DLL_PROCESS_DETACH\n");
|
||||
grGlideShutdown();
|
||||
pciClose();
|
||||
break;
|
||||
case DLL_PROCESS_ATTACH:
|
||||
if (!pciOpen()) {
|
||||
GDBG_INFO(80, "pci bus could not be opened\n");
|
||||
return FALSE;
|
||||
}
|
||||
GDBG_INFO(80, "DllMain: DLL_PROCESS_ATTACH\n");
|
||||
break;
|
||||
case DLL_THREAD_ATTACH:
|
||||
GDBG_INFO(80, "DllMain: DLL_THREAD_ATTACH\n");
|
||||
break;
|
||||
case DLL_THREAD_DETACH:
|
||||
GDBG_INFO(80, "DllMain: DLL_THREAD_DETACH\n");
|
||||
break;
|
||||
default:
|
||||
GDBG_INFO(80, "DllMain: Unhandled message.\n");
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
||||
} /* DllMain */
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
Function: _grSstDetectResources
|
||||
Date: --
|
||||
@@ -324,7 +468,7 @@ _grSstDetectResources(void)
|
||||
* pair then we don't want to waste mtrr's that we're never
|
||||
* really going to write to.
|
||||
*/
|
||||
if (!inSliPairP && (_GlideRoot.CPUType >= 6)) {
|
||||
if (!inSliPairP/* && (_GlideRoot.CPUType.family >= 6)*/) {
|
||||
sst1InitCaching((FxU32*)devRegs, FXTRUE);
|
||||
}
|
||||
|
||||
@@ -442,9 +586,9 @@ _grSstDetectResources(void)
|
||||
#if GLIDE_INIT_HAL
|
||||
fxHalShutdown(devRegs);
|
||||
#else /* !GLIDE_INIT_HAL */
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching((FxU32*)devRegs, FXFALSE);
|
||||
}
|
||||
/*}*/
|
||||
pciUnmapPhysical((FxU32)devRegs, 0x1000000UL);
|
||||
#endif /* !GLIDE_INIT_HAL */
|
||||
}
|
||||
@@ -543,8 +687,55 @@ _GlideInitEnvironment(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
_GlideRoot.CPUType = _cpu_detect_asm();
|
||||
if (GETENV("FX_CPU")) _GlideRoot.CPUType = atoi(GETENV("FX_CPU"));
|
||||
/* Get CPU Info */
|
||||
_cpuid(&_GlideRoot.CPUType);
|
||||
|
||||
/* Check for vendor specific optimization cases */
|
||||
GDBG_INFO( 0," CPU Vendor: %s\n", _GlideRoot.CPUType.v_name);
|
||||
GDBG_INFO(80," MMX Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_MMX ? 'Y' : 'N');
|
||||
GDBG_INFO(80," SSE Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_SSE ? 'Y' : 'N');
|
||||
GDBG_INFO(80," SSE2 Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_SSE2 ? 'Y' : 'N');
|
||||
GDBG_INFO(80," 3DNow Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_3DNOW ? 'Y' : 'N');
|
||||
GDBG_INFO(80," MMX+ Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_MMXPLUS ? 'Y' : 'N');
|
||||
GDBG_INFO(80,"3DNow+ Support: %c\n", _GlideRoot.CPUType.os_support&_CPU_FEATURE_3DNOWPLUS ? 'Y' : 'N');
|
||||
|
||||
/* No CPU Extensions Allowed */
|
||||
if (GETENV("FX_GLIDE_NO_CPU_EXTENSIONS"))
|
||||
{
|
||||
_GlideRoot.CPUType.feature = _GlideRoot.CPUType.os_support = 0;
|
||||
GDBG_INFO(0,"CPU Extensions disabled\n");
|
||||
}
|
||||
|
||||
#if GLIDE_DISPATCH_SETUP || GLIDE_DISPATCH_DOWNLOAD
|
||||
/* Default case */
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
_GlideRoot.deviceArchProcs.curTriProcs = _triSetupProcs + 0;
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
_GlideRoot.deviceArchProcs.curTexProcs = _texDownloadProcs + 0;
|
||||
#endif /* GLIDE_DISPATCH_DOWNLOAD */
|
||||
|
||||
/* Check for vendor specific optimization cases */
|
||||
#ifdef GL_MMX
|
||||
if (_GlideRoot.CPUType.os_support & _CPU_FEATURE_MMX) {
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
_GlideRoot.deviceArchProcs.curTexProcs = _texDownloadProcs + 2;
|
||||
#endif /* GLIDE_DISPATCH_DOWNLOAD */
|
||||
}
|
||||
#endif /* GL_MMX */
|
||||
|
||||
#ifdef GL_AMD3D
|
||||
if (_GlideRoot.CPUType.os_support & _CPU_FEATURE_3DNOW) {
|
||||
#if GLIDE_DISPATCH_SETUP
|
||||
_GlideRoot.deviceArchProcs.curTriProcs = _triSetupProcs + 1;
|
||||
#endif /* GLIDE_DISPATCH_SETUP */
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
_GlideRoot.deviceArchProcs.curTexProcs = _texDownloadProcs + 1;
|
||||
#endif /* GLIDE_DISPATCH_DOWNLOAD */
|
||||
}
|
||||
#endif /* GL_AMD3D */
|
||||
|
||||
#endif /* GLIDE_DISPATCH_SETUP || GLIDE_DISPATCH_DOWNLOAD */
|
||||
|
||||
/* Check for user environment tweaks */
|
||||
{
|
||||
@@ -557,7 +748,6 @@ _GlideInitEnvironment(void)
|
||||
_GlideRoot.environment.noSplash = (GETENV("FX_GLIDE_NO_SPLASH") != NULL);
|
||||
_GlideRoot.environment.shamelessPlug = (GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL);
|
||||
_GlideRoot.environment.ignoreReopen = (GETENV("FX_GLIDE_IGNORE_REOPEN") != NULL);
|
||||
_GlideRoot.environment.disableDitherSub = (GETENV("FX_GLIDE_NO_DITHER_SUB") != NULL);
|
||||
_GlideRoot.environment.texLodDither = ((GETENV("FX_GLIDE_LOD_DITHER") == NULL)
|
||||
? 0x00UL
|
||||
: SST_TLODDITHER);
|
||||
@@ -572,12 +762,25 @@ _GlideInitEnvironment(void)
|
||||
}
|
||||
|
||||
_GlideRoot.environment.snapshot = GLIDE_GETENV("FX_SNAPSHOT", 0);
|
||||
|
||||
/* set default to disable alpha dither subtraction */
|
||||
switch(GLIDE_GETENV("SSTH3_ALPHADITHERMODE", 1L)) {
|
||||
default:
|
||||
case 1: /* Or Automatic? */
|
||||
case 2:
|
||||
_GlideRoot.environment.disableDitherSub = FXTRUE;
|
||||
break;
|
||||
case 3:
|
||||
_GlideRoot.environment.disableDitherSub = FXFALSE;
|
||||
break;
|
||||
}
|
||||
GDBG_INFO(80," disableDitherSub: %d\n",_GlideRoot.environment.disableDitherSub);
|
||||
|
||||
GDBG_INFO(80," triBoundsCheck: %d\n",_GlideRoot.environment.triBoundsCheck);
|
||||
GDBG_INFO(80," swapInterval: %d\n",_GlideRoot.environment.swapInterval);
|
||||
GDBG_INFO(80," noSplash: %d\n",_GlideRoot.environment.noSplash);
|
||||
GDBG_INFO(80," shamelessPlug: %d\n",_GlideRoot.environment.shamelessPlug);
|
||||
GDBG_INFO(80," cpu: %d\n",_GlideRoot.CPUType);
|
||||
/*GDBG_INFO(80," cpu: %d\n",_GlideRoot.CPUType);*/
|
||||
GDBG_INFO(80," snapshot: %d\n",_GlideRoot.environment.snapshot);
|
||||
GDBG_INFO(80," disableDitherSub: %d\n",_GlideRoot.environment.disableDitherSub);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 26 2/20/98 11:00a Peter
|
||||
** removed glide3 from glid2 tree
|
||||
@@ -767,8 +770,7 @@ GR_DIENTRY(grSplash,void,(float x,float y,float w,float h,FxU32 _frame))
|
||||
int fadeInFrames, fadeOutFrames;
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK("grSplash", 85);
|
||||
GDBG_INFO_MORE(gc->myLevel,"(%f,%f,%f,%f,%d)\n",
|
||||
x, y, w, h, _frame);
|
||||
GDBG_INFO_MORE(gc->myLevel,"(%f,%f,%f,%f,%d)\n", x, y, w, h, _frame);
|
||||
|
||||
/* Check Screen Dimensions and Check Avail of Depth Buffer */
|
||||
if ((x > gc->state.screen_width) ||
|
||||
|
||||
@@ -19,6 +19,22 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2.2.3 2005/01/13 16:09:06 koolsmoky
|
||||
** Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode.
|
||||
**
|
||||
** Revision 1.2.2.2 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.2.2.1 2004/12/12 15:26:04 koolsmoky
|
||||
** changes to support new cpuid
|
||||
**
|
||||
** Revision 1.2 2000/10/03 18:28:33 mercury
|
||||
** 003-clean_up_cvg-000, cvg tree cleanup.
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 168 6/30/98 6:08p Jeske
|
||||
** fixed bug where we tried to setup MTRRs on old (<p6) systems which
|
||||
@@ -327,6 +343,7 @@
|
||||
#include <fxdll.h>
|
||||
#include <glide.h>
|
||||
#include "fxglide.h"
|
||||
#include "fxsplash.h"
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
@@ -411,7 +428,7 @@ GR_ENTRY(grSstWinOpen, FxBool, (
|
||||
#define FN_NAME "grSstWinOpen"
|
||||
FxBool rv = FXTRUE;
|
||||
int tmu;
|
||||
int xres, yres, fbStride;
|
||||
int xres = 0, yres = 0, fbStride;
|
||||
FxDeviceInfo devInfo;
|
||||
#if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
|
||||
sst1VideoTimingStruct *sstVideoRez = NULL, tvVidtiming;
|
||||
@@ -465,12 +482,14 @@ __tryReOpen:
|
||||
*/
|
||||
if (!gc->hwInitP) {
|
||||
FxU32* sstRegs = NULL;
|
||||
|
||||
|
||||
#if !DIRECTX
|
||||
rv = pciOpen();
|
||||
if (!rv) {
|
||||
GDBG_INFO(gc->myLevel, "%s: pci bus could not be opened\n", FN_NAME);
|
||||
goto BAILOUT;
|
||||
}
|
||||
#endif
|
||||
|
||||
sstRegs = sst1InitMapBoard(_GlideRoot.current_sst);
|
||||
rv = (sstRegs != NULL);
|
||||
@@ -481,9 +500,9 @@ __tryReOpen:
|
||||
}
|
||||
|
||||
/* Re-enabled write combining */
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching(sstRegs, FXTRUE);
|
||||
}
|
||||
/*}*/
|
||||
|
||||
rv = sst1InitRegisters(sstRegs);
|
||||
if (!rv) {
|
||||
@@ -874,10 +893,10 @@ __tryReOpen:
|
||||
* NB: The order of the caching changes is relevant here since
|
||||
* we don't want to waste mtrr's, even briefly.
|
||||
*/
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching(gc->base_ptr, FXFALSE);
|
||||
sst1InitCaching((gc + 1)->base_ptr, FXTRUE);
|
||||
}
|
||||
/*}*/
|
||||
|
||||
sst1InitShutdown(gc->base_ptr);
|
||||
|
||||
@@ -898,12 +917,14 @@ __tryReOpen:
|
||||
gc->hwInitP = FXFALSE;
|
||||
}
|
||||
|
||||
#if !DIRECTX
|
||||
/* dpc - 14 feb 1997 - HackAlert!!!!
|
||||
* The sst1InitShutdown above will close the pci library which
|
||||
* then prevents other pci library calls which we need to init
|
||||
* video next.
|
||||
*/
|
||||
pciOpen();
|
||||
#endif
|
||||
|
||||
/* Re-init the new master */
|
||||
{
|
||||
@@ -971,10 +992,10 @@ __tryReOpen:
|
||||
* NB: The order of the caching changes is relevant here since
|
||||
* we don't want to waste mtrr's, even briefly.
|
||||
*/
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching(gc->slave_ptr, FXFALSE);
|
||||
sst1InitCaching(gc->base_ptr, FXTRUE);
|
||||
}
|
||||
/*}*/
|
||||
}
|
||||
|
||||
/* Save that we swapped teh master sense so that we can
|
||||
@@ -1332,9 +1353,9 @@ __errSliExit:
|
||||
* This is currently being done in _grDetectResources so that we
|
||||
* can match the nt driver semantics in win95.
|
||||
*/
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching(gc->reg_ptr, FXTRUE);
|
||||
}
|
||||
/*}*/
|
||||
#endif /* !GLIDE_INIT_HAL */
|
||||
#else
|
||||
#error "Need to write command transport init for glide for this hw"
|
||||
@@ -1552,13 +1573,53 @@ __errSliExit:
|
||||
if (!_GlideRoot.environment.noSplash) {
|
||||
HMODULE newSplash;
|
||||
|
||||
if (newSplash = LoadLibrary("3dfxsplash2.dll")) {
|
||||
FARPROC fxSplash;
|
||||
if (newSplash = LoadLibrary("3dfxspl2.dll")) {
|
||||
GrState glideState;
|
||||
FxBool didLoad;
|
||||
GrSplashProc fxSplash;
|
||||
GrSplashInitProc fxSplashInit;
|
||||
GrSplashPlugProc fxSplashPlug;
|
||||
GrSplashShutdownProc fxSplashShutdown;
|
||||
|
||||
if (fxSplash = GetProcAddress(newSplash, "_fxSplash@16")) {
|
||||
fxSplash(hWnd, gc->state.screen_width, gc->state.screen_height, nAuxBuffers);
|
||||
_GlideRoot.environment.noSplash = 1;
|
||||
}
|
||||
fxSplash = (GrSplashProc)GetProcAddress(newSplash, "_fxSplash@20");
|
||||
fxSplashInit = (GrSplashInitProc)GetProcAddress(newSplash, "_fxSplashInit@24");
|
||||
fxSplashPlug = (GrSplashPlugProc)GetProcAddress(newSplash, "_fxSplashPlug@16");
|
||||
fxSplashShutdown = (GrSplashShutdownProc)GetProcAddress(newSplash, "_fxSplashShutdown@0");
|
||||
|
||||
didLoad = ((fxSplash != NULL) &&
|
||||
(fxSplashInit != NULL) &&
|
||||
(fxSplashPlug != NULL) &&
|
||||
(fxSplashShutdown != NULL));
|
||||
|
||||
if (didLoad & 0/* [dBorca] i am evil! harr-harr */) {
|
||||
/* new style DLL */
|
||||
grGlideGetState(&glideState);
|
||||
didLoad = fxSplashInit(hWnd,
|
||||
gc->state.screen_width, gc->state.screen_height,
|
||||
nColBuffers, nAuxBuffers,
|
||||
format);
|
||||
if (didLoad) {
|
||||
fxSplash(0.0f, 0.0f,
|
||||
(float)gc->state.screen_width,
|
||||
(float)gc->state.screen_height,
|
||||
0);
|
||||
fxSplashShutdown();
|
||||
_GlideRoot.environment.noSplash = 1;
|
||||
}
|
||||
grGlideSetState((const void*)&glideState);
|
||||
} else {
|
||||
/* old style DLL */
|
||||
typedef int (FX_CALL *GrSplashOld) (FxU32 hWind, FxU32 scrWidth, FxU32 scrHeight, FxU32 nAuxBuffers);
|
||||
GrSplashOld fxSplashOld = (GrSplashOld)GetProcAddress(newSplash, "_fxSplash@16");
|
||||
if (fxSplashOld) {
|
||||
grGlideGetState(&glideState);
|
||||
fxSplashOld(hWnd, gc->state.screen_width, gc->state.screen_height, nAuxBuffers);
|
||||
_GlideRoot.environment.noSplash = 1;
|
||||
grGlideSetState((const void*)&glideState);
|
||||
}
|
||||
}
|
||||
|
||||
FreeLibrary(newSplash);
|
||||
}
|
||||
}
|
||||
#endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */
|
||||
@@ -1676,9 +1737,9 @@ GR_ENTRY(grSstWinClose, void, (void))
|
||||
* track of the mtrr's.
|
||||
*/
|
||||
sst1InitIdle(gc->reg_ptr);
|
||||
if (_GlideRoot.CPUType >= 6) {
|
||||
/*if (_GlideRoot.CPUType.family >= 6) {*/
|
||||
sst1InitCaching(gc->base_ptr, FXFALSE);
|
||||
}
|
||||
/*}*/
|
||||
sst1InitShutdown(gc->reg_ptr);
|
||||
#endif /* !GLIDE_INIT_HAL */
|
||||
|
||||
@@ -1803,7 +1864,7 @@ GR_ENTRY(grSstControl, FxBool, (GrControl_t code))
|
||||
#elif (GLIDE_PLATFORM & GLIDE_HW_CVG) && !GLIDE_INIT_HAL
|
||||
{
|
||||
FxBool isValidP = FXTRUE;
|
||||
FxBool passFlag;
|
||||
FxBool passFlag = 0;
|
||||
|
||||
switch ( code ) {
|
||||
case GR_CONTROL_DEACTIVATE:
|
||||
|
||||
@@ -19,6 +19,19 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2.2.2 2005/01/22 14:52:02 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.2.2.1 2004/12/23 20:45:56 koolsmoky
|
||||
** converted to nasm syntax
|
||||
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
**
|
||||
** Revision 1.2 2000/10/03 18:28:33 mercury
|
||||
** 003-clean_up_cvg-000, cvg tree cleanup.
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 61 5/18/98 12:11p Peter
|
||||
** removed unnecesasry fencing
|
||||
@@ -271,7 +284,7 @@ GR_DDFUNC(_grTexDownloadPalette,
|
||||
slopCount, (0xFF >> (8 - slopCount)));
|
||||
while(i < start + slopCount) {
|
||||
REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)],
|
||||
(0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF));
|
||||
(0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF)));
|
||||
i++;
|
||||
}
|
||||
REG_GROUP_END();
|
||||
@@ -284,7 +297,7 @@ GR_DDFUNC(_grTexDownloadPalette,
|
||||
REG_GROUP_BEGIN(chipId, nccTable0[4], 8, 0xFF);
|
||||
while(i < endIndex) {
|
||||
REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)],
|
||||
(0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF));
|
||||
(0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF)));
|
||||
i++;
|
||||
}
|
||||
REG_GROUP_END();
|
||||
@@ -298,7 +311,7 @@ GR_DDFUNC(_grTexDownloadPalette,
|
||||
slopCount, (0xFF >> (8 - slopCount)));
|
||||
while(i <= end) {
|
||||
REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)],
|
||||
(0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF));
|
||||
(0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF)));
|
||||
i++;
|
||||
}
|
||||
REG_GROUP_END();
|
||||
@@ -388,7 +401,9 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
{
|
||||
const FifoChipField chipId = (FifoChipField)(0x02UL << tmu);
|
||||
FxI32 sh;
|
||||
#if !GLIDE_DISPATCH_DOWNLOAD
|
||||
FxU32 max_s, width, tmu_baseaddress;
|
||||
#endif
|
||||
#define FN_NAME "grTexDownloadMipMapLevelPartial"
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 89);
|
||||
@@ -474,6 +489,63 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
REG_GROUP_END();
|
||||
}
|
||||
|
||||
#if GLIDE_DISPATCH_DOWNLOAD
|
||||
/* Do the download */
|
||||
{
|
||||
const FxU32
|
||||
width = _grMipMapHostWH[aspectRatio][thisLod][0],
|
||||
formatSel = (format >= GR_TEXFMT_16BIT),
|
||||
tmuBaseAddr = ((FxU32)gc->tex_ptr +
|
||||
(((FxU32)tmu) << 21UL) +
|
||||
(((FxU32)thisLod) << 17UL));
|
||||
FxU32
|
||||
widthSel = (width >> 0x01UL),
|
||||
max_s = width >> (formatSel
|
||||
? 1 /* 16-bit texture */
|
||||
: 2); /* 8-bit texture */
|
||||
|
||||
if (max_s <= 0) max_s = 1;
|
||||
if (widthSel > 2) widthSel = 3;
|
||||
|
||||
_GlideRoot.stats.texBytes += max_s * (max_t - t + 1) * 4;
|
||||
|
||||
if ((sh == 3) && !formatSel && (width > 4)) {
|
||||
/* 8-bit >4xN texture with Old revision TMUs (GR_SSTTYPE_VOODOO) */
|
||||
const FxU8* src8 = (const FxU8*)data;
|
||||
/* Compute Physical Write Pointer */
|
||||
const FxU32
|
||||
tmu_baseaddress = (FxU32)gc->tex_ptr +
|
||||
(((FxU32)tmu) << 21) + (((FxU32)thisLod) << 17);
|
||||
|
||||
for (; t <= max_t; t++) {
|
||||
FxU32
|
||||
s,
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
|
||||
LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
for (s = 0; s < max_s; s+=2) {
|
||||
const FxU32 t0 = *(const FxU32*)(src8 );
|
||||
const FxU32 t1 = *(const FxU32*)(src8 + sizeof(FxU32));
|
||||
|
||||
LINEAR_WRITE_SET_8(tex_address , t0);
|
||||
LINEAR_WRITE_SET_8(tex_address + sizeof(FxU32), t1);
|
||||
|
||||
tex_address += 16;
|
||||
src8 += (sizeof(FxU32) << 1);
|
||||
}
|
||||
LINEAR_WRITE_END();
|
||||
}
|
||||
} else {
|
||||
/* GR_SSTTYPE_Voodoo2 all go through here */
|
||||
(*((*_GlideRoot.deviceArchProcs.curTexProcs)[formatSel][widthSel]))(gc,
|
||||
tmuBaseAddr,
|
||||
max_s, t, max_t,
|
||||
data);
|
||||
}
|
||||
}
|
||||
#else
|
||||
/*------------------------------------------------------------
|
||||
Determine max_s
|
||||
------------------------------------------------------------*/
|
||||
@@ -496,7 +568,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
------------------------------------------------------------*/
|
||||
if (format < GR_TEXFMT_16BIT) { /* 8 bit textures */
|
||||
/* Hoisted initialization */
|
||||
FxU32 tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t, thisLod);
|
||||
FxU32 tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU8* src8 = (const FxU8*)data;
|
||||
|
||||
switch(width) {
|
||||
@@ -509,7 +581,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src8 += width;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1, thisLod);
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -522,7 +594,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src8 += width;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1, thisLod);
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -535,7 +607,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src8 += width;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1, thisLod);
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -547,7 +619,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
for (; t <= max_t; t++) {
|
||||
FxU32 s;
|
||||
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t, thisLod);
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
|
||||
LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
@@ -569,7 +641,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
}
|
||||
} else { /* 16-bit Textures */
|
||||
/* Hoisted initialization */
|
||||
FxU32 tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t, thisLod);
|
||||
FxU32 tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU16* src16 = (const FxU16*)data;
|
||||
|
||||
/* Cases 1, 2 don't need inner loops for s */
|
||||
@@ -583,7 +655,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src16 += width;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1, thisLod);
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -596,7 +668,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src16 += width;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1, thisLod);
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -604,7 +676,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
for (; t <= max_t; t++) {
|
||||
FxU32 s;
|
||||
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t, thisLod);
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
|
||||
/* Loop unrolled to process 2 dwords per iteration */
|
||||
LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,
|
||||
@@ -629,6 +701,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Restore TLOD, texMode, baseAddress
|
||||
@@ -768,7 +841,7 @@ GR_ENTRY(ConvertAndDownloadRle,
|
||||
|
||||
rle_line_end=rle_line+width+u0;
|
||||
for(t=0;t<max_t;t++) {
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t, thisLod);
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
src = rle_line + u0;
|
||||
|
||||
rle_decode_line_asm(tlut,&bm_data[offset],rle_line);
|
||||
@@ -786,7 +859,7 @@ GR_ENTRY(ConvertAndDownloadRle,
|
||||
}
|
||||
|
||||
if (dest_height>height) {
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t, thisLod);
|
||||
tex_address = tmu_baseaddress + TEX_ROW_ADDR_INCR(t);
|
||||
src=rle_line+u0;
|
||||
|
||||
LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.1 2005/01/22 14:52:02 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
*
|
||||
* 12 12/15/97 5:52p Atai
|
||||
* disable obsolete glide2 api for glide3
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.1 2005/01/22 14:52:02 koolsmoky
|
||||
** enabled packed argb for cmd packet type 3
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 61 3/17/98 3:00p Peter
|
||||
** removed vertex sorting
|
||||
@@ -250,6 +256,7 @@ GR_DDFUNC(_trisetup_nogradients,
|
||||
const int* dataList = gc->tsuDataList;
|
||||
|
||||
#if GLIDE_PACKED_RGB
|
||||
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0)
|
||||
{
|
||||
FxBool doColorP = FXFALSE;
|
||||
FxU32 packedColor = 0x00;
|
||||
@@ -374,10 +381,10 @@ GR_DDFUNC(_trisetup_nogradients,
|
||||
if (hasColor || hasAlpha) {
|
||||
FxU32 packedVal = 0x00;
|
||||
|
||||
if (hasColor) packedVal = ((RGBA_COMP_CLAMP(curVertex->b) << 0UL) |
|
||||
(RGBA_COMP_CLAMP(curVertex->g) << 8UL) |
|
||||
(RGBA_COMP_CLAMP(curVertex->r) << 16UL));
|
||||
if (hasAlpha) packedVal |= (RGBA_COMP_CLAMP(curVertex->a) << 24UL);
|
||||
if (hasColor) packedVal = ((RGBA_COMP_CLAMP(curVertex->b, B) << 0UL) |
|
||||
(RGBA_COMP_CLAMP(curVertex->g, G) << 8UL) |
|
||||
(RGBA_COMP_CLAMP(curVertex->r, R) << 16UL));
|
||||
if (hasAlpha) packedVal |= (RGBA_COMP_CLAMP(curVertex->a, A) << 24UL);
|
||||
|
||||
REG_GROUP_SET(hw, sARGB, packedVal);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
TAG_REGEXP = $(BUILD_ROOT)\$(FX_GLIDE_HW)\glide\src\glide.rx
|
||||
|
||||
# Compile for specific hardware
|
||||
!if "$(FX_GLIDE_HW)" == "CVG"
|
||||
!if "$(FX_GLIDE_HW)" == "cvg"
|
||||
FX_GLIDE_REAL_HW= 1
|
||||
|
||||
!if "$(FX_GLIDE_CTRISETUP)" == ""
|
||||
@@ -32,7 +32,7 @@ LCDEFS = $(LCDEFS) -DCVG \
|
||||
-DGLIDE_CHIP_BROADCAST=1 -DGLIDE_DEFAULT_GAMMA=1.3f
|
||||
LCDEFS = $(LCDEFS) \
|
||||
-DGLIDE_BLIT_CLEAR=1 \
|
||||
!else if "$(FX_GLIDE_HW)" == "H3"
|
||||
!else if "$(FX_GLIDE_HW)" == "h3"
|
||||
FX_GLIDE_REAL_HW= 1
|
||||
FX_GLIDE_NO_FIFO= 1
|
||||
FX_GLIDE_CTRISETUP = 1
|
||||
@@ -40,7 +40,7 @@ HWSPEC = fifo.c
|
||||
LCDEFS = $(LCDEFS) -DH3 \
|
||||
-DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKET3_TRI_SETUP=0
|
||||
!else
|
||||
!error "FX_GLIDE_HW == unknown value (H3|CVG)"
|
||||
!error "FX_GLIDE_HW == unknown value (h3|cvg)"
|
||||
!endif
|
||||
|
||||
|
||||
|
||||
@@ -1,263 +1,335 @@
|
||||
# Linux makefile for Glide2/CVG
|
||||
# This makefile MUST be processed by GNU make!!!
|
||||
#
|
||||
# THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
# PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
# TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
# INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
# DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
# THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
# EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
# FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
#
|
||||
# USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
# RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
# TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
# AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
# SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
# THE UNITED STATES.
|
||||
#
|
||||
# COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
|
||||
TAG_REGEXP = $(BUILD_ROOT)/$(FX_GLIDE_HW)/glide/src/glide.rx
|
||||
|
||||
|
||||
# Compile for specific hardware
|
||||
ifeq ($(FX_GLIDE_HW),cvg)
|
||||
FX_GLIDE_REAL_HW= 1
|
||||
FX_GLIDE_CTRISETUP = 0
|
||||
|
||||
HWSPEC = fifo.c
|
||||
LCDEFS += -DCVG \
|
||||
-DGLIDE_CHIP_BROADCAST=1 -DGLIDE_DEFAULT_GAMMA=1.3 \
|
||||
-DGLIDE_BLIT_CLEAR=1
|
||||
|
||||
else
|
||||
ifeq ($(FX_GLIDE_HW),H3)
|
||||
FX_GLIDE_REAL_HW= 1
|
||||
FX_GLIDE_NO_FIFO= 1
|
||||
FX_GLIDE_CTRISETUP = 1
|
||||
HWSPEC = fifo.c
|
||||
LCDEFS += -DH3 \
|
||||
-DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKET3_TRI_SETUP=0
|
||||
else
|
||||
error "FX_GLIDE_HW == unknown value (H3|CVG)"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG),1)
|
||||
DBGOPTS = -DGLIDE_DEBUG -DGDBG_INFO_ON
|
||||
GLIDE_SANITY_ALL = 1
|
||||
endif
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),)
|
||||
error "FX_GLIDE_HW not defined"
|
||||
endif
|
||||
|
||||
# Display Options
|
||||
DSPOPTS =
|
||||
SUBLIBRARIES =
|
||||
|
||||
ifeq ($(HAL_HW),1)
|
||||
DSPOPTS += -DHAL_HW=1
|
||||
SUBLIBRARIES += $(BUILD_ROOT)/$(FX_GLIDE_HW)/lib/libsst1init.a \
|
||||
$(BUILD_ROOT_SWLIBS)/lib/libfxmisc.a \
|
||||
$(BUILD_ROOT_SWLIBS)/lib/libfxpci.a
|
||||
endif
|
||||
ifeq ($(DSPOPTS),)
|
||||
error "Unknown HAL_* configuration"
|
||||
endif
|
||||
|
||||
# GLIDE_HW_TRI_SETUP: Use the hw TSU for triangle rendering.
|
||||
# GLIDE_TRI_CULLING: Cull backfaced/zero area triangles in sw before the fifo.
|
||||
# NB: This must be set if GLIDE_HW_TRI_SETUP=0
|
||||
ifeq ($(FX_GLIDE_SW_SETUP),1)
|
||||
LCDEFS += -DGLIDE_HW_TRI_SETUP=0 -DGLIDE_TRI_CULLING=1
|
||||
FX_GLIDE_CTRISETUP = 1
|
||||
else
|
||||
# Do culling test in sw for independent triangles
|
||||
CULL_MODE = -DGLIDE_TRI_CULLING=0
|
||||
ifeq ($(FX_GLIDE_HW_CULL),1)
|
||||
CULL_MODE = -DGLIDE_TRI_CULLING=1
|
||||
endif
|
||||
DSPOPTS += $(CULL_MODE)
|
||||
|
||||
# Send a single DWORD ARGB rather than 4 fp values, at
|
||||
# the cost of doing the conversion.
|
||||
ifeq ($(FX_GLIDE_PACK_RGB),1)
|
||||
LCDEFS += -DGLIDE_PACKED_RGB=1
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifneq ($(FX_GLIDE_NO_FIFO),1)
|
||||
FIFODEFS = -DUSE_PACKET_FIFO=1 \
|
||||
-DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKET3_TRI_SETUP=1
|
||||
|
||||
ifeq ($(FX_GLIDE_DEBUG_FIFO),1)
|
||||
# GLIDE_USE_DEBUG_FIFO: Run w/ the small fifo to cause me/glide more stress
|
||||
# FIFO_ASSERT_FULL: Check hw depth/fifo a lot (slow)
|
||||
LCDEFS += -DGLIDE_USE_DEBUG_FIFO=1 -DFIFO_ASSERT_FULL=1 \
|
||||
-DASSERT_FAULT=0 #-DGLIDE_SANITY_SIZE=1
|
||||
endif
|
||||
else
|
||||
FX_GLIDE_CTRISETUP = 1
|
||||
FIFODEFS = -DGLIDE_HW_TRI_SETUP=1
|
||||
endif
|
||||
|
||||
# Optimization Options
|
||||
# This is for turning on and off algorithmic optimizations,
|
||||
# not flags to the C compiler. Usually this involves
|
||||
# enabling/disabling assembly language code, but it can also
|
||||
# change the way C code works, or how C code generates data to be
|
||||
# used by various pieces of code.
|
||||
# Usually these are set with environment variables or arguments to
|
||||
# nmake.
|
||||
# $Id$
|
||||
#
|
||||
# Copyright (c) 2004 - Daniel Borca
|
||||
# Email : dborca@users.sourceforge.net
|
||||
# Web : http://www.geocities.com/dborca
|
||||
#
|
||||
# Copyright (c) 2004 - Hiroshi Morii
|
||||
# Email : koolsmoky@users.sourceforge.net
|
||||
# Web : http://www.3dfxzone.it/koolsmoky
|
||||
#
|
||||
# Copyright (c) 2006 - Guillem Jover <guillem@hadrons.org>
|
||||
#
|
||||
|
||||
# Turn on/off assembly language trisetup code.
|
||||
# (C on is Assembly off) (A ssembly T ri S etup OPTS)
|
||||
ifeq ($(FX_GLIDE_CTRISETUP),1)
|
||||
ASMTRISETUP =
|
||||
ATSOPTS = -DGLIDE_USE_C_TRISETUP
|
||||
CFILES = gxdraw.c
|
||||
else
|
||||
ASMTRISETUP = xdraw2.S
|
||||
DSPOPTS += -DGLIDE_DISPATCH_SETUP=1 -DGLIDE_PACKED_RGB=0
|
||||
endif
|
||||
|
||||
OPTOPTS = $(GRMOPTS) $(OTSOPTS) $(ATSOPTS)
|
||||
|
||||
# local defines, begin with basics and then add on
|
||||
LCDEFS += -DGLIDE_LIB
|
||||
|
||||
ifeq ($(FX_GLIDE_CRYBABY),1)
|
||||
LCDEFS += -DGLIDE_CHECK_COMPATABILITY=1
|
||||
endif
|
||||
|
||||
# Turn Off/On compilation of shameless plug
|
||||
ifeq ($(FX_GLIDE_NO_PLUG),1)
|
||||
else
|
||||
LCDEFS += -DGLIDE_PLUG
|
||||
endif
|
||||
|
||||
# Turn Off/On splash screen
|
||||
ifeq ($(FX_GLIDE_NO_SPLASH),1)
|
||||
else
|
||||
LCDEFS += -DGLIDE_SPLASH
|
||||
endif
|
||||
|
||||
#Glide 3 Stuff, for migration all
|
||||
ifneq ($(FX_GLIDE3),)
|
||||
LCDEFS += -DGLIDE3
|
||||
GLIDE3FILES = gstrip.c distrip.c distate.c diget.c
|
||||
endif
|
||||
|
||||
#Glide 3. remove migration stuff
|
||||
ifneq ($(FX_GLIDE3_ALPHA),)
|
||||
LCDEFS += -DGLIDE3_ALPHA
|
||||
GLIDE3FILES = gstrip.c distrip.c distate.c diget.c
|
||||
endif
|
||||
|
||||
ifneq ($(GLIDE_SANITY_ALL)$(GLIDE_SANITY_SIZE),)
|
||||
LCDEFS += -DGLIDE_SANITY_SIZE
|
||||
endif
|
||||
ifneq ($(GLIDE_SANITY_ALL)$(GLIDE_SANITY_ASSERT),)
|
||||
LCDEFS += -DGLIDE_SANITY_ASSERT
|
||||
endif
|
||||
|
||||
# Local Defs, Includes, and Options (C)
|
||||
LCINCS += -I$(BUILD_ROOT)/$(FX_GLIDE_HW)/include
|
||||
LCOPTS = $(DBGOPTS) $(DSPOPTS) $(OPTOPTS)
|
||||
|
||||
# Local Defs, Includes, and Options (ASM)
|
||||
LADEFS += $(ASM_REGMAP_DEFS)
|
||||
LAINCS = -I$(BUILD_ROOT)/$(FX_GLIDE_HW)/include
|
||||
LAOPTS = $(DBGOPTS) $(DSPOPTS) $(OPTOPTS)
|
||||
|
||||
AFILES = $(ASMTRISETUP)
|
||||
|
||||
# sources
|
||||
HEADERS = glide.h gump.h glidesys.h glideutl.h
|
||||
PRIVATE_HEADERS = fxglide.h gsstdef.h fxinline.h
|
||||
|
||||
INSTALL_DESTINATION = $(BUILD_ROOT)/$(FX_GLIDE_HW)
|
||||
|
||||
CFILES += gsplash.c g3df.c gu.c guclip.c gpci.c gump.c\
|
||||
diglide.c disst.c ditex.c gbanner.c gerror.c\
|
||||
gmovie.c digutex.c ddgump.c gaa.c gdraw.c\
|
||||
gglide.c glfb.c gsst.c gtex.c gtexdl.c\
|
||||
gutex.c $(HWSPEC) $(GLIDE3FILES) \
|
||||
cpudetect.c
|
||||
|
||||
OFILES = $(CFILES:.c=.o)
|
||||
|
||||
OTHER_CFILES = fxgasm.c fxbldno.c fxinline.h
|
||||
|
||||
CODFILES = $(CFILES:.c=.cod)
|
||||
|
||||
# targets
|
||||
LDIRT = fxgasm.o fxgasm fxgasm.h fxinline.h fxbldno.o fxbldno fxbldno.h
|
||||
|
||||
ifeq ($(FX_GLIDE3),1)
|
||||
LIBRARIES = libglide3.a
|
||||
SHARED_LIBRARY = libglide3.so.3.01
|
||||
else
|
||||
LIBRARIES = libglide.a
|
||||
SHARED_LIBRARY = libglide.so.2.53
|
||||
endif
|
||||
RCFILE = glide.rc
|
||||
|
||||
# Make a static link library for things like the diags.
|
||||
ifeq ($(FX_DLL_BUILD),1)
|
||||
FX_DLL_LIBRARY = 1
|
||||
else
|
||||
LCDEFS += -DFX_STATIC_BUILD
|
||||
endif
|
||||
|
||||
|
||||
LCDEFS += $(FIFODEFS)
|
||||
|
||||
include $(BUILD_ROOT)/swlibs/include/make/3dfx.mak
|
||||
|
||||
codfiles: $(CODFILES)
|
||||
|
||||
ctags: $(CFILES)
|
||||
ctags $(CFILES)
|
||||
|
||||
gbanner.o : banner.inc
|
||||
gsplash.o : splshdat.c
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# special rules for making FXGASM.H
|
||||
#
|
||||
fxgasm: fxgasm.c $(HEADERS) gsstdef.h fxglide.h
|
||||
$(CC) -o $@ fxgasm.c $(GCDEFS) $(LCDEFS) $(VCDEFS) $(LCOPTS) \
|
||||
-I$(BUILD_ROOT)/$(FX_GLIDE_HW)/include -I$(BUILD_ROOT)/swlibs/include $(LDFLAGS)
|
||||
# Available options:
|
||||
#
|
||||
# Environment variables:
|
||||
# FX_GLIDE_HW build for the given ASIC (cvg).
|
||||
# default = cvg
|
||||
# CPU optimize for the given processor.
|
||||
# default = 6 (PentiumPro)
|
||||
# DEBUG=1 disable optimizations and build for debug.
|
||||
# default = no
|
||||
# USE_X86=1 use assembler triangle specializations; req by CVG
|
||||
# default = yes
|
||||
# USE_3DNOW=1 allow 3DNow! specializations. However, the true CPU
|
||||
# capabilities are still checked at run-time to avoid
|
||||
# crashes.
|
||||
# default = no
|
||||
# USE_MMX=1 allow MMX specializations.
|
||||
# default = no
|
||||
# FXOEM2X=1 build fxoem2x.so
|
||||
# default = no
|
||||
#
|
||||
# Targets:
|
||||
# all: build everything
|
||||
# glide2x: build Glide2x lib
|
||||
# clean: remove object files
|
||||
# realclean: remove all generated files
|
||||
#
|
||||
|
||||
|
||||
|
||||
.PHONY: all glide2x clean realclean
|
||||
.INTERMEDIATE: fxgasm
|
||||
.SUFFIXES: .lo
|
||||
|
||||
export PATH := $(PATH):.
|
||||
|
||||
###############################################################################
|
||||
# general defines (user settable?)
|
||||
###############################################################################
|
||||
|
||||
GLIDE_VERSION_MAJOR = 2
|
||||
GLIDE_VERSION_MINOR = 53
|
||||
|
||||
GLIDE_LIB = libglide.a
|
||||
GLIDE_SO = libglide.so
|
||||
GLIDE_SONAME = $(GLIDE_SO).$(GLIDE_VERSION_MAJOR)
|
||||
GLIDE_SHARED = $(GLIDE_SONAME).$(GLIDE_VERSION_MINOR)
|
||||
|
||||
FX_GLIDE_HW ?= cvg
|
||||
FX_GLIDE_SW = ../../../swlibs
|
||||
GLIDE_LIBDIR = ../../lib
|
||||
|
||||
###############################################################################
|
||||
# tools
|
||||
###############################################################################
|
||||
|
||||
CC = gcc
|
||||
AS = nasm
|
||||
AR = ar
|
||||
|
||||
CP = cp
|
||||
|
||||
###############################################################################
|
||||
# defines
|
||||
###############################################################################
|
||||
|
||||
# platform
|
||||
CDEFS = -DINIT_LINUX -D__3Dfx_PCI_CFG__
|
||||
LDLIBS = -lm
|
||||
|
||||
# general
|
||||
CDEFS += -DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKED_RGB=0 -DGLIDE_TRI_CULLING=1 -DGLIDE_DEFAULT_GAMMA=1.3f -DGLIDE_LIB=1
|
||||
#CDEFS += -DGLIDE3 -DGLIDE3_ALPHA -DGLIDE3_SCALER
|
||||
|
||||
# special sli buffer clears
|
||||
CDEFS += -DGLIDE_BLIT_CLEAR=1
|
||||
|
||||
# workaround for CVGs with broken tsus which cannot send commands to multiple
|
||||
# tmus using chipfield. chipfield will always be set to 0xf
|
||||
CDEFS += -DGLIDE_CHIP_BROADCAST=1
|
||||
|
||||
# subsystem
|
||||
CDEFS += -DCVG
|
||||
|
||||
# debug
|
||||
ifdef DEBUG
|
||||
CDEFS += -DGDBG_INFO_ON -DGLIDE_DEBUG -DGLIDE_SANITY_ASSERT -DGLIDE_SANITY_SIZE
|
||||
endif
|
||||
|
||||
override USE_FIFO = 1
|
||||
#override USE_X86 = 1
|
||||
|
||||
ifeq ($(USE_X86),1)
|
||||
CDEFS += -DGLIDE_DISPATCH_SETUP=1 -DGLIDE_DISPATCH_DOWNLOAD=1
|
||||
override USE_FIFO = 1
|
||||
CDEFS += -DHAVE_XDRAWTRI_ASM=1
|
||||
override USE_DRAWTRI_ASM = 1
|
||||
else
|
||||
CDEFS += -DGLIDE_USE_C_TRISETUP=1
|
||||
endif
|
||||
|
||||
# fifo
|
||||
ifeq ($(USE_FIFO),1)
|
||||
CDEFS += -DUSE_PACKET_FIFO=1 -DGLIDE_PACKET3_TRI_SETUP=1
|
||||
endif
|
||||
|
||||
# other
|
||||
CDEFS += -DGLIDE_PLUG -DGLIDE_SPLASH
|
||||
|
||||
###############################################################################
|
||||
# flags
|
||||
###############################################################################
|
||||
|
||||
# librarian
|
||||
ARFLAGS = rus
|
||||
|
||||
# assembler
|
||||
ASFLAGS = -O6 -felf -D__linux__
|
||||
ASFLAGS += $(CDEFS)
|
||||
|
||||
# compiler
|
||||
CFLAGS = -Wall -W
|
||||
CFLAGS += -I. -I../../incsrc -I../../init
|
||||
CFLAGS += -I$(FX_GLIDE_SW)/fxmisc -I$(FX_GLIDE_SW)/newpci/pcilib -I$(FX_GLIDE_SW)/fxmemmap
|
||||
CFLAGS += $(CDEFS)
|
||||
|
||||
# cpu optimized triangle
|
||||
ifeq ($(USE_MMX),1)
|
||||
CFLAGS += -DGL_MMX
|
||||
override USE_X86 = 1
|
||||
endif
|
||||
|
||||
ifeq ($(USE_3DNOW),1)
|
||||
CFLAGS += -DGL_AMD3D
|
||||
override USE_X86 = 1
|
||||
endif
|
||||
|
||||
ifeq ($(USE_X86),1)
|
||||
CFLAGS += -DGL_X86 -DBIG_OPT
|
||||
OPTFLAGS ?= -O6 -march=pentium2 -mtune=pentium3 -fomit-frame-pointer -funroll-loops \
|
||||
-fexpensive-optimizations -ffast-math -Wno-unused
|
||||
else
|
||||
CFLAGS += -DGLIDE_USE_C_TRISETUP
|
||||
OPTFLAGS ?= -O6 -march=pentium2 -mtune=pentium3 -ffast-math -Wno-unused
|
||||
endif
|
||||
|
||||
# optflags
|
||||
CFLAGS += $(OPTFLAGS)
|
||||
|
||||
###############################################################################
|
||||
# objects
|
||||
###############################################################################
|
||||
|
||||
GLIDE_OBJECTS = \
|
||||
fifo.o \
|
||||
gsplash.o \
|
||||
g3df.o \
|
||||
gu.o \
|
||||
guclip.o \
|
||||
gpci.o \
|
||||
gump.o \
|
||||
diglide.o \
|
||||
disst.o \
|
||||
ditex.o \
|
||||
gbanner.o \
|
||||
gerror.o \
|
||||
gmovie.o \
|
||||
digutex.o \
|
||||
ddgump.o \
|
||||
gaa.o \
|
||||
gdraw.o \
|
||||
gglide.o \
|
||||
glfb.o \
|
||||
gsst.o \
|
||||
gtex.o \
|
||||
gtexdl.o \
|
||||
gutex.o \
|
||||
cpuid.o \
|
||||
fpu.o \
|
||||
xtexdl_def.o
|
||||
|
||||
ifeq ($(USE_DRAWTRI_ASM),1)
|
||||
GLIDE_OBJECTS += xdrawtri.o
|
||||
endif
|
||||
ifeq ($(USE_X86),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw2_def.o
|
||||
ifeq ($(USE_MMX),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xtexdl_mmx.o
|
||||
endif
|
||||
ifeq ($(USE_3DNOW),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw2_3dnow.o \
|
||||
xtexdl_3dnow.o
|
||||
endif
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
gxdraw.o
|
||||
endif
|
||||
|
||||
GLIDE_OBJECTS += \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxpci.o \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxlinux.o \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxmsr.o \
|
||||
../../init/canopus.o \
|
||||
../../init/dac.o \
|
||||
../../init/gamma.o \
|
||||
../../init/gdebug.o \
|
||||
../../init/info.o \
|
||||
../../init/parse.o \
|
||||
../../init/print.o \
|
||||
../../init/sli.o \
|
||||
../../init/sst1init.o \
|
||||
../../init/util.o \
|
||||
../../init/video.o
|
||||
|
||||
# FIXME: needed for now to match the old library signature, should be checked
|
||||
# if it's really needed.
|
||||
GLIDE_OBJECTS += \
|
||||
$(FX_GLIDE_SW)/fxmisc/fxos.o \
|
||||
$(FX_GLIDE_SW)/fxmisc/fximg.o
|
||||
|
||||
###############################################################################
|
||||
# rules
|
||||
###############################################################################
|
||||
|
||||
.c.o:
|
||||
$(CC) -o $@ $(CFLAGS) -c $<
|
||||
.c.lo:
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -c $<
|
||||
|
||||
###############################################################################
|
||||
# main
|
||||
###############################################################################
|
||||
all: glide2x fxoem2x
|
||||
|
||||
glide2x: $(GLIDE_LIBDIR)/$(GLIDE_LIB) $(GLIDE_LIBDIR)/$(GLIDE_SO)
|
||||
|
||||
$(GLIDE_LIBDIR)/$(GLIDE_LIB): $(GLIDE_OBJECTS)
|
||||
$(AR) $(ARFLAGS) $@ $^
|
||||
|
||||
$(GLIDE_LIBDIR)/$(GLIDE_SO): $(GLIDE_LIBDIR)/$(GLIDE_SHARED)
|
||||
ln -fs $(GLIDE_SHARED) $(GLIDE_LIBDIR)/$(GLIDE_SO)
|
||||
|
||||
$(GLIDE_LIBDIR)/$(GLIDE_SHARED): $(GLIDE_OBJECTS:.o=.lo)
|
||||
$(CC) -o $@ -shared -Wl,-soname,$(GLIDE_SONAME) $^ $(LDFLAGS) $(LDLIBS)
|
||||
|
||||
ifeq ($(FXOEM2X),1)
|
||||
$(GLIDE_LIBDIR)/libfxoem2x.so: ../oem/oeminit.o
|
||||
# $(LD) -o $@ $(LDFLAGS) ../oem/oeminit.o $(LDLIBS)
|
||||
else
|
||||
$(GLIDE_LIBDIR)/libfxoem2x.so:
|
||||
# $(warning FxOem2x not enabled... Skipping libfxoem2x.so)
|
||||
endif
|
||||
|
||||
fxoem2x: $(GLIDE_LIBDIR)/libfxoem2x.so
|
||||
|
||||
###############################################################################
|
||||
# rules(2)
|
||||
###############################################################################
|
||||
|
||||
#cpuid.o: cpudtect.asm
|
||||
# $(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw2_def.o: xdraw2.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xtexdl_def.o: xtexdl.c
|
||||
$(CC) -o $@ $(CFLAGS) -c $<
|
||||
xtexdl_mmx.o: xtexdl.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_MMX=1 $<
|
||||
xdraw2_3dnow.o: xdraw2.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $<
|
||||
xtexdl_3dnow.o: xtexdl.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $<
|
||||
xdrawtri.o: xdrawtri.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
|
||||
#cpuid.lo: cpuid.o
|
||||
# $(CP) $< $@
|
||||
xdraw2_def.lo: xdraw2_def.o
|
||||
$(CP) $< $@
|
||||
xtexdl_def.lo: xtexdl_def.o
|
||||
$(CP) $< $@
|
||||
xtexdl_mmx.lo: xtexdl_mmx.o
|
||||
$(CP) $< $@
|
||||
xdraw2_3dnow.lo: xdraw2_3dnow.o
|
||||
$(CP) $< $@
|
||||
xtexdl_3dnow.lo: xtexdl_3dnow.o
|
||||
$(CP) $< $@
|
||||
xdrawtri.lo: xdrawtri.o
|
||||
$(CP) $< $@
|
||||
|
||||
$(GLIDE_OBJECTS): fxinline.h fxgasm.h
|
||||
|
||||
fxinline.h: fxgasm
|
||||
./$< -inline > $@
|
||||
|
||||
fxgasm.h: fxgasm
|
||||
./fxgasm > fxgasm.h
|
||||
fxinline.h: fxgasm
|
||||
./fxgasm -inline > fxinline.h
|
||||
./$< -hex > $@
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# special rules for making FXBLDNO.H
|
||||
#
|
||||
fxgasm: fxgasm.c
|
||||
$(CC) -o $@ $(CFLAGS) $<
|
||||
|
||||
fxbldno: fxbldno.c $(HEADERS) $(PRIVATE_HEADERS)
|
||||
$(CC) -o $@ fxbldno.c $(GCDEFS) $(LCDEFS) $(VCDEFS) $(LCOPTS) $(LDFLAGS)
|
||||
###############################################################################
|
||||
# clean, realclean
|
||||
###############################################################################
|
||||
|
||||
fxbldno.h: fxbldno.exe
|
||||
fxbldno > fxbldno.h
|
||||
clean:
|
||||
-$(RM) *.o *.lo
|
||||
-$(RM) ../../init/*.o ../../init/*.lo
|
||||
-$(RM) $(FX_GLIDE_SW)/newpci/pcilib/*.o $(FX_GLIDE_SW)/newpci/pcilib/*.lo
|
||||
-$(RM) fxinline.h
|
||||
-$(RM) fxgasm.h
|
||||
|
||||
glide.res: rcver.h fxbldno.h
|
||||
gglide.obj: rcver.h
|
||||
|
||||
ifeq ($(FX_GLIDE_CTRISETUP),1)
|
||||
gdraw.o: fxinline.h
|
||||
endif
|
||||
|
||||
xdraw2.o : xdraw2.S xdraw2.inc.S fxgasm.h fxinline.h
|
||||
gasp xdraw2.S $(ASM_OPTS) $(LAOPTS) | as -V -Qy -o xdraw2.o
|
||||
|
||||
cpudtect.o :
|
||||
gasp cpudtect.S $(LAOPTS) | as -V -Qy -o cpudtect.o
|
||||
realclean: clean
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_LIB)
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SHARED)
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SO)
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
|
||||
/*#include "fxbldno.h"*/
|
||||
|
||||
#define MANVERSION 2
|
||||
#define MANREVISION 53
|
||||
#define MANREVISION 56
|
||||
|
||||
#define BUILD_NUMBER 40405
|
||||
|
||||
#ifndef GLIDE3
|
||||
#define VERSIONSTR "2.53\0"
|
||||
#define VERSIONSTR "2.56\0"
|
||||
#else
|
||||
#define VERSIONSTR "3.0\0"
|
||||
#endif
|
||||
|
||||
#if defined(CVG) || defined(VOODOO2)
|
||||
# define HWSTR " Voodoo(tm)\0"
|
||||
# define HWSTR " Voodoo(tm)\0" /* [koolsmoky] NB do not change. Required
|
||||
* by Metabyte WickedGL to detect V2.
|
||||
*/
|
||||
# ifdef NT_BUILD
|
||||
# define PRODNAME "Glide(tm) for Voodoo\251 and Windows\256 NT\0"
|
||||
# define PRODNAME "Glide(tm) for Voodoo^2\251 and Windows\256 NT\0"
|
||||
# else
|
||||
# define PRODNAME "Glide(tm) for Voodoo\251 and Windows\256 95/98\0"
|
||||
# define PRODNAME "Glide(tm) for Voodoo^2\251 and Windows\256 95/98\0"
|
||||
# endif /* NT_BUILD */
|
||||
#elif defined(H3)
|
||||
# define HWSTR " Banshee(tm)\0"
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:13 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 7 2/20/98 11:00a Peter
|
||||
** removed glide3 from glid2 tree
|
||||
@@ -10655,7 +10658,7 @@ static Gu3dfInfo hilite_3dfinfo = {
|
||||
GR_ASPECT_1x1, /* aspect_ratio */
|
||||
GR_TEXFMT_INTENSITY_8 /* format */
|
||||
},
|
||||
{ 0x0000000 }, /* table */
|
||||
{ {{0x0000000}} }, /* table */
|
||||
NULL, /* data */
|
||||
0x00000ab0 /* mem_required */
|
||||
};
|
||||
@@ -12040,7 +12043,7 @@ static Gu3dfInfo shadow_3dfinfo = {
|
||||
GR_ASPECT_2x1, /* aspect_ratio */
|
||||
GR_TEXFMT_INTENSITY_8 /* format */
|
||||
},
|
||||
{ 0x00000000 }, /* table */
|
||||
{ {{0x00000000}} }, /* table */
|
||||
NULL, /* data */
|
||||
0x00000ab0 /* mem_required */
|
||||
};
|
||||
|
||||
@@ -19,6 +19,19 @@
|
||||
;; $Header$
|
||||
;; $Revision$
|
||||
;; $Log$
|
||||
;; Revision 1.1.1.1.2.3 2005/01/22 14:52:02 koolsmoky
|
||||
;; enabled packed argb for cmd packet type 3
|
||||
;;
|
||||
;; Revision 1.1.1.1.2.2 2005/01/13 16:11:39 koolsmoky
|
||||
;; prepare for packed rgb
|
||||
;;
|
||||
;; Revision 1.1.1.1.2.1 2004/12/23 20:45:56 koolsmoky
|
||||
;; converted to nasm syntax
|
||||
;; added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
;;
|
||||
;; Revision 1.1.1.1 1999/12/07 21:49:13 joseph
|
||||
;; Initial checkin into SourceForge.
|
||||
;;
|
||||
;;
|
||||
;; 7 5/18/98 12:16p Peter
|
||||
;; culling enabling
|
||||
@@ -47,174 +60,166 @@
|
||||
; B4 Chip field fix.
|
||||
;;
|
||||
|
||||
TITLE xdraw2.asm
|
||||
OPTION OLDSTRUCTS
|
||||
.586P
|
||||
|
||||
.model FLAT,C ; Flat memory, mangle publics with leading '_'
|
||||
|
||||
; some useful floating load and store macros <ala gmt>
|
||||
flds TEXTEQU <fld DWORD PTR>
|
||||
fsubs TEXTEQU <fsub DWORD PTR>
|
||||
fmuls TEXTEQU <fmul DWORD PTR>
|
||||
|
||||
_DATA SEGMENT
|
||||
One DD 03f800000r
|
||||
Area DD 0
|
||||
dxAB DD 0
|
||||
dxBC DD 0
|
||||
dyAB DD 0
|
||||
dyBC DD 0
|
||||
culltest DD 0
|
||||
|
||||
;; Extra junk to pad out to the next cache line.
|
||||
bias0 DD 0
|
||||
pad1 DD 0
|
||||
pad2 DD 0
|
||||
pad3 DD 0
|
||||
pad4 DD 0
|
||||
pad5 DD 0
|
||||
pad6 DD 0
|
||||
pad7 DD 0
|
||||
bias1 DD 0
|
||||
_DATA ENDS
|
||||
|
||||
; Ugly, but seems to workaround the problem with locally defined
|
||||
; data segment globals not getting relocated properly when using
|
||||
; djgpp.
|
||||
|
||||
zArea TEXTEQU <One+04h>
|
||||
zdxAB TEXTEQU <One+08h>
|
||||
zdxBC TEXTEQU <One+0ch>
|
||||
zdyAB TEXTEQU <One+10h>
|
||||
zdyBC TEXTEQU <One+14h>
|
||||
zculltest TEXTEQU <One+18h>
|
||||
%include "xos.inc"
|
||||
|
||||
;;; Definitions of cvg regs and glide root structures.
|
||||
INCLUDE fxgasm.h
|
||||
%include "fxgasm.h"
|
||||
|
||||
extrn _GlideRoot
|
||||
extrn _FifoMakeRoom, 12
|
||||
|
||||
%MACRO GR_FIFO_WRITE 3
|
||||
mov [%1 + %2], %3
|
||||
%ENDMACRO ; GR_FIFO_WRITE
|
||||
|
||||
%MACRO WRITE_MM1_FIFO_ALIGNED 0
|
||||
%ifdef GL_AMD3D
|
||||
movq [fifo], mm1 ; store current param | previous param
|
||||
%else
|
||||
;;
|
||||
%endif
|
||||
%ENDMACRO ; WRITE_MM1_FIFO_ALIGNED
|
||||
|
||||
%MACRO WRITE_MM1LOW_FIFO 0
|
||||
%ifdef GL_AMD3D
|
||||
movd [fifo], mm1 ; store current param | previous param
|
||||
%else
|
||||
;;
|
||||
%endif
|
||||
%ENDMACRO ; WRITE_MM1LOW_FIFO
|
||||
|
||||
segment DATA
|
||||
One DD 1.0
|
||||
Area DD 0
|
||||
%IF GLIDE_PACKED_RGB
|
||||
bias0 DD 0
|
||||
bias1 DD 0
|
||||
%ENDIF
|
||||
|
||||
segment CONST
|
||||
$T2003 DD 12288.0
|
||||
$T2005 DD 1.0
|
||||
$T2006 DD 256.0
|
||||
|
||||
;;; Arguments (STKOFF = 16 from 4 pushes)
|
||||
STKOFF equ 16
|
||||
_va$ equ 4 + STKOFF
|
||||
_vb$ equ 8 + STKOFF
|
||||
_vc$ equ 12 + STKOFF
|
||||
|
||||
;; coordinate offsets into vertex.
|
||||
;; NB: These are constants and are not
|
||||
;; user settable like the rest of the
|
||||
;; parameter offset. Weird.
|
||||
X equ 0
|
||||
Y equ 4
|
||||
|
||||
%MACRO PROC_TYPE 1
|
||||
%ifdef GL_AMD3D
|
||||
proc %1_3DNow, 12
|
||||
%else
|
||||
proc %1, 12
|
||||
%endif
|
||||
%ENDMACRO ; PROC_TYPE
|
||||
|
||||
;; enables/disables trisProcessed and trisDrawn counters
|
||||
STATS = 1
|
||||
%define STATS 1
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
; Arguments (STKOFF = 16 from 4 pushes)
|
||||
STKOFF = 16
|
||||
_va$ = 4 + STKOFF
|
||||
_vb$ = 8 + STKOFF
|
||||
_vc$ = 12 + STKOFF
|
||||
segment TEXT
|
||||
|
||||
X = 0
|
||||
Y = 4
|
||||
; edx is used as index, loading from *src
|
||||
gc TEXTEQU <esi> ; points to graphics context
|
||||
ALIGN 32
|
||||
PROC_TYPE _trisetup_cull
|
||||
|
||||
_TEXT SEGMENT
|
||||
%define GLIDE_CULLING 1
|
||||
%define GLIDE_PACK_RGB 0
|
||||
%define GLIDE_PACK_ALPHA 0
|
||||
%define GLIDE_GENERIC_SETUP 0
|
||||
%INCLUDE "xdraw2.inc"
|
||||
%undef GLIDE_GENERIC_SETUP
|
||||
%undef GLIDE_PACK_ALPHA
|
||||
%undef GLIDE_PACK_RGB
|
||||
%undef GLIDE_CULLING
|
||||
|
||||
align 4
|
||||
PUBLIC _trisetup_cull@12
|
||||
_trisetup_cull@12 PROC NEAR
|
||||
.code
|
||||
endp
|
||||
|
||||
GLIDE_CULLING textequ <1>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
INCLUDE xdraw2.inc
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_CULLING textequ <0>
|
||||
%IF GLIDE_PACKED_RGB
|
||||
|
||||
_trisetup_cull@12 ENDP
|
||||
ALIGN 32
|
||||
PROC_TYPE _trisetup_cull_rgb
|
||||
|
||||
IF GLIDE_PACKED_RGB
|
||||
align 4
|
||||
PUBLIC _trisetup_cull_rgb@12
|
||||
_trisetup_cull_rgb@12 PROC NEAR
|
||||
.code
|
||||
%define GLIDE_CULLING 1
|
||||
%define GLIDE_PACK_RGB 1
|
||||
%define GLIDE_PACK_ALPHA 0
|
||||
%define GLIDE_GENERIC_SETUP 0
|
||||
%INCLUDE "xdraw2.inc"
|
||||
%undef GLIDE_GENERIC_SETUP
|
||||
%undef GLIDE_PACK_ALPHA
|
||||
%undef GLIDE_PACK_RGB
|
||||
%undef GLIDE_CULLING
|
||||
|
||||
GLIDE_CULLING textequ <1>
|
||||
GLIDE_PACK_RGB textequ <1>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
INCLUDE xdraw2.inc
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_CULLING textequ <0>
|
||||
endp
|
||||
|
||||
_trisetup_cull_rgb@12 ENDP
|
||||
ALIGN 32
|
||||
PROC_TYPE _trisetup_cull_argb
|
||||
|
||||
align 4
|
||||
PUBLIC _trisetup_cull_argb@12
|
||||
_trisetup_cull_argb@12 PROC NEAR
|
||||
.code
|
||||
%define GLIDE_CULLING 1
|
||||
%define GLIDE_PACK_RGB 1
|
||||
%define GLIDE_PACK_ALPHA 1
|
||||
%define GLIDE_GENERIC_SETUP 0
|
||||
%INCLUDE "xdraw2.inc"
|
||||
%undef GLIDE_GENERIC_SETUP
|
||||
%undef GLIDE_PACK_ALPHA
|
||||
%undef GLIDE_PACK_RGB
|
||||
%undef GLIDE_CULLING
|
||||
|
||||
GLIDE_CULLING textequ <1>
|
||||
GLIDE_PACK_RGB textequ <1>
|
||||
GLIDE_PACK_ALPHA textequ <1>
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
INCLUDE xdraw2.inc
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_CULLING textequ <0>
|
||||
endp
|
||||
%ENDIF ; GLIDE_PACKED_RGB
|
||||
|
||||
_trisetup_cull_argb@12 ENDP
|
||||
ENDIF ; GLIDE_PACKED_RGB
|
||||
|
||||
align 4
|
||||
PUBLIC _trisetup@12
|
||||
_trisetup@12 PROC NEAR
|
||||
.code
|
||||
ALIGN 32
|
||||
PROC_TYPE _trisetup
|
||||
|
||||
GLIDE_CULLING textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
INCLUDE xdraw2.inc
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_CULLING textequ <0>
|
||||
%define GLIDE_CULLING 0
|
||||
%define GLIDE_PACK_RGB 0
|
||||
%define GLIDE_PACK_ALPHA 0
|
||||
%define GLIDE_GENERIC_SETUP 0
|
||||
%INCLUDE "xdraw2.inc"
|
||||
%undef GLIDE_GENERIC_SETUP
|
||||
%undef GLIDE_PACK_ALPHA
|
||||
%undef GLIDE_PACK_RGB
|
||||
%undef GLIDE_CULLING
|
||||
|
||||
_trisetup@12 ENDP
|
||||
endp
|
||||
|
||||
IF GLIDE_PACKED_RGB
|
||||
align 4
|
||||
PUBLIC _trisetup_rgb@12
|
||||
_trisetup_rgb@12 PROC NEAR
|
||||
.code
|
||||
%IF GLIDE_PACKED_RGB
|
||||
|
||||
GLIDE_CULLING textequ <0>
|
||||
GLIDE_PACK_RGB textequ <1>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
INCLUDE xdraw2.inc
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_CULLING textequ <0>
|
||||
ALIGN 32
|
||||
PROC_TYPE _trisetup_rgb
|
||||
|
||||
_trisetup_rgb@12 ENDP
|
||||
%define GLIDE_CULLING 0
|
||||
%define GLIDE_PACK_RGB 1
|
||||
%define GLIDE_PACK_ALPHA 0
|
||||
%define GLIDE_GENERIC_SETUP 0
|
||||
%INCLUDE "xdraw2.inc"
|
||||
%undef GLIDE_GENERIC_SETUP
|
||||
%undef GLIDE_PACK_ALPHA
|
||||
%undef GLIDE_PACK_RGB
|
||||
%undef GLIDE_CULLING
|
||||
|
||||
align 4
|
||||
PUBLIC _trisetup_argb@12
|
||||
_trisetup_argb@12 PROC NEAR
|
||||
.code
|
||||
endp
|
||||
|
||||
GLIDE_CULLING textequ <0>
|
||||
GLIDE_PACK_RGB textequ <1>
|
||||
GLIDE_PACK_ALPHA textequ <1>
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
INCLUDE xdraw2.inc
|
||||
GLIDE_GENERIC_SETUP textequ <0>
|
||||
GLIDE_PACK_ALPHA textequ <0>
|
||||
GLIDE_PACK_RGB textequ <0>
|
||||
GLIDE_CULLING textequ <0>
|
||||
ALIGN 32
|
||||
PROC_TYPE _trisetup_argb
|
||||
|
||||
_trisetup_argb@12 ENDP
|
||||
ENDIF ; GLIDE_PACKED_RGB
|
||||
%define GLIDE_CULLING 0
|
||||
%define GLIDE_PACK_RGB 1
|
||||
%define GLIDE_PACK_ALPHA 1
|
||||
%define GLIDE_GENERIC_SETUP 0
|
||||
%INCLUDE "xdraw2.inc"
|
||||
%undef GLIDE_GENERIC_SETUP
|
||||
%undef GLIDE_PACK_ALPHA
|
||||
%undef GLIDE_PACK_RGB
|
||||
%undef GLIDE_CULLING
|
||||
|
||||
_TEXT ENDS
|
||||
END
|
||||
endp
|
||||
|
||||
%ENDIF ; GLIDE_PACKED_RGB
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
46
glide2x/cvg/glide/src/xdrawtri.asm
Normal file
46
glide2x/cvg/glide/src/xdrawtri.asm
Normal file
@@ -0,0 +1,46 @@
|
||||
;; THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
;; PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
;; TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
;; INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
;; DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
;; THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;; EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
;; FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
;;
|
||||
;; USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
;; RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
;; TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
;; AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
;; SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
;; THE UNITED STATES.
|
||||
;;
|
||||
;; COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
|
||||
;; Adapted from gdraw.c:grDrawTriangle() for nasm
|
||||
|
||||
%include "xos.inc"
|
||||
|
||||
%include "fxgasm.h"
|
||||
|
||||
extrn _GlideRoot
|
||||
|
||||
segment SEG_TEXT
|
||||
|
||||
align 16
|
||||
proc grDrawTriangle, 12
|
||||
|
||||
;;mov edx, dword [_GlideRoot+curGC]
|
||||
;;mov eax, dword [edx+kTriProcOffset]
|
||||
mov eax, dword [_GlideRoot+curGC]
|
||||
jmp [eax + kTriProcOffset]
|
||||
endp
|
||||
align 16
|
||||
|
||||
%if XOS == XOS_WIN32
|
||||
%ifdef __MINGW32__
|
||||
; GNU LD fails with '_' prefix
|
||||
export grDrawTriangle@12
|
||||
%else
|
||||
export _grDrawTriangle@12
|
||||
%endif
|
||||
%endif ; _WIN32
|
||||
161
glide2x/cvg/glide/src/xos.inc
Normal file
161
glide2x/cvg/glide/src/xos.inc
Normal file
@@ -0,0 +1,161 @@
|
||||
;
|
||||
; compulsory header for glide3/xdraw* assembly specializations (NASM)
|
||||
;
|
||||
; $Header$
|
||||
; $Log$
|
||||
; Revision 1.1.2.3 2004/10/04 08:57:52 dborca
|
||||
; supporting DOS/OpenWatcom in Assembly files
|
||||
;
|
||||
;
|
||||
; Revision 1.1.2.1 2003/06/07 09:53:25 dborca
|
||||
; initial checkin for NASM sources
|
||||
;
|
||||
|
||||
;---------------------------------------
|
||||
; platform defines
|
||||
;---------------------------------------
|
||||
%define XOS_DJGPP 1
|
||||
%define XOS_LINUX 2
|
||||
%define XOS_WIN32 4
|
||||
%define XOS_WATCD 8
|
||||
|
||||
%define STDCALL 0
|
||||
%define ELFTYPE 0
|
||||
|
||||
;---------------------------------------
|
||||
; pick up the right OS
|
||||
;---------------------------------------
|
||||
%ifdef __DJGPP__
|
||||
%define XOS XOS_DJGPP
|
||||
%elifdef __linux__
|
||||
%define XOS XOS_LINUX
|
||||
%define ELFTYPE 1
|
||||
%elifdef __WIN32__
|
||||
%define XOS XOS_WIN32
|
||||
%define STDCALL 1
|
||||
%elifdef __WATCOMD__
|
||||
%define XOS XOS_WATCD
|
||||
%define STDCALL 1
|
||||
%else
|
||||
%error Unknown OS
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; general purpose macros
|
||||
;---------------------------------------
|
||||
%macro extrn 1-2 0
|
||||
%if STDCALL && (%2 > 0)
|
||||
%define %1 %1@%2
|
||||
%endif
|
||||
extern %1
|
||||
%endmacro
|
||||
|
||||
%macro globl 1-2 0
|
||||
%if STDCALL && (%2 > 0)
|
||||
%define %1 %1@%2
|
||||
%endif
|
||||
global %1
|
||||
%endmacro
|
||||
|
||||
%macro proc 1-2 0
|
||||
%push proc
|
||||
%if STDCALL && (%2 > 0)
|
||||
%define %$ret RET %2
|
||||
%else
|
||||
%define %$ret RET
|
||||
%endif
|
||||
%if ELFTYPE
|
||||
globl %1:function, %2
|
||||
%else
|
||||
globl %1, %2
|
||||
%endif
|
||||
%1:
|
||||
%endmacro
|
||||
|
||||
%macro endp 0
|
||||
%ifnctx proc
|
||||
%error Mismatched `endp'/`proc'
|
||||
%else
|
||||
%pop
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro ret 0
|
||||
%ifnctx proc
|
||||
RET
|
||||
%else
|
||||
%$ret
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
%macro invoke 1-*
|
||||
%rep %0 - 1
|
||||
%rotate -1
|
||||
push %1
|
||||
%endrep
|
||||
%rotate -1
|
||||
call %1
|
||||
%if (STDCALL == 0) && (%0 > 1)
|
||||
add esp, 4 * (%0 - 1)
|
||||
%endif
|
||||
%endmacro
|
||||
|
||||
;---------------------------------------
|
||||
; Windows
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_WIN32
|
||||
|
||||
%define TEXT .text align=32
|
||||
%define DATA .data align=32
|
||||
%define CONST .rdata align=32
|
||||
|
||||
%macro GET_GC 0
|
||||
mov gc, [_GlideRoot + curGC]
|
||||
%endmacro
|
||||
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; DJGPP
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_DJGPP
|
||||
|
||||
%define TEXT .text
|
||||
%define DATA .data
|
||||
%define CONST .rodata
|
||||
|
||||
%macro GET_GC 0
|
||||
mov gc, [_GlideRoot + curGC]
|
||||
%endmacro
|
||||
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; Linux
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_LINUX
|
||||
|
||||
%define TEXT .text align=32
|
||||
%define DATA .data align=32
|
||||
%define CONST .rodata align=32
|
||||
|
||||
%macro GET_GC 0
|
||||
mov gc, [_GlideRoot + curGC]
|
||||
%endmacro
|
||||
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; WATCOM/DOS
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_WATCD
|
||||
|
||||
%define TEXT _TEXT align=1 public use32 class=CODE FLAT
|
||||
%define DATA _DATA align=4 public use32 class=DATA FLAT
|
||||
%define CONST CONST2 align=4 public use32 class=DATA FLAT
|
||||
|
||||
%macro GET_GC 0
|
||||
mov gc, [_GlideRoot + curGC]
|
||||
%endmacro
|
||||
|
||||
%endif
|
||||
333
glide2x/cvg/glide/src/xtexdl.asm
Normal file
333
glide2x/cvg/glide/src/xtexdl.asm
Normal file
@@ -0,0 +1,333 @@
|
||||
;; THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
;; PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
;; TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
;; INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
;; DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
;; THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;; EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
;; FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
;;
|
||||
;; USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
;; RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
;; TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
;; AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
;; SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
;; THE UNITED STATES.
|
||||
;;
|
||||
;; COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
;;
|
||||
;; $Header$
|
||||
;; $Revision$
|
||||
;; $Log$
|
||||
;; Revision 1.1.2.2 2005/04/23 18:36:36 koolsmoky
|
||||
;; fixed 3dnow! and mmx optimizations
|
||||
;;
|
||||
;; Revision 1.1.2.1 2004/12/23 20:45:56 koolsmoky
|
||||
;; converted to nasm syntax
|
||||
;; added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
|
||||
;;
|
||||
;; Revision 1.1.1.1.8.1 2003/11/03 13:34:30 dborca
|
||||
;; Voodoo2 happiness (DJGPP & Linux)
|
||||
;;
|
||||
;; Revision 1.1.8.7 2003/09/12 05:08:35 koolsmoky
|
||||
;; preparing for graphic context checks
|
||||
;;
|
||||
;; Revision 1.1.8.6 2003/07/07 23:29:06 koolsmoky
|
||||
;; cleaned logs
|
||||
;;
|
||||
;;
|
||||
;; Revision 1.1 2000/06/15 00:27:43 joseph
|
||||
;; Initial checkin into SourceForge.
|
||||
;;
|
||||
;; 10 8/17/99 6:35p Atai
|
||||
;; fixed amd debug mode
|
||||
;;
|
||||
;; 9 4/08/99 1:22p Atai
|
||||
;; added contect check for _grTexDownload_3DNow_MMX
|
||||
;;
|
||||
;; 8 3/19/99 11:26a Peter
|
||||
;; expose direct fifo for gl
|
||||
;;
|
||||
;; 7 2/02/99 4:36p Peter
|
||||
;; download through lfb rather than texture port
|
||||
;;
|
||||
;; 6 12/17/98 2:36p Atai
|
||||
;; check in Norbert's fix for texture download width correction
|
||||
;;
|
||||
;; 5 12/07/98 11:33a Peter
|
||||
;; norbert's re-fixes of my merge
|
||||
;;
|
||||
;; 4 11/02/98 5:34p Atai
|
||||
;; merge direct i/o code
|
||||
;;
|
||||
;; 3 10/20/98 5:34p Atai
|
||||
;; added #ifdefs for hwc
|
||||
;;
|
||||
;; 2 10/14/98 12:05p Peter
|
||||
;; fixed my effed up assumption about non-volatile regs
|
||||
;;
|
||||
;; 1 10/09/98 6:48p Peter
|
||||
;; 3DNow!(tm) version of wide texture downloads
|
||||
;;
|
||||
;; 3 10/07/98 9:43p Peter
|
||||
;; triangle procs for 3DNow!(tm)
|
||||
;;
|
||||
;; 2 10/05/98 7:43p Peter
|
||||
;; 3DNow!(tm) happiness everywhere
|
||||
;;
|
||||
;; 1 10/05/98 6:01p Peter
|
||||
;; mmx stuff for 3DNow!(tm) capable processors
|
||||
;;
|
||||
|
||||
%include "xos.inc"
|
||||
|
||||
extrn _FifoMakeRoom, 12
|
||||
|
||||
%MACRO _grCommandTransportMakeRoom 3
|
||||
push %3
|
||||
push %2
|
||||
push %1
|
||||
call _FifoMakeRoom
|
||||
add esp, 12
|
||||
%ENDMACRO ; _grCommandTransportMakeRoom
|
||||
|
||||
;;; Definitions of cvg regs and glide root structures.
|
||||
%INCLUDE "fxgasm.h"
|
||||
|
||||
; Arguments (STKOFF = 16 from 4 dword pushes)
|
||||
STACKOFFSET equ 16
|
||||
_gc$ equ 4 + STACKOFFSET
|
||||
_baseAddr$ equ 8 + STACKOFFSET
|
||||
_maxS$ equ 12 + STACKOFFSET
|
||||
_minT$ equ 16 + STACKOFFSET
|
||||
_maxT$ equ 20 + STACKOFFSET
|
||||
_texData$ equ 24 + STACKOFFSET
|
||||
|
||||
;; NB: The first set of registers (eax, ecx, and edx) are volatile across
|
||||
;; function calls. The remaining registers are supposedly non-volatile
|
||||
;; so they only store things that are non-volatile across the call.
|
||||
|
||||
%define fifo ebp ; fifo ptr in inner loop
|
||||
%define gc esi ; graphics context
|
||||
%define dataPtr edi ; pointer to exture data to be downloaded
|
||||
%define curT ebx ; counter for texture scan lines (t-coordinate)
|
||||
%define curS ecx ; texture s-coordinate
|
||||
%define fRoom edx ; room available in fifo (in bytes)
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
;
|
||||
; GL_AMD3D, GL_MMX
|
||||
;
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
segment TEXT
|
||||
|
||||
ALIGN 32
|
||||
|
||||
%IFDEF GL_AMD3D
|
||||
proc _grTexDownload_3DNow_MMX, 24
|
||||
%ENDIF
|
||||
%IFDEF GL_MMX
|
||||
proc _grTexDownload_MMX, 24
|
||||
%ENDIF
|
||||
|
||||
push ebx ; save caller's register variable
|
||||
mov curT, [esp + _maxT$ - 12] ; curT = maxT
|
||||
|
||||
push esi ; save caller's register variable
|
||||
mov eax, [esp + _minT$ - 8] ; minT
|
||||
|
||||
push edi ; save caller's register variable
|
||||
mov gc, [esp + _gc$ - 4] ; gc
|
||||
|
||||
push ebp ; save caller's register variable
|
||||
mov dataPtr, [esp + _texData$]; dataPtr
|
||||
|
||||
%IFDEF GLIDE_ALT_TAB
|
||||
test gc, gc
|
||||
je .dlDone
|
||||
; mov edx, [gc + windowed]
|
||||
; test edx, 1
|
||||
; jnz .pastContextTest
|
||||
mov edx, DWORD [gc+lostContext]
|
||||
mov ecx, [edx]
|
||||
test ecx, 1
|
||||
jnz .dlDone
|
||||
;.pastContextTest:
|
||||
%ENDIF
|
||||
|
||||
sub curT, eax ; curT = maxT - minT
|
||||
mov fifo, [gc + fifoPtr] ; fifoPtr
|
||||
|
||||
mov curS, [esp + _maxS$] ; curS = maxS = scanline width in DWORDs
|
||||
add curT, 1 ; curT = maxT - minT + 1
|
||||
|
||||
%IFDEF GL_AMD3D
|
||||
femms ; we'll use MMX/3DNow!, make sure FPU register cleared
|
||||
%ENDIF
|
||||
%IFDEF GL_MMX
|
||||
emms ; we'll use MMX
|
||||
%ENDIF
|
||||
|
||||
movd mm3, [esp + _baseAddr$] ; 0 | address of texture to download
|
||||
|
||||
add curS, curS ;
|
||||
add curS, curS ; scan line width (in bytes)
|
||||
mov eax, [esp + _minT$] ; 0 | minT
|
||||
|
||||
mov [esp + _maxS$], curS ; save scan line width (in bytes)
|
||||
mov edx, curS ;
|
||||
|
||||
add edx, edx ; packetHdr<21:3> = maxS = scanline width in DWORDs
|
||||
|
||||
or edx, 0xc0000005 ; packetHdr<31:30> = texture port
|
||||
; packetHdr<21:3> = maxS
|
||||
; packetHdr<2:0> = packetType 5
|
||||
|
||||
movd mm1, edx ; 0 | packetHdr
|
||||
movd mm2, eax ; 0 | minT
|
||||
psllq mm2, 9 ; 0 | TEX_ROW_ADDR_INCR(minT) = minT << 9
|
||||
|
||||
paddd mm3, mm2 ; 0 | texAddr = texBaseAddr + TEX_ROW_ADDR_INCR(minT)
|
||||
movd mm2, [gc + tex_ptr] ; 0 | gc->tex_ptr
|
||||
psubd mm3, mm2 ; 0 | texAddr - gc->tex_ptr
|
||||
mov eax, 0x200 ; TEX_ROW_ADDR_INCR(1) = 1 << 9
|
||||
movd mm2, eax ; 0 | TEX_ROW_ADDR_INCR(1)
|
||||
psllq mm2, 32 ; TEX_ROW_ADDR_INCR(1) | 0
|
||||
|
||||
mov fRoom, [gc + fifoRoom] ; get available fifoRoom (in bytes)
|
||||
punpckldq mm1, mm3 ; hdr2 = texAddr - gc->tex_ptr | hdr1 = packetHdr
|
||||
|
||||
;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo, ecx = curS = maxS
|
||||
;; edx = fifoRoom, mm1 = texAddr-gc->tex_ptr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
|
||||
|
||||
test fifo, 4 ; is fifo QWORD aligned ?
|
||||
jz .startDownload ; yup, start texture download
|
||||
|
||||
cmp fRoom, 4 ; enough room for NULL packet in fifo?
|
||||
jge .mmxAlignFifo ; yes, write NULL packet to align fifo
|
||||
|
||||
%ifdef USE_PACKET_FIFO
|
||||
_grCommandTransportMakeRoom 4, 0, __LINE__; make fifo room
|
||||
%endif
|
||||
|
||||
mov fifo, [gc + fifoPtr] ; fifoPtr modified by _grCommandTransportMakeRoom, reload
|
||||
|
||||
mov fRoom, [gc + fifoRoom] ; fifoRoom modified by _grCommandTransportMakeRoom, reload
|
||||
mov curS, [esp + _maxS$] ; reload maxS (destroyed by call to _grCommandTransportMakeRoom)
|
||||
|
||||
test fifo, 4 ; new fifoPtr QWORD aligned ?
|
||||
jz .startDownload ; yup, start texture download
|
||||
|
||||
.mmxAlignFifo:
|
||||
|
||||
mov DWORD [fifo], 0 ; write NULL packet
|
||||
sub fRoom, 4 ; fifoRoom -= 4
|
||||
|
||||
mov [gc + fifoRoom], fRoom ; store new fifoRoom
|
||||
add fifo, 4 ; fifoPtr += 4
|
||||
|
||||
%IFDEF GLIDE_DEBUG
|
||||
mov [gc + checkPtr], fifo ; checkPtr
|
||||
%ENDIF
|
||||
|
||||
mov [gc + fifoPtr], fifo ; store new fifoPtr
|
||||
jmp .startDownload ; fifo aligned, download texture now
|
||||
|
||||
ALIGN 32
|
||||
|
||||
;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo, ecx = maxS = curS
|
||||
;; edx=fifoRoom, mm1 = texAddr-gc->tex_ptr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
|
||||
|
||||
.loopT:
|
||||
|
||||
%IFDEF GLIDE_DEBUG
|
||||
|
||||
;; Make sure that we have a QWORD aligned fifoPtr; force GP if not aligned
|
||||
|
||||
test fifo, 4 ; is fifoPtr QWORD aligned ?
|
||||
jz .alignmentOK ; yup, continue
|
||||
|
||||
xor eax, eax ; create 0
|
||||
mov [eax], eax ; move to DS:[0] forces GP
|
||||
.alignmentOK:
|
||||
%ENDIF ; GLIDE_DEBUG
|
||||
|
||||
;; Compute packet header words
|
||||
;; hdr1: downloadSpace[31:30] numWords[21:3] packetType[2:0]
|
||||
;; hdr2: download address[29:0]
|
||||
|
||||
movq [fifo], mm1 ; store hdr2 | hdr1
|
||||
add fifo, 8 ; increment fifo ptr (hdr1 + hdr2)
|
||||
|
||||
;; S coordinate inner loop unrolled for 8 texels a write
|
||||
|
||||
.loopS:
|
||||
|
||||
movq mm0, [dataPtr] ; load 64 bit data (8 texels)
|
||||
add fifo, 8 ; pre-increment fifoPtr += 2 * sizeof(FxU32)
|
||||
|
||||
add dataPtr, 8 ; dataPtr += 2 * sizeof(FxU32)
|
||||
sub curS, 8 ; curS -= 2 * sizeof(FxU32)
|
||||
|
||||
movq [fifo - 8], mm0 ; *fifoPtr = texelData[64 bits]
|
||||
jnz .loopS ; loop while curS > 0
|
||||
|
||||
mov ecx, [gc + fifoPtr] ; old fifo ptr
|
||||
nop ; filler
|
||||
|
||||
mov eax, fifo ; new fifo ptr
|
||||
mov [gc + fifoPtr], fifo ; save new fifo ptr
|
||||
|
||||
%IFDEF GLIDE_DEBUG
|
||||
mov [gc + checkPtr], fifo ; checkPtr
|
||||
%ENDIF
|
||||
|
||||
sub eax, ecx ; new fifo ptr - old fifo ptr = fifo space used up
|
||||
mov curS, [esp + _maxS$] ; curS = maxS = width of scanline (bytes)
|
||||
|
||||
sub fRoom, eax ; new fifo space available = old fifo space available - fifo space used up = new fifo space available
|
||||
sub curT, 1 ; curT--
|
||||
|
||||
mov [gc + fifoRoom], fRoom ; save new fifo space available
|
||||
jz .dlDone ; loop while curT > 0
|
||||
|
||||
;; Check for room to write the next texture scanline
|
||||
|
||||
;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo
|
||||
;; edx = fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
|
||||
|
||||
paddd mm1, mm2 ; texAddr+=TEX_ROW_ADDR_INCR(1) | packetHdr
|
||||
mov esp, esp ; filler
|
||||
.startDownload:
|
||||
lea eax, [curS+8] ; fifo space needed = scan line width + header size
|
||||
|
||||
cmp fRoom, eax ; fifo space available >= fifo space required ?
|
||||
jge .loopT ; yup, write next scan line
|
||||
|
||||
%ifdef USE_PACKET_FIFO
|
||||
_grCommandTransportMakeRoom eax, 0, __LINE__; make fifo room (if fifoPtr QWORD aligned before
|
||||
%endif
|
||||
|
||||
mov fifo, [gc + fifoPtr] ; fifoPtr was modified by _grCommandTransportMakeRoom, reload
|
||||
|
||||
mov fRoom, [gc + fifoRoom] ; fifoRoom was modified by _grCommandTransportMakeRoom, reload
|
||||
mov curS, [esp + _maxS$] ; curS = maxS = width of scanline (bytes)
|
||||
jmp .loopT ; we now have enough fifo room, write next scanline
|
||||
|
||||
.dlDone:
|
||||
%IFDEF GL_AMD3D
|
||||
femms ; exit 3DNow!(tm) state
|
||||
%ENDIF
|
||||
%IFDEF GL_MMX
|
||||
emms ; exit MMX state
|
||||
%ENDIF
|
||||
|
||||
pop ebp ; restore caller's register variable
|
||||
pop edi ; restore caller's register variable
|
||||
|
||||
pop esi ; restore caller's register variable
|
||||
pop ebx ; restore caller's register variable
|
||||
|
||||
ret ; pop 6 DWORD parameters and return
|
||||
endp
|
||||
242
glide2x/cvg/glide/src/xtexdl.c
Normal file
242
glide2x/cvg/glide/src/xtexdl.c
Normal file
@@ -0,0 +1,242 @@
|
||||
/*
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:42:38 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 1 10/08/98 11:30a Brent
|
||||
**
|
||||
** 2 10/05/98 7:43p Peter
|
||||
** 3DNow!(tm) happiness everywhere
|
||||
**
|
||||
** 1 10/03/98 3:37p Peter
|
||||
** Texture download vectors
|
||||
**
|
||||
*/
|
||||
|
||||
#include <3dfx.h>
|
||||
#define FX_DLL_DEFINITION
|
||||
#include <fxdll.h>
|
||||
#include <glide.h>
|
||||
#include "fxglide.h"
|
||||
|
||||
void FX_CSTYLE
|
||||
_grTexDownload_Default_8_1(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_8_1"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU8
|
||||
*src8 = (const FxU8*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
LINEAR_WRITE_BEGIN(1, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
LINEAR_WRITE_SET_8(tex_address, (const FxU32)*(const FxU8*)src8);
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src8 += 1;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
|
||||
void FX_CSTYLE
|
||||
_grTexDownload_Default_8_2(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_8_2"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU8
|
||||
*src8 = (const FxU8*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
LINEAR_WRITE_BEGIN(1, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
LINEAR_WRITE_SET_8(tex_address, (const FxU32)*(const FxU16*)src8);
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src8 += 2;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
|
||||
void FX_CSTYLE
|
||||
_grTexDownload_Default_8_4(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_8_4"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU8
|
||||
*src8 = (const FxU8*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
LINEAR_WRITE_BEGIN(1, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
LINEAR_WRITE_SET_8(tex_address, *(const FxU32*)src8);
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src8 += 4;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
|
||||
void FX_CSTYLE
|
||||
_grTexDownload_Default_8_WideS(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_8_WideS"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address;
|
||||
const FxU8
|
||||
*src8 = (const FxU8*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
|
||||
LINEAR_WRITE_BEGIN(maxS, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
{
|
||||
FxU32 s;
|
||||
|
||||
for (s = 0; s < maxS; s += 2) {
|
||||
const FxU32 t0 = *(const FxU32*)(src8 );
|
||||
const FxU32 t1 = *(const FxU32*)(src8 + sizeof(FxU32));
|
||||
|
||||
LINEAR_WRITE_SET_8(tex_address , t0);
|
||||
LINEAR_WRITE_SET_8(tex_address + sizeof(FxU32), t1);
|
||||
|
||||
src8 += 8;
|
||||
tex_address += (sizeof(FxU32) << 1);
|
||||
}
|
||||
}
|
||||
LINEAR_WRITE_END();
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
|
||||
extern void FX_CSTYLE
|
||||
_grTexDownload_Default_16_1(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_16_1"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU16
|
||||
*src16 = (const FxU16*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
LINEAR_WRITE_BEGIN(1, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
LINEAR_WRITE_SET_16(tex_address, (const FxU32)*(const FxU16*)src16);
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src16 += 1;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
|
||||
extern void FX_CSTYLE
|
||||
_grTexDownload_Default_16_2(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_16_2"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
const FxU16
|
||||
*src16 = (const FxU16*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
LINEAR_WRITE_BEGIN(1, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
LINEAR_WRITE_SET_16(tex_address, *(const FxU32*)src16);
|
||||
LINEAR_WRITE_END();
|
||||
|
||||
src16 += 2;
|
||||
tex_address += TEX_ROW_ADDR_INCR(1);
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
|
||||
extern void FX_CSTYLE
|
||||
_grTexDownload_Default_16_WideS(struct GrGC_s* gc, const FxU32 tmuBaseAddr,
|
||||
const FxU32 maxS, const FxU32 minT, const FxU32 maxT,
|
||||
void* texData)
|
||||
{
|
||||
#define FN_NAME "_grTexDownload_Default_16_WideS"
|
||||
FxU32
|
||||
t = minT,
|
||||
tex_address;
|
||||
const FxU16
|
||||
*src16 = (const FxU16*)texData;
|
||||
|
||||
for (; t <= maxT; t++) {
|
||||
tex_address = tmuBaseAddr + TEX_ROW_ADDR_INCR(t);
|
||||
|
||||
/* Loop unrolled to process 2 dwords per iteration */
|
||||
LINEAR_WRITE_BEGIN(maxS, kLinearWriteTex,
|
||||
(FxU32)tex_address - (FxU32)gc->tex_ptr,
|
||||
0x00UL, 0x00UL);
|
||||
{
|
||||
FxU32 s;
|
||||
|
||||
for (s = 0; s < maxS; s += 2) {
|
||||
const FxU32 t0 = *(const FxU32*)(src16 );
|
||||
const FxU32 t1 = *(const FxU32*)(src16 + 2);
|
||||
|
||||
GDBG_INFO(195, "s = %d, t= %d, address = 0x%x\n",
|
||||
s, t, (FxU32) tex_address - (FxU32) gc->tex_ptr + 0x200000);
|
||||
LINEAR_WRITE_SET_16(tex_address , t0);
|
||||
LINEAR_WRITE_SET_16(tex_address + 4, t1);
|
||||
|
||||
tex_address += 8;
|
||||
src16 += 4;
|
||||
}
|
||||
}
|
||||
LINEAR_WRITE_END();
|
||||
}
|
||||
#undef FN_NAME
|
||||
}
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -43,11 +46,6 @@ static const char name[] = "display";
|
||||
static const char purpose[] = "display a 16 bit frame buffer (565 format) dump out";
|
||||
static const char usage[] = "-n <frames> -r <res> -s srcimage -t testimage";
|
||||
|
||||
static const char *renderBufferString[] = {
|
||||
"GR_BUFFER_FRONTBUFFER",
|
||||
"GR_BUFFER_BACKBUFFER "
|
||||
};
|
||||
|
||||
static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_565 ",
|
||||
"GR_LFB_SRC_FMT_555 ",
|
||||
@@ -67,8 +65,13 @@ static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_ZA16 "
|
||||
};
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv)
|
||||
{
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -84,7 +87,7 @@ void main( int argc, char **argv) {
|
||||
LFB_Img src, dst, diff;
|
||||
FxBool txtdisplay = FXTRUE;
|
||||
|
||||
void *image;
|
||||
void *image = NULL;
|
||||
FxU32 bpp;
|
||||
|
||||
GrLfbSrcFmt_t sourceFormat;
|
||||
@@ -92,22 +95,17 @@ void main( int argc, char **argv) {
|
||||
static FxU32 imageWidth;
|
||||
static FxU32 imageHeight;
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
srcfname[0] = 0;
|
||||
dstfname[0] = 0;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrst", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrst", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -171,8 +169,8 @@ void main( int argc, char **argv) {
|
||||
/* readng the LFB file header */
|
||||
fread(&src.signature, 4, 1, fp);
|
||||
if (src.signature != IMAGE_SRLE) {
|
||||
printf("%s file type incorrect\n");
|
||||
return;
|
||||
printf("%s file type incorrect\n", srcfname);
|
||||
exit(1);
|
||||
}
|
||||
fread(&src.width, 2, 1, fp);
|
||||
fread(&src.height, 2, 1, fp);
|
||||
@@ -205,8 +203,8 @@ void main( int argc, char **argv) {
|
||||
/* readng the LFB file header */
|
||||
fread(&dst.signature, 4, 1, fp);
|
||||
if (dst.signature != IMAGE_SRLE) {
|
||||
printf("%s file type incorrect\n");
|
||||
return;
|
||||
printf("%s file type incorrect\n", dstfname);
|
||||
exit(1);
|
||||
}
|
||||
fread(&dst.width, 2, 1, fp);
|
||||
fread(&dst.height, 2, 1, fp);
|
||||
@@ -269,7 +267,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
if ( ( imageWidth > (FxU32)scrWidth ) ||
|
||||
( imageHeight > (FxU32)scrHeight ) )
|
||||
return;
|
||||
exit(1);
|
||||
|
||||
while( frames-- ) {
|
||||
|
||||
@@ -360,7 +358,7 @@ void main( int argc, char **argv) {
|
||||
if (srcfname[0] && dstfname[0])
|
||||
free(diff.data);
|
||||
free(image);
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -90,10 +93,9 @@ void drawBoxes(int w, int h, unsigned long c1, unsigned long c2) {
|
||||
grDrawLine(&p2,&p3);
|
||||
}
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
int keepworking = 1;
|
||||
GrScreenResolution_t resolution;
|
||||
int frames = -1;
|
||||
int redraw = 1;
|
||||
int redrawPattern = 0;
|
||||
int patternon = 1;
|
||||
@@ -193,6 +195,6 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -40,7 +43,7 @@ static unsigned int iRandom (unsigned int maxr);
|
||||
|
||||
typedef enum { NORMAL, ANTIALIASED } Mode;
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -68,13 +71,13 @@ void main( int argc, char **argv) {
|
||||
// GrFog_t fogtable[GR_FOG_TABLE_SIZE];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -254,7 +257,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static unsigned long randx = 1;
|
||||
|
||||
@@ -18,9 +18,13 @@
|
||||
|
||||
LDIRT= $(PROGRAMS)
|
||||
|
||||
GLIDE_ROOT = $(BUILD_ROOT)/$(FX_GLIDE_HW)
|
||||
|
||||
LIBOBJS = tlib.o plib.o
|
||||
|
||||
LLDLIBS = $(LIBOBJS) -lglide
|
||||
GLIDELIB = -L$(GLIDE_ROOT)/lib -lglide
|
||||
|
||||
LLDLIBS = $(LIBOBJS) $(GLIDELIB)
|
||||
|
||||
PRIVATE_HEADERS = tlib.h tlib.c plib.h plib.c tldata.inc
|
||||
|
||||
@@ -69,3 +73,5 @@ DATAFILES = alpha.3df decal1.3df lava.3df light.3df matt1.3df miro.3df \
|
||||
include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak
|
||||
|
||||
|
||||
$(PROGRAMS): $(LIBOBJS)
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision$
|
||||
@@ -44,6 +47,19 @@ static GrChipID_t currTMU = GR_TMU0;
|
||||
static FxBool bMultiRevOrder;
|
||||
static FxBool bMultiOffsetFix;
|
||||
|
||||
/* static helper prototypes */
|
||||
static FxU32 prGetLodSize( GrTexInfo *const disTexInfo, GrLOD_t disLOD );
|
||||
static FxU32 prTexMultiMemRequired( FxU32 deMipMask, GrTexBaseRange_t deRange,
|
||||
GrTexInfo* deTexInfo );
|
||||
static void prGetLod( GrTexInfo *lpTexInfo, GrLOD_t deLod, void *data );
|
||||
static void prPopLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
|
||||
static void prPushLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
|
||||
static FxU32 prGetTxMnAdd( hTexId_t deTexId, GrLOD_t deLod );
|
||||
static int prGetLodWidth( GrLOD_t lod, GrAspectRatio_t aspect );
|
||||
static int prGetLodHeight( GrLOD_t lod, GrAspectRatio_t aspect );
|
||||
static FxU32 prGetMultiMemBump( const GrTexInfo *const deTexInfo,
|
||||
GrTexBaseRange_t deTexBase,
|
||||
FxU32 deMipMask );
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision$
|
||||
@@ -99,20 +102,6 @@ void plPopLod( hTexId_t hCurrTexture, mipMapEnd_t mipMapEnd );
|
||||
void plPushLod( hTexId_t hCurrTexture, mipMapEnd_t mipMapEnd );
|
||||
void plCreateTlTexture( TlTexture *disTlTexture, FxU16 daColors[] );
|
||||
|
||||
/* static helper prototypes */
|
||||
static void prSetBeenPopd( hTexId_t deTexId, FxBool bBeenPopd );
|
||||
static FxU32 prGetLodSize( GrTexInfo *const disTexInfo, GrLOD_t disLOD );
|
||||
static FxU32 prTexMultiMemRequired( FxU32 deMipMask, GrTexBaseRange_t deRange,
|
||||
GrTexInfo* deTexInfo );
|
||||
static void prGetLod( GrTexInfo *lpTexInfo, GrLOD_t deLod, void *data );
|
||||
static void prPopLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
|
||||
static void prPushLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
|
||||
static FxU32 prGetTxMnAdd( hTexId_t deTexId, GrLOD_t deLod );
|
||||
static int prGetLodWidth( GrLOD_t lod, GrAspectRatio_t aspect );
|
||||
static int prGetLodHeight( GrLOD_t lod, GrAspectRatio_t aspect );
|
||||
static FxU32 prGetMultiMemBump( const GrTexInfo *const deTexInfo,
|
||||
GrTexBaseRange_t deTexBase,
|
||||
FxU32 deMipMask );
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -61,7 +64,7 @@ static FxBool g_bDoLodPrtlDwnld = FXFALSE;
|
||||
static FxI32 g_nLodPrtlFstRow;
|
||||
static FxI32 g_nLodPrtlLstRow;
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -88,10 +91,10 @@ void main( int argc, char **argv) {
|
||||
|
||||
/* templates for all algorithmic textures */
|
||||
GrTexInfo yAlgTxtreTmplts[][9] =
|
||||
{{ GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL }};
|
||||
{{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL} }};
|
||||
|
||||
const int nDwnLodTxtres = 8;
|
||||
FxU16 yDwnLodClrs[][9] =
|
||||
@@ -105,23 +108,23 @@ void main( int argc, char **argv) {
|
||||
{ BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565 }};
|
||||
|
||||
GrTexInfo yDwnTxtreTmplts[][9] =
|
||||
{{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_332, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_1555, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_4444, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL },
|
||||
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL }};
|
||||
{{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_332, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_1555, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_4444, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL} },
|
||||
{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL} }};
|
||||
|
||||
/* texture handles */
|
||||
hTexId_t hCurrFgTxtre, /* current fg texture */
|
||||
hFstFgTxtre, /* first fg texture */
|
||||
hFstFgTxtre = 0, /* first fg texture */
|
||||
hLstFgTxtre, /* last fg texture */
|
||||
hFstAlgFgTxtre, /* first algo texture */
|
||||
hLstAlgFgTxtre, /* last algo texture */
|
||||
hFstDwnlTxtre, /* first lod download texture */
|
||||
hLstDwnlTxtre, /* last lod download texture */
|
||||
hLstAlgFgTxtre = 0, /* last algo texture */
|
||||
hFstDwnlTxtre = 0, /* first lod download texture */
|
||||
hLstDwnlTxtre = 0, /* last lod download texture */
|
||||
hDwlnSrcTxtre,
|
||||
hTmpTxtre;
|
||||
hTexId_t hBgTxtre; /* bg texture */
|
||||
@@ -179,14 +182,14 @@ void main( int argc, char **argv) {
|
||||
fgVerts[3].tmuvtx[0].tow = 0.f;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) )
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) )
|
||||
{
|
||||
if ( rv == -1 )
|
||||
{
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n", tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
switch( match )
|
||||
@@ -739,8 +742,7 @@ void main( int argc, char **argv) {
|
||||
doUnloadTextures();
|
||||
grGlideShutdown();
|
||||
|
||||
|
||||
return;
|
||||
exit(1);
|
||||
} /* main */
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
**
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
** $Revision$
|
||||
** $Date$
|
||||
@@ -51,8 +54,7 @@ static const char purpose[] = "Buffer Swap Alliance bug";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
|
||||
void
|
||||
main( int argc, char **argv)
|
||||
int main( int argc, char **argv)
|
||||
{
|
||||
/* Definitions */
|
||||
char match;
|
||||
@@ -84,13 +86,13 @@ main( int argc, char **argv)
|
||||
|
||||
/* Code */
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -165,5 +167,5 @@ main( int argc, char **argv)
|
||||
}
|
||||
grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER );
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision$
|
||||
@@ -38,7 +41,7 @@ static const char name[] = "test00";
|
||||
static const char purpose[] = "Clear screen to blue";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void
|
||||
int
|
||||
main( int argc, char **argv)
|
||||
{
|
||||
char match;
|
||||
@@ -53,13 +56,13 @@ main( int argc, char **argv)
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while(( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) )) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -129,6 +132,6 @@ main( int argc, char **argv)
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
**
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test01";
|
||||
static const char purpose[] = "draws a diagonal line of points from top-left to bottom-right";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void
|
||||
int
|
||||
main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
@@ -49,13 +52,13 @@ main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -145,7 +148,7 @@ main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test02";
|
||||
static const char purpose[] = "draws a parabolic envelope of lines";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -147,7 +150,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test03";
|
||||
static const char purpose[] = "draws gouraud shaded lines";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -142,7 +145,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test04";
|
||||
static const char purpose[] = "draws gouraud shaded triangle";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -145,7 +148,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test05";
|
||||
static const char purpose[] = "renders two interpenetrating triangles with z-buffering";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void
|
||||
int
|
||||
main( int argc, char **argv)
|
||||
{
|
||||
char match;
|
||||
@@ -50,13 +53,13 @@ main( int argc, char **argv)
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -179,7 +182,7 @@ main( int argc, char **argv)
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test06";
|
||||
static const char purpose[] = "renders two interpenetrating triangles with w-buffering";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -176,7 +179,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
**
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test07";
|
||||
static const char purpose[] = "alpha blending test";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -159,7 +162,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test08";
|
||||
static const char purpose[] = "fogging";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -50,13 +53,13 @@ void main( int argc, char **argv) {
|
||||
GrFog_t fogtable[GR_FOG_TABLE_SIZE];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -158,7 +161,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -36,7 +39,7 @@ static const char purpose[] = "chromakey - render a red and blue"
|
||||
" triangle but chromakey one out";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -52,13 +55,13 @@ void main( int argc, char **argv) {
|
||||
unsigned long chromaColor;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) )) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -166,7 +169,7 @@ void main( int argc, char **argv) {
|
||||
cnt = strcspn(filename, ".");
|
||||
strncpy(fname, filename, cnt);
|
||||
fname[cnt] = 0;
|
||||
sprintf(tmp,"_%d\0", subframe);
|
||||
sprintf(tmp,"_%d", subframe);
|
||||
strcat(fname, tmp);
|
||||
strcat(fname, filename+cnt);
|
||||
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
|
||||
@@ -200,7 +203,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
**
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -37,7 +40,7 @@ static const char purpose[] = "culling test - render a red and blue"
|
||||
", blue negative";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -53,13 +56,13 @@ void main( int argc, char **argv) {
|
||||
GrCullMode_t cullMode;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -162,7 +165,7 @@ void main( int argc, char **argv) {
|
||||
cnt = strcspn(filename, ".");
|
||||
strncpy(fname, filename, cnt);
|
||||
fname[cnt] = 0;
|
||||
sprintf(tmp,"_%d\0", subframe);
|
||||
sprintf(tmp,"_%d", subframe);
|
||||
strcat(fname, tmp);
|
||||
strcat(fname, filename+cnt);
|
||||
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
|
||||
@@ -195,7 +198,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -38,7 +41,7 @@ static const char usage[] = "-n <frames> -r <res>";
|
||||
static int rRandom(int s, int e);
|
||||
static unsigned int iRandom (unsigned int maxr);
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -54,13 +57,13 @@ void main( int argc, char **argv) {
|
||||
int x,y;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -148,7 +151,7 @@ void main( int argc, char **argv) {
|
||||
|
||||
if ( tlScaleX(1.0f) < 64.0 ||
|
||||
tlScaleY(1.0f) < 64.0 )
|
||||
return;
|
||||
exit(1);
|
||||
|
||||
/* generate random start position */
|
||||
startX = (int)rRandom( 64, (int)tlScaleX(1.0f) - 65 );
|
||||
@@ -223,7 +226,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static unsigned long randx = 1;
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -70,7 +73,7 @@ static const char *pixPipeString[] = {
|
||||
"PIXELPIPE ENABLED "
|
||||
};
|
||||
|
||||
void
|
||||
int
|
||||
main( int argc, char **argv)
|
||||
{
|
||||
char match;
|
||||
@@ -94,13 +97,13 @@ main( int argc, char **argv)
|
||||
FxBool pixPipe;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -116,7 +119,7 @@ main( int argc, char **argv)
|
||||
|
||||
if ( resolution == GR_RESOLUTION_NONE ) {
|
||||
tlErrorMessage( "Error!: Frontbuffer rendering not supported in a window\n" );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
tlSetScreen( scrWidth, scrHeight );
|
||||
@@ -335,7 +338,7 @@ main( int argc, char **argv)
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
} /* main */
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -36,7 +39,7 @@ static const char name[] = "test13";
|
||||
static const char purpose[] = "iterated alpha test - blue triangle fades towards one vertex\n";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -49,13 +52,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -167,5 +170,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -36,7 +39,7 @@ static const char purpose[] = "depth bias test: vary depth bias \n"
|
||||
"over time with two interpenetrating triangles";
|
||||
static const char usage[] = "-n <frames> -r <res>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -50,13 +53,13 @@ void main( int argc, char **argv) {
|
||||
short zDelta;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -177,5 +180,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test15";
|
||||
static const char purpose[] = "clip rectangle testing - clip rectangle travels around screen";
|
||||
static const char usage[] = "-n <frames> -r <res>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
|
||||
float clipX, clipY, clipSize, clipSizeDelta, clipPosDelta;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -210,5 +213,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -36,7 +39,7 @@ static const char name[] = "test16";
|
||||
static const char purpose[] = "test grShamelessPlug and grSplash";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -49,13 +52,13 @@ void main( int argc, char **argv) {
|
||||
char filename[256];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -194,5 +197,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -45,7 +48,7 @@ const char *textureModeNames[] = {
|
||||
"(ITRGB * TEXTURE)+WHITE SPECULAR"
|
||||
};
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -61,13 +64,13 @@ void main( int argc, char **argv) {
|
||||
TlTexture texture;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -257,7 +260,7 @@ void main( int argc, char **argv) {
|
||||
cnt = strcspn(filename, ".");
|
||||
strncpy(fname, filename, cnt);
|
||||
fname[cnt] = 0;
|
||||
sprintf(tmp,"_%d\0", subframe);
|
||||
sprintf(tmp,"_%d", subframe);
|
||||
strcat(fname, tmp);
|
||||
strcat(fname, filename+cnt);
|
||||
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
|
||||
@@ -285,5 +288,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -36,7 +39,7 @@ static const char name[] = "test18";
|
||||
static const char purpose[] = "alpha texture test";
|
||||
static const char usage[] = "-n <frames> -r <res> -d <filename>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -51,13 +54,13 @@ void main( int argc, char **argv) {
|
||||
TlTexture texture;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -251,5 +254,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -63,7 +66,7 @@ static int loadTexture( const char *filename,
|
||||
void *table );
|
||||
static GrTexTable_t texTableType( GrTextureFormat_t format );
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -79,13 +82,13 @@ void main( int argc, char **argv) {
|
||||
Texture texture;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -245,7 +248,7 @@ void main( int argc, char **argv) {
|
||||
cnt = strcspn(filename, ".");
|
||||
strncpy(fname, filename, cnt);
|
||||
fname[cnt] = 0;
|
||||
sprintf(tmp,"_%d\0", subframe);
|
||||
sprintf(tmp,"_%d", subframe);
|
||||
strcat(fname, tmp);
|
||||
strcat(fname, filename+cnt);
|
||||
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
|
||||
@@ -293,7 +296,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -38,7 +41,7 @@ static const char usage[] = "-n <frames> -r <res>";
|
||||
typedef enum { DISABLE, NEAREST, TRILINEAR } MipMapMode;
|
||||
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -55,13 +58,13 @@ void main( int argc, char **argv) {
|
||||
MipMapMode mipMapMode;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -310,7 +313,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -37,7 +40,7 @@ static const char usage[] = "-n <frames> -r <res>";
|
||||
|
||||
typedef enum { LIGHTMAP, SPECULAR, DETAIL } Mode;
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -60,13 +63,13 @@ void main( int argc, char **argv) {
|
||||
Mode mode;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -364,7 +367,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test22";
|
||||
static const char purpose[] = "fog with multi-pass texturing";
|
||||
static const char usage[] = "-n <frames> -r <res>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -56,13 +59,13 @@ void main( int argc, char **argv) {
|
||||
float distance, dDelta;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -296,7 +299,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -40,7 +43,7 @@ static unsigned int iRandom (unsigned int maxr);
|
||||
|
||||
typedef enum { NORMAL, ANTIALIASED } Mode;
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -60,13 +63,13 @@ void main( int argc, char **argv) {
|
||||
GrFog_t fogtable[GR_FOG_TABLE_SIZE];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -222,7 +225,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static unsigned long randx = 1;
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -40,7 +43,7 @@ static unsigned int iRandom (unsigned int maxr);
|
||||
|
||||
typedef enum { NORMAL, ANTIALIASED } Mode;
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -59,13 +62,13 @@ void main( int argc, char **argv) {
|
||||
GrFog_t fogtable[GR_FOG_TABLE_SIZE];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -217,7 +220,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static unsigned long randx = 1;
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -164,7 +167,7 @@ static int screenFulls[] = {
|
||||
#define NFRAMES 20
|
||||
#define NVERTS 3
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -187,7 +190,7 @@ void main( int argc, char **argv) {
|
||||
y_angle = 0.0f; /* rotation amount */
|
||||
|
||||
int
|
||||
firstTime; /* Used for performance calculations */
|
||||
firstTime = 0; /* Used for performance calculations */
|
||||
|
||||
GrPassthruMode_t
|
||||
passthruMode = GR_PASSTHRU_SHOW_SST1; /* For toggling passthru */
|
||||
@@ -211,7 +214,7 @@ void main( int argc, char **argv) {
|
||||
swapDelay = 1, /* Arg to grBufferSwap */
|
||||
trisDrawn, /* # triangles drawn */
|
||||
trisProcessed, /* # triangles through pipeline */
|
||||
lastFrame, /* Number of last frame we did perf stats */
|
||||
lastFrame = 0, /* Number of last frame we did perf stats */
|
||||
frameNum = 0L; /* id of each frame drawn */
|
||||
|
||||
GrCullMode_t
|
||||
@@ -238,13 +241,13 @@ void main( int argc, char **argv) {
|
||||
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nrbtea", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nrbtea", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -872,7 +875,7 @@ void main( int argc, char **argv) {
|
||||
{
|
||||
char str[256];
|
||||
swapDelay = (int) c - 0x30;
|
||||
sprintf(str, "Swapdelay = %d\n", swapDelay);
|
||||
sprintf(str, "Swapdelay = %ld\n", swapDelay);
|
||||
tlConOutput(str);
|
||||
}
|
||||
break;
|
||||
@@ -891,4 +894,5 @@ void main( int argc, char **argv) {
|
||||
break;
|
||||
}
|
||||
grGlideShutdown();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,11 +38,6 @@ static const char name[] = "test26";
|
||||
static const char purpose[] = "tests grLfbWriteRegion, and grLfbReadRegion";
|
||||
static const char usage[] = "-b <# color buffers> -d <# aux buffers> -n <frames> -r <res>";
|
||||
|
||||
static const char *renderBufferString[] = {
|
||||
"GR_BUFFER_FRONTBUFFER",
|
||||
"GR_BUFFER_BACKBUFFER "
|
||||
};
|
||||
|
||||
static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_565 ",
|
||||
"GR_LFB_SRC_FMT_555 ",
|
||||
@@ -59,8 +57,12 @@ static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_ZA16 "
|
||||
};
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -82,19 +84,14 @@ void main( int argc, char **argv) {
|
||||
static FxU32 imageWidth;
|
||||
static FxU32 imageHeight;
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "bdnr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "bdnr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'b':
|
||||
@@ -169,7 +166,7 @@ void main( int argc, char **argv) {
|
||||
(int) scrWidth, (int) scrHeight);
|
||||
|
||||
tlErrorMessage(errMsg);
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
sourceFormat = GR_LFB_SRC_FMT_565;
|
||||
@@ -289,7 +286,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision$
|
||||
@@ -42,7 +45,7 @@ static unsigned int iRandom (unsigned int maxr);
|
||||
|
||||
#define SNAP_BIAS ((float)(3<<18))
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -56,13 +59,13 @@ void main( int argc, char **argv) {
|
||||
int cycles;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "Nnr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "Nnr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -167,7 +170,7 @@ doNothing:
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static unsigned long randx = 1;
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -90,7 +93,7 @@ static const char name[] = "test28";
|
||||
static const char purpose[] = "planar polygon test";
|
||||
static const char usage[] = "-n <frames> -r <res>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -107,13 +110,13 @@ void main( int argc, char **argv) {
|
||||
RGB hues[NHUE];
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -222,5 +225,5 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
*/
|
||||
|
||||
@@ -35,7 +38,7 @@ static const char name[] = "test29";
|
||||
static const char purpose[] = "oow diff hint";
|
||||
static const char usage[] = "-n <frames> -r <res>";
|
||||
|
||||
void main( int argc, char **argv) {
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
char **remArgs;
|
||||
int rv;
|
||||
@@ -50,13 +53,13 @@ void main( int argc, char **argv) {
|
||||
float distance, dDelta;
|
||||
|
||||
/* Process Command Line Arguments */
|
||||
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) {
|
||||
while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
|
||||
if ( rv == -1 ) {
|
||||
printf( "Unrecognized command line argument\n" );
|
||||
printf( "%s %s\n", name, usage );
|
||||
printf( "Available resolutions:\n%s\n",
|
||||
tlGetResolutionList() );
|
||||
return;
|
||||
exit(1);
|
||||
}
|
||||
switch( match ) {
|
||||
case 'n':
|
||||
@@ -261,7 +264,7 @@ void main( int argc, char **argv) {
|
||||
}
|
||||
|
||||
grGlideShutdown();
|
||||
return;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision$
|
||||
@@ -338,7 +341,6 @@ static const int charsPerLine = 14;
|
||||
|
||||
static int fontInitialized;
|
||||
|
||||
static void grabTex( FxU32 addr, void *storage );
|
||||
static void putTex( FxU32 addr, void *storage );
|
||||
static void consoleScroll( void );
|
||||
static void drawChar( char character, float x, float y, float w, float h );
|
||||
@@ -450,7 +452,6 @@ static void strupr(char *str) {
|
||||
int - number of chars printed
|
||||
-------------------------------------------------------------------*/
|
||||
int tlConOutput( const char *fmt, ... ) {
|
||||
static short tmpTex[256*256];
|
||||
int rv = 0;
|
||||
va_list argptr;
|
||||
|
||||
@@ -531,8 +532,6 @@ void tlConClear() {
|
||||
none
|
||||
-------------------------------------------------------------------*/
|
||||
void tlConRender( void ) {
|
||||
static short tmpTex[256*256];
|
||||
|
||||
if( fontInitialized ) {
|
||||
int x, y;
|
||||
|
||||
@@ -955,14 +954,10 @@ static void drawChar( char character, float x, float y, float w, float h ) {
|
||||
|
||||
grConstantColorValue( consoleColor );
|
||||
|
||||
a.tmuvtx[0].sow = c.tmuvtx[0].sow =
|
||||
(float)fontTable[character][0];
|
||||
a.tmuvtx[0].tow = b.tmuvtx[0].tow =
|
||||
(float)fontTable[character][1];
|
||||
d.tmuvtx[0].sow = b.tmuvtx[0].sow =
|
||||
a.tmuvtx[0].sow + (float)fontWidth;
|
||||
d.tmuvtx[0].tow = c.tmuvtx[0].tow =
|
||||
a.tmuvtx[0].tow + (float)fontHeight;
|
||||
a.tmuvtx[0].sow = c.tmuvtx[0].sow = (float)fontTable[(int) character][0];
|
||||
a.tmuvtx[0].tow = b.tmuvtx[0].tow = (float)fontTable[(int) character][1];
|
||||
d.tmuvtx[0].sow = b.tmuvtx[0].sow = a.tmuvtx[0].sow + (float)fontWidth;
|
||||
d.tmuvtx[0].tow = c.tmuvtx[0].tow = a.tmuvtx[0].tow + (float)fontHeight;
|
||||
|
||||
grDrawTriangle( &a, &d, &c );
|
||||
grDrawTriangle( &a, &b, &d );
|
||||
@@ -992,74 +987,6 @@ static void putTex( FxU32 addr, void *storage ) {
|
||||
grTexDownloadMipMap( 0, addr, GR_MIPMAPLEVELMASK_BOTH, &fontInfo );
|
||||
}
|
||||
|
||||
|
||||
static void grabTex( FxU32 addr, void *storage ) {
|
||||
static FxU16 tmpSpace[256][256];
|
||||
GrTexInfo texInfo;
|
||||
GrVertex a, b, c, d;
|
||||
|
||||
grGlideGetState( &state );
|
||||
grDitherMode( GR_DITHER_DISABLE );
|
||||
grColorMask( FXTRUE, FXFALSE );
|
||||
grSstOrigin( GR_ORIGIN_UPPER_LEFT );
|
||||
grCullMode( GR_CULL_DISABLE );
|
||||
|
||||
/* Grab Upper Left 256*256 of frame buffer */
|
||||
readRegion( tmpSpace, 0, 0, 256, 256 );
|
||||
|
||||
/* Grab First 256x256 MM in Texture Ram */
|
||||
texInfo.smallLod = GR_LOD_256;
|
||||
texInfo.largeLod = GR_LOD_256;
|
||||
texInfo.aspectRatio = GR_ASPECT_1x1;
|
||||
texInfo.format = GR_TEXFMT_RGB_565;
|
||||
texInfo.data = 0;
|
||||
grTexMipMapMode( 0, GR_MIPMAP_DISABLE, FXFALSE );
|
||||
grTexFilterMode( 0,
|
||||
GR_TEXTUREFILTER_POINT_SAMPLED,
|
||||
GR_TEXTUREFILTER_POINT_SAMPLED );
|
||||
grTexCombine( 0,
|
||||
GR_COMBINE_FUNCTION_LOCAL,
|
||||
GR_COMBINE_FACTOR_NONE,
|
||||
GR_COMBINE_FUNCTION_LOCAL,
|
||||
GR_COMBINE_FACTOR_NONE,
|
||||
FXFALSE,
|
||||
FXFALSE );
|
||||
grColorCombine( GR_COMBINE_FUNCTION_SCALE_OTHER,
|
||||
GR_COMBINE_FACTOR_ONE,
|
||||
GR_COMBINE_LOCAL_NONE,
|
||||
GR_COMBINE_OTHER_TEXTURE,
|
||||
FXFALSE );
|
||||
grTexSource( 0, addr, GR_MIPMAPLEVELMASK_BOTH, &texInfo );
|
||||
grAlphaBlendFunction( GR_BLEND_ONE, GR_BLEND_ZERO,
|
||||
GR_BLEND_ONE, GR_BLEND_ZERO);
|
||||
grDepthBufferFunction( GR_DEPTHBUFFER_DISABLE );
|
||||
grAlphaTestFunction( GR_CMP_ALWAYS );
|
||||
grFogMode( GR_FOG_DISABLE );
|
||||
grCullMode( GR_CULL_DISABLE );
|
||||
grChromakeyMode( GR_CHROMAKEY_DISABLE );
|
||||
/*-------------------
|
||||
A---B
|
||||
| \ |
|
||||
C---D
|
||||
-------------------*/
|
||||
a.oow = a.tmuvtx[0].oow = 1.0f;
|
||||
b = c = d = a;
|
||||
a.x = c.x = a.y = b.y = 0.5f;
|
||||
b.x = d.x = c.y = d.y = 255.6f;
|
||||
a.tmuvtx[0].sow = c.tmuvtx[0].sow = a.tmuvtx[0].tow = b.tmuvtx[0].tow =
|
||||
0.5f;
|
||||
b.tmuvtx[0].sow = d.tmuvtx[0].sow = c.tmuvtx[0].tow = d.tmuvtx[0].tow =
|
||||
0.5f;
|
||||
grDrawTriangle( &a, &d, &c );
|
||||
grDrawTriangle( &a, &b, &d );
|
||||
readRegion( storage, 0, 0, 256, 256 );
|
||||
|
||||
/* Restore The Upper Left Hand of Frame Buffer */
|
||||
writeRegion( tmpSpace, 0, 0, 256, 256 );
|
||||
grGlideSetState( &state );
|
||||
return;
|
||||
}
|
||||
|
||||
static void readRegion( void *data,
|
||||
int sx, int sy,
|
||||
int w, int h ) {
|
||||
@@ -1433,7 +1360,7 @@ char tlGetCH( void ) {
|
||||
|
||||
FxBool
|
||||
tlErrorMessage( char *err) {
|
||||
fprintf(stderr, err);
|
||||
return !!fprintf(stderr, err);
|
||||
} /* tlErrorMessage */
|
||||
|
||||
#else
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
/*
|
||||
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
||||
** All Rights Reserved.
|
||||
**
|
||||
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
||||
** the contents of this file may not be disclosed to third parties, copied or
|
||||
** duplicated in any form, in whole or in part, without the prior written
|
||||
** permission of 3Dfx Interactive, Inc.
|
||||
**
|
||||
** RESTRICTED RIGHTS LEGEND:
|
||||
** Use, duplication or disclosure by the Government is subject to restrictions
|
||||
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
||||
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
||||
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
||||
** rights reserved under the Copyright Laws of the United States.
|
||||
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||
**
|
||||
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
|
||||
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
|
||||
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
|
||||
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||
** THE UNITED STATES.
|
||||
**
|
||||
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
**
|
||||
**
|
||||
** $Revision$
|
||||
@@ -32,10 +35,7 @@ extern "C" {
|
||||
* so that it is a harmless wrapper rather than ((void)0) as in <assert.h>
|
||||
*/
|
||||
#ifndef DEBUG
|
||||
#ifdef assert
|
||||
#undef assert
|
||||
#endif
|
||||
#define assert(exp) (exp)
|
||||
#define NDEBUG
|
||||
#endif
|
||||
|
||||
int tlGetOpt( int argc, char *argv[], const char *tags, char *match, char **remArgs[] );
|
||||
|
||||
23
glide2x/cvg/incsrc/cpuid.h
Normal file
23
glide2x/cvg/incsrc/cpuid.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef CPUID_H_included
|
||||
#define CPUID_H_included
|
||||
|
||||
#define _CPU_HAS_CPUID 0xffff
|
||||
#define _CPU_FEATURE_MMX 0x0001
|
||||
#define _CPU_FEATURE_SSE 0x0002
|
||||
#define _CPU_FEATURE_SSE2 0x0004
|
||||
#define _CPU_FEATURE_3DNOW 0x0008
|
||||
#define _CPU_FEATURE_3DNOWPLUS 0x0010
|
||||
#define _CPU_FEATURE_MMXPLUS 0x0020
|
||||
|
||||
typedef struct _processor_info {
|
||||
char v_name[13]; /* vendor name */
|
||||
int family; /* family of the processor, eg. Intel_Pentium_Pro is family 6 processor */
|
||||
int model; /* madel of processor, eg. Intel_Pentium_Pro is model 1 of family 6 processor */
|
||||
int stepping; /* Processor revision number */
|
||||
int feature; /* processor Feature (same as return value). */
|
||||
int os_support; /* does OS Support the feature */
|
||||
} _p_info;
|
||||
|
||||
int _cpuid (_p_info *);
|
||||
|
||||
#endif
|
||||
@@ -42,10 +42,24 @@
|
||||
// if debug info turned on then GDBG_INFO does something
|
||||
#ifdef GDBG_INFO_ON
|
||||
|
||||
// Standard C provides no clean way to do this, but the GNU C tools do..
|
||||
#ifdef __GNUC__
|
||||
|
||||
#define GDBG_INFO(level, format, args...) \
|
||||
gdbg_info(level, format , ## args)
|
||||
#define GDBG_INFO_MORE(level, format, args...) \
|
||||
gdbg_info_more(level, format , ## args)
|
||||
#define GDBG_PRINTF(format, args...) \
|
||||
gdbg_printf(format , ## args)
|
||||
|
||||
#else
|
||||
|
||||
#define GDBG_INFO gdbg_info
|
||||
#define GDBG_INFO_MORE gdbg_info_more
|
||||
#define GDBG_PRINTF gdbg_printf
|
||||
|
||||
#endif
|
||||
|
||||
#define GDBG_ERROR_SET_CALLBACK gdbg_error_set_callback
|
||||
#define GDBG_ERROR_CLEAR_CALLBACK gdbg_error_clear_callback
|
||||
|
||||
@@ -66,6 +80,15 @@
|
||||
#pragma disable_message (111, 201)
|
||||
#endif /* defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__) */
|
||||
|
||||
// Standard C provides no clean way to do this, but the GNU C tools do..
|
||||
#ifdef __GNUC__
|
||||
|
||||
#define GDBG_INFO(level, format, args...)
|
||||
#define GDBG_INFO_MORE(level, format, args...)
|
||||
#define GDBG_PRINTF(format, args...)
|
||||
|
||||
#else
|
||||
|
||||
#define GDBG_INFO 0 && (unsigned long)
|
||||
#define GDBG_INFO_MORE 0 && (unsigned long)
|
||||
#define GDBG_PRINTF 0 && (unsigned long)
|
||||
@@ -73,9 +96,12 @@
|
||||
#define GDBG_ERROR_SET_CALLBACK 0 && (unsigned long)
|
||||
#define GDBG_ERROR_CLEAR_CALLBACK 0 && (unsigned long)
|
||||
|
||||
#endif
|
||||
|
||||
#define GDBG_GET_DEBUGLEVEL(x) 0
|
||||
#define GDBG_SET_DEBUGLEVEL(a,b)
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#define GDBG_INIT gdbg_init
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user