Compare commits
834 Commits
master
...
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 |
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,110 +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 )
|
||||
|
||||
###############################################################################
|
||||
# kernel 2.1+
|
||||
help:
|
||||
@echo KVER_MAJOR = $(KVER_MAJOR)
|
||||
@echo KVER_MINOR = $(KVER_MINOR)
|
||||
@echo KBUILD = $(KBUILD)
|
||||
|
||||
3dfx.o: kinfo.h 3dfx_driver.c Makefile
|
||||
$(CC) $(CFLAGS) -c -o $@ 3dfx_driver.c
|
||||
ifeq ($(KBUILD),yes)
|
||||
BUILD_TYPE = kbuild
|
||||
MODULE_TDFX = kbuild/$(NAME).ko
|
||||
else
|
||||
BUILD_TYPE = legacy
|
||||
MODULE_TDFX = $(NAME).o
|
||||
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 [ ! -e /dev/.devfsd -a ! -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 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;
|
||||
}
|
||||
|
||||
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.
|
||||
@@ -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)
|
||||
|
||||
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)
|
||||
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,12 @@
|
||||
**
|
||||
** $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.
|
||||
**
|
||||
|
||||
@@ -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,20 @@
|
||||
**
|
||||
** $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.
|
||||
**
|
||||
@@ -275,6 +289,7 @@
|
||||
#include <3dfx.h>
|
||||
#include <glidesys.h>
|
||||
#include <gdebug.h>
|
||||
#include <cpuid.h>
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_HW_H3)
|
||||
#include <h3.h>
|
||||
@@ -421,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 */
|
||||
@@ -503,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
|
||||
@@ -527,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.
|
||||
@@ -568,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 */
|
||||
@@ -719,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? */
|
||||
@@ -815,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;
|
||||
@@ -882,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);
|
||||
@@ -1157,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) \
|
||||
@@ -1907,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)
|
||||
@@ -2081,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
|
||||
@@ -2375,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 */
|
||||
|
||||
|
||||
@@ -19,6 +19,26 @@
|
||||
**
|
||||
** $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.
|
||||
**
|
||||
@@ -781,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--;
|
||||
|
||||
@@ -1498,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;
|
||||
}
|
||||
|
||||
@@ -1704,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;
|
||||
@@ -1718,6 +1747,8 @@ GR_ENTRY(grGlideShutdown, void, (void))
|
||||
gc->grSstRez = GR_RESOLUTION_NONE;
|
||||
gc->grSstRefresh = GR_REFRESH_NONE;
|
||||
}
|
||||
|
||||
_GlideRoot.initialized = FXFALSE;
|
||||
} /* grGlideShutdown */
|
||||
|
||||
|
||||
@@ -2115,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
|
||||
@@ -2127,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,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,19 @@
|
||||
**
|
||||
** $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.
|
||||
**
|
||||
@@ -330,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
|
||||
@@ -468,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);
|
||||
@@ -484,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) {
|
||||
@@ -877,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);
|
||||
|
||||
@@ -901,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 */
|
||||
{
|
||||
@@ -974,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
|
||||
@@ -1335,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"
|
||||
@@ -1555,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) */
|
||||
@@ -1679,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 */
|
||||
|
||||
|
||||
@@ -19,6 +19,16 @@
|
||||
**
|
||||
** $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.
|
||||
**
|
||||
@@ -391,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);
|
||||
@@ -477,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
|
||||
------------------------------------------------------------*/
|
||||
@@ -499,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) {
|
||||
@@ -512,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;
|
||||
|
||||
@@ -525,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;
|
||||
|
||||
@@ -538,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;
|
||||
|
||||
@@ -550,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,
|
||||
@@ -572,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 */
|
||||
@@ -586,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;
|
||||
|
||||
@@ -599,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;
|
||||
|
||||
@@ -607,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,
|
||||
@@ -632,6 +701,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*------------------------------------------------------------
|
||||
Restore TLOD, texMode, baseAddress
|
||||
@@ -771,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);
|
||||
@@ -789,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,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
|
||||
}
|
||||
@@ -65,6 +65,10 @@ static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_ZA16 "
|
||||
};
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
int main( int argc, char **argv)
|
||||
{
|
||||
@@ -91,11 +95,6 @@ int 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;
|
||||
|
||||
|
||||
@@ -57,6 +57,10 @@ static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_ZA16 "
|
||||
};
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
@@ -80,11 +84,6 @@ int 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 )) ) {
|
||||
if ( rv == -1 ) {
|
||||
|
||||
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
|
||||
@@ -26,7 +26,7 @@
|
||||
**
|
||||
*/
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -180,3 +180,6 @@ sst1SetGrxClk_Canopus(FxU32* sstbase, FFLOAT grxclk)
|
||||
return(RetVal);
|
||||
}
|
||||
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
** Initialization code for initializing supported SST-1 DACs
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -1369,6 +1369,6 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitDacIndexedEnable(FxU32 *sstbase,
|
||||
return(FXTRUE);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
888
glide2x/cvg/init/fxremap.c
Normal file
888
glide2x/cvg/init/fxremap.c
Normal file
@@ -0,0 +1,888 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifndef __linux__
|
||||
#include <conio.h>
|
||||
#endif
|
||||
#include <3dfx.h>
|
||||
#include <fxpci.h>
|
||||
#define FX_DLL_DEFINITION
|
||||
#include <fxdll.h>
|
||||
|
||||
#define null 0
|
||||
#define SIZE_SST1_NEEDED 0x100000
|
||||
#define END_ADDRESS 0x10000000
|
||||
#define S3_SHIFT 0x400000
|
||||
|
||||
struct RangeSTRUCT
|
||||
{
|
||||
FxU32 address;
|
||||
FxU32 range;
|
||||
FxU32 id;
|
||||
FxU32 is_voodoo; /* 1 = is voodoo, 2 = hidden SLI */
|
||||
FxU32 is_S3;
|
||||
struct RangeSTRUCT *next;
|
||||
struct RangeSTRUCT *prev;
|
||||
};
|
||||
|
||||
int silent = 1;
|
||||
|
||||
typedef struct RangeSTRUCT RangeStruct;
|
||||
|
||||
void InitRemap(void);
|
||||
void CloseRemap(void);
|
||||
void GetMemoryMap(void);
|
||||
void RemapVoodoo(RangeStruct *conflict);
|
||||
void AdjustMapForS3(void);
|
||||
RangeStruct *TestForConflicts(void);
|
||||
void RemoveEntry(RangeStruct *del);
|
||||
void InsertEntry(RangeStruct *ins);
|
||||
FxBool FindHole(RangeStruct *conflict);
|
||||
FxU32 SnapToDecentAddress(FxU32 address,RangeStruct *conflict);
|
||||
FxBool fits_in_hole(RangeStruct *begin,FxU32 end,RangeStruct *hole,RangeStruct *conflict);
|
||||
FxBool fits_under(RangeStruct *first,FxU32 minimum,RangeStruct *hole,RangeStruct *conflict);
|
||||
FxU32 pciGetType(long i);
|
||||
void pciGetRange(PciRegister reg,FxU32 device_number,FxU32 *data);
|
||||
FxBool pciGetAddress(PciRegister reg,FxU32 device_number,FxU32 *data);
|
||||
|
||||
void ForceCleanUp(void);
|
||||
FxBool FindNecessaryCards(void);
|
||||
void ProcessCommandLine(char **argv,int argc);
|
||||
FxBool IsCardVoodoo(long i);
|
||||
FxBool IsCardS3(long i);
|
||||
FxBool ReadHex(char *string,FxU32 *num);
|
||||
void AddMapEntry(FxU32 address,FxU32 range,FxU32 id,FxBool VoodooCard,FxBool S3Card);
|
||||
void HandleMemoryOverlap(void);
|
||||
FxBool overlap_map(RangeStruct *begin,FxU32 end);
|
||||
|
||||
FxBool switch_S3_flag_ignore=FXFALSE;
|
||||
//FxBool switch_force=FXFALSE;
|
||||
FxBool switch_C0_bias=FXTRUE;
|
||||
int switch_voodoo_loc = 0;
|
||||
FxU32 num_voodoos=0;
|
||||
|
||||
//#define TESTING 1
|
||||
|
||||
#ifdef TESTING
|
||||
RangeStruct test_data[6]= {{0xF0000000,0x100000,1,0,0,0,0},
|
||||
{0xF3000000,0x200000,4,1,0,0,0},
|
||||
{0xF3000000,0x200000,8,0,0,0,0},
|
||||
{0xF5000000,0x200000,2,0,0,0,0},
|
||||
{0xE6000000,0x200000,5,0,0,0,0},
|
||||
{0xD3001000,0x200000,3,0,0,0,0}};
|
||||
#endif
|
||||
|
||||
RangeStruct map[80];
|
||||
RangeStruct hole[80];
|
||||
long num_holes=0;
|
||||
RangeStruct *first_entry;
|
||||
RangeStruct *last_entry;
|
||||
long entries=0;
|
||||
RangeStruct master_hole;
|
||||
long voodoo_loc;
|
||||
FxU32 conflicts_found=0;
|
||||
|
||||
void fxremap_dowork(int argc,char **argv,int doit_silently)
|
||||
{
|
||||
RangeStruct *conflict;
|
||||
|
||||
silent = doit_silently;
|
||||
|
||||
ProcessCommandLine(argv,argc);
|
||||
|
||||
#if !DIRECTX
|
||||
InitRemap();
|
||||
#endif
|
||||
|
||||
if (!FindNecessaryCards())
|
||||
{
|
||||
if (!silent) {
|
||||
printf("This program was only meant to be used with the 3dfx Voodoo chipset\n");
|
||||
printf("to correct possible pci address conflicts.\n");
|
||||
printf("No Voodoo chipset was detected\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
}
|
||||
|
||||
GetMemoryMap();
|
||||
|
||||
/* expand region of mapping for S3 card */
|
||||
AdjustMapForS3();
|
||||
/* see if we find any conflicts with any voodoo card */
|
||||
while (conflict=TestForConflicts())
|
||||
{
|
||||
conflicts_found++;
|
||||
/* since it is going to move */
|
||||
/* remove entry, so we can possibly use it as a hole */
|
||||
RemoveEntry(conflict);
|
||||
if (FindHole(conflict))
|
||||
{
|
||||
conflict->address=master_hole.address;
|
||||
RemapVoodoo(conflict);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Unable to find region to map conflicting board\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!conflicts_found) {
|
||||
if (!silent) {
|
||||
printf("No conflict with the Voodoo cards was found\n");
|
||||
}
|
||||
}
|
||||
CloseRemap();
|
||||
}
|
||||
|
||||
void fxremap() {
|
||||
fxremap_dowork(0,NULL,1);
|
||||
}
|
||||
|
||||
void fxremap_main(int argc,char **argv) {
|
||||
fxremap_dowork(argc,argv,0);
|
||||
}
|
||||
|
||||
|
||||
void InitRemap(void)
|
||||
{
|
||||
#if !DIRECTX
|
||||
pciOpen();
|
||||
#endif
|
||||
}
|
||||
|
||||
void CloseRemap(void)
|
||||
{
|
||||
// pciClose();
|
||||
}
|
||||
|
||||
FxU32 pciGetConfigData_R(PciRegister reg, FxU32 devNum) {
|
||||
FxU32 data;
|
||||
|
||||
if (pciGetConfigData(reg,devNum,&data) == FXTRUE) {
|
||||
return (data);
|
||||
} else {
|
||||
return (0xFFFFFFFF);
|
||||
}
|
||||
}
|
||||
|
||||
#define PCI_NORMAL_TYPE 0
|
||||
#define PCI_BRIDGE_TYPE 1
|
||||
|
||||
void GetMemoryMap(void)
|
||||
{
|
||||
FxU32 temp,temp2;
|
||||
FxU32 type;
|
||||
long devNum;
|
||||
int fn; /* function number iterator */
|
||||
int maxFnNumber;
|
||||
int multi_fn = 0;
|
||||
|
||||
#ifdef TESTING
|
||||
for (i=0;i<6;i++)
|
||||
{
|
||||
temp=test_data[i].address;
|
||||
temp2=~(test_data[i].range - 0x1);
|
||||
AddMapEntry(temp,temp2,test_data[i].id,test_data[i].is_voodoo,test_data[i].is_S3);
|
||||
}
|
||||
#else
|
||||
for (devNum=0;devNum<MAX_PCI_DEVICES;devNum++)
|
||||
{
|
||||
if (pciDeviceExists(devNum))
|
||||
{
|
||||
|
||||
if (pciGetConfigData_R(PCI_HEADER_TYPE,devNum) & (1<<7)) {
|
||||
maxFnNumber = 8; /* multifunction! */
|
||||
multi_fn = 1;
|
||||
} else {
|
||||
multi_fn = 0;
|
||||
if ((pciGetConfigData_R(PCI_VENDOR_ID,devNum) == 0x121a) &&
|
||||
(pciGetConfigData_R(PCI_DEVICE_ID,devNum) == 0x02)) {
|
||||
maxFnNumber = 8; /* single board SLI! */
|
||||
} else {
|
||||
maxFnNumber = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(fn=0;fn<maxFnNumber;fn++) {
|
||||
|
||||
int i = devNum | (fn << 13); /* add function number */
|
||||
if (pciGetConfigData_R(PCI_VENDOR_ID,i) != 0xFFFF) {
|
||||
|
||||
/* two header types */
|
||||
/* one for bridges and one for everything else */
|
||||
type=pciGetType(i);
|
||||
if (type==PCI_NORMAL_TYPE) {
|
||||
if (pciGetAddress(PCI_BASE_ADDRESS_0,i,&temp)) {
|
||||
pciGetRange(PCI_BASE_ADDRESS_0,i,&temp2);
|
||||
AddMapEntry(temp,temp2,i,IsCardVoodoo(i),IsCardS3(i));
|
||||
}
|
||||
if (pciGetAddress(PCI_BASE_ADDRESS_1,i,&temp)) {
|
||||
pciGetRange(PCI_BASE_ADDRESS_1,i,&temp2);
|
||||
AddMapEntry(temp,temp2,i,IsCardVoodoo(i),IsCardS3(i));
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Legacy address which is not needed for sst1 type
|
||||
* things w/o 2d.
|
||||
*/
|
||||
if (pciGetAddress(PCI_IO_BASE_ADDRESS,i,&temp)) {
|
||||
pciGetRange(PCI_IO_BASE_ADDRESS,i,&temp2);
|
||||
AddMapEntry(temp,temp2,i,IsCardVoodoo(i),IsCardS3(i));
|
||||
}
|
||||
#endif
|
||||
if (pciGetAddress(PCI_ROM_BASE_ADDRESS,i,&temp)) {
|
||||
pciGetRange(PCI_ROM_BASE_ADDRESS,i,&temp2);
|
||||
AddMapEntry(temp,temp2,i,IsCardVoodoo(i),IsCardS3(i));
|
||||
}
|
||||
} else if (type==PCI_BRIDGE_TYPE) {
|
||||
if (pciGetAddress(PCI_BASE_ADDRESS_0,i,&temp)) {
|
||||
pciGetRange(PCI_BASE_ADDRESS_0,i,&temp2);
|
||||
AddMapEntry(temp,temp2,i,IsCardVoodoo(i),IsCardS3(i));
|
||||
}
|
||||
if (pciGetAddress(PCI_BASE_ADDRESS_1,i,&temp)) {
|
||||
pciGetRange(PCI_BASE_ADDRESS_1,i,&temp2);
|
||||
AddMapEntry(temp,temp2,i,IsCardVoodoo(i),IsCardS3(i));
|
||||
}
|
||||
}
|
||||
} /* if function number exists */
|
||||
} /* for all function numbers */
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AdjustMapForS3(void)
|
||||
{
|
||||
RangeStruct *cur;
|
||||
|
||||
cur=first_entry;
|
||||
|
||||
while(cur)
|
||||
{
|
||||
if (cur->is_S3)
|
||||
{
|
||||
cur->address-=S3_SHIFT;
|
||||
cur->range=S3_SHIFT<<1;
|
||||
}
|
||||
cur=cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
RangeStruct *TestForConflicts(void)
|
||||
{
|
||||
RangeStruct *cur,*next;
|
||||
|
||||
cur=first_entry;
|
||||
|
||||
while(cur)
|
||||
{
|
||||
/* if this is a poorly mapped voodoo2 single board SLI, then remap */
|
||||
if ((cur->is_voodoo == 2) && (cur->address == 0xFF00000)) {
|
||||
return (cur);
|
||||
}
|
||||
|
||||
if (cur->next)
|
||||
{
|
||||
if ((cur->address + cur->range) > cur->next->address)
|
||||
{
|
||||
next=cur->next;
|
||||
if ((cur->is_voodoo)||(next->is_voodoo))
|
||||
{
|
||||
if (cur->is_voodoo)
|
||||
{
|
||||
return cur;
|
||||
}
|
||||
return next;
|
||||
}
|
||||
else {
|
||||
if (!silent) {
|
||||
printf("FxRemap: Possible PCI conflict not with Voodoo device\n");
|
||||
printf("%X (%X) <-> %X:%X (%X)\n",cur->id, cur->address,
|
||||
cur->next->id, cur->next->address);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((cur->address + cur->range) > END_ADDRESS)
|
||||
return cur;
|
||||
}
|
||||
cur=cur->next;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void AddMapEntry(FxU32 address,FxU32 range,FxU32 id,FxBool VoodooCard,FxBool S3Card)
|
||||
{
|
||||
RangeStruct *temp,*cur,*next;
|
||||
|
||||
//jcochrane@3dfx.com
|
||||
long entry=0;
|
||||
FxU32 tmp_address=0;
|
||||
//END
|
||||
|
||||
|
||||
#if 0
|
||||
static long test_entry=0;
|
||||
|
||||
address=test_data[test_entry].address;
|
||||
range=~(test_data[test_entry++].range - 0x1);
|
||||
#endif
|
||||
/* only if address != 0 */
|
||||
|
||||
|
||||
//jcochrane@3dfx.com
|
||||
//check for duplicate entries in the map table,ignore if there is
|
||||
|
||||
tmp_address=address>>4;
|
||||
for(entry=0;entry<entries;entry++)
|
||||
{
|
||||
if( tmp_address == map[entry].address)
|
||||
address=0;
|
||||
}
|
||||
//END
|
||||
|
||||
|
||||
if(address)
|
||||
{
|
||||
map[entries].address=address>>4;
|
||||
map[entries].range=((~range)>>4)+0x1;
|
||||
|
||||
map[entries].id=id;
|
||||
map[entries].is_voodoo=VoodooCard;
|
||||
map[entries].is_S3=S3Card;
|
||||
|
||||
temp=&map[entries++];
|
||||
if (entries<=1)
|
||||
{
|
||||
first_entry=temp;
|
||||
last_entry=temp;
|
||||
temp->next=null;
|
||||
temp->prev=null;
|
||||
return;
|
||||
}
|
||||
|
||||
cur=first_entry;
|
||||
next=null;
|
||||
while(cur)
|
||||
{
|
||||
if (temp->address < cur->address)
|
||||
{
|
||||
next=cur;
|
||||
break;
|
||||
}
|
||||
cur=cur->next;
|
||||
}
|
||||
if (next)
|
||||
{
|
||||
temp->next=next;
|
||||
temp->prev=next->prev;
|
||||
next->prev=temp;
|
||||
if (next==first_entry)
|
||||
first_entry=temp;
|
||||
else
|
||||
(temp->prev)->next=temp;
|
||||
}
|
||||
else
|
||||
{
|
||||
last_entry->next=temp;
|
||||
temp->prev=last_entry;
|
||||
last_entry=temp;
|
||||
temp->next=null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveEntry(RangeStruct *del)
|
||||
{
|
||||
RangeStruct *prev;
|
||||
|
||||
if (!(del->next))
|
||||
{
|
||||
if (!(del->prev))
|
||||
{
|
||||
if (!silent) {
|
||||
printf("FxRemap: No entries mapped\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
return;
|
||||
}
|
||||
prev=del->prev;
|
||||
last_entry=prev;
|
||||
|
||||
prev->next=null;
|
||||
del->prev=null;
|
||||
del->next=null;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(del->prev))
|
||||
{
|
||||
del->next->prev=null;
|
||||
first_entry=del->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
del->next->prev=del->prev;
|
||||
del->prev->next=del->next;
|
||||
}
|
||||
del->next=null;
|
||||
del->prev=null;
|
||||
}
|
||||
}
|
||||
|
||||
void InsertEntry(RangeStruct *ins)
|
||||
{
|
||||
RangeStruct *cur;
|
||||
|
||||
cur=first_entry;
|
||||
|
||||
ins->next=null;
|
||||
ins->prev=null;
|
||||
|
||||
if (!first_entry)
|
||||
{
|
||||
first_entry=ins;
|
||||
last_entry=ins;
|
||||
return;
|
||||
}
|
||||
while(cur)
|
||||
{
|
||||
if (ins->address < cur->address)
|
||||
{
|
||||
ins->next=cur;
|
||||
ins->prev=cur->prev;
|
||||
cur->prev=ins;
|
||||
|
||||
if (!ins->prev)
|
||||
{
|
||||
first_entry=ins;
|
||||
}
|
||||
else
|
||||
{
|
||||
(ins->prev)->next=ins;
|
||||
}
|
||||
return;
|
||||
}
|
||||
cur=cur->next;
|
||||
}
|
||||
|
||||
/* if it got this far it needs to go at the end */
|
||||
ins->prev=last_entry;
|
||||
last_entry->next=ins;
|
||||
last_entry=ins;
|
||||
}
|
||||
|
||||
FxU32 SnapToDecentAddress(FxU32 address,RangeStruct *conflict)
|
||||
{
|
||||
FxU32 range;
|
||||
FxU32 mask;
|
||||
FxU32 not_mask;
|
||||
|
||||
range=conflict->range;
|
||||
if (range<0x10000)
|
||||
range=0x10000;
|
||||
mask=range;
|
||||
mask-=1;
|
||||
not_mask=~mask;
|
||||
|
||||
if (address & mask)
|
||||
{
|
||||
address=(address & not_mask) + range;
|
||||
}
|
||||
return address;
|
||||
}
|
||||
|
||||
FxBool fits_in_hole(RangeStruct *begin,FxU32 end,RangeStruct *hole,RangeStruct *conflict)
|
||||
{
|
||||
FxU32 address;
|
||||
|
||||
address=begin->address+begin->range;
|
||||
|
||||
address=SnapToDecentAddress(address,conflict);
|
||||
|
||||
/* note could be <= */
|
||||
/* this is safer but more inefficient memory wise */
|
||||
if ((address+conflict->range)<end)
|
||||
{
|
||||
hole->address=address;
|
||||
hole->range=end-address;
|
||||
return FXTRUE;
|
||||
}
|
||||
return FXFALSE;
|
||||
}
|
||||
|
||||
FxBool fits_under(RangeStruct *first,FxU32 minimum,RangeStruct *hole,RangeStruct *conflict)
|
||||
{
|
||||
FxU32 address;
|
||||
|
||||
address=minimum;
|
||||
address=SnapToDecentAddress(address,conflict);
|
||||
|
||||
if ((address+conflict->range) < first->address)
|
||||
{
|
||||
hole->address=address;
|
||||
hole->range=first->address - address;
|
||||
return FXTRUE;
|
||||
}
|
||||
return FXFALSE;
|
||||
}
|
||||
|
||||
|
||||
FxBool FindHole(RangeStruct *conflict)
|
||||
{
|
||||
RangeStruct *cur;
|
||||
|
||||
cur=first_entry;
|
||||
|
||||
while(cur)
|
||||
{
|
||||
if (!(cur->next))
|
||||
{
|
||||
if (fits_in_hole(cur,END_ADDRESS,&master_hole,conflict))
|
||||
{
|
||||
return FXTRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fits_in_hole(cur,cur->next->address,&master_hole,conflict))
|
||||
{
|
||||
return FXTRUE;
|
||||
}
|
||||
}
|
||||
cur=cur->next;
|
||||
}
|
||||
|
||||
/* see if we can find a whole located below addressed boards */
|
||||
/* don't want to go below 0xA000000 for addressing our boards */
|
||||
if (first_entry->address > 0xA000000)
|
||||
{
|
||||
if (fits_under(first_entry,0xA000000,&master_hole,conflict))
|
||||
return FXTRUE;
|
||||
}
|
||||
return FXFALSE;
|
||||
}
|
||||
|
||||
void RemapVoodoo(RangeStruct *conflict)
|
||||
{
|
||||
FxU32 address;
|
||||
|
||||
/* put conflict back into memory map */
|
||||
InsertEntry(conflict);
|
||||
|
||||
#ifndef TESTING
|
||||
address=(conflict->address)<<4;
|
||||
pciSetConfigData(PCI_BASE_ADDRESS_0,conflict->id,&address);
|
||||
#endif
|
||||
if (!silent) {
|
||||
printf("Remapped Voodoo Board to avoid a conflict\n");
|
||||
}
|
||||
}
|
||||
|
||||
void pciGetRange(PciRegister reg,FxU32 device_number,FxU32 *data)
|
||||
{
|
||||
FxU32 temp=0xFFFFFFFF;
|
||||
FxU32 size,save;
|
||||
|
||||
pciGetConfigData(reg,device_number,&save);
|
||||
pciSetConfigData(reg,device_number,&temp);
|
||||
pciGetConfigData(reg,device_number,&size);
|
||||
pciSetConfigData(reg,device_number,&save);
|
||||
|
||||
#ifdef TESTING
|
||||
printf("PciGetRange: save %08x \n",save);
|
||||
printf("PciGetRange: temp %08x \n",temp);
|
||||
printf("PciGetRange: size %08x \n",size);
|
||||
printf("PciGetRange: save %08x \n",save);
|
||||
#endif
|
||||
*data=size;
|
||||
}
|
||||
|
||||
FxBool pciGetAddress(PciRegister reg,FxU32 device_number,FxU32 *data)
|
||||
{
|
||||
pciGetConfigData(reg,device_number,data);
|
||||
if ((*data)==0)
|
||||
return FXFALSE;
|
||||
if (*data & 0x01)
|
||||
return FXFALSE;
|
||||
return FXTRUE;
|
||||
}
|
||||
|
||||
void ForceCleanUp(void)
|
||||
{
|
||||
// pciClose();
|
||||
// exit(1);
|
||||
}
|
||||
|
||||
FxBool FindNecessaryCards(void)
|
||||
{
|
||||
FxBool voodoo_found=FXFALSE;
|
||||
long i;
|
||||
|
||||
for (i=0;i<MAX_PCI_DEVICES;i++)
|
||||
{
|
||||
if (pciDeviceExists(i))
|
||||
{
|
||||
if(IsCardVoodoo(i))
|
||||
{
|
||||
voodoo_found=FXTRUE;
|
||||
num_voodoos++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!voodoo_found)
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Warning no known voodoo card was found\n");
|
||||
}
|
||||
return FXFALSE;
|
||||
}
|
||||
return FXTRUE;
|
||||
}
|
||||
|
||||
void ProcessCommandLine(char **argv,int argc)
|
||||
{
|
||||
long i;
|
||||
FxU32 temp,temp2;
|
||||
FxU32 address,range;
|
||||
char *hex_ptr;
|
||||
|
||||
for (i=1;i<argc;i++)
|
||||
{
|
||||
if (strcmp(argv[i],"/dS3")==0)
|
||||
{
|
||||
switch_S3_flag_ignore=FXTRUE;
|
||||
}
|
||||
else if(strcmp(argv[i],"/f")==0)
|
||||
{
|
||||
if ((i+1)<argc)
|
||||
{
|
||||
if (ReadHex(argv[i+1],&temp))
|
||||
{
|
||||
i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Command line: improper format\n");
|
||||
printf("ex: fxremap.exe /f 0xC0000000\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Command line: improper format\n");
|
||||
printf("ex: fxremap.exe /f 0xC0000000\n");
|
||||
|
||||
}
|
||||
ForceCleanUp();
|
||||
}
|
||||
if (!silent) {
|
||||
printf("Command line option /f ignored in this version\n");
|
||||
|
||||
}
|
||||
/* this stuff was from the interactive test version */
|
||||
#if 0
|
||||
while(!kbhit())
|
||||
{
|
||||
;
|
||||
}
|
||||
getch();
|
||||
#endif
|
||||
}
|
||||
else if(strcmp(argv[i],"/x")==0)
|
||||
{
|
||||
if ((i+1)<argc)
|
||||
{
|
||||
hex_ptr=strchr(argv[i+1],'-');
|
||||
if (!hex_ptr)
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Command line: improper format\n");
|
||||
printf("ex: fxremap.exe /x 0xE0000000-0xF0000000\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
}
|
||||
if ((ReadHex(argv[i+1],&temp))&&(ReadHex(hex_ptr+1,&temp2)))
|
||||
{
|
||||
address=temp;
|
||||
range=temp2-temp;
|
||||
range=~(range - 0x1);
|
||||
i++;
|
||||
AddMapEntry(address,range,0x500,FXFALSE,FXFALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Command line: improper format\n");
|
||||
printf("ex: fxremap.exe /x 0xE0000000-0xF0000000\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Command line: improper format\n");
|
||||
printf("ex: fxremap.exe /x 0xE0000000-0xF0000000\n");
|
||||
}
|
||||
ForceCleanUp();
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"/nb")==0)
|
||||
{
|
||||
switch_C0_bias=FXFALSE;
|
||||
}
|
||||
else if (strcmp(argv[i],"/i")==0)
|
||||
{
|
||||
switch_voodoo_loc = atoi(argv[++i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!silent) {
|
||||
printf("Command line: improper options specified\n");
|
||||
printf("Valid options are /dS3 /f /x /i\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FxU32 pciGetType(long i)
|
||||
{
|
||||
FxU32 header_type;
|
||||
|
||||
pciGetConfigData(PCI_HEADER_TYPE,i,&header_type);
|
||||
|
||||
return header_type;
|
||||
}
|
||||
|
||||
FxBool IsCardVoodoo(long i)
|
||||
{
|
||||
FxU32 vendor,dev_id;
|
||||
FxU32 fn_num = (i >> 13) & 0x7;
|
||||
int true_val;
|
||||
|
||||
if (fn_num) {
|
||||
true_val = 2;
|
||||
} else {
|
||||
true_val = 1;
|
||||
}
|
||||
|
||||
pciGetConfigData(PCI_VENDOR_ID,i,&vendor);
|
||||
pciGetConfigData(PCI_DEVICE_ID,i,&dev_id);
|
||||
/* if sst1 */
|
||||
if ((vendor==0x121a)&&(dev_id==0x0001))
|
||||
return FXTRUE;
|
||||
/* if voodoo2 */
|
||||
if ((vendor==0x121a)&&(dev_id==0x0002)) {
|
||||
if (true_val == 2) if (!silent) { printf("found voodoo2 hidden sli\n"); }
|
||||
return true_val;
|
||||
}
|
||||
/* if banshee */
|
||||
if ((vendor==0x121a)&&(dev_id==0x0003))
|
||||
return FXTRUE;
|
||||
/* if h4? or whatever is next */
|
||||
if ((vendor==0x121a)&&(dev_id==0x0004))
|
||||
return FXTRUE;
|
||||
return FXFALSE;
|
||||
}
|
||||
|
||||
FxBool IsCardS3(long i)
|
||||
{
|
||||
FxU32 vendor,dev_id;
|
||||
|
||||
pciGetConfigData(PCI_VENDOR_ID,i,&vendor);
|
||||
pciGetConfigData(PCI_DEVICE_ID,i,&dev_id);
|
||||
if ((vendor==0x5333)&&((dev_id==0x88f0)||(dev_id==0x8880)))
|
||||
return FXTRUE;
|
||||
|
||||
return FXFALSE;
|
||||
}
|
||||
|
||||
FxBool ReadHex(char *string,FxU32 *num)
|
||||
{
|
||||
long i=0;
|
||||
FxU32 temp=0,temp2;
|
||||
long num_count=0;
|
||||
|
||||
/* bypass leading spaces */
|
||||
while((string[i])&&(string[i]==' '))
|
||||
i++;
|
||||
/* verify leading 0x */
|
||||
if (string[i]=='0')
|
||||
i++;
|
||||
else
|
||||
return FXFALSE;
|
||||
if (string[i]=='x')
|
||||
i++;
|
||||
else
|
||||
return FXFALSE;
|
||||
|
||||
/* read in number */
|
||||
while(((string[i]>=0x30)&&(string[i]<0x3A))||((string[i]>=0x41)&&(string[i]<0x47))||((string[i]>=0x61)&&(string[i]<0x67)))
|
||||
{
|
||||
if ((string[i]>=0x30)&&(string[i]<0x3A))
|
||||
temp2=string[i] - 0x30;
|
||||
else if ((string[i]>=0x41)&&(string[i]<0x47))
|
||||
temp2=string[i] - 0x37;
|
||||
else if ((string[i]>=0x61)&&(string[i]<0x67))
|
||||
temp2=string[i] - 0x57;
|
||||
if (num_count!=0)
|
||||
temp=(temp<<4)+temp2;
|
||||
else if (num_count<8)
|
||||
temp=temp2;
|
||||
else
|
||||
return FXFALSE;
|
||||
num_count++;i++;
|
||||
}
|
||||
*num=temp;
|
||||
return FXTRUE;
|
||||
}
|
||||
|
||||
void HandleMemoryOverlap(void)
|
||||
{
|
||||
RangeStruct *cur;
|
||||
|
||||
cur=first_entry;
|
||||
while(cur)
|
||||
{
|
||||
if (cur!=last_entry)
|
||||
{
|
||||
if (overlap_map(cur,cur->next->address))
|
||||
{
|
||||
if (cur->range<(cur->next->address+cur->next->range-cur->address))
|
||||
cur->range=cur->next->address+cur->next->range-cur->address;
|
||||
if (cur->next==last_entry)
|
||||
{
|
||||
last_entry=cur;
|
||||
cur->next=null;
|
||||
}
|
||||
else
|
||||
{
|
||||
cur->next=cur->next->next;
|
||||
cur->next->prev=cur;
|
||||
}
|
||||
}
|
||||
else
|
||||
cur=cur->next;
|
||||
}
|
||||
else
|
||||
cur=cur->next;
|
||||
}
|
||||
}
|
||||
|
||||
FxBool overlap_map(RangeStruct *begin,FxU32 end)
|
||||
{
|
||||
if ((begin->address+begin->range)>end)
|
||||
return FXTRUE;
|
||||
return FXFALSE;
|
||||
}
|
||||
14
glide2x/cvg/init/fxremap.h
Normal file
14
glide2x/cvg/init/fxremap.h
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* fxremap.h
|
||||
*
|
||||
* pci remapper, used to remap the single board SLI slave to a valid
|
||||
* PCI address
|
||||
*/
|
||||
|
||||
#ifndef _FXREMAP_H_
|
||||
#define _FXREMAP_H_
|
||||
|
||||
void fxremap(void);
|
||||
int fxremap_main(int argc, char **argv);
|
||||
|
||||
#endif
|
||||
@@ -25,7 +25,7 @@
|
||||
** Initialization code for loading SST-1 gamma tables
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -251,6 +251,6 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitGammaTable(FxU32 *sstbase, FxU32 nentries, Fx
|
||||
return(FXTRUE);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -252,7 +252,7 @@ gdbg_vprintf (const char *format,va_list args)
|
||||
|
||||
#if __DOS32__
|
||||
pciOutputDebugString(msgBuf);
|
||||
#elif __WIN32
|
||||
#elif __WIN32__
|
||||
OutputDebugString(msgBuf);
|
||||
#else
|
||||
fprintf(stderr, msgBuf);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
** configuration information.
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -652,6 +652,7 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
|
||||
return(FXTRUE);
|
||||
}
|
||||
#ifdef _WIN32
|
||||
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2 2000/04/20 21:20:22 joseph
|
||||
** Copied windows init code to fix incompatibility with Athlon
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:24 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
*/
|
||||
|
||||
#define OFFICIAL 1
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
** Parsing code for grabbing information from "voodoo2.ini" initialization file
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -51,21 +51,16 @@
|
||||
|
||||
static int sst1InitFgets(char *, FILE *);
|
||||
static int sst1InitFgetc(FILE *);
|
||||
#ifndef INIT_LINUX
|
||||
static int sst1InitParseFieldDac(char *);
|
||||
#endif
|
||||
static int sst1InitParseFieldCfg(char *);
|
||||
#ifndef INIT_LINUX
|
||||
static int sst1InitParseDacRdWrString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseDacRdWr(char *, sst1InitDacRdWrStruct *);
|
||||
static int sst1InitParseSetVideoString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseSetMemClkString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseSetVideoModeString(char *, sst1InitDacStruct *);
|
||||
#endif
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *);
|
||||
static void sst1InitToLower(char *string);
|
||||
#if __DOS32__
|
||||
static void sst1InitFixFilename(char *dst, char *src);
|
||||
#endif
|
||||
|
||||
static FxBool checkedFileP = FXFALSE;
|
||||
|
||||
@@ -287,6 +282,7 @@ __errExit:
|
||||
*/
|
||||
FX_ENTRY FxBool FX_CALL sst1InitVoodooFile() {
|
||||
static FxBool retVal = FXFALSE;
|
||||
int inCfg, inDac;
|
||||
FILE *file = 0;
|
||||
char buffer[1024], filename[256];
|
||||
char *tmpPtr;
|
||||
@@ -350,9 +346,90 @@ __errExit:
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(INIT_DOS) || defined(INIT_LINUX)
|
||||
#if defined(INIT_DOS) || defined(INIT_LINUX) || defined(__WIN32__)
|
||||
|
||||
#if TEST
|
||||
/* void main(int argc, char **argv) */
|
||||
static void foo(int argc, char **argv)
|
||||
{
|
||||
char buffer[2048]; /* buffer for command line inputs */
|
||||
int inCfg, inDac;
|
||||
sst1InitEnvVarStruct *envVarsPtr;
|
||||
sst1InitDacStruct *dacPtr;
|
||||
sst1InitDacSetVideoStruct *setVideo;
|
||||
sst1InitDacSetMemClkStruct *setMemClk;
|
||||
FILE *file = fopen(argv[1], "r");
|
||||
|
||||
inCfg = inDac = 0;
|
||||
while(sst1InitFgets(buffer, file)) {
|
||||
buffer[strlen(buffer)-1] = (char) NULL;
|
||||
if(!strcmp(buffer, "[CFG]")) {
|
||||
inCfg = 1; inDac = 0;
|
||||
continue;
|
||||
} else if (!strcmp(buffer, "[DAC]")) {
|
||||
inCfg = 0; inDac = 1;
|
||||
continue;
|
||||
} else if(buffer[0] == '[') {
|
||||
inCfg = 0; inDac = 0;
|
||||
continue;
|
||||
}
|
||||
if(inCfg) {
|
||||
if(!sst1InitParseFieldCfg(buffer))
|
||||
/* Error processing .ini file */
|
||||
exit(1);
|
||||
} else if(inDac) {
|
||||
if(!sst1InitParseFieldDac(buffer))
|
||||
/* Error processing .ini file */
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Dump CFG Data... */
|
||||
envVarsPtr = envVarsBase;
|
||||
while(envVarsPtr) {
|
||||
printf("ENV VAR:%s VALUE:%s\n", envVarsPtr->envVariable,
|
||||
envVarsPtr->envValue);
|
||||
envVarsPtr = (sst1InitEnvVarStruct *) envVarsPtr->nextVar;
|
||||
}
|
||||
|
||||
/* Dump Dac Data... */
|
||||
dacPtr = dacStructBase;
|
||||
while(dacPtr) {
|
||||
printf("DAC MANU:%s DEVICE:%s\n", dacPtr->dacManufacturer,
|
||||
dacPtr->dacDevice);
|
||||
if(dacPtr->detect) {
|
||||
printf("\tDetect:\n");
|
||||
sst1InitPrintDacRdWr(dacPtr->detect, "\t\t");
|
||||
}
|
||||
if(dacPtr->setVideo) {
|
||||
setVideo = dacPtr->setVideo;
|
||||
while(1) {
|
||||
printf("\tsetVideo (%dx%d @ %d Hz)\n",
|
||||
setVideo->width, setVideo->height, setVideo->refresh);
|
||||
sst1InitPrintDacRdWr(setVideo->setVideoRdWr, "\t\t");
|
||||
if(!setVideo->nextSetVideo)
|
||||
break;
|
||||
else
|
||||
setVideo = setVideo->nextSetVideo;
|
||||
}
|
||||
}
|
||||
if(dacPtr->setMemClk) {
|
||||
setMemClk = dacPtr->setMemClk;
|
||||
while(1) {
|
||||
printf("\tsetMemClk (%d MHz)\n", setMemClk->frequency);
|
||||
sst1InitPrintDacRdWr(setMemClk->setMemClkRdWr, "\t\t");
|
||||
if(!setMemClk->nextSetMemClk)
|
||||
break;
|
||||
else
|
||||
setMemClk = setMemClk->nextSetMemClk;
|
||||
}
|
||||
}
|
||||
dacPtr = dacPtr->nextDac;
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __DOS32__
|
||||
static void sst1InitFixFilename(char *dst, char *src)
|
||||
{
|
||||
while(*src) {
|
||||
@@ -363,7 +440,6 @@ static void sst1InitFixFilename(char *dst, char *src)
|
||||
}
|
||||
*dst = (char) NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static int sst1InitFgets(char *string, FILE *stream)
|
||||
@@ -468,7 +544,6 @@ static int sst1InitParseFieldCfg(char *string)
|
||||
return(1);
|
||||
}
|
||||
|
||||
#ifndef INIT_LINUX
|
||||
static int sst1InitParseFieldDac(char *string)
|
||||
{
|
||||
char *dacFieldReference, *dacFieldValue;
|
||||
@@ -669,6 +744,33 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(1);
|
||||
}
|
||||
|
||||
#if TEST
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *dacRdWrBase,
|
||||
char *prefix)
|
||||
{
|
||||
sst1InitDacRdWrStruct *dacRdWrPtr = dacRdWrBase;
|
||||
|
||||
while(dacRdWrPtr) {
|
||||
if(dacRdWrPtr->type == DACRDWR_TYPE_WR) {
|
||||
printf("%sDacWR", prefix);
|
||||
printf("(0x%x,0x%x)\n", dacRdWrPtr->addr, dacRdWrPtr->data);
|
||||
} else if(dacRdWrPtr->type == DACRDWR_TYPE_RDMODWR) {
|
||||
printf("%sDacRD-MOD-WR", prefix);
|
||||
printf("(0x%x,0x%x,0x%x)\n", dacRdWrPtr->addr, dacRdWrPtr->mask,
|
||||
dacRdWrPtr->data);
|
||||
} else if(dacRdWrPtr->type == DACRDWR_TYPE_RDNOCHECK) {
|
||||
printf("%sDacRD-NOCHECK", prefix);
|
||||
printf("(0x%x)\n", dacRdWrPtr->addr);
|
||||
} else if(dacRdWrPtr->type == DACRDWR_TYPE_RDCHECK) {
|
||||
printf("%sDacRD-CHECK", prefix);
|
||||
printf("(0x%x,0x%x)\n", dacRdWrPtr->addr, dacRdWrPtr->data);
|
||||
} else
|
||||
printf("%sDAC???", prefix);
|
||||
dacRdWrPtr = dacRdWrPtr->nextRdWr;
|
||||
}
|
||||
}
|
||||
#endif /* TEST */
|
||||
|
||||
static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase)
|
||||
{
|
||||
int cntr = 0;
|
||||
@@ -869,7 +971,6 @@ static int sst1InitParseSetVideoModeString(char *string,
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void sst1InitToLower(char *string)
|
||||
{
|
||||
@@ -1019,6 +1120,6 @@ FX_ENTRY char* FX_CALL sst1InitGetenv(char *string)
|
||||
}
|
||||
#endif /* INIT_DOS */
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
**
|
||||
** Print functions for SST-1 Initialization routines
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -83,6 +83,6 @@ FX_ENTRY void FX_CALL sst1InitVPrintf(const char *format, va_list args)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define MANVERSION 1
|
||||
#define MANREVISION 1
|
||||
#define BUILD_NUMBER 1
|
||||
|
||||
#define VERSIONSTR "Voodoo2 InitCode " "$Revision$" "\0"
|
||||
#define MANVERSION 1
|
||||
#define MANREVISION 1
|
||||
#define BUILD_NUMBER 1
|
||||
|
||||
#define VERSIONSTR "Voodoo2 InitCode " "$Revision$" "\0"
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
** Initialization code for initializing scanline interleaving
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -89,7 +89,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
if(/* (sst1M->fbiMemSize != sst1S->fbiMemSize) || */
|
||||
/*(sst1M->tmuMemSize[0] != sst1S->tmuMemSize[0]) || */
|
||||
(sst1M->numberTmus != sst1S->numberTmus) ||
|
||||
(sst1M->fbiBoardID != sst1S->fbiBoardID) ||
|
||||
/* [koolsmoky] mismatched SLI support */
|
||||
(!GETENV(("SSTV2_MISMATCHED_SLI")) && (sst1M->fbiBoardID != sst1S->fbiBoardID)) ||
|
||||
/* (sst1M->fbiRevision != sst1S->fbiRevision) || */
|
||||
/* (sst1M->tmuRevision != sst1S->tmuRevision) || */
|
||||
(sst1M->fbiVideoStruct != sst1S->fbiVideoStruct)) {
|
||||
@@ -736,6 +737,6 @@ sst1InitSliPaired(FxU32 *sstbase)
|
||||
return sliPaired;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -135,13 +135,13 @@
|
||||
** SSTV2_VFIFO_THRESH {0-31} Select video fifo threshold
|
||||
** SSTV2_VSYNC hex Specify value of vSync video register
|
||||
** SSTV2_NOREMAP 0 Don't try to remap single board sli.
|
||||
** SSTV2_MISMATCHED_SLI X Allow mismatched SLI
|
||||
**
|
||||
** VOODOO2_FILE name Filename used in place of "voodoo2.ini"
|
||||
** VOODOO2_PATH path Path used to locate "voodoo2.ini" file
|
||||
**
|
||||
*/
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -158,6 +158,7 @@
|
||||
#define SST1INIT_ALLOCATE // Allocate variables in sst1init.h
|
||||
#define FX_DLL_DEFINITION
|
||||
#include <fxdll.h>
|
||||
|
||||
#if !macintosh && !__linux__
|
||||
#include <fxremap.h>
|
||||
#endif
|
||||
@@ -209,11 +210,13 @@ FX_EXPORT FxU32 * FX_CSTYLE sst1InitMapBoardDirect(FxU32 BoardNumber,
|
||||
else
|
||||
deviceID = 0x0002;
|
||||
|
||||
#if !DIRECTX
|
||||
// Open PCI library (necessary for multiple calls to init routines, after
|
||||
// PCI library is closed by pciClose() call in sst1InitShutdown().
|
||||
//
|
||||
// NB: It is safe to do this even if we never called pciClose.
|
||||
pciOpen();
|
||||
#endif
|
||||
|
||||
/* NB: firstTime does not get cleared until we actually find a
|
||||
* board and get one mapped (A little weird to begin w/, but
|
||||
@@ -448,9 +451,12 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
|
||||
if(GETENV(("SSTV2_TEXMAP_DISABLE")))
|
||||
INIT_PRINTF(("sst1InitRegisters() WARNING: Disabling texture mapping\n"));
|
||||
|
||||
#if !DIRECTX
|
||||
// Open PCI library (necessary for multiple calls to init routines, after
|
||||
// PCI library is closed by pciClose() call in sst1InitShutdown()
|
||||
pciOpen();
|
||||
#endif
|
||||
|
||||
// Enable writes to the FBIINIT registers
|
||||
// Do not allow writes into the pci fifo until everything is reset
|
||||
@@ -1327,6 +1333,6 @@ sst1InitCachingAMD(FxU32* sstBase, FxBool enableP, FxBool hasP2MTRR)
|
||||
return retVal;
|
||||
} // sst1InitSetCachingAMD
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -83,9 +83,7 @@
|
||||
|
||||
#else /* DIRECTX */
|
||||
#include "ddglobal.h"
|
||||
#ifdef _WIN32
|
||||
#pragma optimize ("",off) /* ddglobal.h tuns this on for retail builds */
|
||||
#endif
|
||||
#undef INIT_PRINTF
|
||||
#undef INIT_INFO
|
||||
#undef GETENV
|
||||
@@ -102,7 +100,8 @@
|
||||
#define INIT_PRINTF 1 ? (void) 0 : (void)
|
||||
#endif
|
||||
#define INIT_INFO(A)
|
||||
#define GETENV(A) ddgetenv(A)
|
||||
/* #define GETENV(A) ddgetenv(A) */
|
||||
#define GETENV(A) sst1InitGetenv(A)
|
||||
#define ATOI(A) ddatoi(A)
|
||||
#define ATOF(A) ddatof(A)
|
||||
#define FTOL(A) ddftol(A)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
** Utility routines for SST-1 Initialization code
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -1180,6 +1180,6 @@ void sst1InitDrawRectUsingTris(FxU32 *sstbase, FxU32 x, FxU32 y, FxU32 tSize)
|
||||
ISET(sst->triangleCMD, 0xFFFFFFFF);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
** Initialization code for initializing SST-1 video unit
|
||||
**
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",off)
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
@@ -1462,6 +1462,6 @@ setDelays:
|
||||
return(FXTRUE);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef __WIN32__
|
||||
#pragma optimize ("",on)
|
||||
#endif
|
||||
|
||||
@@ -1,255 +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.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
1327
glide2x/h3/cinit/h3cinit.c
Normal file
1327
glide2x/h3/cinit/h3cinit.c
Normal file
File diff suppressed because it is too large
Load Diff
132
glide2x/h3/cinit/h3cinit.h
Normal file
132
glide2x/h3/cinit/h3cinit.h
Normal file
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
** 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
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __H3CINIT_H__
|
||||
#define __H3CINIT_H__
|
||||
|
||||
#include <3dfx.h>
|
||||
|
||||
#define H3_GRXCLK_SPEED 100
|
||||
#define H4_GRXCLK_SPEED 143
|
||||
#define H4_OEM_GRXCLK_SPEED 141
|
||||
#define H4_BRINGUP_GRXCLK_SPEED 100
|
||||
|
||||
#ifdef H4
|
||||
#define DEFAULT_GRXCLK_SPEED H4_BRINGUP_GRXCLK_SPEED
|
||||
#else
|
||||
#define DEFAULT_GRXCLK_SPEED H3_GRXCLK_SPEED
|
||||
#endif
|
||||
|
||||
FxU32 // return # of MB of memory
|
||||
h3InitGetMemSize(FxU32 regBase); // init register base
|
||||
|
||||
FxU32 // return # of MB of memory
|
||||
h3InitSgram(FxU32 regBase, // init iegister base
|
||||
FxU32 sgramMode,
|
||||
FxU32 sgramMask,
|
||||
FxU32 sgramColor,
|
||||
char *vendorName); // NULL or name of SGRAM vendor
|
||||
|
||||
void
|
||||
h3InitPlls(FxU32 regBase, // init iegister base
|
||||
FxU32 grxSpeedInMHz, // desired GRX clock frequency (MHz)
|
||||
FxU32 memSpeedInMHz); // desired MEM clock frequency (MHz)
|
||||
|
||||
void
|
||||
h4InitPlls(FxU32 regBase, // init register base
|
||||
FxU32 deviceID, // H4 or H4_OEM
|
||||
FxU32 grxSpeedInMHz); // desired clock frequency (MHz)
|
||||
|
||||
void
|
||||
h3InitVga(
|
||||
FxU32 regBase, // memory base address
|
||||
FxU32 legacyDecode); // 1=enable VGA decode, 0=disable
|
||||
|
||||
void
|
||||
h3InitVideoProc(
|
||||
FxU32 regBase, // memory base address
|
||||
FxU32 vidProcCfg); // vidProcCfg register control bits
|
||||
|
||||
FxBool
|
||||
h3InitSetVideoMode(
|
||||
FxU32 regBase, // memory base address
|
||||
FxU32 xRes, // x resolution
|
||||
FxU32 yRes, // y resolution
|
||||
FxU32 refresh, // refresh freq
|
||||
#if defined(H3VDD) && defined(H3_B0)
|
||||
FxU32 loadClut, // really a bool, should we load the lookup table
|
||||
FxU32 scanlinedouble); // set scanline double bit and double y?
|
||||
#else
|
||||
FxU32 loadClut) ; // initialize clut entries?
|
||||
#endif
|
||||
|
||||
void
|
||||
h3InitVideoDesktopSurface(
|
||||
FxU32 regBase,
|
||||
FxU32 enable, // 1=enable desktop surface (DS), 1=disable
|
||||
FxU32 tiled, // 0=DS linear, 1=tiled
|
||||
FxU32 pixFmt, // pixel format of DS
|
||||
FxU32 clutBypass, // bypass clut for DS?
|
||||
FxU32 clutSelect, // 0=lower 256 CLUT entries, 1=upper 256
|
||||
FxU32 startAddress, // board address of beginning of DS
|
||||
FxU32 stride); // distance between scanlines of the DS, in
|
||||
// units of bytes for linear DS's and tiles for
|
||||
// tiled DS's
|
||||
|
||||
void
|
||||
h3InitVideoOverlaySurface(
|
||||
FxU32 regBase,
|
||||
FxU32 enable, // 1=enable Overlay surface (OS), 1=disable
|
||||
FxU32 stereo, // 1=enable OS stereo, 0=disable
|
||||
FxU32 horizScaling, // 1=enable horizontal scaling, 0=disable
|
||||
FxU32 dudx, // horizontal scale factor (ignored if not
|
||||
// scaling)
|
||||
FxU32 verticalScaling, // 1=enable vertical scaling, 0=disable
|
||||
FxU32 dvdy, // vertical scale factor (ignored if not
|
||||
// scaling)
|
||||
FxU32 filterMode, // duh
|
||||
FxU32 tiled, // 0=OS linear, 1=tiled
|
||||
FxU32 pixFmt, // pixel format of OS
|
||||
FxU32 clutBypass, // bypass clut for OS?
|
||||
FxU32 clutSelect, // 0=lower 256 CLUT entries, 1=upper 256
|
||||
FxU32 startAddress, // board address of beginning of OS
|
||||
FxU32 stride); // distance between scanlines of the OS, in
|
||||
// units of bytes for linear OS's and tiles for
|
||||
// tiled OS's
|
||||
|
||||
#ifndef H3VDD
|
||||
void
|
||||
h3InitMeasureSiProcess(
|
||||
FxU32 regBase); // init register base
|
||||
#endif // #ifndef H3VDD
|
||||
|
||||
void
|
||||
h3InitBlockWrite(
|
||||
FxU32 regBase,
|
||||
FxU32 enable, // 1=enable block writes, 0=disable
|
||||
FxU32 threshhold); // block write threshhold
|
||||
|
||||
void
|
||||
h3InitResetAll(
|
||||
FxU32 regBase); // init register base
|
||||
|
||||
#endif /* __H3CINIT_H__ */
|
||||
|
||||
85
glide2x/h3/cinit/h3cinitdd.h
Normal file
85
glide2x/h3/cinit/h3cinitdd.h
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
** 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 <stddef.h>
|
||||
|
||||
#ifdef __DJGPP__
|
||||
#include <fxdpmi.h>
|
||||
#endif
|
||||
|
||||
#if defined(__WATCOMC__)
|
||||
#include <conio.h>
|
||||
|
||||
#define _inp inp
|
||||
#define _outp outp
|
||||
|
||||
#define _inpw inpw
|
||||
#define _outpw outpw
|
||||
|
||||
#define _inpd inpd
|
||||
#define _outpd outpd
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
#define _inp pioInByte
|
||||
#define _outp pioOutByte
|
||||
#define _inpw pioInWord
|
||||
#define _outpw pioOutWord
|
||||
#define _inpd pioInLong
|
||||
#define _outpd pioOutLong
|
||||
#endif
|
||||
|
||||
|
||||
#define SSTIOADDR(regName) ((FxU16)offsetof(SstIORegs, regName))
|
||||
|
||||
#define ISET32(addr, value) _outpd((FxU16) ((FxU16) regBase + (FxU16) (SSTIOADDR(addr))), value)
|
||||
#define IGET32(addr) _inpd((FxU16) ((FxU16) regBase + (FxU16) (SSTIOADDR(addr))))
|
||||
|
||||
#define ISET8PHYS(a,b) {\
|
||||
FxU16 port = (FxU16) (regBase) + (FxU16) (a);\
|
||||
GDBG_INFO(120, "OUT8: Port 0x%x Value 0x%x\n", port, b);\
|
||||
_outp(port, (FxU8) (b));}
|
||||
|
||||
#define ISET16PHYS(a,b) {\
|
||||
FxU16 port = (FxU16)(regBase) + (FxU16)(a);\
|
||||
GDBG_INFO(120, "OUT16: Port 0x%x Value 0x%x\n", port, b);\
|
||||
_outpw(port, (FxU16) (b));}
|
||||
|
||||
#define IGET8PHYS(a) _inp((FxU16) ((FxU16) (regBase) + (FxU16) (a)))
|
||||
#define IGET16PHYS(a) _inpw((FxU16) ((FxU16) (regBase) + (FxU16)(a)))
|
||||
|
||||
#define CHECKFORROOM while (! (_inp((FxU16) regBase) & (FxU16)(0x3f)))
|
||||
#define MESSAGE GDBG_PRINTF
|
||||
|
||||
#ifdef OLD
|
||||
|
||||
|
||||
#define ISET32(a,b)\
|
||||
GDBG_INFO(120, "SET32: Register 0x%x Value 0x%x\n", (FxU32) (&((SstIORegs *)regBase)->a) - (FxU32) regBase, b); \
|
||||
((FxU32) (((SstIORegs *) regBase)->a)) = (FxU32) b
|
||||
|
||||
#define IGET32(a) ((FxU32) (((SstIORegs *) regBase)->a))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* #ifdef OLD */
|
||||
257
glide2x/h3/cinit/h4oempll.h
Normal file
257
glide2x/h3/cinit/h4oempll.h
Normal file
@@ -0,0 +1,257 @@
|
||||
/*
|
||||
** Copyright (c) 1995-1999, 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.
|
||||
**
|
||||
** File name: h4oempll.h
|
||||
**
|
||||
** Description: Avenger OEM PLL table and values.
|
||||
**
|
||||
** $History: h4oempll.h $
|
||||
**
|
||||
** ***************** Version 2 *****************
|
||||
** User: Michael Date: 1/08/99 Time: 1:50p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Implement the 3Dfx/STB unified header.
|
||||
**
|
||||
** ***************** Version 1 *****************
|
||||
** User: Andrew Date: 12/20/98 Time: 11:10a
|
||||
** Created in $/devel/h3/Win95/dx/minivdd
|
||||
** H4 OEM Pll Table
|
||||
**
|
||||
** ***************** Version 5 *****************
|
||||
** User: Pault Date: 11/05/98 Time: 2:07p
|
||||
** Updated in $/devel/h4/cinit
|
||||
** The table now goes up to 220 MHz for Avenger. Also, all of the entries
|
||||
** up through 141 MHz have the M factor set at 24 so the entries can be
|
||||
** used with Avenger OEM.
|
||||
**
|
||||
** ***************** Version 3 *****************
|
||||
** User: Artg Date: 8/27/98 Time: 11:08a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** added guard ifdef for redundant plltable define.
|
||||
**
|
||||
** ***************** Version 2 *****************
|
||||
** User: Ken Date: 4/15/98 Time: 6:42p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
** added unified header to all files, with revision, etc. info in it
|
||||
**
|
||||
*/
|
||||
|
||||
//
|
||||
// generated by gen_plltable.pl at Thu Nov 5 12:38:23 1998
|
||||
//
|
||||
|
||||
#define MIN_PLL_FREQ 30
|
||||
#define MAX_PLL_FREQ 120
|
||||
#define MAX_H4_OEM_PLL_FREQ 141
|
||||
#define MAX_H4_PLL_FREQ 220
|
||||
|
||||
FxU32 _h4oempllTable[] = {
|
||||
// pllCtrl n m k actual(MHz)
|
||||
// ------- --- --- --- -----------
|
||||
0x00003460, // 52 24 0 29.737758
|
||||
0x00003660, // 54 24 0 30.839157
|
||||
0x00003860, // 56 24 0 31.940555
|
||||
0x00003A60, // 58 24 0 33.041954
|
||||
0x00003C60, // 60 24 0 34.143352
|
||||
0x00003E60, // 62 24 0 35.244751
|
||||
0x00003F60, // 63 24 0 35.795450
|
||||
0x00004160, // 65 24 0 36.896848
|
||||
0x00004360, // 67 24 0 37.998247
|
||||
0x00004560, // 69 24 0 39.099645
|
||||
0x00004760, // 71 24 0 40.201044
|
||||
0x00004860, // 72 24 0 40.751743
|
||||
0x00004A60, // 74 24 0 41.853142
|
||||
0x00004C60, // 76 24 0 42.954540
|
||||
0x00004E60, // 78 24 0 44.055938
|
||||
0x00005060, // 80 24 0 45.157337
|
||||
0x00005260, // 82 24 0 46.258735
|
||||
0x00005360, // 83 24 0 46.809435
|
||||
0x00005560, // 85 24 0 47.910833
|
||||
0x00005760, // 87 24 0 49.012232
|
||||
0x00005960, // 89 24 0 50.113630
|
||||
0x00005B60, // 91 24 0 51.215028
|
||||
0x00005C60, // 92 24 0 51.765728
|
||||
0x00005E60, // 94 24 0 52.867126
|
||||
0x00006060, // 96 24 0 53.968525
|
||||
0x00006260, // 98 24 0 55.069923
|
||||
0x00006460, // 100 24 0 56.171322
|
||||
0x00006660, // 102 24 0 57.272720
|
||||
0x00006760, // 103 24 0 57.823419
|
||||
0x00006960, // 105 24 0 58.924818
|
||||
0x00006B60, // 107 24 0 60.026216
|
||||
0x00006D60, // 109 24 0 61.127615
|
||||
0x00006F60, // 111 24 0 62.229013
|
||||
0x00007060, // 112 24 0 62.779712
|
||||
0x00007260, // 114 24 0 63.881111
|
||||
0x00007460, // 116 24 0 64.982509
|
||||
0x00007660, // 118 24 0 66.083908
|
||||
0x00007860, // 120 24 0 67.185306
|
||||
0x00007960, // 121 24 0 67.736005
|
||||
0x00007B60, // 123 24 0 68.837404
|
||||
0x00007D60, // 125 24 0 69.938802
|
||||
0x00007F60, // 127 24 0 71.040201
|
||||
0x00008160, // 129 24 0 72.141599
|
||||
0x00008360, // 131 24 0 73.242998
|
||||
0x00008460, // 132 24 0 73.793697
|
||||
0x00008660, // 134 24 0 74.895095
|
||||
0x00008860, // 136 24 0 75.996494
|
||||
0x00008A60, // 138 24 0 77.097892
|
||||
0x00008C60, // 140 24 0 78.199291
|
||||
0x00008D60, // 141 24 0 78.749990
|
||||
0x00008F60, // 143 24 0 79.851388
|
||||
0x00009160, // 145 24 0 80.952787
|
||||
0x00009360, // 147 24 0 82.054185
|
||||
0x00009560, // 149 24 0 83.155584
|
||||
0x00009760, // 151 24 0 84.256982
|
||||
0x00009860, // 152 24 0 84.807682
|
||||
0x00009A60, // 154 24 0 85.909080
|
||||
0x00009C60, // 156 24 0 87.010478
|
||||
0x00009E60, // 158 24 0 88.111877
|
||||
0x0000A060, // 160 24 0 89.213275
|
||||
0x0000A160, // 161 24 0 89.763975
|
||||
0x0000A360, // 163 24 0 90.865373
|
||||
0x0000A560, // 165 24 0 91.966772
|
||||
0x0000A760, // 167 24 0 93.068170
|
||||
0x0000A960, // 169 24 0 94.169568
|
||||
0x0000AB60, // 171 24 0 95.270967
|
||||
0x0000AC60, // 172 24 0 95.821666
|
||||
0x0000AE60, // 174 24 0 96.923065
|
||||
0x0000B060, // 176 24 0 98.024463
|
||||
0x0000B260, // 178 24 0 99.125862
|
||||
0x0000B460, // 180 24 0 100.227260
|
||||
0x0000B560, // 181 24 0 100.777959
|
||||
0x0000B760, // 183 24 0 101.879358
|
||||
0x0000B960, // 185 24 0 102.980756
|
||||
0x0000BB60, // 187 24 0 104.082155
|
||||
0x0000BD60, // 189 24 0 105.183553
|
||||
0x0000BE60, // 190 24 0 105.734252
|
||||
0x0000C060, // 192 24 0 106.835651
|
||||
0x0000C260, // 194 24 0 107.937049
|
||||
0x0000C460, // 196 24 0 109.038448
|
||||
0x0000C660, // 198 24 0 110.139846
|
||||
0x0000C860, // 200 24 0 111.241245
|
||||
0x0000C960, // 201 24 0 111.791944
|
||||
0x0000CB60, // 203 24 0 112.893342
|
||||
0x0000CD60, // 205 24 0 113.994741
|
||||
0x0000CF60, // 207 24 0 115.096139
|
||||
0x0000D160, // 209 24 0 116.197538
|
||||
0x0000D260, // 210 24 0 116.748237
|
||||
0x0000D460, // 212 24 0 117.849635
|
||||
0x0000D660, // 214 24 0 118.951034
|
||||
0x0000D860, // 216 24 0 120.052432
|
||||
0x0000DA60, // 218 24 0 121.153831
|
||||
0x0000DC60, // 220 24 0 122.255229
|
||||
0x0000DD60, // 221 24 0 122.805928
|
||||
0x0000DF60, // 223 24 0 123.907327
|
||||
0x0000E160, // 225 24 0 125.008725
|
||||
0x0000E360, // 227 24 0 126.110124
|
||||
0x0000E560, // 229 24 0 127.211522
|
||||
0x0000E660, // 230 24 0 127.762222
|
||||
0x0000E860, // 232 24 0 128.863620
|
||||
0x0000EA60, // 234 24 0 129.965018
|
||||
0x0000EC60, // 236 24 0 131.066417
|
||||
0x0000EE60, // 238 24 0 132.167815
|
||||
0x0000F060, // 240 24 0 133.269214
|
||||
0x0000F160, // 241 24 0 133.819913
|
||||
0x0000F360, // 243 24 0 134.921312
|
||||
0x0000F560, // 245 24 0 136.022710
|
||||
0x0000F760, // 247 24 0 137.124108
|
||||
0x0000F960, // 249 24 0 138.225507
|
||||
0x0000FA60, // 250 24 0 138.776206
|
||||
0x0000FC60, // 252 24 0 139.877605
|
||||
0x0000FE60, // 254 24 0 140.979003
|
||||
0x00007528, // 117 10 0 141.988618
|
||||
0x00001200, // 18 0 0 143.181800
|
||||
0x0000B340, // 179 16 0 143.977254
|
||||
0x00004F18, // 79 6 0 144.971573
|
||||
0x0000310C, // 49 3 0 146.045436
|
||||
0x00009834, // 152 13 0 146.999981
|
||||
0x00001D04, // 29 1 0 147.954527
|
||||
0x0000E350, // 227 20 0 149.039237
|
||||
0x0000DA4C, // 218 19 0 149.999981
|
||||
0x00007224, // 114 9 0 150.991716
|
||||
0x0000882C, // 136 11 0 151.992988
|
||||
0x0000C944, // 201 17 0 152.978449
|
||||
0x00002908, // 41 2 0 153.920435
|
||||
0x0000F754, // 247 21 0 155.009862
|
||||
0x0000CD44, // 205 17 0 155.992803
|
||||
0x0000FA54, // 250 21 0 156.877450
|
||||
0x0000FC54, // 252 21 0 158.122510
|
||||
0x0000D144, // 209 17 0 159.007157
|
||||
0x0000BC3C, // 188 15 0 160.026718
|
||||
0x00002B08, // 43 2 0 161.079525
|
||||
0x0000D544, // 213 17 0 162.021511
|
||||
0x0000922C, // 146 11 0 163.006972
|
||||
0x00007C24, // 124 9 0 164.008244
|
||||
0x0000F04C, // 240 19 0 164.999979
|
||||
0x0000FD50, // 253 20 0 165.960723
|
||||
0x00002104, // 33 1 0 167.045433
|
||||
0x0000AE34, // 174 13 0 167.999979
|
||||
0x0000390C, // 57 3 0 168.954524
|
||||
0x00005D18, // 93 6 0 170.028388
|
||||
0x0000D540, // 213 16 0 171.022706
|
||||
0x00001600, // 22 0 0 171.818160
|
||||
0x00008F28, // 143 10 0 173.011342
|
||||
0x00009C2C, // 156 11 0 174.020957
|
||||
0x00006C1C, // 108 7 0 174.999978
|
||||
0x0000CF3C, // 207 15 0 176.029389
|
||||
0x00008624, // 134 9 0 177.024771
|
||||
0x00005514, // 85 5 0 177.954523
|
||||
0x00001700, // 23 0 0 178.977250
|
||||
0x00005614, // 86 5 0 179.999977
|
||||
0x0000AF30, // 175 12 0 181.022704
|
||||
0x00005714, // 87 5 0 182.045431
|
||||
0x0000711C, // 113 7 0 182.954522
|
||||
0x0000A52C, // 165 11 0 183.933543
|
||||
0x0000A62C, // 166 11 0 185.034942
|
||||
0x00001800, // 24 0 0 186.136340
|
||||
0x0000DC3C, // 220 15 0 186.978586
|
||||
0x0000C334, // 195 13 0 188.045431
|
||||
0x0000400C, // 64 3 0 188.999976
|
||||
0x00009024, // 144 9 0 190.041298
|
||||
0x00002604, // 38 1 0 190.909067
|
||||
0x0000E23C, // 226 15 0 192.032061
|
||||
0x0000FE44, // 254 17 0 192.918636
|
||||
0x00009324, // 147 9 0 193.946256
|
||||
0x0000AF2C, // 175 11 0 194.947528
|
||||
0x0000D938, // 217 14 0 195.980089
|
||||
0x0000E83C, // 232 15 0 197.085536
|
||||
0x00005110, // 81 4 0 198.068157
|
||||
0x00008920, // 137 8 0 199.022702
|
||||
0x0000F940, // 249 16 0 199.659066
|
||||
0x0000FB40, // 251 16 0 201.249974
|
||||
0x00007D1C, // 125 7 0 202.045429
|
||||
0x0000EF3C, // 239 15 0 202.981258
|
||||
0x00003708, // 55 2 0 204.034065
|
||||
0x0000E338, // 227 14 0 204.928951
|
||||
0x0000B92C, // 185 11 0 205.961512
|
||||
0x00009D24, // 157 9 0 206.962784
|
||||
0x0000F53C, // 245 15 0 208.034733
|
||||
0x0000470C, // 71 3 0 209.045428
|
||||
0x00002A04, // 42 1 0 209.999973
|
||||
0x0000DB34, // 219 13 0 210.954519
|
||||
0x0000EB38, // 235 14 0 212.088041
|
||||
0x00007518, // 117 6 0 212.982927
|
||||
0x0000FC3C, // 252 15 0 213.930454
|
||||
0x00001C00, // 28 0 0 214.772700
|
||||
0x0000B328, // 179 10 0 215.965882
|
||||
0x0000C32C, // 195 11 0 216.975497
|
||||
0x0000871C, // 135 7 0 217.954518
|
||||
0x00009720, // 151 8 0 219.068154
|
||||
0x0000A724, // 167 9 0 219.979311
|
||||
};
|
||||
FxU32 *h4oempllTable = (FxU32*) (_h4oempllTable - MIN_PLL_FREQ);
|
||||
|
||||
277
glide2x/h3/cinit/h4pll.h
Normal file
277
glide2x/h3/cinit/h4pll.h
Normal file
@@ -0,0 +1,277 @@
|
||||
/*
|
||||
** Copyright (c) 1995-1999, 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.
|
||||
**
|
||||
** File name: h4pll.h
|
||||
**
|
||||
** Description: Avenger PLL table and values.
|
||||
**
|
||||
** $History: h4pll.h $
|
||||
**
|
||||
** ***************** Version 2 *****************
|
||||
** User: Michael Date: 1/08/99 Time: 1:51p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Implement the 3Dfx/STB unified header.
|
||||
**
|
||||
** ***************** Version 1 *****************
|
||||
** User: Andrew Date: 11/18/98 Time: 12:27p
|
||||
** Created in $/devel/h3/Win95/dx/minivdd
|
||||
** Pll Table for Avenger
|
||||
**
|
||||
** ***************** Version 8 *****************
|
||||
** User: Pault Date: 11/16/98 Time: 3:30p
|
||||
** Updated in $/devel/h4/cinit
|
||||
** This version of the table has m=k=1 and is based on the same
|
||||
** calculations we have been using in the lab. This will not work for
|
||||
** AvengerOEM.
|
||||
**
|
||||
** ***************** Version 7 *****************
|
||||
** User: Pault Date: 11/15/98 Time: 4:17p
|
||||
** Updated in $/devel/h4/cinit
|
||||
** Added missing pllTable definition at the bottom of the file.
|
||||
**
|
||||
** ***************** Version 6 *****************
|
||||
** User: Pault Date: 11/15/98 Time: 2:00p
|
||||
** Updated in $/devel/h4/cinit
|
||||
** Temporary table to work with Avenger. This table has k=1. But m values
|
||||
** are not wedged to 24 below 141 MHz, so this table with not work with
|
||||
** AvengerOEM.
|
||||
**
|
||||
** ***************** Version 5 *****************
|
||||
** User: Pault Date: 11/05/98 Time: 2:07p
|
||||
** Updated in $/devel/h4/cinit
|
||||
** The table now goes up to 220 MHz for Avenger. Also, all of the entries
|
||||
** up through 141 MHz have the M factor set at 24 so the entries can be
|
||||
** used with Avenger OEM.
|
||||
**
|
||||
** ***************** Version 3 *****************
|
||||
** User: Artg Date: 8/27/98 Time: 11:08a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** added guard ifdef for redundant plltable define.
|
||||
**
|
||||
** ***************** Version 2 *****************
|
||||
** User: Ken Date: 4/15/98 Time: 6:42p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
** added unified header to all files, with revision, etc. info in it
|
||||
**
|
||||
*/
|
||||
|
||||
//
|
||||
// generated by gen_plltable_at.pl at Sun Nov 15 14:16:18 1998
|
||||
//
|
||||
|
||||
#define MIN_PLL_FREQ 30
|
||||
#define MAX_PLL_FREQ 120
|
||||
#define MAX_H4_OEM_PLL_FREQ 141
|
||||
#define MAX_H4_PLL_FREQ 220
|
||||
|
||||
FxU32 _h4pllTable[] = {
|
||||
// pllCtrl n m k actual(MHz)
|
||||
// ------- --- --- --- -----------
|
||||
0x00000B05, // 11 1 1 31.022723
|
||||
0x00000B05, // 11 1 1 31.022723
|
||||
0x00000B05, // 11 1 1 31.022723
|
||||
0x00000C05, // 12 1 1 33.409087
|
||||
0x00000C05, // 12 1 1 33.409087
|
||||
0x00000D05, // 13 1 1 35.795450
|
||||
0x00000D05, // 13 1 1 35.795450
|
||||
0x00000E05, // 14 1 1 38.181813
|
||||
0x00000E05, // 14 1 1 38.181813
|
||||
0x00000E05, // 14 1 1 38.181813
|
||||
0x00000F05, // 15 1 1 40.568177
|
||||
0x00000F05, // 15 1 1 40.568177
|
||||
0x00001005, // 16 1 1 42.954540
|
||||
0x00001005, // 16 1 1 42.954540
|
||||
0x00001005, // 16 1 1 42.954540
|
||||
0x00001105, // 17 1 1 45.340903
|
||||
0x00001105, // 17 1 1 45.340903
|
||||
0x00001205, // 18 1 1 47.727267
|
||||
0x00001205, // 18 1 1 47.727267
|
||||
0x00001305, // 19 1 1 50.113630
|
||||
0x00001305, // 19 1 1 50.113630
|
||||
0x00001305, // 19 1 1 50.113630
|
||||
0x00001405, // 20 1 1 52.499993
|
||||
0x00001405, // 20 1 1 52.499993
|
||||
0x00001505, // 21 1 1 54.886357
|
||||
0x00001505, // 21 1 1 54.886357
|
||||
0x00001505, // 21 1 1 54.886357
|
||||
0x00001605, // 22 1 1 57.272720
|
||||
0x00001605, // 22 1 1 57.272720
|
||||
0x00001705, // 23 1 1 59.659083
|
||||
0x00001705, // 23 1 1 59.659083
|
||||
0x00001805, // 24 1 1 62.045447
|
||||
0x00001805, // 24 1 1 62.045447
|
||||
0x00001805, // 24 1 1 62.045447
|
||||
0x00001905, // 25 1 1 64.431810
|
||||
0x00001905, // 25 1 1 64.431810
|
||||
0x00001A05, // 26 1 1 66.818173
|
||||
0x00001A05, // 26 1 1 66.818173
|
||||
0x00001A05, // 26 1 1 66.818173
|
||||
0x00001B05, // 27 1 1 69.204537
|
||||
0x00001B05, // 27 1 1 69.204537
|
||||
0x00001C05, // 28 1 1 71.590900
|
||||
0x00001C05, // 28 1 1 71.590900
|
||||
0x00001D05, // 29 1 1 73.977263
|
||||
0x00001D05, // 29 1 1 73.977263
|
||||
0x00001D05, // 29 1 1 73.977263
|
||||
0x00001E05, // 30 1 1 76.363627
|
||||
0x00001E05, // 30 1 1 76.363627
|
||||
0x00001F05, // 31 1 1 78.749990
|
||||
0x00001F05, // 31 1 1 78.749990
|
||||
0x00002005, // 32 1 1 81.136353
|
||||
0x00002005, // 32 1 1 81.136353
|
||||
0x00002005, // 32 1 1 81.136353
|
||||
0x00002105, // 33 1 1 83.522717
|
||||
0x00002105, // 33 1 1 83.522717
|
||||
0x00002205, // 34 1 1 85.909080
|
||||
0x00002205, // 34 1 1 85.909080
|
||||
0x00002205, // 34 1 1 85.909080
|
||||
0x00002305, // 35 1 1 88.295443
|
||||
0x00002305, // 35 1 1 88.295443
|
||||
0x00002405, // 36 1 1 90.681807
|
||||
0x00002405, // 36 1 1 90.681807
|
||||
0x00002505, // 37 1 1 93.068170
|
||||
0x00002505, // 37 1 1 93.068170
|
||||
0x00002505, // 37 1 1 93.068170
|
||||
0x00002605, // 38 1 1 95.454533
|
||||
0x00002605, // 38 1 1 95.454533
|
||||
0x00002705, // 39 1 1 97.840897
|
||||
0x00002705, // 39 1 1 97.840897
|
||||
0x00002705, // 39 1 1 97.840897
|
||||
0x00002805, // 40 1 1 100.227260
|
||||
0x00002805, // 40 1 1 100.227260
|
||||
0x00002905, // 41 1 1 102.613623
|
||||
0x00002905, // 41 1 1 102.613623
|
||||
0x00002A05, // 42 1 1 104.999987
|
||||
0x00002A05, // 42 1 1 104.999987
|
||||
0x00002A05, // 42 1 1 104.999987
|
||||
0x00002B05, // 43 1 1 107.386350
|
||||
0x00002B05, // 43 1 1 107.386350
|
||||
0x00002C05, // 44 1 1 109.772713
|
||||
0x00002C05, // 44 1 1 109.772713
|
||||
0x00002D05, // 45 1 1 112.159077
|
||||
0x00002D05, // 45 1 1 112.159077
|
||||
0x00002D05, // 45 1 1 112.159077
|
||||
0x00002E05, // 46 1 1 114.545440
|
||||
0x00002E05, // 46 1 1 114.545440
|
||||
0x00002F05, // 47 1 1 116.931803
|
||||
0x00002F05, // 47 1 1 116.931803
|
||||
0x00002F05, // 47 1 1 116.931803
|
||||
0x00003005, // 48 1 1 119.318167
|
||||
0x00003005, // 48 1 1 119.318167
|
||||
0x00003105, // 49 1 1 121.704530
|
||||
0x00003105, // 49 1 1 121.704530
|
||||
0x00003205, // 50 1 1 124.090893
|
||||
0x00003205, // 50 1 1 124.090893
|
||||
0x00003205, // 50 1 1 124.090893
|
||||
0x00003305, // 51 1 1 126.477257
|
||||
0x00003305, // 51 1 1 126.477257
|
||||
0x00003405, // 52 1 1 128.863620
|
||||
0x00003405, // 52 1 1 128.863620
|
||||
0x00003405, // 52 1 1 128.863620
|
||||
0x00003505, // 53 1 1 131.249983
|
||||
0x00003505, // 53 1 1 131.249983
|
||||
0x00003605, // 54 1 1 133.636347
|
||||
0x00003605, // 54 1 1 133.636347
|
||||
0x00003705, // 55 1 1 136.022710
|
||||
0x00003705, // 55 1 1 136.022710
|
||||
0x00003705, // 55 1 1 136.022710
|
||||
0x00003805, // 56 1 1 138.409073
|
||||
0x00003805, // 56 1 1 138.409073
|
||||
0x00003905, // 57 1 1 140.795437
|
||||
0x00003905, // 57 1 1 140.795437
|
||||
0x00003A05, // 58 1 1 143.181800
|
||||
0x00003A05, // 58 1 1 143.181800
|
||||
0x00003A05, // 58 1 1 143.181800
|
||||
0x00003B05, // 59 1 1 145.568163
|
||||
0x00003B05, // 59 1 1 145.568163
|
||||
0x00003C05, // 60 1 1 147.954527
|
||||
0x00003C05, // 60 1 1 147.954527
|
||||
0x00003C05, // 60 1 1 147.954527
|
||||
0x00003D05, // 61 1 1 150.340890
|
||||
0x00003D05, // 61 1 1 150.340890
|
||||
0x00003E05, // 62 1 1 152.727253
|
||||
0x00003E05, // 62 1 1 152.727253
|
||||
0x00003F05, // 63 1 1 155.113617
|
||||
0x00003F05, // 63 1 1 155.113617
|
||||
0x00003F05, // 63 1 1 155.113617
|
||||
0x00004005, // 64 1 1 157.499980
|
||||
0x00004005, // 64 1 1 157.499980
|
||||
0x00004105, // 65 1 1 159.886343
|
||||
0x00004105, // 65 1 1 159.886343
|
||||
0x00004105, // 65 1 1 159.886343
|
||||
0x00004205, // 66 1 1 162.272707
|
||||
0x00004205, // 66 1 1 162.272707
|
||||
0x00004305, // 67 1 1 164.659070
|
||||
0x00004305, // 67 1 1 164.659070
|
||||
0x0000e721, // 68 1 1 166.81
|
||||
0x0000e721, // 68 1 1 166.81
|
||||
0x0000e721, // 68 1 1 166.81
|
||||
0x00004505, // 69 1 1 169.431797
|
||||
0x00004505, // 69 1 1 169.431797
|
||||
0x00004605, // 70 1 1 171.818160
|
||||
0x00004605, // 70 1 1 171.818160
|
||||
0x00004605, // 70 1 1 171.818160
|
||||
0x00004705, // 71 1 1 174.204523
|
||||
0x00004705, // 71 1 1 174.204523
|
||||
0x00004805, // 72 1 1 176.590887
|
||||
0x00004805, // 72 1 1 176.590887
|
||||
0x00004905, // 73 1 1 178.977250
|
||||
0x00004905, // 73 1 1 178.977250
|
||||
0x00004905, // 73 1 1 178.977250
|
||||
0x00004A05, // 74 1 1 181.363613
|
||||
0x00004A05, // 74 1 1 181.363613
|
||||
0x00004B05, // 75 1 1 183.749977
|
||||
0x00004B05, // 75 1 1 183.749977
|
||||
0x00004C05, // 76 1 1 186.136340
|
||||
0x00004C05, // 76 1 1 186.136340
|
||||
0x00004C05, // 76 1 1 186.136340
|
||||
0x00004D05, // 77 1 1 188.522703
|
||||
0x00004D05, // 77 1 1 188.522703
|
||||
0x00004E05, // 78 1 1 190.909067
|
||||
0x00004E05, // 78 1 1 190.909067
|
||||
0x00004E05, // 78 1 1 190.909067
|
||||
0x00004F05, // 79 1 1 193.295430
|
||||
0x00004F05, // 79 1 1 193.295430
|
||||
0x00005005, // 80 1 1 195.681793
|
||||
0x00005005, // 80 1 1 195.681793
|
||||
0x00005105, // 81 1 1 198.068157
|
||||
0x00005105, // 81 1 1 198.068157
|
||||
0x00005105, // 81 1 1 198.068157
|
||||
0x00005205, // 82 1 1 200.454520
|
||||
0x00005205, // 82 1 1 200.454520
|
||||
0x00005305, // 83 1 1 202.840883
|
||||
0x00005305, // 83 1 1 202.840883
|
||||
0x00005305, // 83 1 1 202.840883
|
||||
0x00005405, // 84 1 1 205.227247
|
||||
0x00005405, // 84 1 1 205.227247
|
||||
0x00005505, // 85 1 1 207.613610
|
||||
0x00005505, // 85 1 1 207.613610
|
||||
0x00005605, // 86 1 1 209.999973
|
||||
0x00005605, // 86 1 1 209.999973
|
||||
0x00005605, // 86 1 1 209.999973
|
||||
0x00005705, // 87 1 1 212.386337
|
||||
0x00005705, // 87 1 1 212.386337
|
||||
0x00005805, // 88 1 1 214.772700
|
||||
0x00005805, // 88 1 1 214.772700
|
||||
0x00005905, // 89 1 1 217.159063
|
||||
0x00005905, // 89 1 1 217.159063
|
||||
0x00005905, // 89 1 1 217.159063
|
||||
0x00005A05, // 90 1 1 219.545427
|
||||
0x00005A05, // 90 1 1 219.545427
|
||||
};
|
||||
|
||||
FxU32 *h4pllTable = (FxU32*) (_h4pllTable - MIN_PLL_FREQ);
|
||||
|
||||
110
glide2x/h3/cinit/memtable.h
Normal file
110
glide2x/h3/cinit/memtable.h
Normal file
@@ -0,0 +1,110 @@
|
||||
/*
|
||||
** 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
|
||||
**
|
||||
** File name: memtable.h
|
||||
**
|
||||
** Description: Table to initialize dramInit0 and sgramMode.
|
||||
**
|
||||
** $History: memtable.h $
|
||||
**
|
||||
** ***************** Version 1 *****************
|
||||
** User: Sapphire Date: 3/16/99 Time: 7:28p
|
||||
** Created in $/Releases/Voodoo3/V3_OEM_100/3dfx/devel/H3/cinit
|
||||
**
|
||||
** ***************** Version 6 *****************
|
||||
** User: Michael Date: 1/11/99 Time: 3:53p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Implement the 3Dfx/STB unified header.
|
||||
**
|
||||
** ***************** Version 5 *****************
|
||||
** User: Psmith Date: 8/09/98 Time: 7:53a
|
||||
** Updated in $/devel/h3/cinit
|
||||
** added Generic SGRAM/SDRAM memory timings that have lower performance
|
||||
** but will work for all currently-supported chips.
|
||||
** default memory vendor type changed to Generic from Samsung.
|
||||
**
|
||||
** ***************** Version 4 *****************
|
||||
** User: Psmith Date: 7/31/98 Time: 1:35a
|
||||
** Updated in $/devel/h3/cinit
|
||||
** changed block write to 2 cycles for Etron 16Mbit partsd
|
||||
**
|
||||
** ***************** Version 3 *****************
|
||||
** User: Psmith Date: 7/22/98 Time: 9:11a
|
||||
** Updated in $/devel/h3/cinit
|
||||
** added sdram support
|
||||
**
|
||||
** ***************** Version 2 *****************
|
||||
** User: Ken Date: 4/15/98 Time: 6:41p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
** added unified header to all files, with revision, etc. info in it
|
||||
**
|
||||
*/
|
||||
|
||||
//
|
||||
// generated by gen_memtable.pl at Sun Aug 9 07:21:36 1998
|
||||
//
|
||||
|
||||
#define MEM_TYPE_SGRAM 0
|
||||
#define MEM_TYPE_SDRAM 1
|
||||
|
||||
|
||||
struct memTable_st {
|
||||
char vendor[8];
|
||||
FxU32 type;
|
||||
FxU32 size;
|
||||
FxU32 dramInit0;
|
||||
FxU32 sgramMode;
|
||||
} memTable[] = {
|
||||
|
||||
// vendor type size dramInit0 sgramMode
|
||||
// ---------- ---- ---- --------- ---------
|
||||
{ "ETRON", MEM_TYPE_SGRAM, 16, 0x001698e9, 0x00000037} ,
|
||||
{ "ETRON", MEM_TYPE_SGRAM, 8, 0x0016a169, 0x00000037} ,
|
||||
{ "GENERIC", MEM_TYPE_SDRAM, 16, 0x00169d25, 0x00000037} ,
|
||||
{ "GENERIC", MEM_TYPE_SGRAM, 16, 0x00179d29, 0x00000037} ,
|
||||
{ "GENERIC", MEM_TYPE_SGRAM, 8, 0x001fa569, 0x00000037} ,
|
||||
{ "GLINK", MEM_TYPE_SGRAM, 8, 0x001ea169, 0x00000037} ,
|
||||
{ "MOSYS", MEM_TYPE_SGRAM, 16, 0x00015495, 0x00000027} ,
|
||||
{ "MOSYS", MEM_TYPE_SGRAM, 8, 0x00155495, 0x00000027} ,
|
||||
{ "SAMSUNG", MEM_TYPE_SDRAM, 16, 0x00169d25, 0x00000037} ,
|
||||
{ "SAMSUNG", MEM_TYPE_SGRAM, 16, 0x00169d25, 0x00000037} ,
|
||||
{ "SAMSUNG", MEM_TYPE_SGRAM, 8, 0x00169d25, 0x00000037} ,
|
||||
{ "SIEMENS", MEM_TYPE_SGRAM, 8, 0x0016a169, 0x00000037} ,
|
||||
{ "TOSHIBA", MEM_TYPE_SGRAM, 8, 0x0016a565, 0x00000037} ,
|
||||
};
|
||||
#define MEM_TABLE_SIZE (sizeof(memTable)/sizeof(struct memTable_st))
|
||||
|
||||
#define MEM_ETRON_SGRAM_16 0
|
||||
#define MEM_ETRON_SGRAM_8 1
|
||||
#define MEM_GENERIC_SDRAM_16 2
|
||||
#define MEM_GENERIC_SGRAM_16 3
|
||||
#define MEM_GENERIC_SGRAM_8 4
|
||||
#define MEM_GLINK_SGRAM_8 5
|
||||
#define MEM_MOSYS_SGRAM_16 6
|
||||
#define MEM_MOSYS_SGRAM_8 7
|
||||
#define MEM_SAMSUNG_SDRAM_16 8
|
||||
#define MEM_SAMSUNG_SGRAM_16 9
|
||||
#define MEM_SAMSUNG_SGRAM_8 10
|
||||
#define MEM_SIEMENS_SGRAM_8 11
|
||||
#define MEM_TOSHIBA_SGRAM_8 12
|
||||
|
||||
#define MEM_DEFAULT_SGRAM_8 MEM_GENERIC_SGRAM_8
|
||||
#define MEM_DEFAULT_SGRAM_16 MEM_GENERIC_SGRAM_16
|
||||
#define MEM_DEFAULT_SDRAM_16 MEM_GENERIC_SDRAM_16
|
||||
|
||||
446
glide2x/h3/cinit/modetabl.h
Normal file
446
glide2x/h3/cinit/modetabl.h
Normal file
@@ -0,0 +1,446 @@
|
||||
/*
|
||||
** 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
|
||||
**
|
||||
** File name: modetabl.h
|
||||
**
|
||||
** Description: Mode table that contains modes and related register values.
|
||||
**
|
||||
** $History: modetabl.h $
|
||||
**
|
||||
** ***************** Version 1 *****************
|
||||
** User: Sapphire Date: 3/16/99 Time: 7:28p
|
||||
** Created in $/Releases/Voodoo3/V3_OEM_100/3dfx/devel/H3/cinit
|
||||
**
|
||||
** ***************** Version 25 *****************
|
||||
** User: Stb_srogers Date: 3/02/99 Time: 4:04p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Adding the 960x720 & 1280x960 modes
|
||||
**
|
||||
** ***************** Version 24 *****************
|
||||
** User: Stb_srogers Date: 2/16/99 Time: 5:04p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
**
|
||||
** ***************** Version 22 *****************
|
||||
** User: Stb_srogers Date: 2/11/99 Time: 6:59p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
**
|
||||
** ***************** Version 21 *****************
|
||||
** User: Stb_srogers Date: 2/09/99 Time: 11:30a
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
**
|
||||
** ***************** Version 20 *****************
|
||||
** User: Andrew Date: 2/07/99 Time: 4:45p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Change the clocks as per Malcolm Gray suggestion and added new modes
|
||||
** 1600x1024, 1920x1200, and 2048x1536.
|
||||
**
|
||||
** ***************** Version 19 *****************
|
||||
** User: Stb_srogers Date: 1/29/99 Time: 8:08a
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
**
|
||||
** ***************** Version 18 *****************
|
||||
** User: Andrew Date: 1/12/99 Time: 12:40p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Removed my changes since complaint mode is 75 Hz
|
||||
**
|
||||
** ***************** Version 16 *****************
|
||||
** User: Michael Date: 1/11/99 Time: 3:54p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Implement the 3Dfx/STB unified header.
|
||||
**
|
||||
** ***************** Version 15 *****************
|
||||
** User: Michael Date: 12/31/98 Time: 9:55a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** STB's customized refresh rates. Customizations are surrounded by
|
||||
** "#ifdef INCSTBCUST".
|
||||
**
|
||||
** ***************** Version 14 *****************
|
||||
** User: Andrew Date: 8/31/98 Time: 11:26p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** John's fixes for 800x600
|
||||
**
|
||||
** ***************** Version 13 *****************
|
||||
** User: Andrew Date: 8/20/98 Time: 10:11p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Updated 320x240@60,72 400x300 @ 72 & 85, 1792x1392 changed from 72 to
|
||||
** 75.
|
||||
**
|
||||
** ***************** Version 12 *****************
|
||||
** User: Andrew Date: 7/27/98 Time: 11:12a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Added updates for 400x300 modes since SCANLINEDBL was not set in xls
|
||||
** file
|
||||
**
|
||||
** ***************** Version 11 *****************
|
||||
** User: Andrew Date: 7/21/98 Time: 2:42p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Modified to support the new final mode list -- add new refreshs
|
||||
** 320x200, 320x240, 400x300, 512x384, and 1152x864.
|
||||
**
|
||||
** ***************** Version 10 *****************
|
||||
** User: Andrew Date: 7/04/98 Time: 10:37a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Got modetabl.h the right way.....Differences hsync skew on 1920x1440
|
||||
** and clocks on low-rez modes
|
||||
**
|
||||
** ***************** Version 9 *****************
|
||||
** User: Andrew Date: 6/29/98 Time: 10:58a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Changed Dot Clock on 1792x1344 and Refresh Rate from 70 to 72. Changed
|
||||
** CR04 on 1792x1344 @ 60 Hz
|
||||
**
|
||||
** ***************** Version 8 *****************
|
||||
** User: Andrew Date: 6/24/98 Time: 9:32a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** New mode additions for 1792x1344 and 1856x1392 plus 1152x864 @ 100
|
||||
**
|
||||
** ***************** Version 7 *****************
|
||||
** User: Andrew Date: 5/19/98 Time: 6:12p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** changed 1800 to 1808 and changed timing to 1808
|
||||
**
|
||||
** ***************** Version 6 *****************
|
||||
** User: Andrew Date: 5/07/98 Time: 11:24a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Added modes 1792x1440 and 1920x1440. 1800x1440 was updated but still
|
||||
** does not work
|
||||
**
|
||||
** ***************** Version 5 *****************
|
||||
** User: Andrew Date: 4/22/98 Time: 2:58p
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Changed clock at 1280x960 @ 75 hz and 1600x1200 @ 85 Hz and added
|
||||
** broken 1800x1440
|
||||
**
|
||||
** ***************** Version 4 *****************
|
||||
** User: Ken Date: 4/15/98 Time: 6:42p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
** added unified header to all files, with revision, etc. info in it
|
||||
**
|
||||
*/
|
||||
|
||||
|
||||
// Begin STB Changes
|
||||
// STB-SR 12/23/98 changing modetable
|
||||
// STB-SR 12/30/98 All but 720x350 and 720x400 work
|
||||
// STB-SR 01/07/99 720x350 and 720x400 work. I had assumed that SR1 (Sequencer
|
||||
// Register 1), was always 0x21. Bit 0 defines wether or not the character
|
||||
// width is 8 or 9. 1->8 pixel wide char, 0->9 pixel char. The actual change
|
||||
// was made in minivdd\modetabl.h
|
||||
// STB-SR 02/11/99 Adding STB & 3Dfx unified modes for Voodoo3
|
||||
#ifdef H4
|
||||
// If you need to make changes to the modetable, you must also edit
|
||||
// dd16\h3.c and dd16\setmode.c
|
||||
// r[0] r[1] r[2] r[3] r[4] r[5] r[6] r[7] r[8] r[9] r[10] r[11] r[12] r[13] r[14] r[15] r[16] r[17] r[18] r[19] r[20]
|
||||
// x y rr, 0h 1h 2h 3h 4h 5h 6h 7h 9h 10h 11h 12h 15h 16h 1ah 1bh 3c2 SR1 pllctrl0 dacmode
|
||||
// x y rr, Htotl HDEnE HBlSt HBlEn HSySt HSyEn Vtotl Ovflw MxSLn VSySt VSyEn VDEnE VBlSt VBlEn HExtn VExtn MiscO SR1 pllctrl0 dacmode
|
||||
// New Standardized modetable for both 3Dfx and STB
|
||||
{ 640, 480, 60, 0x5f, 0x4f, 0x4f, 0x83, 0x51, 0x9d, 0x0b, 0x3e, 0x40, 0xe9,
|
||||
0x2b, 0xdf, 0xdf, 0x0c, 0x00, 0x00, 0xcf, 0x21, 0x37, 0xd1, 0x00},
|
||||
{ 640, 480, 72, 0x63, 0x4f, 0x4f, 0x87, 0x52, 0x97, 0x06, 0x3e, 0x40, 0xe8,
|
||||
0x2b, 0xdf, 0xdf, 0x07, 0x00, 0x00, 0xcf, 0x21, 0x0f, 0x56, 0x00},
|
||||
{ 640, 480, 75, 0x64, 0x4f, 0x4f, 0x88, 0x51, 0x99, 0xf2, 0x1f, 0x40, 0xe0,
|
||||
0x23, 0xdf, 0xdf, 0xf3, 0x00, 0x00, 0xcf, 0x21, 0x0f, 0x56, 0x00},
|
||||
{ 640, 480, 85, 0x63, 0x4f, 0x4f, 0x87, 0x56, 0x9d, 0xfb, 0x1f, 0x40, 0xe0,
|
||||
0x23, 0xdf, 0xdf, 0xfc, 0x00, 0x00, 0xcf, 0x21, 0x1f, 0xb3, 0x00},
|
||||
{ 800, 600, 56, 0x7b, 0x63, 0x63, 0x9f, 0x66, 0x8f, 0x6f, 0xf0, 0x60, 0x58,
|
||||
0x2a, 0x57, 0x57, 0x70, 0x80, 0x00, 0x0f, 0x21, 0x1f, 0xb3, 0x00},
|
||||
{ 800, 600, 60, 0x7f, 0x63, 0x63, 0x83, 0x68, 0x18, 0x72, 0xf0, 0x60, 0x58,
|
||||
0x2c, 0x57, 0x57, 0x73, 0xa0, 0x00, 0x0f, 0x21, 0x27, 0xf4, 0x00},
|
||||
{ 800, 600, 72, 0x7d, 0x63, 0x63, 0x81, 0x6a, 0x19, 0x98, 0xf0, 0x60, 0x7c,
|
||||
0x22, 0x57, 0x57, 0x99, 0xa0, 0x00, 0x0f, 0x21, 0x1f, 0xf9, 0x00},
|
||||
{ 800, 600, 75, 0x7f, 0x63, 0x63, 0x83, 0x65, 0x0f, 0x6f, 0xf0, 0x60, 0x58,
|
||||
0x2b, 0x57, 0x57, 0x70, 0xa0, 0x00, 0x0f, 0x21, 0x07, 0x51, 0x00},
|
||||
{ 800, 600, 85, 0x7e, 0x63, 0x63, 0x82, 0x67, 0x0f, 0x75, 0xf0, 0x60, 0x58,
|
||||
0x2b, 0x57, 0x57, 0x76, 0xa0, 0x00, 0x0f, 0x21, 0x17, 0xda, 0x00},
|
||||
{ 1024, 768, 60, 0xa3, 0x7f, 0x7f, 0x87, 0x82, 0x93, 0x24, 0xf5, 0x60, 0x02,
|
||||
0x28, 0xff, 0xff, 0x25, 0x20, 0x00, 0xcf, 0x21, 0x07, 0x6b, 0x00},
|
||||
{ 1024, 768, 70, 0xa1, 0x7f, 0x7f, 0x85, 0x82, 0x93, 0x24, 0xf5, 0x60, 0x02,
|
||||
0x28, 0xff, 0xff, 0x25, 0x20, 0x00, 0xcf, 0x21, 0x2a, 0xf9, 0x00},
|
||||
{ 1024, 768, 75, 0x9f, 0x7f, 0x7f, 0x83, 0x81, 0x8d, 0x1e, 0xf5, 0x60, 0x00,
|
||||
0x23, 0xff, 0xff, 0x1f, 0x20, 0x00, 0x0f, 0x21, 0x06, 0x40, 0x00},
|
||||
{ 1024, 768, 85, 0xa7, 0x7f, 0x7f, 0x8b, 0x85, 0x91, 0x26, 0xf5, 0x60, 0x00,
|
||||
0x23, 0xff, 0xff, 0x27, 0x20, 0x00, 0x0f, 0x21, 0x0e, 0x82, 0x00},
|
||||
{ 1152, 864, 60, 0xb3, 0x8f, 0x8f, 0x97, 0x93, 0x9f, 0x87, 0xff, 0x60, 0x60,
|
||||
0x23, 0x5f, 0x5f, 0x88, 0x00, 0x00, 0x0f, 0x21, 0x26, 0xf4, 0x00},
|
||||
{ 1152, 864, 70, 0xb4, 0x8f, 0x8f, 0x98, 0x93, 0x9f, 0x8e, 0xff, 0x60, 0x60,
|
||||
0x23, 0x5f, 0x5f, 0x8f, 0x00, 0x00, 0x0f, 0x21, 0x0e, 0x82, 0x00},
|
||||
{ 1152, 864, 75, 0xc3, 0x8f, 0x8f, 0x87, 0x97, 0x07, 0x82, 0xff, 0x60, 0x60,
|
||||
0x23, 0x5f, 0x5f, 0x83, 0xa0, 0x00, 0x0f, 0x21, 0x12, 0xb3, 0x00},
|
||||
{ 1152, 864, 85, 0xbf, 0x8f, 0x8f, 0x83, 0x97, 0x07, 0x8d, 0xff, 0x60, 0x60,
|
||||
0x23, 0x5f, 0x5f, 0x8e, 0xa0, 0x00, 0x0f, 0x21, 0x06, 0x64, 0x00},
|
||||
{ 1280, 960, 60, 0xdc, 0x9f, 0x9f, 0x80, 0xab, 0x99, 0xe6, 0xff, 0x60, 0xc0,
|
||||
0x23, 0xbf, 0xbf, 0xe7, 0xa0, 0x00, 0x0f, 0x21, 0x12, 0xb3, 0x00},
|
||||
{ 1280, 960, 85, 0xd3, 0x9f, 0x9f, 0x97, 0xa7, 0x1b, 0xf1, 0xff, 0x60, 0xc0,
|
||||
0x23, 0xbf, 0xbf, 0xf2, 0xa0, 0x00, 0x0f, 0x21, 0x0a, 0xa4, 0x00},
|
||||
{ 1280, 1024, 60, 0xce, 0x9f, 0x9f, 0x92, 0xa5, 0x13, 0x28, 0x5a, 0x60, 0x00,
|
||||
0x23, 0xff, 0xff, 0x29, 0xa0, 0x41, 0x0f, 0x21, 0x12, 0xb3, 0x00},
|
||||
{ 1280, 1024, 75, 0xce, 0x9f, 0x9f, 0x92, 0xa1, 0x13, 0x28, 0x5a, 0x60, 0x00,
|
||||
0x23, 0xff, 0xff, 0x29, 0xa0, 0x41, 0x0f, 0x21, 0x0a, 0x95, 0x00},
|
||||
{ 1280, 1024, 85, 0xd3, 0x9f, 0x9f, 0x97, 0xa7, 0x1b, 0x2e, 0x5a, 0x60, 0x00,
|
||||
0x23, 0xff, 0xff, 0x2f, 0xa0, 0x41, 0x0f, 0x21, 0x05, 0x40, 0x00},
|
||||
{ 1600, 1024, 60, 0x00, 0xc7, 0xc7, 0x84, 0xcb, 0x1f, 0x2c, 0x5a, 0x60, 0x02,
|
||||
0x25, 0xff, 0xff, 0x2d, 0x21, 0x41, 0xcf, 0x21, 0x0e, 0xb9, 0x00},
|
||||
{ 1600, 1024, 76, 0x00, 0xc7, 0xc7, 0x84, 0xcb, 0x1f, 0x2c, 0x5a, 0x60, 0x02,
|
||||
0x25, 0xff, 0xff, 0x2d, 0x21, 0x41, 0xcf, 0x21, 0x15, 0xa4, 0x00},
|
||||
{ 1600, 1024, 85, 0x00, 0xc7, 0xc7, 0x84, 0xcb, 0x1f, 0x2c, 0x5a, 0x60, 0x02,
|
||||
0x25, 0xff, 0xff, 0x2d, 0x21, 0x41, 0xcf, 0x21, 0x09, 0x68, 0x00},
|
||||
{ 1600, 1200, 60, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x19, 0xad, 0x00},
|
||||
{ 1600, 1200, 65, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x21, 0xeb, 0x00},
|
||||
{ 1600, 1200, 70, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x09, 0x64, 0x00},
|
||||
{ 1600, 1200, 75, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x05, 0x50, 0x00},
|
||||
{ 1600, 1200, 80, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x11, 0xad, 0x00},
|
||||
{ 1600, 1200, 85, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x05, 0x5b, 0x00},
|
||||
{ 1600, 1200, 100, 0x00, 0xc7, 0xc7, 0x84, 0xcf, 0x07, 0xe0, 0x10, 0x40, 0xb0,
|
||||
0x23, 0xaf, 0xaf, 0xe1, 0xa1, 0x55, 0x0f, 0x21, 0x15, 0xfd, 0x00},
|
||||
{ 1792, 1344, 60, 0x94, 0x6f, 0x6f, 0x98, 0x77, 0x04, 0x70, 0x1f, 0x40, 0x40,
|
||||
0x23, 0x3f, 0x3f, 0x71, 0x20, 0x55, 0x4f, 0x21, 0x0d, 0x8d, 0x01},
|
||||
{ 1792, 1344, 75, 0x95, 0x6f, 0x6f, 0x99, 0x75, 0x03, 0x87, 0x1f, 0x40, 0x40,
|
||||
0x23, 0x3f, 0x3f, 0x88, 0x20, 0x55, 0x4f, 0x21, 0x15, 0xfd, 0x01},
|
||||
{ 1856, 1392, 60, 0x99, 0x73, 0x73, 0x9d, 0x79, 0x07, 0x9d, 0x1f, 0x40, 0x70,
|
||||
0x23, 0x6f, 0x6f, 0x9e, 0x20, 0x55, 0x4f, 0x21, 0x09, 0x78, 0x01},
|
||||
{ 1856, 1392, 75, 0x9b, 0x73, 0x73, 0x9f, 0x7b, 0x09, 0xda, 0x1f, 0x40, 0x70,
|
||||
0x23, 0x6f, 0x6f, 0xdb, 0x20, 0x55, 0x4f, 0x21, 0x09, 0x9f, 0x01},
|
||||
{ 1920, 1080, 60, 0x8f, 0x77, 0x77, 0x93, 0x79, 0x02, 0x63, 0x10, 0x40, 0x3a,
|
||||
0x2d, 0x37, 0x37, 0x64, 0x20, 0x55, 0xcf, 0x21, 0x05, 0x41, 0x01},
|
||||
{ 1920, 1080, 72, 0x9b, 0x77, 0x77, 0x9f, 0x7a, 0x08, 0x92, 0x10, 0x40, 0x3a,
|
||||
0x2d, 0x37, 0x37, 0x93, 0x20, 0x55, 0xcf, 0x21, 0x11, 0xb3, 0x01},
|
||||
{ 1920, 1200, 60, 0x9d, 0x77, 0x77, 0x81, 0x7b, 0x8b, 0xe0, 0x10, 0x40, 0xb2,
|
||||
0x25, 0xaf, 0xaf, 0xe1, 0x20, 0x55, 0xcf, 0x21, 0x1d, 0xf2, 0x01},
|
||||
{ 1920, 1200, 76, 0x9d, 0x77, 0x77, 0x81, 0x7b, 0x8b, 0xe0, 0x10, 0x40, 0xb2,
|
||||
0x25, 0xaf, 0xaf, 0xe1, 0x20, 0x55, 0xcf, 0x21, 0x15, 0xee, 0x01},
|
||||
{ 1920, 1440, 60, 0x9e, 0x77, 0x77, 0x82, 0x7f, 0x8c, 0xda, 0x1f, 0x40, 0xa0,
|
||||
0x23, 0x9f, 0x9f, 0xdb, 0x20, 0x55, 0x4f, 0x21, 0x05, 0x60, 0x01},
|
||||
{ 1920, 1440, 75, 0xa0, 0x77, 0x77, 0x84, 0x80, 0x8e, 0xda, 0x1f, 0x40, 0xa0,
|
||||
0x23, 0x9f, 0x9f, 0xdb, 0x20, 0x55, 0x4f, 0x21, 0x09, 0xa4, 0x01},
|
||||
{ 2048, 1536, 60, 0x98, 0x7f, 0x7f, 0x9c, 0x82, 0x10, 0x3b, 0xba, 0x40, 0x00,
|
||||
0x23, 0xff, 0xff, 0x3c, 0x20, 0x55, 0x0f, 0x21, 0x09, 0x84, 0x01},
|
||||
{ 2048, 1536, 75, 0xa1, 0x7f, 0x7f, 0x85, 0x83, 0x91, 0x44, 0xba, 0x40, 0x00,
|
||||
0x23, 0xff, 0xff, 0x45, 0x20, 0x55, 0x0f, 0x21, 0x05, 0x84, 0x01},
|
||||
{ 320, 200, 70, 0x2d, 0x27, 0x27, 0x91, 0x28, 0x8e, 0xbf, 0x1f, 0xc0, 0x9c,
|
||||
0x2e, 0x8f, 0x8f, 0xc0, 0x80, 0x00, 0x4f, 0x21, 0x73, 0xd1, 0x00},
|
||||
{ 320, 200, 85, 0x2f, 0x27, 0x27, 0x93, 0x29, 0x8d, 0xbb, 0x1f, 0xc0, 0x90,
|
||||
0x23, 0x8f, 0x8f, 0xbc, 0x80, 0x00, 0x4f, 0x21, 0x0f, 0x2a, 0x00},
|
||||
{ 320, 240, 60, 0x2d, 0x27, 0x27, 0x91, 0x28, 0x8e, 0x0b, 0x3e, 0xc0, 0xe9,
|
||||
0x2b, 0xdf, 0xdf, 0x0c, 0x80, 0x00, 0xcf, 0x21, 0x73, 0xd1, 0x00},
|
||||
{ 320, 240, 72, 0x2f, 0x27, 0x27, 0x93, 0x29, 0x8b, 0x06, 0x3e, 0xc0, 0xe8,
|
||||
0x2b, 0xdf, 0xdf, 0x07, 0x80, 0x00, 0xcf, 0x21, 0x0f, 0x2a, 0x00},
|
||||
{ 320, 240, 75, 0x30, 0x27, 0x27, 0x94, 0x28, 0x8c, 0xf2, 0x1f, 0xc0, 0xe0,
|
||||
0x23, 0xdf, 0xdf, 0xf3, 0x80, 0x00, 0xcf, 0x21, 0x63, 0xe5, 0x00},
|
||||
{ 320, 240, 85, 0x2f, 0x27, 0x27, 0x93, 0x2a, 0x8e, 0xfb, 0x1f, 0xc0, 0xe0,
|
||||
0x23, 0xdf, 0xdf, 0xfc, 0x80, 0x00, 0xcf, 0x21, 0x43, 0xb3, 0x00},
|
||||
{ 400, 300, 60, 0x3d, 0x31, 0x31, 0x81, 0x34, 0x1c, 0x72, 0xf0, 0xe0, 0x58,
|
||||
0x2c, 0x57, 0x57, 0x73, 0xa0, 0x00, 0x0f, 0x21, 0x3f, 0xbc, 0x00},
|
||||
{ 400, 300, 72, 0x3c, 0x31, 0x31, 0x80, 0x35, 0x1c, 0x98, 0xf0, 0xe0, 0x7c,
|
||||
0x22, 0x57, 0x57, 0x99, 0xa0, 0x00, 0x0f, 0x21, 0x43, 0xf9, 0x00},
|
||||
{ 400, 300, 75, 0x3d, 0x31, 0x31, 0x81, 0x32, 0x17, 0x6f, 0xf0, 0xe0, 0x58,
|
||||
0x2b, 0x57, 0x57, 0x70, 0xa0, 0x00, 0x0f, 0x21, 0x13, 0x51, 0x00},
|
||||
{ 400, 300, 85, 0x3d, 0x31, 0x31, 0x81, 0x33, 0x17, 0x75, 0xf0, 0xe0, 0x58,
|
||||
0x2b, 0x57, 0x57, 0x76, 0xa0, 0x00, 0x0f, 0x21, 0x13, 0x5d, 0x00},
|
||||
{ 512, 384, 60, 0x4f, 0x3f, 0x3f, 0x93, 0x41, 0x09, 0x24, 0xf5, 0xe0, 0x02,
|
||||
0x28, 0xff, 0xff, 0x25, 0x20, 0x00, 0xcf, 0x21, 0x2f, 0xea, 0x00},
|
||||
{ 512, 384, 70, 0x4e, 0x3f, 0x3f, 0x92, 0x41, 0x09, 0x24, 0xf5, 0xe0, 0x02,
|
||||
0x28, 0xff, 0xff, 0x25, 0x20, 0x00, 0xcf, 0x21, 0x2b, 0xf9, 0x00},
|
||||
{ 512, 384, 75, 0x4d, 0x3f, 0x3f, 0x91, 0x40, 0x06, 0x1e, 0xf5, 0xe0, 0x00,
|
||||
0x23, 0xff, 0xff, 0x1f, 0x20, 0x00, 0xcf, 0x21, 0x07, 0x40, 0x00},
|
||||
{ 512, 384, 85, 0x51, 0x3f, 0x3f, 0x95, 0x42, 0x08, 0x26, 0xf5, 0xe0, 0x00,
|
||||
0x23, 0xff, 0xff, 0x27, 0x20, 0x00, 0xcf, 0x21, 0x0f, 0x82, 0x00},
|
||||
{ 640, 400, 70, 0x5f, 0x4f, 0x4f, 0x83, 0x51, 0x9d, 0xbf, 0x1f, 0x40, 0x9c,
|
||||
0x2e, 0x8f, 0x8f, 0xc0, 0x00, 0x00, 0x4f, 0x21, 0x37, 0xd1, 0x00},
|
||||
{ 640, 400, 85, 0x63, 0x4f, 0x4f, 0x87, 0x53, 0x9b, 0xbb, 0x1f, 0x40, 0x90,
|
||||
0x23, 0x8f, 0x8f, 0xbc, 0x00, 0x00, 0x4f, 0x21, 0x0f, 0x56, 0x00},
|
||||
{ 720, 480, 60, 0x6b, 0x59, 0x59, 0x8f, 0x5b, 0x8a, 0x0b, 0x3e, 0x40, 0xe9,
|
||||
0x2b, 0xdf, 0xdf, 0x0c, 0x80, 0x00, 0xcf, 0x21, 0x0b, 0x3d, 0x00},
|
||||
{ 720, 480, 72, 0x6e, 0x59, 0x59, 0x92, 0x5b, 0x8c, 0x06, 0x3e, 0x40, 0xe8,
|
||||
0x2b, 0xdf, 0xdf, 0x07, 0x80, 0x00, 0xcf, 0x21, 0x2f, 0xfb, 0x00},
|
||||
{ 720, 480, 85, 0x70, 0x59, 0x59, 0x94, 0x61, 0x89, 0xfb, 0x1f, 0x40, 0xe0,
|
||||
0x23, 0xdf, 0xdf, 0xfc, 0x80, 0x00, 0xcf, 0x21, 0x1b, 0xb3, 0x00},
|
||||
{ 720, 576, 72, 0x70, 0x59, 0x59, 0x94, 0x5d, 0x89, 0x80, 0xf0, 0x60, 0x41,
|
||||
0x25, 0x3f, 0x3f, 0x81, 0x80, 0x00, 0x0f, 0x21, 0x13, 0x8f, 0x00},
|
||||
{ 720, 576, 100, 0x70, 0x59, 0x59, 0x94, 0x5d, 0x89, 0x80, 0xf0, 0x60, 0x41,
|
||||
0x25, 0x3f, 0x3f, 0x81, 0x80, 0x00, 0x0f, 0x21, 0x17, 0xe9, 0x00},
|
||||
#else // #ifdef H4
|
||||
// STB End Changes
|
||||
|
||||
|
||||
{320, 200, 70, 0x2f, 0x27, 0x27, 0x93, 0x2a, 0x8e, 0xbb, 0x1f, 0x40, 0x91,
|
||||
0x24, 0x8f, 0x8f, 0xbc, 0x80, 0x00, 0x4f, 0x21, 0xee, 0xdb, 0x00},
|
||||
{320, 200, 85, 0x2f, 0x27, 0x27, 0x93, 0x2a, 0x8e, 0xbb, 0x1f, 0x40, 0x91,
|
||||
0x24, 0x8f, 0x8f, 0xbc, 0x80, 0x00, 0x4f, 0x21, 0x37, 0x82, 0x00},
|
||||
{320, 240, 60, 0x2d, 0x27, 0x27, 0x8f, 0x29, 0x8e, 0x0b, 0x3e, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xfc, 0x80, 0x00, 0xcf, 0x21, 0xea, 0xd1, 0x00},
|
||||
{320, 240, 72, 0x2f, 0x27, 0x27, 0x93, 0x2a, 0x8e, 0x06, 0x3e, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xfc, 0x80, 0x00, 0xcf, 0x21, 0x37, 0x82, 0x00},
|
||||
{320, 240, 85, 0x2f, 0x27, 0x27, 0x93, 0x2a, 0x8e, 0xfb, 0x1f, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xfc, 0x80, 0x00, 0xcf, 0x21, 0x3f, 0xa9, 0x00},
|
||||
{400, 300, 60, 0x3d, 0x31, 0x31, 0x81, 0x34, 0x1c, 0x72, 0xf0, 0x60, 0x59,
|
||||
0x2d, 0x57, 0x57, 0x73, 0xa0, 0x00, 0x0f, 0x21, 0xf4, 0x56, 0x00},
|
||||
{400, 300, 72, 0x3c, 0x31, 0x31, 0x80, 0x34, 0x1b, 0x98, 0xf0, 0x60, 0x7d,
|
||||
0x23, 0x57, 0x57, 0x99, 0xa0, 0x00, 0x0f, 0x21, 0xf4, 0x6c, 0x00},
|
||||
{400, 300, 85, 0x3d, 0x31, 0x31, 0x80, 0x33, 0x1b, 0x75, 0xf0, 0x60, 0x59,
|
||||
0x2c, 0x57, 0x57, 0x76, 0xa0, 0x00, 0x0f, 0x21, 0xb8, 0x5d, 0x00},
|
||||
{512, 384, 60, 0x4f, 0x3f, 0x3f, 0x93, 0x41, 0x0a, 0x24, 0xf5, 0x60, 0x04,
|
||||
0x2a, 0xff, 0xff, 0x25, 0x20, 0x00, 0xcf, 0x21, 0x5e, 0xe1, 0x00},
|
||||
{512, 384, 72, 0x4e, 0x3f, 0x3f, 0x92, 0x41, 0x0a, 0x24, 0xf5, 0x60, 0x03,
|
||||
0x29, 0xff, 0xff, 0x25, 0x20, 0x00, 0xcf, 0x21, 0xbc, 0x82, 0x00},
|
||||
{512, 384, 75, 0x4d, 0x3f, 0x3f, 0x91, 0x41, 0x07, 0x1e, 0xf5, 0x60, 0x01,
|
||||
0x24, 0xff, 0xff, 0x1f, 0x20, 0x00, 0x0f, 0x21, 0x2a, 0x82, 0x00},
|
||||
{512, 384, 85, 0x51, 0x3f, 0x3f, 0x95, 0x43, 0x09, 0x26, 0xf5, 0x60, 0x01,
|
||||
0x24, 0xff, 0xff, 0x27, 0x20, 0x00, 0x0f, 0x21, 0x36, 0xc4, 0x00},
|
||||
{640, 350, 85, 0x63, 0x4f, 0x4f, 0x87, 0x54, 0x9c, 0xbb, 0x1f, 0x40, 0x7e,
|
||||
0x21, 0x5d, 0x5d, 0xbc, 0x20, 0x00, 0x8f, 0x21, 0x36, 0x82, 0x00},
|
||||
{640, 400, 70, 0x63, 0x4f, 0x4f, 0x87, 0x54, 0x9c, 0xbb, 0x1f, 0x40, 0x91,
|
||||
0x24, 0x8f, 0x8f, 0xbc, 0x20, 0x00, 0x4f, 0x21, 0xed, 0xdb, 0x00},
|
||||
{640, 400, 85, 0x63, 0x4f, 0x4f, 0x87, 0x54, 0x9c, 0xbb, 0x1f, 0x40, 0x91,
|
||||
0x24, 0x8f, 0x8f, 0xbc, 0x20, 0x00, 0x4f, 0x21, 0x36, 0x82, 0x00},
|
||||
{640, 480, 60, 0x5f, 0x4f, 0x4f, 0x83, 0x52, 0x9e, 0x0b, 0x3e, 0x40, 0xea,
|
||||
0x2c, 0xdf, 0xdf, 0x0c, 0x20, 0x00, 0xcf, 0x21, 0x7d, 0x72, 0x00},
|
||||
{640, 480, 72, 0x63, 0x4f, 0x4f, 0x87, 0x56, 0x9b, 0x06, 0x3e, 0x40, 0xe9,
|
||||
0x2c, 0xdf, 0xdf, 0x07, 0x20, 0x00, 0xcf, 0x21, 0x36, 0x82, 0x00},
|
||||
{640, 480, 75, 0x64, 0x4f, 0x4f, 0x88, 0x51, 0x99, 0xf2, 0x1f, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xf3, 0x20, 0x00, 0xcf, 0x21, 0x36, 0x82, 0x00},
|
||||
{640, 480, 85, 0x63, 0x4f, 0x4f, 0x87, 0x56, 0x9e, 0xfb, 0x1f, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xfc, 0x20, 0x00, 0xcf, 0x21, 0x3e, 0xa9, 0x00},
|
||||
{640, 480, 100, 0x63, 0x4f, 0x4f, 0x87, 0x56, 0x9e, 0xfb, 0x1f, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xfc, 0x20, 0x00, 0xcf, 0x21, 0x58, 0x45, 0x00},
|
||||
{640, 480, 120, 0x63, 0x4f, 0x4f, 0x87, 0x56, 0x9e, 0xfb, 0x1f, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0xfc, 0x20, 0x00, 0xcf, 0x21, 0x48, 0x45, 0x00},
|
||||
{720, 400, 72, 0x70, 0x59, 0x59, 0x94, 0x5e, 0x87, 0xbc, 0x1f, 0x40, 0x91,
|
||||
0x24, 0x8f, 0x8f, 0xbd, 0xa0, 0x00, 0x4f, 0x21, 0x20, 0x13, 0x00},
|
||||
{720, 400, 85, 0x70, 0x59, 0x59, 0x94, 0x5e, 0x87, 0xbc, 0x1f, 0x40, 0x91,
|
||||
0x24, 0x8f, 0x8f, 0xbd, 0xa0, 0x00, 0x4f, 0x21, 0xb8, 0x75, 0x00},
|
||||
{720, 480, 60, 0x70, 0x59, 0x59, 0x94, 0x5e, 0x87, 0x15, 0x3e, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0x16, 0xa0, 0x00, 0x4f, 0x21, 0xc4, 0x69, 0x00},
|
||||
{720, 480, 72, 0x70, 0x59, 0x59, 0x94, 0x5e, 0x87, 0x15, 0x3e, 0x40, 0xe1,
|
||||
0x24, 0xdf, 0xdf, 0x16, 0xa0, 0x00, 0x4f, 0x21, 0xd8, 0x8b, 0x00},
|
||||
{720, 576, 72, 0x70, 0x59, 0x59, 0x94, 0x5e, 0x87, 0x80, 0xf0, 0x60, 0x41,
|
||||
0x24, 0x3f, 0x3f, 0x81, 0xa0, 0x00, 0x4f, 0x21, 0xb0, 0x89, 0x00},
|
||||
{720, 576, 100, 0x70, 0x59, 0x59, 0x94, 0x5e, 0x87, 0x80, 0xf0, 0x60, 0x41,
|
||||
0x24, 0x3f, 0x3f, 0x81, 0xa0, 0x00, 0x4f, 0x21, 0xec, 0xfe, 0x00},
|
||||
{800, 600, 56, 0x7b, 0x63, 0x63, 0x9f, 0x69, 0x99, 0x6f, 0xf0, 0x60, 0x59,
|
||||
0x2b, 0x57, 0x57, 0x70, 0xa0, 0x00, 0x0f, 0x21, 0x3e, 0xa9, 0x00},
|
||||
{800, 600, 60, 0x7b, 0x63, 0x63, 0x9f, 0x6a, 0x94, 0x6c, 0xf0, 0x60, 0x59,
|
||||
0x2c, 0x57, 0x57, 0x6d, 0xa0, 0x00, 0x0f, 0x21, 0x06, 0x1e, 0x00},
|
||||
{800, 600, 72, 0x7d, 0x63, 0x63, 0x81, 0x68, 0x17, 0x98, 0xf0, 0x60, 0x7d,
|
||||
0x23, 0x57, 0x57, 0x99, 0x80, 0x00, 0x0f, 0x21, 0x06, 0x28, 0x00},
|
||||
{800, 600, 75, 0x7f, 0x63, 0x63, 0x83, 0x65, 0x0f, 0x6f, 0xf0, 0x60, 0x59,
|
||||
0x2c, 0x57, 0x57, 0x70, 0x80, 0x00, 0x0f, 0x21, 0x55, 0x9d, 0x00},
|
||||
{800, 600, 85, 0x7e, 0x63, 0x63, 0x82, 0x67, 0x0f, 0x75, 0xf0, 0x60, 0x59,
|
||||
0x2c, 0x57, 0x57, 0x76, 0x80, 0x00, 0x0f, 0x21, 0x31, 0x6c, 0x00},
|
||||
{800, 600, 100, 0x7e, 0x63, 0x63, 0x82, 0x66, 0x0e, 0x75, 0xf0, 0x60, 0x59,
|
||||
// 0x2c, 0x57, 0x57, 0x76, 0x80, 0x00, 0x0f, 0x21, 0x8c, 0xa9, 0x00},
|
||||
0x2c, 0x57, 0x57, 0x76, 0x80, 0x00, 0x0f, 0x21, 0x0b, 0x92, 0x00},
|
||||
{800, 600, 120, 0x7e, 0x63, 0x63, 0x82, 0x66, 0x0e, 0x75, 0xf0, 0x60, 0x59,
|
||||
0x2c, 0x57, 0x57, 0x76, 0x80, 0x00, 0x0f, 0x21, 0x24, 0x3b, 0x00},
|
||||
{1152, 864, 60, 0xb4, 0x8f, 0x8f, 0x98, 0x94, 0x80, 0x8e, 0xff, 0x60, 0x61,
|
||||
// 0x24, 0x5f, 0x5f, 0x8f, 0x80, 0x00, 0x0f, 0x21, 0x84, 0xc4, 0x00},
|
||||
0x24, 0x5f, 0x5f, 0x8f, 0x80, 0x00, 0x0f, 0x21, 0x0b, 0xb3, 0x00},
|
||||
{1152, 864, 75, 0xc3, 0x8f, 0x8f, 0x87, 0x98, 0x08, 0x82, 0xff, 0x60, 0x61,
|
||||
// 0x24, 0x5f, 0x5f, 0x83, 0xa0, 0x00, 0x0f, 0x21, 0x50, 0xa4, 0x00},
|
||||
0x24, 0x5f, 0x5f, 0x83, 0xa0, 0x00, 0x0f, 0x21, 0x12, 0xb3, 0x00},
|
||||
{1152, 864, 85, 0xc0, 0x8f, 0x8f, 0x84, 0x98, 0x08, 0x89, 0xff, 0x60, 0x61,
|
||||
// 0x24, 0x5f, 0x5f, 0x8a, 0xa0, 0x00, 0x0f, 0x21, 0x6c, 0xf4, 0x00},
|
||||
0x24, 0x5f, 0x5f, 0x8a, 0xa0, 0x00, 0x0f, 0x21, 0x16, 0xeb, 0x00},
|
||||
{1152, 864, 100, 0x5f, 0x47, 0x47, 0x83, 0x4c, 0x93, 0x82, 0xff, 0x60, 0x61,
|
||||
// 0x24, 0x5f, 0x5f, 0x83, 0x20, 0x00, 0x0f, 0x21, 0x40, 0xb3, 0x01},
|
||||
0x24, 0x5f, 0x5f, 0x83, 0x20, 0x00, 0x0f, 0x21, 0x0a, 0x9f, 0x01},
|
||||
{1024, 768, 60, 0xa3, 0x7f, 0x7f, 0x87, 0x83, 0x94, 0x24, 0xf5, 0x60, 0x04,
|
||||
// 0x2a, 0xff, 0xff, 0x25, 0x00, 0x00, 0xcf, 0x21, 0x5d, 0xe1, 0x00},
|
||||
0x2a, 0xff, 0xff, 0x25, 0x00, 0x00, 0xcf, 0x21, 0x07, 0x6b, 0x00},
|
||||
{1024, 768, 70, 0xa1, 0x7f, 0x7f, 0x85, 0x83, 0x94, 0x24, 0xf5, 0x60, 0x03,
|
||||
// 0x29, 0xff, 0xff, 0x25, 0x00, 0x00, 0xcf, 0x21, 0x4d, 0xda, 0x00},
|
||||
0x29, 0xff, 0xff, 0x25, 0x00, 0x00, 0xcf, 0x21, 0x13, 0xf9, 0x00},
|
||||
{1024, 768, 72, 0xa1, 0x7f, 0x7f, 0x85, 0x83, 0x94, 0x24, 0xf5, 0x60, 0x03,
|
||||
0x29, 0xff, 0xff, 0x25, 0x00, 0x00, 0xcf, 0x21, 0x74, 0xa5, 0x00},
|
||||
{1024, 768, 75, 0x9f, 0x7f, 0x7f, 0x83, 0x82, 0x8e, 0x1e, 0xf5, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x0f, 0x21, 0x29, 0x82, 0x00},
|
||||
0x24, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x0f, 0x21, 0x12, 0x82, 0x00},
|
||||
{1024, 768, 85, 0xa7, 0x7f, 0x7f, 0x8b, 0x86, 0x92, 0x26, 0xf5, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x27, 0x00, 0x00, 0x0f, 0x21, 0x35, 0xc4, 0x00},
|
||||
0x24, 0xff, 0xff, 0x27, 0x00, 0x00, 0x0f, 0x21, 0x0e, 0x82, 0x00},
|
||||
{1024, 768, 100, 0xa7, 0x7f, 0x7f, 0x8b, 0x86, 0x92, 0x26, 0xf5, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x27, 0x00, 0x00, 0x0f, 0x21, 0x3c, 0x82, 0x00},
|
||||
0x24, 0xff, 0xff, 0x27, 0x00, 0x00, 0x0f, 0x21, 0x06, 0x5b, 0x00},
|
||||
{1024, 768, 120, 0xa7, 0x7f, 0x7f, 0x8b, 0x86, 0x92, 0x26, 0xf5, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x27, 0x00, 0x00, 0x0f, 0x21, 0x50, 0xcb, 0x00},
|
||||
0x24, 0xff, 0xff, 0x27, 0x00, 0x00, 0x0f, 0x21, 0x0a, 0x93, 0x00},
|
||||
{1280, 960, 60, 0xdc, 0x9f, 0x9f, 0x80, 0xac, 0x9a, 0xe6, 0xff, 0x60, 0xc1,
|
||||
0x24, 0xbf, 0xbf, 0xe7, 0xa0, 0x00, 0x0f, 0x21, 0x50, 0xa4, 0x00},
|
||||
{1280, 960, 75, 0xcd, 0x9f, 0x9f, 0x91, 0xa4, 0x16, 0xe6, 0xff, 0x60, 0xc1,
|
||||
0x24, 0xbf, 0xbf, 0xe7, 0xa0, 0x00, 0x0f, 0x21, 0x0c, 0x2a, 0x00},
|
||||
{1280, 960, 85, 0x67, 0x4f, 0x4f, 0x8b, 0x54, 0x9e, 0xf1, 0xff, 0x60, 0xc1,
|
||||
0x24, 0xbf, 0xbf, 0xf2, 0x20, 0x00, 0x0f, 0x21, 0x38, 0xa4, 0x01},
|
||||
{1280, 1024, 60, 0xce, 0x9f, 0x9f, 0x92, 0xa6, 0x14, 0x28, 0x5a, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x29, 0xa0, 0x41, 0x0f, 0x21, 0x50, 0xa4, 0x00},
|
||||
0x24, 0xff, 0xff, 0x29, 0xa0, 0x41, 0x0f, 0x21, 0x12, 0xb3, 0x00},
|
||||
{1280, 1024, 75, 0xce, 0x9f, 0x9f, 0x92, 0xa2, 0x14, 0x28, 0x5a, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x29, 0xa0, 0x41, 0x0f, 0x21, 0x30, 0x82, 0x00},
|
||||
0x24, 0xff, 0xff, 0x29, 0xa0, 0x41, 0x0f, 0x21, 0x15, 0x82, 0x00},
|
||||
{1280, 1024, 85, 0x67, 0x4f, 0x4f, 0x8b, 0x54, 0x9e, 0x2e, 0x5a, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x2f, 0x20, 0x41, 0x0f, 0x21, 0x28, 0x82, 0x01},
|
||||
0x24, 0xff, 0xff, 0x2f, 0x20, 0x41, 0x0f, 0x21, 0x11, 0x82, 0x01},
|
||||
{1280, 1024, 100, 0x67, 0x4f, 0x4f, 0x8b, 0x54, 0x9e, 0x2e, 0x5a, 0x60, 0x01,
|
||||
// 0x24, 0xff, 0xff, 0x2f, 0x20, 0x41, 0x0f, 0x21, 0x3c, 0xda, 0x01},
|
||||
0x24, 0xff, 0xff, 0x2f, 0x20, 0x41, 0x0f, 0x21, 0x0a, 0xcd, 0x01},
|
||||
{1600, 1024, 76, 0x7e, 0x63, 0x63, 0x82, 0x66, 0x0f, 0x2c, 0x5a, 0x60, 0x03,
|
||||
0x06, 0xff, 0xff, 0x2d, 0x80, 0x41, 0xcf, 0x21, 0x4c, 0xf8, 0x01,},
|
||||
{1600, 1200, 60, 0x82, 0x63, 0x63, 0x86, 0x68, 0x14, 0xe0, 0x10, 0x40, 0xb1,
|
||||
// 0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x44, 0xd5, 0x01},
|
||||
0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x0a, 0xb3, 0x01},
|
||||
{1600, 1200, 65, 0x82, 0x63, 0x63, 0x86, 0x68, 0x14, 0xe0, 0x10, 0x40, 0xb1,
|
||||
// 0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x44, 0xe7, 0x01},
|
||||
0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x11, 0x91, 0x01},
|
||||
{1600, 1200, 70, 0x82, 0x63, 0x63, 0x86, 0x68, 0x14, 0xe0, 0x10, 0x40, 0xb1,
|
||||
// 0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x34, 0xc4, 0x01},
|
||||
0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x0d, 0x82, 0x01},
|
||||
{1600, 1200, 75, 0x82, 0x63, 0x63, 0x86, 0x68, 0x14, 0xe0, 0x10, 0x40, 0xb1,
|
||||
// 0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x30, 0xc4, 0x01},
|
||||
0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x09, 0x6f, 0x01},
|
||||
{1600, 1200, 80, 0x82, 0x63, 0x63, 0x86, 0x68, 0x14, 0xe0, 0x10, 0x40, 0xb1,
|
||||
// 0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x24, 0xa4, 0x01},
|
||||
0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x11, 0xb3, 0x01},
|
||||
{1600, 1200, 85, 0x82, 0x63, 0x63, 0x86, 0x68, 0x14, 0xe0, 0x10, 0x40, 0xb1,
|
||||
// 0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x0c, 0x4e, 0x01},
|
||||
0x24, 0xaf, 0xaf, 0xe1, 0x80, 0x55, 0x0f, 0x21, 0x09, 0x7e, 0x01},
|
||||
{1792, 1344, 60, 0x8e, 0x6f, 0x6f, 0x92, 0x71, 0x1f, 0x74, 0x1f, 0x40, 0x43,
|
||||
// 0x29, 0x3f, 0x3f, 0x75, 0x80, 0x55, 0x0f, 0x21, 0x30, 0xbf, 0x01},
|
||||
0x29, 0x3f, 0x3f, 0x75, 0x80, 0x55, 0x0f, 0x21, 0x15, 0xbf, 0x01},
|
||||
{1792, 1344, 75, 0x94, 0x6f, 0x6f, 0x98, 0x74, 0x01, 0x87, 0x1f, 0x40, 0x4a,
|
||||
// 0x4d, 0x3f, 0x3f, 0x88, 0x00, 0x55, 0x0f, 0x21, 0x0c, 0x59, 0x01},
|
||||
0x4d, 0x3f, 0x3f, 0x88, 0x00, 0x55, 0x0f, 0x21, 0x05, 0x6b, 0x01},
|
||||
{1856, 1392, 60, 0x92, 0x73, 0x73, 0x96, 0x7c, 0x03, 0xa4, 0x1f, 0x40, 0x73,
|
||||
// 0x29, 0x6f, 0x6f, 0xa5, 0x00, 0x55, 0x0f, 0x21, 0x3c, 0xf7, 0x01},
|
||||
0x29, 0x6f, 0x6f, 0xa5, 0x00, 0x55, 0x0f, 0x21, 0x15, 0xcb, 0x01},
|
||||
{1920, 1200, 76, 0x9d, 0x77, 0x77, 0x81, 0x7c, 0x8b, 0xe0, 0x10, 0x40, 0xb3,
|
||||
0xb6, 0xaf, 0xaf, 0xe1, 0x00, 0x55, 0xcf, 0x21, 0x14, 0x76, 0x01,},
|
||||
{1920, 1440, 60, 0x9d, 0x77, 0x77, 0x81, 0x7a, 0x87, 0xda, 0x1f, 0x40, 0xa1,
|
||||
// 0x24, 0x9f, 0x9f, 0xdb, 0x00, 0x55, 0x0f, 0x21, 0x30, 0xe3, 0x01},
|
||||
0x24, 0x9f, 0x9f, 0xdb, 0x00, 0x55, 0x0f, 0x21, 0x0d, 0xa1, 0x01},
|
||||
{2048, 1536, 60, 0x98, 0x7f, 0x7f, 0x9c, 0x80, 0x0f, 0x3b, 0xba, 0x40, 0x01,
|
||||
0x04, 0xff, 0xff, 0x3c, 0x00, 0x55, 0x0f, 0x21, 0x28, 0xc7, 0x01,},
|
||||
{2048, 1536, 75, 0xa1, 0x7f, 0x7f, 0x85, 0x84, 0x90, 0x44, 0xba, 0x40, 0x01,
|
||||
0x04, 0xff, 0xff, 0x45, 0x00, 0x55, 0x0f, 0x21, 0x1c, 0xc7, 0x01,},
|
||||
// STB Begin Changes
|
||||
#endif // #ifdef H4
|
||||
// STB End Changes
|
||||
151
glide2x/h3/cinit/plltable.h
Normal file
151
glide2x/h3/cinit/plltable.h
Normal file
@@ -0,0 +1,151 @@
|
||||
/*
|
||||
** 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
|
||||
**
|
||||
** File name: plltable.h
|
||||
**
|
||||
** Description: The V3 PLL table.
|
||||
**
|
||||
** $History: plltable.h $
|
||||
**
|
||||
** ***************** Version 1 *****************
|
||||
** User: Sapphire Date: 3/16/99 Time: 7:28p
|
||||
** Created in $/Releases/Voodoo3/V3_OEM_100/3dfx/devel/H3/cinit
|
||||
**
|
||||
** ***************** Version 4 *****************
|
||||
** User: Michael Date: 1/12/99 Time: 9:23a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** Implement the 3Dfx/STB unified header.
|
||||
**
|
||||
** ***************** Version 3 *****************
|
||||
** User: Artg Date: 8/27/98 Time: 11:08a
|
||||
** Updated in $/devel/h3/Win95/dx/minivdd
|
||||
** added guard ifdef for redundant plltable define.
|
||||
**
|
||||
** ***************** Version 2 *****************
|
||||
** User: Ken Date: 4/15/98 Time: 6:42p
|
||||
** Updated in $/devel/h3/win95/dx/minivdd
|
||||
** added unified header to all files, with revision, etc. info in it
|
||||
*/
|
||||
|
||||
//
|
||||
// generated by gen_plltable.pl at Thu Apr 9 18:44:30 1998
|
||||
//
|
||||
|
||||
#define MIN_PLL_FREQ 30
|
||||
#define MAX_PLL_FREQ 120
|
||||
|
||||
#if !defined(Host_H3)
|
||||
FxU32 _pllTable[] = {
|
||||
// pllCtrl n m k actual(MHz)
|
||||
// ------- --- --- --- -----------
|
||||
0x00006B2E, // 107 11 2 30.013108
|
||||
0x00001806, // 24 1 2 31.022723
|
||||
0x00007B32, // 123 12 2 31.960223
|
||||
0x0000511E, // 81 7 2 33.011359
|
||||
0x0000240A, // 36 2 2 34.005677
|
||||
0x0000561E, // 86 7 2 34.999996
|
||||
0x0000772A, // 119 10 2 36.093745
|
||||
0x00001D06, // 29 1 2 36.988632
|
||||
0x0000531A, // 83 6 2 38.032666
|
||||
0x00006B22, // 107 8 2 39.017041
|
||||
0x00007926, // 121 9 2 40.025821
|
||||
0x00007C26, // 124 9 2 41.002061
|
||||
0x00002D0A, // 45 2 2 42.059654
|
||||
0x00002206, // 34 1 2 42.954540
|
||||
0x00005416, // 84 5 2 43.977267
|
||||
0x00005616, // 86 5 2 44.999994
|
||||
0x00005816, // 88 5 2 46.022721
|
||||
0x0000671A, // 103 6 2 46.981528
|
||||
0x0000410E, // 65 3 2 47.965903
|
||||
0x00002706, // 39 1 2 48.920448
|
||||
0x00002806, // 40 1 2 50.113630
|
||||
0x0000370A, // 55 2 2 51.008516
|
||||
0x0000380A, // 56 2 2 51.903402
|
||||
0x0000480E, // 72 3 2 52.977266
|
||||
0x0000771A, // 119 6 2 54.140618
|
||||
0x0000791A, // 121 6 2 55.035504
|
||||
0x00007B1A, // 123 6 2 55.930391
|
||||
0x00007D1A, // 125 6 2 56.825277
|
||||
0x00004F0E, // 79 3 2 57.988629
|
||||
0x0000400A, // 64 2 2 59.062492
|
||||
0x00006B2D, // 107 11 1 60.026216
|
||||
0x00007E35, // 126 13 1 61.090901
|
||||
0x00001805, // 24 1 1 62.045447
|
||||
0x00002A0D, // 42 3 1 62.999992
|
||||
0x00007B31, // 123 12 1 63.920446
|
||||
0x0000742D, // 116 11 1 64.982509
|
||||
0x0000511D, // 81 7 1 66.022719
|
||||
0x00006525, // 101 9 1 67.035115
|
||||
0x00002409, // 36 2 1 68.011355
|
||||
0x00006825, // 104 9 1 68.987595
|
||||
0x0000561D, // 86 7 1 69.999991
|
||||
0x00007529, // 117 10 1 70.994309
|
||||
0x00007729, // 119 10 1 72.187491
|
||||
0x0000310D, // 49 3 1 73.022718
|
||||
0x00001D05, // 29 1 1 73.977263
|
||||
0x00007125, // 113 9 1 74.845032
|
||||
0x00005319, // 83 6 1 76.065331
|
||||
0x00002909, // 41 2 1 76.960217
|
||||
0x00006B21, // 107 8 1 78.034081
|
||||
0x00001F05, // 31 1 1 78.749990
|
||||
0x00007925, // 121 9 1 80.051643
|
||||
0x00006F21, // 111 8 1 80.897717
|
||||
0x00007C25, // 124 9 1 82.004122
|
||||
0x0000380D, // 56 3 1 83.045444
|
||||
0x00002D09, // 45 2 1 84.119308
|
||||
0x00005D19, // 93 6 1 85.014194
|
||||
0x00002205, // 34 1 1 85.909080
|
||||
0x00005315, // 83 5 1 86.931807
|
||||
0x00005415, // 84 5 1 87.954534
|
||||
0x00005515, // 85 5 1 88.977261
|
||||
0x00005615, // 86 5 1 89.999989
|
||||
0x00005715, // 87 5 1 91.022716
|
||||
0x00005815, // 88 5 1 92.045443
|
||||
0x00002505, // 37 1 1 93.068170
|
||||
0x00006719, // 103 6 1 93.963056
|
||||
0x00005B15, // 91 5 1 95.113624
|
||||
0x0000410D, // 65 3 1 95.931806
|
||||
0x0000781D, // 120 7 1 97.045442
|
||||
0x00002705, // 39 1 1 97.840897
|
||||
0x00005111, // 81 4 1 99.034078
|
||||
0x00002805, // 40 1 1 100.227260
|
||||
0x00007D1D, // 125 7 1 101.022714
|
||||
0x00003709, // 55 2 1 102.017033
|
||||
0x00007119, // 113 6 1 102.911919
|
||||
0x00003809, // 56 2 1 103.806805
|
||||
0x00002A05, // 42 1 1 104.999987
|
||||
0x0000480D, // 72 3 1 105.954532
|
||||
0x00002B05, // 43 1 1 107.386350
|
||||
0x00007719, // 119 6 1 108.281236
|
||||
0x00003B09, // 59 2 1 109.176123
|
||||
0x00007919, // 121 6 1 110.071009
|
||||
0x00003C09, // 60 2 1 110.965895
|
||||
0x00007B19, // 123 6 1 111.860781
|
||||
0x00004D0D, // 77 3 1 113.113622
|
||||
0x00007D19, // 125 6 1 113.650554
|
||||
0x00002E05, // 46 1 1 114.545440
|
||||
0x00004F0D, // 79 3 1 115.977258
|
||||
0x00002F05, // 47 1 1 116.931803
|
||||
0x00004009, // 64 2 1 118.124985
|
||||
0x0000510D, // 81 3 1 118.840894
|
||||
0x00006B2C, // 107 11 0 120.052432
|
||||
};
|
||||
FxU32 *pllTable = (FxU32*) (_pllTable - MIN_PLL_FREQ);
|
||||
#endif
|
||||
|
||||
@@ -17,11 +17,20 @@
|
||||
;;
|
||||
;; COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
;;
|
||||
;; $Header$
|
||||
;; $Log$
|
||||
;; Revision 1.1.1.1.2.1 2006/11/30 09:16:50 guillemj
|
||||
;; Switch to the new "build system", to be in sync with the rest of glide.
|
||||
;; Backport cpudtect.asm from glide3 for h3.
|
||||
;; Add fpu.c to cvg.
|
||||
;;
|
||||
;; Revision 1.1.1.1.8.1 2003/11/07 13:38:38 dborca
|
||||
;; unite the clans
|
||||
;;
|
||||
;; Revision 1.1.1.1 1999/11/24 21:44:53 joseph
|
||||
;; Initial checkin for SourceForge
|
||||
;;
|
||||
;;
|
||||
;; 3 3/17/99 6:14p Dow
|
||||
;; Phantom Menace and other fixes.
|
||||
;; 4 4/06/99 3:54p Dow
|
||||
;; Alt tab again.
|
||||
;;
|
||||
;; 9 3/10/99 10:40a Peter
|
||||
;; detect katmai-ness
|
||||
@@ -45,10 +54,7 @@
|
||||
;;
|
||||
;;
|
||||
|
||||
TITLE cpudtect.asm
|
||||
|
||||
.586P
|
||||
.model FLAT,C ; Flat memory, mangle publics with leading '_'
|
||||
%include "xos.inc"
|
||||
|
||||
;; Data for data segment goes here
|
||||
;_DATA SEGMENT DWORD USE32 PUBLIC 'DATA';
|
||||
@@ -56,14 +62,14 @@ TITLE cpudtect.asm
|
||||
|
||||
;;; Some useful constants
|
||||
; CPU Type
|
||||
CPUTypeUnknown = 0ffffffffh
|
||||
CPUTypePrePent = 4h
|
||||
CPUTypeP5 = 5h
|
||||
CPUTypeP6 = 6h
|
||||
CPUTypeUnknown equ 0ffffffffh
|
||||
CPUTypePrePent equ 4h
|
||||
CPUTypeP5 equ 5h
|
||||
CPUTypeP6 equ 6h
|
||||
|
||||
;;; References to external data:
|
||||
|
||||
_TEXT SEGMENT
|
||||
segment SEG_TEXT
|
||||
;;
|
||||
;; _cpu_detect_asm - detect the type of CPU
|
||||
;;
|
||||
@@ -73,10 +79,8 @@ _TEXT SEGMENT
|
||||
;;
|
||||
;; returns 4 for non-pen
|
||||
|
||||
PUBLIC _cpu_detect_asm
|
||||
_cpu_detect_asm PROC NEAR
|
||||
proc _cpu_detect_asm
|
||||
P6Stuff:
|
||||
.586
|
||||
push esi ; save registers that are not volatile
|
||||
push edi
|
||||
push ebx
|
||||
@@ -276,45 +280,38 @@ UnknownVendor:
|
||||
jmp DoneCpu
|
||||
|
||||
|
||||
_cpu_detect_asm ENDP
|
||||
endp
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; this routine sets the precision to single
|
||||
; which effects all adds, mults, and divs
|
||||
align 4 ;
|
||||
PUBLIC single_precision_asm
|
||||
single_precision_asm PROC NEAR
|
||||
.586
|
||||
proc single_precision_asm
|
||||
push eax ; make room
|
||||
fnclex ; clear pending exceptions
|
||||
fstcw WORD PTR [esp]
|
||||
mov eax, DWORD PTR [esp]
|
||||
fstcw WORD [esp]
|
||||
mov eax, DWORD [esp]
|
||||
and eax, 0000fcffh ; clear bits 9:8
|
||||
mov DWORD PTR [esp], eax
|
||||
fldcw WORD PTR [esp]
|
||||
mov DWORD [esp], eax
|
||||
fldcw WORD [esp]
|
||||
pop eax
|
||||
ret 0
|
||||
single_precision_asm ENDP
|
||||
ret
|
||||
endp
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; this routine sets the precision to double
|
||||
; which effects all adds, mults, and divs
|
||||
align 4 ;
|
||||
PUBLIC double_precision_asm
|
||||
double_precision_asm PROC NEAR
|
||||
.586
|
||||
proc double_precision_asm
|
||||
push eax ; make room
|
||||
fnclex ; clear pending exceptions
|
||||
fstcw WORD PTR [esp]
|
||||
mov eax, DWORD PTR [esp]
|
||||
fstcw WORD [esp]
|
||||
mov eax, DWORD [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]
|
||||
mov DWORD [esp], eax
|
||||
fldcw WORD [esp]
|
||||
pop eax
|
||||
ret 0
|
||||
double_precision_asm ENDP
|
||||
|
||||
_TEXT ENDS
|
||||
END
|
||||
ret
|
||||
endp
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2 2000/10/03 18:29:55 mercury
|
||||
** 003-clean_up_h3-000, h3 tree cleanup.
|
||||
**
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:27 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
@@ -299,18 +302,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;
|
||||
|
||||
@@ -752,29 +752,17 @@ all_done:
|
||||
* between them.
|
||||
*/
|
||||
|
||||
asm (
|
||||
asm (
|
||||
#if defined(PIC)
|
||||
"popl %%ebx\n\t"
|
||||
#endif
|
||||
#if !defined(BIG_OPT)
|
||||
"popl %%ebp\n\t"
|
||||
"popl %%ebx\n\t"
|
||||
#endif
|
||||
"jmp *%0"
|
||||
: /* no outputs */
|
||||
:"m" (_GlideRoot.curGC->archDispatchProcs.triSetupProc)
|
||||
#if defined (PIC) || !defined (BIG_OPT)
|
||||
:
|
||||
"jmp *%0"
|
||||
:
|
||||
: "m" (_GlideRoot.curGC->archDispatchProcs.triSetupProc)
|
||||
#if defined(PIC)
|
||||
: "ebx"
|
||||
#endif
|
||||
#if defined (PIC)
|
||||
"ebx"
|
||||
#endif
|
||||
#if defined (PIC) && !defined (BIG_OPT)
|
||||
,
|
||||
#endif
|
||||
#if !defined(BIG_OPT)
|
||||
"ebp"
|
||||
#endif
|
||||
);
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
#undef FN_NAME
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:49:27 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
**
|
||||
** 3 3/17/99 6:16p Dow
|
||||
** Phantom Menace and other fixes.
|
||||
@@ -159,35 +162,25 @@ GR_DIENTRY(grErrorSetCallback, void,
|
||||
GrErrorCallback = function;
|
||||
}
|
||||
|
||||
#ifdef __WIN32__
|
||||
void
|
||||
_grErrorDefaultCallback( const char *s, FxBool fatal )
|
||||
{
|
||||
if ( fatal ) {
|
||||
GDBG_ERROR("glide", s);
|
||||
grGlideShutdown();
|
||||
MessageBox(NULL, s, NULL, MB_OK);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void
|
||||
_grErrorDefaultCallback( const char *s, FxBool fatal )
|
||||
{
|
||||
if ( fatal ) {
|
||||
GDBG_ERROR("glide",s);
|
||||
grGlideShutdown();
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_OS_MACOS)
|
||||
{
|
||||
Str255 errBuf;
|
||||
|
||||
errBuf[0] = sprintf((char*)(errBuf + 1), "%s", s);
|
||||
DebugStr(errBuf);
|
||||
}
|
||||
#ifdef __WIN32__
|
||||
MessageBox(NULL, s, NULL, MB_OK);
|
||||
#elif (GLIDE_PLATFORM & GLIDE_OS_MACOS)
|
||||
{
|
||||
Str255 errBuf;
|
||||
|
||||
errBuf[0] = sprintf((char*)(errBuf + 1), "%s", s);
|
||||
DebugStr(errBuf);
|
||||
}
|
||||
#endif /* (GLIDE_PLATFORM * GLIDE_OS_MACOS) */
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __DOS__
|
||||
int _guHeapCheck( void )
|
||||
|
||||
@@ -1,279 +1,328 @@
|
||||
# Linux makefile for Glide2/H3
|
||||
# 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
|
||||
|
||||
ifeq ($(FX_CHRIS_DENIS_ANTHONY_HACK),1)
|
||||
LCDEFS += -DCHRIS_DENIS_ANTHONY_HACK=1
|
||||
endif
|
||||
|
||||
FX_TACO_MEMORY_FIFO_HACK =
|
||||
ifneq ($(FX_TACO_MEMORY_FIFO_HACK),)
|
||||
LCDEFS += -DTACO_MEMORY_FIFO_HACK
|
||||
endif
|
||||
|
||||
ifneq ($(DIAG_BUILD),)
|
||||
LCDEFS += -DDIAG_BUILD
|
||||
endif
|
||||
|
||||
# This is a bit of a red herring
|
||||
ifeq ($(FX_GLIDE_DIRECT_WRITE),1)
|
||||
FX_GLIDE_DIRECT_WRITE = 1
|
||||
LCDEFS += -DDIRECT_IO=1
|
||||
else
|
||||
FX_GLIDE_PACKET_FIFO = 1
|
||||
endif
|
||||
|
||||
ifeq ($(FX_GLIDE_PACKET_FIFO),1)
|
||||
CMDXPORTDEFS = -DGLIDE_PACKET3_TRI_SETUP=1 -DUSE_PACKET_FIFO=1 -DGLIDE_HW_TRI_SETUP=1
|
||||
else
|
||||
CMDXPORTDEFS = -DUSE_PACKET_FIFO=0 -DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKET3_TRI_SETUP=0
|
||||
FX_GLIDE_DEBUG_FIFO=1
|
||||
endif
|
||||
|
||||
FX_GLIDE_REAL_HW= 1
|
||||
FX_GLIDE_NO_FIFO= 1
|
||||
|
||||
ifneq ($(FX_GLIDE_CTRISETUP),1)
|
||||
FX_GLIDE_CTRISETUP = 0
|
||||
endif
|
||||
HWSPEC = fifo.c
|
||||
LCDEFS += -DH3 $(CMDXPORTDEFS)
|
||||
|
||||
INITLIB = $(BUILD_ROOT)/$(FX_GLIDE_HW)/lib$(FX_GLIDE_HW)init.a
|
||||
|
||||
|
||||
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 =
|
||||
DSPOPTS += -DGLIDE_INIT_HWC
|
||||
|
||||
ifeq ($(HAL_HW),1)
|
||||
DSPOPTS += -DHAL_HW=1
|
||||
SUBLIBRARIES += $(BUILD_ROOT_SWLIBS)/lib/libfxmisc.a \
|
||||
$(BUILD_ROOT_SWLIBS)/lib/libfxpci.a \
|
||||
$(BUILD_ROOT)/$(FX_GLIDE_HW)/lib/libminihwc.a
|
||||
LINKLIBRARIES += -L/usr/X11R6/lib -lX11 -lXext -lXxf86dga -lXxf86vm
|
||||
endif
|
||||
|
||||
ifeq ($(HAL_HW),)
|
||||
SUBLIBRARIES += $(BUILD_ROOT)/h3/lib/libminihwc.a
|
||||
endif
|
||||
|
||||
# 3DNow stuff
|
||||
GL_AMD3D = 1
|
||||
ifneq ($(GL_AMD3D),)
|
||||
LCDEFS += -DGL_AMD3D
|
||||
LIBOBJS += xtexdl_3dnow.o
|
||||
CFILES += xtexdl_def.c
|
||||
endif
|
||||
|
||||
# Do culling test in sw for independent triangles
|
||||
CULL_MODE =
|
||||
ifneq ($(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
|
||||
|
||||
ifneq ($(FX_GLIDE_NO_FIFO),1)
|
||||
FIFODEFS = -DUSE_PACKET_FIFO=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
|
||||
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) 2003 - Daniel Borca
|
||||
# Email : dborca@users.sourceforge.net
|
||||
# Web : http://www.geocities.com/dborca
|
||||
#
|
||||
# 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
|
||||
DSPOPTS += -DGLIDE_DISPATCH_SETUP=1 -DGLIDE_PACKED_RGB=0
|
||||
|
||||
ifeq ($(GL_AMD3D),)
|
||||
ASMTRISETUP = xdraw2.S
|
||||
else
|
||||
LIBOBJS += xdraw2_def.o xdraw2_3dnow.o
|
||||
endif #GL_AMD3D
|
||||
endif
|
||||
|
||||
OPTOPTS = $(GRMOPTS) $(OTSOPTS) $(ATSOPTS)
|
||||
|
||||
# local defines, begin with basics and then add on
|
||||
LCDEFS += -DGLIDE_LIB
|
||||
|
||||
# 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) cpudtect.S
|
||||
|
||||
# sources
|
||||
HEADERS = glide.h gump.h glidesys.h glideutl.h
|
||||
PRIVATE_HEADERS = fxglide.h gsstdef.h fxinline.h fxsplash.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)
|
||||
|
||||
OFILES = $(CFILES:.c=.o)
|
||||
|
||||
OTHER_CFILES = fxgasm.c fxbldno.c fxinline.h
|
||||
|
||||
# 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.10
|
||||
else
|
||||
LIBRARIES = libglide.a
|
||||
SHARED_LIBRARY = libglide.so.2.60
|
||||
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
|
||||
|
||||
ctags: $(CFILES)
|
||||
ctags $(CFILES)
|
||||
|
||||
gbanner.obj : banner.inc
|
||||
gsplash.obj : splshdat.c
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# special rules for making FXGASM.H
|
||||
#
|
||||
fxgasm: fxgasm.c $(HEADERS) gsstdef.h fxglide.h makefile.linux
|
||||
$(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 (h3).
|
||||
# default = h3
|
||||
# DRI=1 Build DRI version.
|
||||
# default = no
|
||||
# XPATH specify X libraries path; needed by DRI.
|
||||
# default = /usr/X11R6/lib
|
||||
# H4=1 High speed Avenger.
|
||||
# default = no
|
||||
# OPTFLAGS pass given optimization flags to compiler
|
||||
# default = -O2 -ffast-math
|
||||
# DEBUG=1 enable debugging checks and messages
|
||||
# default = no
|
||||
# USE_X86=1 use assembler triangle specializations!
|
||||
# default = no
|
||||
# USE_3DNOW=1 allow 3DNow! specializations. However, the true CPU
|
||||
# capabilities are still checked at run-time to avoid
|
||||
# crashes.
|
||||
# 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 = 60
|
||||
|
||||
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 ?= h3
|
||||
FX_GLIDE_SW = ../../../swlibs
|
||||
GLIDE_LIBDIR = ../../lib
|
||||
|
||||
###############################################################################
|
||||
# tools
|
||||
###############################################################################
|
||||
|
||||
CC = gcc
|
||||
AS = nasm
|
||||
AR = ar
|
||||
|
||||
CP = cp
|
||||
|
||||
###############################################################################
|
||||
# defines
|
||||
###############################################################################
|
||||
|
||||
# platform
|
||||
CDEFS = -D__linux__
|
||||
XPATH ?= /usr/X11R6/lib
|
||||
ifeq ($(DRI),1)
|
||||
CDEFS += -DDRI_BUILD -DX11
|
||||
LDFLAGS = -L$(XPATH)
|
||||
LDLIBS = -lX11 -lXext -lXxf86dga -lXxf86vm
|
||||
endif
|
||||
|
||||
LDLIBS += -lm
|
||||
|
||||
# general
|
||||
CDEFS += -DGLIDE_HW_TRI_SETUP=1 -DGLIDE_INIT_HWC -DGLIDE_PACKED_RGB=0 -DGLIDE_TRI_CULLING=1
|
||||
CDEFS += -DENDB -DGLIDE_LIB -DFX_STATIC_BUILD -DHAL_HW=1
|
||||
#CDEFS += -DGLIDE_CHECK_CONTEXT
|
||||
|
||||
# subsystem
|
||||
CDEFS += -DH3
|
||||
ifdef H4
|
||||
CDEFS += -DH4
|
||||
endif
|
||||
|
||||
# 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
|
||||
|
||||
# obsolete options
|
||||
# -DDIAG_BUILD
|
||||
|
||||
###############################################################################
|
||||
# flags
|
||||
###############################################################################
|
||||
|
||||
# librarian
|
||||
ARFLAGS = rus
|
||||
|
||||
# assembler
|
||||
ASFLAGS = -O6 -felf -D__linux__
|
||||
ASFLAGS += $(CDEFS)
|
||||
|
||||
# compiler
|
||||
CFLAGS = -Wall
|
||||
CFLAGS += -I. -I../../incsrc -I../../minihwc -I../../cinit
|
||||
CFLAGS += -I$(FX_GLIDE_SW)/fxmisc -I$(FX_GLIDE_SW)/newpci/pcilib -I$(FX_GLIDE_SW)/fxmemmap
|
||||
CFLAGS += $(CDEFS)
|
||||
|
||||
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
|
||||
else
|
||||
CFLAGS += -DGLIDE_USE_C_TRISETUP
|
||||
OPTFLAGS ?= -O6 -march=pentium2 -mtune=pentium3 -ffast-math
|
||||
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 \
|
||||
xtexdl_def.o
|
||||
|
||||
ifeq ($(USE_DRAWTRI_ASM),1)
|
||||
GLIDE_OBJECTS += xdrawtri.o
|
||||
endif
|
||||
ifeq ($(USE_X86),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw2_def.o \
|
||||
xdraw3_def.o
|
||||
ifeq ($(USE_3DNOW),1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw2_3dnow.o \
|
||||
xdraw3_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 \
|
||||
../../minihwc/hwcio.o \
|
||||
../../minihwc/gdebug.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
|
||||
|
||||
ifeq ($(DRI),1)
|
||||
GLIDE_OBJECTS += \
|
||||
../../minihwc/linhwc.o \
|
||||
$(FX_GLIDE_SW)/fxmisc/linutil.o
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
../../minihwc/minihwc.o \
|
||||
../../minihwc/lin_mode.o \
|
||||
../../cinit/h3cinit.o
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# rules
|
||||
###############################################################################
|
||||
|
||||
.c.o:
|
||||
$(CC) -o $@ $(CFLAGS) -c $<
|
||||
.c.lo:
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -c $<
|
||||
.S.o:
|
||||
$(CC) -o $@ $(CFLAGS) -c $<
|
||||
.s.o:
|
||||
$(CC) -o $@ $(CFLAGS) -x assembler-with-cpp -c $<
|
||||
|
||||
###############################################################################
|
||||
# main
|
||||
###############################################################################
|
||||
all: glide2x
|
||||
|
||||
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,--no-undefined -Wl,-soname,$(GLIDE_SONAME) $^ $(LDFLAGS) $(LDLIBS)
|
||||
|
||||
###############################################################################
|
||||
# rules(2)
|
||||
###############################################################################
|
||||
|
||||
cpuid.o: cpudtect.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw2_def.o: xdraw2.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw3_def.o: xdraw3.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw2_3dnow.o: xdraw2.asm
|
||||
$(AS) -o $@ $(ASFLAGS) -DGL_AMD3D=1 $<
|
||||
xdraw3_3dnow.o: xdraw3.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) $< $@
|
||||
xdraw3_def.lo: xdraw3_def.o
|
||||
$(CP) $< $@
|
||||
xdraw2_3dnow.lo: xdraw2_3dnow.o
|
||||
$(CP) $< $@
|
||||
xdraw3_3dnow.lo: xdraw3_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 -hex > fxgasm.h
|
||||
fxinline.h: fxgasm
|
||||
./fxgasm -inline > fxinline.h
|
||||
./$< -hex > $@
|
||||
|
||||
fxgasm: fxgasm.c
|
||||
$(CC) -o $@ $(CFLAGS) $<
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# special rules for making FXBLDNO.H
|
||||
#
|
||||
###############################################################################
|
||||
# clean, realclean
|
||||
###############################################################################
|
||||
|
||||
fxbldno: fxbldno.c $(HEADERS) $(PRIVATE_HEADERS)
|
||||
$(CC) -o $@ fxbldno.c $(GCDEFS) $(LCDEFS) $(VCDEFS) $(LCOPTS) $(LDFLAGS)
|
||||
clean:
|
||||
-$(RM) *.o *.lo
|
||||
-$(RM) ../../cinit/*.o ../../cinit/*.lo
|
||||
-$(RM) ../../minihwc/*.o ../../minihwc/*.lo
|
||||
-$(RM) $(FX_GLIDE_SW)/newpci/pcilib/*.o $(FX_GLIDE_SW)/newpci/pcilib/*.lo
|
||||
-$(RM) $(FX_GLIDE_SW)/fxmisc/*.o $(FX_GLIDE_SW)/fxmisc/*.lo
|
||||
-$(RM) fxinline.h
|
||||
-$(RM) fxgasm.h
|
||||
|
||||
fxbldno.h: fxbldno
|
||||
./fxbldno > fxbldno.h
|
||||
|
||||
ifneq ($(FX_GLIDE_CTRISETUP),1)
|
||||
gdraw.o: fxinline.h
|
||||
endif
|
||||
|
||||
xdraw2.o : xdraw2.S xdraw2.inc.S fxgasm.h fxinline.h
|
||||
$(CC) -c -o xdraw2.o $(AFLAGS) xdraw2.S
|
||||
|
||||
cpudtect.o : cpudtect.S
|
||||
$(CC) -c -o cpudtect.o $(AFLAGS) cpudtect.S
|
||||
|
||||
ifneq ($(GL_AMD3D),)
|
||||
xdraw2_def.o: xdraw2.S xdraw2.inc.S fxgasm.h
|
||||
$(CC) -c -o $@ $(AFLAGS) xdraw2.S
|
||||
|
||||
xdraw2_3dnow.o: xdraw2.S xdraw2.inc.S fxgasm.h
|
||||
$(CC) -c -o $@ $(AFLAGS) -DGL_AMD3D -DUSE_PACKET_FIFO xdraw2.S
|
||||
|
||||
xtexdl_3dnow.o: xtexdl.S fxgasm.h
|
||||
$(CC) -c -o $@ $(AFLAGS) -DGL_AMD3D -DUSE_PACKET_FIFO xtexdl.S
|
||||
endif
|
||||
realclean: clean
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_LIB)
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SHARED)
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SO)
|
||||
|
||||
@@ -56,161 +56,143 @@
|
||||
; B4 Chip field fix.
|
||||
;;
|
||||
|
||||
TITLE xdraw2.asm
|
||||
OPTION OLDSTRUCTS
|
||||
%include "xos.inc"
|
||||
|
||||
.586P
|
||||
.MMX
|
||||
.K3D
|
||||
|
||||
EXTRN __GlideRoot: DWORD
|
||||
EXTRN __FifoMakeRoom: NEAR
|
||||
extrn _GlideRoot
|
||||
extrn _FifoMakeRoom
|
||||
|
||||
_DATA SEGMENT
|
||||
One DD 03f800000r
|
||||
segment SEG_DATA
|
||||
One DD 1.0
|
||||
Area DD 0
|
||||
|
||||
IF GLIDE_PACKED_RGB
|
||||
%if GLIDE_PACKED_RGB
|
||||
bias0 DD 0
|
||||
bias1 DD 0
|
||||
ENDIF
|
||||
_DATA ENDS
|
||||
%endif
|
||||
|
||||
; Ugly, but seems to workaround the problem with locally defined
|
||||
; data segment globals not getting relocated properly when using
|
||||
; djgpp.
|
||||
|
||||
zArea TEXTEQU <One+04h>
|
||||
%define zArea One+04h
|
||||
|
||||
;;; Definitions of cvg regs and glide root structures.
|
||||
INCLUDE fxgasm.h
|
||||
%include "fxgasm.h"
|
||||
|
||||
; Arguments (STKOFF = 16 from 4 pushes)
|
||||
STKOFF = 16
|
||||
_va$ = 4 + STKOFF
|
||||
_vb$ = 8 + STKOFF
|
||||
_vc$ = 12 + STKOFF
|
||||
STKOFF equ 16
|
||||
_va$ equ 4 + STKOFF
|
||||
_vb$ equ 8 + STKOFF
|
||||
_vc$ equ 12 + STKOFF
|
||||
|
||||
X equ 0
|
||||
Y equ 4
|
||||
|
||||
%MACRO PROC_TYPE 1
|
||||
%IFDEF GL_AMD3D
|
||||
proc _trisetup_3DNow_%1, 12
|
||||
%ELSE
|
||||
proc _trisetup_Default_%1, 12
|
||||
%ENDIF
|
||||
%ENDM
|
||||
|
||||
PROC_TYPE MACRO procType:=<Default>
|
||||
IFDEF GL_AMD3D
|
||||
EXITM <__trisetup_3DNow_&procType&@12>
|
||||
ELSE
|
||||
EXITM <__trisetup_Default_&procType&@12>
|
||||
ENDIF
|
||||
ENDM
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
_TEXT SEGMENT PAGE PUBLIC USE32 'CODE'
|
||||
ASSUME DS: FLAT, SS: FLAT
|
||||
segment SEG_TEXT
|
||||
|
||||
ALIGN 32
|
||||
PROC_TYPE cull
|
||||
|
||||
%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
|
||||
|
||||
endp
|
||||
|
||||
ALIGN 32
|
||||
|
||||
PUBLIC PROC_TYPE(cull)
|
||||
PROC_TYPE(cull) PROC NEAR
|
||||
%IF GLIDE_PACKED_RGB
|
||||
|
||||
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>
|
||||
PROC_TYPE cull_rgb
|
||||
|
||||
PROC_TYPE(cull) ENDP
|
||||
%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
|
||||
|
||||
endp
|
||||
|
||||
ALIGN 32
|
||||
PROC_TYPE cull_argb
|
||||
|
||||
IF GLIDE_PACKED_RGB
|
||||
PUBLIC PROC_TYPE(cull_rgb)
|
||||
PROC_TYPE(cull_rgb) PROC NEAR
|
||||
%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 <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>
|
||||
|
||||
PROC_TPYE(cull_rgb) ENDP
|
||||
|
||||
ALIGN 32
|
||||
|
||||
PUBLIC PROC_TPYE(cull_argb)
|
||||
PROC_TPYE(cull_argb) PROC NEAR
|
||||
|
||||
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>
|
||||
|
||||
PROC_TPYE(cull_argb) ENDP
|
||||
ENDIF ; GLIDE_PACKED_RGB
|
||||
endp
|
||||
%ENDIF ; GLIDE_PACKED_RGB
|
||||
|
||||
ALIGN 32
|
||||
PROC_TYPE Default
|
||||
|
||||
PUBLIC PROC_TYPE()
|
||||
PROC_TYPE() PROC NEAR
|
||||
%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
|
||||
|
||||
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>
|
||||
|
||||
PROC_TYPE() ENDP
|
||||
endp
|
||||
|
||||
ALIGN 32
|
||||
|
||||
IF GLIDE_PACKED_RGB
|
||||
PUBLIC PROC_TYPE(rgb)
|
||||
PROC_TPYE(rgb) PROC NEAR
|
||||
%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>
|
||||
PROC_TYPE rgb
|
||||
|
||||
PROC_TPYE(rgb) 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
|
||||
|
||||
endp
|
||||
|
||||
ALIGN 32
|
||||
PROC_TYPE argb
|
||||
|
||||
PUBLIC PROC_TPYE(argb)
|
||||
PROC_TPYE(argb) PROC NEAR
|
||||
|
||||
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>
|
||||
|
||||
PROC_TPYE(argb) ENDP
|
||||
ENDIF ; GLIDE_PACKED_RGB
|
||||
|
||||
|
||||
_TEXT ENDS
|
||||
|
||||
END
|
||||
%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
|
||||
|
||||
endp
|
||||
%ENDIF ; GLIDE_PACKED_RGB
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -21,7 +21,10 @@
|
||||
|
||||
/* $Header$ */
|
||||
/* $Revision$ */
|
||||
/* $Log$ */
|
||||
/* $Log$
|
||||
/* Revision 1.1.1.1 1999/12/07 21:49:31 joseph
|
||||
/* Initial checkin into SourceForge.
|
||||
/* */
|
||||
/* */
|
||||
/* 2 10/30/97 6:53p Peter */
|
||||
/* first real cut at tri asm */
|
||||
@@ -38,13 +41,18 @@
|
||||
|
||||
.file "xdraw2.inc"
|
||||
|
||||
#ifdef GL_AMD3D
|
||||
|
||||
#ifndef GR_FIFO_WRITE_MACRO
|
||||
#define GR_FIFO_WRITE_MACRO
|
||||
.MACRO GR_FIFO_WRITE __addr __offset __data
|
||||
mov \__data , \__offset(\__addr)
|
||||
.ENDM /* GR_FIFO_WRITE */
|
||||
#endif
|
||||
|
||||
#ifdef GL_AMD3D
|
||||
|
||||
|
||||
#ifndef MM1_FIFO_MACROS
|
||||
#define MM1_FIFO_MACROS
|
||||
.MACRO WRITE_MM1_FIFO_ALIGNED
|
||||
movq %mm1 , (%ebp) /* store current param | previous param */
|
||||
.ENDM /* WRITE_MM1_FIFO_ALIGNED */
|
||||
@@ -52,6 +60,7 @@
|
||||
.MACRO WRITE_MM1LOW_FIFO
|
||||
movd %mm1 , (%ebp) /* store current param | previous param */
|
||||
.ENDM /* WRITE_MM1LOW_FIFO */
|
||||
#endif
|
||||
|
||||
#define gc %edi /* points to graphics context */
|
||||
#define fifo %ebp /* points to fifo entries */
|
||||
@@ -1100,10 +1109,6 @@ LOCAL(Area_Computation):
|
||||
#define packCol %edi
|
||||
#define tempVal %edi
|
||||
|
||||
.MACRO GR_FIFO_WRITE __addr __offset __data
|
||||
mov \__data , \__offset(\__addr)
|
||||
.ENDM /* GR_FIFO_WRITE */
|
||||
|
||||
.align 4
|
||||
LOCAL(__triBegin):
|
||||
mov fifoPtr(gc) , fifo /* Fetch Fifo Ptr */
|
||||
|
||||
38
glide2x/h3/glide/src/xdrawtri.S
Normal file
38
glide2x/h3/glide/src/xdrawtri.S
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* 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 gas */
|
||||
|
||||
#include "fxgasm.h"
|
||||
|
||||
.extern _GlideRoot
|
||||
|
||||
.text
|
||||
|
||||
.p2align 4,,15
|
||||
.globl grDrawTriangle
|
||||
.type grDrawTriangle,@function
|
||||
grDrawTriangle:
|
||||
/*movl (_GlideRoot+curGC),%edx
|
||||
movl kTriProcOffset(%edx),%eax*/
|
||||
movl (_GlideRoot + curGC),%eax
|
||||
jmp *kTriProcOffset(%eax)
|
||||
|
||||
.p2align 4,,15
|
||||
46
glide2x/h3/glide/src/xdrawtri.asm
Normal file
46
glide2x/h3/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
|
||||
146
glide2x/h3/glide/src/xos.inc
Normal file
146
glide2x/h3/glide/src/xos.inc
Normal file
@@ -0,0 +1,146 @@
|
||||
;
|
||||
; compulsory header for glide3/xdraw* assembly specializations (NASM)
|
||||
;
|
||||
; Revision 1.1.2.1 2006/12/03 04:47:28 guillemj
|
||||
; Backported from glide3x.
|
||||
;
|
||||
; 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 SEG_TEXT .text align=32
|
||||
%define SEG_DATA .data align=32
|
||||
%define SEG_CONST .rdata align=32
|
||||
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; DJGPP
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_DJGPP
|
||||
|
||||
%define SEG_TEXT .text
|
||||
%define SEG_DATA .data
|
||||
%define SEG_CONST .rodata
|
||||
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; Linux
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_LINUX
|
||||
|
||||
%define SEG_TEXT .text align=32
|
||||
%define SEG_DATA .data align=32
|
||||
%define SEG_CONST .rodata align=32
|
||||
|
||||
%endif
|
||||
|
||||
;---------------------------------------
|
||||
; WATCOM/DOS
|
||||
;---------------------------------------
|
||||
%if XOS == XOS_WATCD
|
||||
|
||||
%define SEG_TEXT _TEXT align=1 public use32 class=CODE FLAT
|
||||
%define SEG_DATA _DATA align=4 public use32 class=DATA FLAT
|
||||
%define SEG_CONST CONST2 align=4 public use32 class=DATA FLAT
|
||||
|
||||
%endif
|
||||
@@ -54,55 +54,46 @@
|
||||
;; mmx stuff for 3DNow!(tm) capable processors
|
||||
;;
|
||||
|
||||
TITLE xtexdl.asm
|
||||
OPTION OLDSTRUCTS
|
||||
|
||||
.586P
|
||||
.MMX
|
||||
.K3D
|
||||
%include "xos.inc"
|
||||
|
||||
ifdef USE_PACKET_FIFO
|
||||
EXTRN __FifoMakeRoom: NEAR
|
||||
endif
|
||||
|
||||
%ifdef USE_PACKET_FIFO
|
||||
extrn _FifoMakeRoom
|
||||
%endif
|
||||
|
||||
;;; Definitions of cvg regs and glide root structures.
|
||||
INCLUDE fxgasm.h
|
||||
%INCLUDE "fxgasm.h"
|
||||
|
||||
; Arguments (STKOFF = 16 from 4 dword pushes)
|
||||
STACKOFFSET = 16
|
||||
_gc$ = 4 + STACKOFFSET
|
||||
_baseAddr$ = 8 + STACKOFFSET
|
||||
_maxS$ = 12 + STACKOFFSET
|
||||
_minT$ = 16 + STACKOFFSET
|
||||
_maxT$ = 20 + STACKOFFSET
|
||||
_texData$ = 24 + STACKOFFSET
|
||||
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.
|
||||
|
||||
fifo TEXTEQU <ebp> ; fifo ptr in inner loop
|
||||
gc TEXTEQU <esi> ; graphics context
|
||||
dataPtr TEXTEQU <edi> ; pointer to exture data to be downloaded
|
||||
curT TEXTEQU <ebx> ; counter for texture scan lines (t-coordinate)
|
||||
curS TEXTEQU <ecx> ; texture s-coordinate
|
||||
fRoom TEXTEQU <edx> ; room available in fifo (in bytes)
|
||||
%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)
|
||||
|
||||
GR_FIFO_WRITE MACRO __addr, __offset, __data
|
||||
mov [__addr + __offset], __data
|
||||
ENDM ; GR_FIFO_WRITE
|
||||
%MACRO GR_FIFO_WRITE 3
|
||||
mov [%1 + _%2], %3
|
||||
%ENDM ; GR_FIFO_WRITE
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
_TEXT SEGMENT PAGE PUBLIC USE32 'CODE'
|
||||
ASSUME DS: FLAT, SS: FLAT
|
||||
segment SEG_TEXT
|
||||
|
||||
ALIGN 32
|
||||
|
||||
PUBLIC __grTexDownload_3DNow_MMX@24
|
||||
|
||||
__grTexDownload_3DNow_MMX@24 PROC NEAR
|
||||
proc _grTexDownload_3DNow_MMX, 24
|
||||
|
||||
push ebx ; save caller's register variable
|
||||
mov curT, [esp + _maxT$ - 12] ; curT = maxT
|
||||
@@ -158,15 +149,15 @@ __grTexDownload_3DNow_MMX@24 PROC NEAR
|
||||
cmp fRoom, 4 ; enough room for NULL packet in fifo?
|
||||
jge __mmxAlignFifo ; yes, write NULL packet to align fifo
|
||||
|
||||
ifdef USE_PACKET_FIFO
|
||||
push @Line ; Line # inside this function
|
||||
%ifdef USE_PACKET_FIFO
|
||||
push __LINE__ ; Line # inside this function
|
||||
push 0 ; NULL file name
|
||||
|
||||
push 4 ; fifo space required (bytes)
|
||||
call __FifoMakeRoom ; make fifo room
|
||||
call _FifoMakeRoom ; make fifo room
|
||||
|
||||
add esp, 12 ; pop 3 DWORD parameters to FifoMakeRoom
|
||||
endif
|
||||
%endif
|
||||
mov fifo, [gc + fifoPtr] ; fifoPtr modified by FifoMakeRoom, reload
|
||||
|
||||
mov fRoom, [gc + fifoRoom] ; fifoRoom modified by FifoMakeRoom, reload
|
||||
@@ -177,7 +168,7 @@ endif
|
||||
|
||||
__mmxAlignFifo:
|
||||
|
||||
mov DWORD PTR [fifo], 0 ; write NULL packet
|
||||
mov DWORD [fifo], 0 ; write NULL packet
|
||||
sub fRoom, 4 ; fifoRoom -= 4
|
||||
|
||||
mov [gc + fifoRoom], fRoom ; store new fifoRoom
|
||||
@@ -193,7 +184,7 @@ __mmxAlignFifo:
|
||||
|
||||
__loopT:
|
||||
|
||||
IFDEF GLIDE_DEBUG
|
||||
%IFDEF GLIDE_DEBUG
|
||||
|
||||
;; Make sure that we have a QWORD aligned fifoPtr; force GP if not aligned
|
||||
|
||||
@@ -203,7 +194,7 @@ IFDEF GLIDE_DEBUG
|
||||
xor eax, eax ; create 0
|
||||
mov [eax], eax ; move to DS:[0] forces GP
|
||||
__alignmentOK:
|
||||
ENDIF ; GLIDE_DEBUG
|
||||
%ENDIF ; GLIDE_DEBUG
|
||||
|
||||
;; Compute packet header words
|
||||
;; hdr1: downloadSpace[31:30] numWords[21:3] packetType[2:0]
|
||||
@@ -249,19 +240,19 @@ __loopS:
|
||||
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
|
||||
push @Line ; Line # inside this function
|
||||
%ifdef USE_PACKET_FIFO
|
||||
push __LINE__ ; Line # inside this function
|
||||
push 0h ; NULL file name
|
||||
|
||||
push eax ; fifo space required
|
||||
call __FifoMakeRoom ; make fifo room (if fifoPtr QWORD aligned before
|
||||
call _FifoMakeRoom ; make fifo room (if fifoPtr QWORD aligned before
|
||||
|
||||
add esp, 12 ; pop 3 DWORD parameters to FifoMakeRoom
|
||||
endif
|
||||
%endif
|
||||
mov fifo, [gc + fifoPtr] ; fifoPtr was modified by FifoMakeRoom, reload
|
||||
|
||||
mov fRoom, [gc + fifoRoom] ; fifoRoom was modified by FifoMakeRoom, reload
|
||||
@@ -278,10 +269,7 @@ __dlDone:
|
||||
pop esi ; restore caller's register variable
|
||||
pop ebx ; restore caller's register variable
|
||||
|
||||
ret 24 ; pop 6 DWORD parameters and return
|
||||
ret ; pop 6 DWORD parameters and return
|
||||
|
||||
__grTexDownload_3DNow_MMX@24 ENDP
|
||||
endp
|
||||
|
||||
_TEXT ENDS
|
||||
|
||||
END
|
||||
|
||||
@@ -65,6 +65,10 @@ static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_ZA16 "
|
||||
};
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
int main( int argc, char **argv)
|
||||
{
|
||||
@@ -91,11 +95,6 @@ int 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;
|
||||
|
||||
|
||||
@@ -57,6 +57,10 @@ static const char *sourceFormatString[] = {
|
||||
"GR_LFB_SRC_FMT_ZA16 "
|
||||
};
|
||||
|
||||
static void imageConvert( void *dst,
|
||||
void *src,
|
||||
GrLfbSrcFmt_t format,
|
||||
FxU32 *bpp );
|
||||
|
||||
int main( int argc, char **argv) {
|
||||
char match;
|
||||
@@ -80,11 +84,6 @@ int 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 )) ) {
|
||||
if ( rv == -1 ) {
|
||||
|
||||
@@ -1,62 +1,74 @@
|
||||
# Linux makefile for Glide2 and Texus2
|
||||
#
|
||||
# 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.
|
||||
# $Id$
|
||||
#
|
||||
# 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 (c) 2003 - Daniel Borca
|
||||
# Email : dborca@users.sourceforge.net
|
||||
# Web : http://www.geocities.com/dborca
|
||||
#
|
||||
# COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||
#
|
||||
# $Revision$
|
||||
# $Date$
|
||||
# Copyright (c) 2006 - Guillem Jover <guillem@hadrons.org>
|
||||
#
|
||||
|
||||
export TOPDIR := $(shell pwd)
|
||||
|
||||
THISDIR = devel
|
||||
SUBDIRS = swlibs
|
||||
#
|
||||
# Available options:
|
||||
#
|
||||
# Environment variables:
|
||||
# FX_GLIDE_HW build for the given ASIC (sst1, sst96, cvg, h3).
|
||||
# default = h3
|
||||
# DRI=1 Build DRI version.
|
||||
# target = h3
|
||||
# default = no
|
||||
# XPATH specify X libraries path; needed by DRI.
|
||||
# target = h3
|
||||
# default = /usr/X11R6/lib
|
||||
# H4=1 High speed Avenger/Napalm.
|
||||
# target = h3
|
||||
# default = no
|
||||
# OPTFLAGS pass given optimization flags to compiler
|
||||
# target = sst1, sst96, cvg, h3
|
||||
# default = -O2 -ffast-math
|
||||
# DEBUG=1 enable debugging checks and messages
|
||||
# target = sst1, sst96, cvg, h3
|
||||
# default = no
|
||||
# USE_X86=1 use assembler triangle specializations
|
||||
# target = sst1, sst96, cvg, h3
|
||||
# default = no
|
||||
# USE_3DNOW=1 allow 3DNow! specializations. However, the true CPU
|
||||
# capabilities are still checked at run-time to avoid
|
||||
# crashes.
|
||||
# target = cvg, h3
|
||||
# default = no
|
||||
# USE_MMX=1 (see USE_3DNOW)
|
||||
# target = h3
|
||||
# default = no
|
||||
#
|
||||
# Targets:
|
||||
# all: build everything
|
||||
# clean: remove object files
|
||||
# realclean: remove all generated files
|
||||
#
|
||||
|
||||
# We branched glide starting w/ Voodoo2(aka CVG) so
|
||||
# make sure that the right thing happens. If this sort
|
||||
# of branching happens again then add it to the list below.
|
||||
ifeq ($(FX_GLIDE_HW),sst1)
|
||||
SUBDIRS += sst1
|
||||
|
||||
|
||||
.PHONY: all clean realclean
|
||||
|
||||
.EXPORT_ALL_VARIABLES:
|
||||
|
||||
export BUILD_NUMBER = 40404
|
||||
export FX_GLIDE_HW ?= h3
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
G3_DIR = sst1/glide/src
|
||||
else
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
SUBDIRS += sst1
|
||||
else
|
||||
ifeq ($(FX_GLIDE_HW),cvg)
|
||||
SUBDIRS += cvg
|
||||
else
|
||||
ifeq ($(FX_GLIDE_HW),h3)
|
||||
SUBDIRS += h3
|
||||
else
|
||||
FX_GLIDE_HW = h3
|
||||
SUBDIRS += h3
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
G3_DIR = $(FX_GLIDE_HW)/glide/src
|
||||
endif
|
||||
|
||||
#
|
||||
# Other variables we need to set
|
||||
#
|
||||
export FX_HW_PROJECTS=glide
|
||||
ifeq ($(HAL_HW),)
|
||||
export HAL_HW=1
|
||||
endif
|
||||
export FX_NO_GET_BOF=1
|
||||
export FX_GLIDE_HW
|
||||
export SCRIPTDIR=$(TOPDIR)/swlibs/include/make
|
||||
all:
|
||||
make -f makefile.linux -C $(G3_DIR)
|
||||
|
||||
include swlibs/include/make/3dfx.mak
|
||||
clean:
|
||||
make -f makefile.linux -C $(G3_DIR) clean
|
||||
|
||||
realclean:
|
||||
make -f makefile.linux -C $(G3_DIR) realclean
|
||||
|
||||
1
glide2x/mk.sh
Normal file
1
glide2x/mk.sh
Normal file
@@ -0,0 +1 @@
|
||||
make -f makefile.linux FX_GLIDE_HW=cvg USE_X86=1
|
||||
@@ -1,48 +1,48 @@
|
||||
/*
|
||||
* 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 <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <3dfx.h>
|
||||
#include <glide.h>
|
||||
#include <sst1init.h>
|
||||
|
||||
/* This should be exported, but isn't yet */
|
||||
#define SST1INIT_MAX_BOARDS 16
|
||||
|
||||
int main (int argc[], char* argv[])
|
||||
{
|
||||
FxU32* sst[SST1INIT_MAX_BOARDS];
|
||||
int num_sst;
|
||||
int i;
|
||||
|
||||
/* Map all the boards in the system */
|
||||
num_sst = 0;
|
||||
do {
|
||||
sst[num_sst] = sst1InitMapBoard (num_sst);
|
||||
} while (sst[num_sst++] != NULL);
|
||||
|
||||
/* Shut them all down */
|
||||
for (i = 0; i < num_sst; i += 1)
|
||||
sst1InitVgaPassCtrl(sst[i], 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* 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 <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <3dfx.h>
|
||||
#include <glide.h>
|
||||
#include <sst1init.h>
|
||||
|
||||
/* This should be exported, but isn't yet */
|
||||
#define SST1INIT_MAX_BOARDS 16
|
||||
|
||||
int main (int argc[], char* argv[])
|
||||
{
|
||||
FxU32* sst[SST1INIT_MAX_BOARDS];
|
||||
int num_sst;
|
||||
int i;
|
||||
|
||||
/* Map all the boards in the system */
|
||||
num_sst = 0;
|
||||
do {
|
||||
sst[num_sst] = sst1InitMapBoard (num_sst);
|
||||
} while (sst[num_sst++] != NULL);
|
||||
|
||||
/* Shut them all down */
|
||||
for (i = 0; i < num_sst; i += 1)
|
||||
sst1InitVgaPassCtrl(sst[i], 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
349
glide2x/sst1/glide/src/Makefile.win32
Normal file
349
glide2x/sst1/glide/src/Makefile.win32
Normal file
@@ -0,0 +1,349 @@
|
||||
# Win32 makefile for Glide2/SST1 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 (sst1, sst96).
|
||||
# default = sst1
|
||||
# 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!
|
||||
# default = no
|
||||
# TEXUS2=1 embed Texus2 functions into Glide3.
|
||||
# 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 ?= sst1
|
||||
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 -DINIT_ACCESS_DDRAW
|
||||
|
||||
# general
|
||||
CDEFS += -DGLIDE_HARDWARE -DGLIDE_DEFAULT_GAMMA=1.3f -DGLIDE_LIB=1
|
||||
|
||||
# subsystem
|
||||
ifeq ($(FX_GLIDE_HW),sst1)
|
||||
CDEFS += -DSST1
|
||||
else
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
CDEFS += -DSST96
|
||||
CDEFS += -DSST96_FIFO
|
||||
#CDEFS += -DSST96_ALT_FIFO_WRAP
|
||||
#CDEFS += -DINIT96VGASWAP -DINIT_ACCESS_DIRECT
|
||||
CDEFS += -DGLIDE_USE_ALT_REGMAP
|
||||
endif
|
||||
endif
|
||||
|
||||
# debug
|
||||
ifdef DEBUG
|
||||
CDEFS += -DGDBG_INFO_ON -DGLIDE_DEBUG -DGLIDE_SANITY_ASSERT -DGLIDE_SANITY_SIZE
|
||||
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
|
||||
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
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
LDLIBS += gdi32.lib ddraw.lib dxguid.lib oldnames.lib
|
||||
endif
|
||||
|
||||
CFLAGS += -I. -I../../incsrc -I../../init -I../../init/initvg -I../../init/init96
|
||||
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)
|
||||
|
||||
ifneq ($(USE_X86),1)
|
||||
CFLAGS += -DGLIDE_USE_C_TRISETUP
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# objects
|
||||
###############################################################################
|
||||
|
||||
GLIDE_OBJECTS = \
|
||||
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
|
||||
|
||||
ifeq ($(USE_X86),1)
|
||||
ifeq ($(FX_GLIDE_HW),sst1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw.obj
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw96.obj
|
||||
endif
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
gxdraw.obj
|
||||
endif
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
GLIDE_OBJECTS += \
|
||||
sst96.obj \
|
||||
../../init/init96/init96.obj \
|
||||
../../init/init96/dxdrvr.obj \
|
||||
../../init/init96/initat3d.obj \
|
||||
../../init/init96/initmcrx.obj
|
||||
endif
|
||||
|
||||
GLIDE_OBJECTS += \
|
||||
../../init/init.obj \
|
||||
../../init/vgdrvr.obj \
|
||||
../../init/vg96drvr.obj \
|
||||
../../init/h3drvr.obj \
|
||||
../../init/initvg/gamma.obj \
|
||||
../../init/initvg/dac.obj \
|
||||
../../init/initvg/video.obj \
|
||||
../../init/initvg/parse.obj \
|
||||
../../init/initvg/sli.obj \
|
||||
../../init/initvg/util.obj \
|
||||
../../init/initvg/info.obj \
|
||||
../../init/initvg/print.obj \
|
||||
../../init/initvg/gdebug.obj \
|
||||
../../init/initvg/sst1init.obj \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/sst1_pci.obj \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxmsr.obj \
|
||||
$(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 \
|
||||
|
||||
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)
|
||||
|
||||
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) $<
|
||||
xdraw.obj: xdraw.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw96.obj: xdraw96.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
../../init/initvg/gamma.obj: ../../init/initvg/gamma.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/dac.obj: ../../init/initvg/dac.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/video.obj: ../../init/initvg/video.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/parse.obj: ../../init/initvg/parse.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/sli.obj: ../../init/initvg/sli.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/util.obj: ../../init/initvg/util.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/info.obj: ../../init/initvg/info.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/print.obj: ../../init/initvg/print.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/gdebug.obj: ../../init/initvg/gdebug.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/sst1init.obj: ../../init/initvg/sst1init.c
|
||||
$(CC) -Fo$@ $(CFLAGS) -USST96 -c $<
|
||||
endif
|
||||
|
||||
$(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,../../init/initvg/*.obj)
|
||||
-$(call UNLINK,../../init/init96/*.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,$(GLIDE_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))
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <sys/utsname.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int _cpu_detect_asm() {
|
||||
struct utsname name;
|
||||
|
||||
@@ -19,16 +19,19 @@
|
||||
;;
|
||||
;; $Header$
|
||||
;; $Log$
|
||||
;; Revision 1.1.2.1 2004/03/02 07:55:29 dborca
|
||||
;; Bastardised Glide3x for SST1
|
||||
;;
|
||||
;; Revision 1.1.1.1 1999/12/07 21:48:51 joseph
|
||||
;; Initial checkin into SourceForge.
|
||||
;;
|
||||
;
|
||||
; 2 3/04/97 9:10p Dow
|
||||
; Neutered mutiplatform multiheaded monster.
|
||||
;;
|
||||
;;
|
||||
|
||||
TITLE cpudtect.asm
|
||||
|
||||
.586P
|
||||
.model FLAT,C ; Flat memory, mangle publics with leading '_'
|
||||
%include "xos.inc"
|
||||
|
||||
;; Data for data segment goes here
|
||||
;_DATA SEGMENT DWORD USE32 PUBLIC 'DATA';
|
||||
@@ -36,14 +39,14 @@ TITLE cpudtect.asm
|
||||
|
||||
;;; Some useful constants
|
||||
; CPU Type
|
||||
CPUTypeUnknown = 0ffffffffh
|
||||
CPUTypePrePent = 4h
|
||||
CPUTypeP5 = 5h
|
||||
CPUTypeP6 = 6h
|
||||
CPUTypeUnknown equ 0ffffffffh
|
||||
CPUTypePrePent equ 4h
|
||||
CPUTypeP5 equ 5h
|
||||
CPUTypeP6 equ 6h
|
||||
|
||||
;;; References to external data:
|
||||
|
||||
_TEXT SEGMENT
|
||||
segment TEXT
|
||||
;;
|
||||
;; _cpu_detect_asm - detect the type of CPU
|
||||
;;
|
||||
@@ -53,10 +56,8 @@ _TEXT SEGMENT
|
||||
;;
|
||||
;; returns 4 for non-pen
|
||||
|
||||
PUBLIC _cpu_detect_asm
|
||||
_cpu_detect_asm PROC NEAR
|
||||
proc _cpu_detect_asm
|
||||
P6Stuff:
|
||||
.586
|
||||
pushad ; save all regs.
|
||||
|
||||
; First, determine whether CPUID instruction is available.
|
||||
@@ -84,6 +85,7 @@ P6Stuff:
|
||||
jnz NotIntel
|
||||
xor ecx, 06c65746eh ; "ntel"
|
||||
jnz NotIntel ;
|
||||
|
||||
;; Verifying architecture family
|
||||
mov eax, 1
|
||||
cpuid ; get family/model/stepping
|
||||
@@ -116,45 +118,38 @@ NotIntel:
|
||||
mov eax, 0ffffffffh
|
||||
ret
|
||||
|
||||
_cpu_detect_asm ENDP
|
||||
endp
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; this routine sets the precision to single
|
||||
; which effects all adds, mults, and divs
|
||||
align 4 ;
|
||||
PUBLIC single_precision_asm
|
||||
single_precision_asm PROC NEAR
|
||||
.586
|
||||
proc single_precision_asm
|
||||
push eax ; make room
|
||||
fnclex ; clear pending exceptions
|
||||
fstcw WORD PTR [esp]
|
||||
mov eax, DWORD PTR [esp]
|
||||
fstcw WORD [esp]
|
||||
mov eax, DWORD [esp]
|
||||
and eax, 0000fcffh ; clear bits 9:8
|
||||
mov DWORD PTR [esp], eax
|
||||
fldcw WORD PTR [esp]
|
||||
mov DWORD [esp], eax
|
||||
fldcw WORD [esp]
|
||||
pop eax
|
||||
ret 0
|
||||
single_precision_asm ENDP
|
||||
ret
|
||||
endp
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; this routine sets the precision to double
|
||||
; which effects all adds, mults, and divs
|
||||
align 4 ;
|
||||
PUBLIC double_precision_asm
|
||||
double_precision_asm PROC NEAR
|
||||
.586
|
||||
proc double_precision_asm
|
||||
push eax ; make room
|
||||
fnclex ; clear pending exceptions
|
||||
fstcw WORD PTR [esp]
|
||||
mov eax, DWORD PTR [esp]
|
||||
fstcw WORD [esp]
|
||||
mov eax, DWORD [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]
|
||||
mov DWORD [esp], eax
|
||||
fldcw WORD [esp]
|
||||
pop eax
|
||||
ret 0
|
||||
double_precision_asm ENDP
|
||||
|
||||
_TEXT ENDS
|
||||
END
|
||||
ret
|
||||
endp
|
||||
|
||||
@@ -44,22 +44,22 @@
|
||||
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)
|
||||
|
||||
#if (GLIDE_PLATFORM & GLIDE_HW_SST96)
|
||||
#define HWOFFSET(p, o, pname) if (hex) \
|
||||
printf("%s\t= %08xh\n",pname,(((int) &p.o)-(int)&p)>>2);\
|
||||
else printf("%s\t= %10d\n",pname,(((int)&p.o)-(int)&p))
|
||||
printf("%s\tequ %08xh\n",pname,(((int) &p.o)-(int)&p)>>2);\
|
||||
else printf("%s\tequ %10d\n",pname,(((int)&p.o)-(int)&p))
|
||||
#endif /* (GLIDE_PLATFORM & GLIDE_HW_SST96) */
|
||||
|
||||
#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))
|
||||
printf("SIZEOF_%s\tequ %08lxh\n",pname,sizeof(p)); \
|
||||
else printf("SIZEOF_%s\tequ %10ld\n",pname,sizeof(p))
|
||||
#else
|
||||
#define NEWLINE printf("\n");
|
||||
#define COMMENT printf("#----------------------------------------------------------------------\n")
|
||||
@@ -98,7 +98,7 @@ main (int argc, char **argv)
|
||||
|
||||
if (argc > 1) {
|
||||
if (strcmp("-inline", argv[1]) == 0) {
|
||||
Sstregs dummyRegs;
|
||||
Sstregs dummyRegs = { 0x00UL };
|
||||
|
||||
printf("#ifndef __FX_INLINE_H__\n");
|
||||
printf("#define __FX_INLINE_H__\n");
|
||||
@@ -118,7 +118,7 @@ main (int argc, char **argv)
|
||||
}
|
||||
|
||||
#ifndef __linux__
|
||||
printf("SST_CHIP_MASK = 0%xh\n",SST_CHIP_MASK);
|
||||
printf("SST_CHIP_MASK equ 0%xh\n",SST_CHIP_MASK);
|
||||
#else
|
||||
printf("SST_CHIP_MASK .EQU 0x%x\n", SST_CHIP_MASK);
|
||||
#endif
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:48:52 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
*
|
||||
* 6 3/09/97 10:31a Dow
|
||||
* Added GR_DIENTRY for di glide functions
|
||||
@@ -58,15 +61,6 @@ typedef struct
|
||||
FxBool valid;
|
||||
} CfTableEntry;
|
||||
|
||||
#ifdef __linux__
|
||||
static void strupr(char *str) {
|
||||
while (*str) {
|
||||
if (islower(*str)) *str=toupper(*str);
|
||||
str++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
** gu3dfGetInfo
|
||||
*/
|
||||
@@ -254,7 +248,13 @@ GR_DIENTRY(gu3dfGetInfo, FxBool,
|
||||
/*
|
||||
** determine the color format of the input image
|
||||
*/
|
||||
strupr( color_format );
|
||||
{
|
||||
char *tempStr = (char*)color_format;
|
||||
while (*tempStr != '\0') {
|
||||
*tempStr = toupper(*tempStr);
|
||||
tempStr++;
|
||||
}
|
||||
}
|
||||
|
||||
i = 0;
|
||||
format_found = FXFALSE;
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/12/07 21:48:52 joseph
|
||||
** Initial checkin into SourceForge.
|
||||
**
|
||||
*/
|
||||
|
||||
#define OFFICIAL 1
|
||||
@@ -26,7 +29,8 @@
|
||||
|
||||
#include <fxver.h>
|
||||
#include "rcver.h"
|
||||
#include "fxbldno.h"
|
||||
/*#include "fxbldno.h"*/
|
||||
#define BUILD_NUMBER 0001
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
@@ -1,199 +1,337 @@
|
||||
# Linux makefile for Glide2/SST1
|
||||
#
|
||||
# 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
|
||||
# $Id$
|
||||
#
|
||||
# Copyright (c) 2003 - Daniel Borca
|
||||
# Email : dborca@users.sourceforge.net
|
||||
# Web : http://www.geocities.com/dborca
|
||||
#
|
||||
# Copyright (c) 2006 - Guillem Jover <guillem@hadrons.org>
|
||||
#
|
||||
|
||||
# local defines, options, includes
|
||||
|
||||
# Stuff for debugging
|
||||
ifneq ($(DEBUG),)
|
||||
DBGOPTS = -DGLIDE_DEBUG -DGDBG_INFO_ON
|
||||
GLIDE_SANITY_ALL = 1
|
||||
endif
|
||||
|
||||
# Display Options (Hardware)
|
||||
DSPOPTS = -DGLIDE_HARDWARE
|
||||
|
||||
# Compile for specific hardware
|
||||
ifeq ($(FX_GLIDE_HW),SST96)
|
||||
HWSPEC = sst96.c
|
||||
LCDEFS += -DSST96 -DGLIDE_USE_ALT_REGMAP
|
||||
|
||||
ASMTRISETUP = xdraw96.S
|
||||
# LIBOBJS = xdraw96.o
|
||||
|
||||
FX_GLIDE_FIFO96 = 1
|
||||
FX_GLIDE_GROUP_WRITE=1
|
||||
|
||||
# Turn on the alternate fifo handling code
|
||||
ifeq ($(FX_SST96_ALT_FIFO),1)
|
||||
LCDEFS += -DSST96_ALT_FIFO_WRAP
|
||||
endif
|
||||
|
||||
else # Default to SST1
|
||||
LCDEFS += -DSST1
|
||||
LADEFS += /DSST1
|
||||
ASMTRISETUP = xdraw.S
|
||||
# LIBOBJS = xdraw.o
|
||||
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.
|
||||
#
|
||||
# Available options:
|
||||
#
|
||||
# Environment variables:
|
||||
# FX_GLIDE_HW build for the given ASIC (sst1, sst96).
|
||||
# default = sst1
|
||||
# XPATH specify X libraries path; needed for sst96.
|
||||
# default = /usr/X11R6/lib (sst96 only)
|
||||
# OPTFLAGS pass given optimization flags to compiler
|
||||
# default = -O1 -ffast-math
|
||||
# DEBUG=1 enable debugging checks and messages
|
||||
# default = no
|
||||
# USE_X86=1 use assembler triangle specializations!
|
||||
# default = no
|
||||
#
|
||||
# Targets:
|
||||
# all: build everything
|
||||
# glide2x: build Glide2x lib
|
||||
# clean: remove object files
|
||||
# realclean: remove all generated files
|
||||
#
|
||||
|
||||
# SST96 has no notion of alternate register mapping
|
||||
ifneq ($(FX_GLIDE_HW),SST96)
|
||||
# Turn on/off alt register set. (G lide R eg M ap OPTS)
|
||||
ifeq ($(FX_GLIDE_REG_MAP),ORIG)
|
||||
GRMOPTS = -DGLIDE_USE_ALT_REGMAP
|
||||
ASM_REGMAP_DEFS = -DGLIDE_USE_ALT_REGMAP
|
||||
|
||||
|
||||
.PHONY: all glide3x clean realclean
|
||||
.INTERMEDIATE: fxgasm
|
||||
.SUFFIXES: .lo
|
||||
|
||||
export PATH := $(PATH):.
|
||||
|
||||
###############################################################################
|
||||
# general defines (user settable?)
|
||||
###############################################################################
|
||||
|
||||
GLIDE_VERSION_MAJOR = 2
|
||||
GLIDE_VERSION_MINOR = 46
|
||||
|
||||
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 ?= sst1
|
||||
FX_GLIDE_SW = ../../../swlibs
|
||||
GLIDE_LIBDIR = ../../lib
|
||||
|
||||
###############################################################################
|
||||
# tools
|
||||
###############################################################################
|
||||
|
||||
CC = gcc
|
||||
AS = nasm
|
||||
AR = ar
|
||||
|
||||
CP = cp
|
||||
|
||||
###############################################################################
|
||||
# defines
|
||||
###############################################################################
|
||||
|
||||
# platform
|
||||
CDEFS = -DINIT_LINUX
|
||||
XPATH ?= /usr/X11R6/lib
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
LDFLAGS = -L$(XPATH)
|
||||
LDLIBS = -lX11 -lXxf86dga -lXxf86rush -lXxf86vm
|
||||
endif
|
||||
|
||||
LDLIBS += -lm
|
||||
|
||||
# general
|
||||
CDEFS += -DGLIDE_HARDWARE -DGLIDE_DEFAULT_GAMMA=1.3f -DGLIDE_LIB=1
|
||||
|
||||
# subsystem
|
||||
ifeq ($(FX_GLIDE_HW),sst1)
|
||||
CDEFS += -DSST1
|
||||
else
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
CDEFS += -DSST96
|
||||
CDEFS += -DSST96_FIFO
|
||||
#CDEFS += -DSST96_ALT_FIFO_WRAP
|
||||
#CDEFS += -DINIT96VGASWAP -DINIT_ACCESS_DIRECT
|
||||
CDEFS += -DGLIDE_USE_ALT_REGMAP
|
||||
endif
|
||||
endif
|
||||
|
||||
# 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
|
||||
LIBOBJS =
|
||||
# debug
|
||||
ifdef DEBUG
|
||||
CDEFS += -DGDBG_INFO_ON -DGLIDE_DEBUG -DGLIDE_SANITY_ASSERT -DGLIDE_SANITY_SIZE
|
||||
endif
|
||||
|
||||
OPTOPTS = $(GRMOPTS) $(OTSOPTS) $(ATSOPTS)
|
||||
# other
|
||||
CDEFS += -DGLIDE_PLUG -DGLIDE_SPLASH
|
||||
|
||||
# local defines, begin with basics and then add on
|
||||
LCDEFS += -DGLIDE_LIB
|
||||
###############################################################################
|
||||
# flags
|
||||
###############################################################################
|
||||
|
||||
# Turn Off/On compilation of shameless plug
|
||||
ifneq ($(FX_GLIDE_NO_PLUG),1)
|
||||
LCDEFS += -DGLIDE_PLUG
|
||||
endif
|
||||
# librarian
|
||||
ARFLAGS = rus
|
||||
|
||||
# Turn Off/On splash screen
|
||||
ifneq ($(FX_GLIDE_NO_SPLASH),1)
|
||||
LCDEFS += -DGLIDE_SPLASH
|
||||
endif
|
||||
# assembler
|
||||
ASFLAGS = -O6 -felf -D__linux__
|
||||
ASFLAGS += $(CDEFS)
|
||||
|
||||
# Turn On group writes
|
||||
ifneq ($(FX_GLIDE_GROUP_WRITE),)
|
||||
LCDEFS += -DGROUP_WRITE
|
||||
endif
|
||||
# compiler
|
||||
CFLAGS = -Wall -W
|
||||
CFLAGS += -I. -I../../incsrc -I../../init -I../../init/initvg -I../../init/init96
|
||||
CFLAGS += -I$(FX_GLIDE_SW)/fxmisc -I$(FX_GLIDE_SW)/newpci/pcilib -I$(FX_GLIDE_SW)/fxmemmap
|
||||
CFLAGS += $(CDEFS)
|
||||
|
||||
ifeq ($(FX_GLIDE_FIFO96),1)
|
||||
LCDEFS += -DSST96_FIFO
|
||||
endif
|
||||
|
||||
ifdef GLIDE_SANITY_ALL
|
||||
GLIDE_SANITY_SIZE = $(GLIDE_SANITY_ALL)
|
||||
GLIDE_SANITY_ASSERT = $(GLIDE_SANITY_ALL)
|
||||
endif
|
||||
|
||||
ifdef GLIDE_SANITY_SIZE
|
||||
LCDEFS += -DGLIDE_SANITY_SIZE
|
||||
endif
|
||||
ifdef GLIDE_SANITY_ASSERT
|
||||
LCDEFS += -DGLIDE_SANITY_ASSERT
|
||||
endif
|
||||
|
||||
# Local Defs, Includes, and Options (C)
|
||||
LCINCS = -I$(SST1INC)
|
||||
LCOPTS = $(DBGOPTS) $(DSPOPTS) $(OPTOPTS)
|
||||
|
||||
# Local Defs, Includes, and Options (ASM)
|
||||
LADEFS += $(ASM_REGMAP_DEFS)
|
||||
LAINCS = -I$(SST1INC)
|
||||
LAOPTS = $(DBGOPTS) $(DSPOPTS) $(OPTOPTS)
|
||||
|
||||
AFILES = $(ASMTRISETUP)
|
||||
|
||||
# sources
|
||||
HEADERS = glide.h gump.h glidesys.h glideutl.h
|
||||
PRIVATE_HEADERS = fxglide.h gsstdef.h
|
||||
INSTALL_DESTINATION = $(BUILD_ROOT_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 gxdraw.c $(HWSPEC) \
|
||||
cpudetect.c
|
||||
|
||||
OFILES = $(CFILES:.c=.o)
|
||||
|
||||
OTHER_CFILES = fxgasm.c
|
||||
|
||||
CODFILES = $(CFILES:.c=.cod)
|
||||
|
||||
SST1INC = $(BUILD_ROOT_HW)/include
|
||||
SWLIBSINC = $(BUILD_ROOT_SWLIBS)/include
|
||||
|
||||
# sublibs for hardware
|
||||
SUBLIBRARIES = \
|
||||
$(BUILD_ROOT_SWLIBS)/lib/libfxmisc.a \
|
||||
$(BUILD_ROOT_SWLIBS)/lib/libfxpci.a \
|
||||
$(BUILD_ROOT_HW)/lib/libinit.a \
|
||||
$(BUILD_ROOT_HW)/lib/libsst1.a \
|
||||
$(BUILD_ROOT_HW)/lib/libinit96.a
|
||||
|
||||
|
||||
LINKLIBRARIES+=-lm
|
||||
ifeq ($(FX_GLIDE_HW),SST96)
|
||||
LINKLIBRARIES += -L$(XLOCATION)/lib -lX11 -lXext \
|
||||
-lXxf86rush -lXxf86dga -lXxf86vm
|
||||
endif
|
||||
|
||||
# targets
|
||||
LDIRT = fxgasm.o fxgasm fxgasm.h
|
||||
|
||||
LIBRARIES = libglide.a
|
||||
SHARED_LIBRARY = libglide.so.2.46
|
||||
|
||||
include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak
|
||||
|
||||
fxgasm : fxgasm.c $(HEADERS) $(PRIVATE_HEADERS)
|
||||
$(CC) -o $@ fxgasm.c $(GCDEFS) $(LCDEFS) $(VCDEFS) $(LCOPTS) \
|
||||
-I$(BUILD_ROOT_HW)/include -I$(BUILD_ROOT_SWLIBS)/include $(LDFLAGS)
|
||||
|
||||
fxgasm.h : fxgasm
|
||||
./fxgasm > fxgasm.h
|
||||
|
||||
fxinline.h : fxgasm
|
||||
./fxgasm -inline > fxinline.h
|
||||
|
||||
ASM_DEFINES = -DGLIDE_HARDWARE=1
|
||||
ifneq ($(DEBUG),)
|
||||
ASM_DEFINES += -DGLIDE_DEBUG=1
|
||||
ifeq ($(USE_X86),1)
|
||||
CFLAGS += -DGL_X86
|
||||
OPTFLAGS ?= -O1 -ffast-math
|
||||
else
|
||||
ASM_DEFINES += -DGLIDE_DEBUG=0
|
||||
CFLAGS += -DGLIDE_USE_C_TRISETUP
|
||||
OPTFLAGS ?= -O1 -ffast-math
|
||||
endif
|
||||
|
||||
xdraw.o : fxgasm.h xdraw.S
|
||||
# $(CC) -c -o $@ xdraw.S $(ASM_OPTS) $(LAOPTS)
|
||||
gasp xdraw.S $(ASM_DEFINES) | as -V -Qy -o xdraw.o
|
||||
# optflags
|
||||
CFLAGS += $(OPTFLAGS)
|
||||
|
||||
xdraw96.o : fxgasm.h xdraw96.
|
||||
# $(CC) -c -o $@ xdraw96.S $(ASM_OPTS) $(LAOPTS)
|
||||
gasp xdraw96.S $(ASM_DEFINES) | as -V -Qy -o xdraw96.o
|
||||
###############################################################################
|
||||
# objects
|
||||
###############################################################################
|
||||
|
||||
gsplash.o : gsplash.c splshdat.c fxinline.h
|
||||
GLIDE_HEADERS = \
|
||||
glide.h gump.h glidesys.h glideutl.h
|
||||
|
||||
GLIDE_PRIVATE_HEADERS = \
|
||||
fxglide.h gsstdef.h
|
||||
|
||||
###############################################################################
|
||||
# objects
|
||||
###############################################################################
|
||||
|
||||
GLIDE_OBJECTS = \
|
||||
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
|
||||
|
||||
ifeq ($(USE_X86),1)
|
||||
ifeq ($(FX_GLIDE_HW),sst1)
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw.o
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
xdraw96.o
|
||||
endif
|
||||
else
|
||||
GLIDE_OBJECTS += \
|
||||
gxdraw.o
|
||||
endif
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
GLIDE_OBJECTS += \
|
||||
sst96.o \
|
||||
../../init/init96/init96.o \
|
||||
../../init/init96/lindrvr.o \
|
||||
../../init/init96/initat3d.o \
|
||||
../../init/init96/initmcrx.o
|
||||
endif
|
||||
|
||||
GLIDE_OBJECTS += \
|
||||
../../init/init.o \
|
||||
../../init/vgdrvr.o \
|
||||
../../init/vg96drvr.o \
|
||||
../../init/h3drvr.o \
|
||||
../../init/initvg/gamma.o \
|
||||
../../init/initvg/dac.o \
|
||||
../../init/initvg/video.o \
|
||||
../../init/initvg/parse.o \
|
||||
../../init/initvg/sli.o \
|
||||
../../init/initvg/util.o \
|
||||
../../init/initvg/info.o \
|
||||
../../init/initvg/print.o \
|
||||
../../init/initvg/gdebug.o \
|
||||
../../init/initvg/sst1init.o \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/sst1_pci.o \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxmsr.o \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxpci.o \
|
||||
$(FX_GLIDE_SW)/newpci/pcilib/fxlinux.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
|
||||
|
||||
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)
|
||||
|
||||
###############################################################################
|
||||
# rules(2)
|
||||
###############################################################################
|
||||
|
||||
cpuid.o: cpudtect.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw.o: xdraw.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
xdraw96.o: xdraw96.asm
|
||||
$(AS) -o $@ $(ASFLAGS) $<
|
||||
|
||||
cpuid.lo: cpuid.o
|
||||
$(CP) $< $@
|
||||
xdraw.lo: xdraw.o
|
||||
$(CP) $< $@
|
||||
xdraw96.lo: xdraw96.o
|
||||
$(CP) $< $@
|
||||
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
../../init/initvg/gamma.o: ../../init/initvg/gamma.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/dac.o: ../../init/initvg/dac.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/video.o: ../../init/initvg/video.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/parse.o: ../../init/initvg/parse.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/sli.o: ../../init/initvg/sli.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/util.o: ../../init/initvg/util.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/info.o: ../../init/initvg/info.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/print.o: ../../init/initvg/print.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/gdebug.o: ../../init/initvg/gdebug.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
../../init/initvg/sst1init.o: ../../init/initvg/sst1init.c
|
||||
$(CC) -o $@ $(CFLAGS) -USST96 -c $<
|
||||
|
||||
../../init/initvg/gamma.lo: ../../init/initvg/gamma.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/dac.lo: ../../init/initvg/dac.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/video.lo: ../../init/initvg/video.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/parse.lo: ../../init/initvg/parse.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/sli.lo: ../../init/initvg/sli.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/util.lo: ../../init/initvg/util.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/info.lo: ../../init/initvg/info.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/print.lo: ../../init/initvg/print.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/gdebug.lo: ../../init/initvg/gdebug.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
../../init/initvg/sst1init.lo: ../../init/initvg/sst1init.c
|
||||
$(CC) -o $@ $(CFLAGS) -DPIC -fPIC -USST96 -c $<
|
||||
endif
|
||||
|
||||
$(GLIDE_OBJECTS): fxinline.h fxgasm.h
|
||||
|
||||
fxinline.h: fxgasm
|
||||
$< -inline > $@
|
||||
|
||||
fxgasm.h: fxgasm
|
||||
$< -hex > $@
|
||||
|
||||
fxgasm: fxgasm.c $(GLIDE_HEADERS) $(GLIDE_PRIVATE_HEADERS)
|
||||
$(CC) -o $@ $(CFLAGS) $<
|
||||
|
||||
###############################################################################
|
||||
# clean, realclean
|
||||
###############################################################################
|
||||
|
||||
clean:
|
||||
-$(RM) *.o *.lo
|
||||
-$(RM) ../../init/*.o ../../init/*.lo
|
||||
-$(RM) ../../init/initvg/*.o ../../init/initvg/*.lo
|
||||
-$(RM) ../../init/init96/*.o ../../init/init96/*.lo
|
||||
-$(RM) $(FX_GLIDE_SW)/newpci/pcilib/*.o $(FX_GLIDE_SW)/newpci/pcilib/*.lo
|
||||
-$(RM) fxinline.h
|
||||
-$(RM) fxgasm.h
|
||||
|
||||
realclean: clean
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_LIB)
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SHARED)
|
||||
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SO)
|
||||
|
||||
@@ -30,7 +30,7 @@ endif
|
||||
DSPOPTS = -DGLIDE_HARDWARE
|
||||
|
||||
# Compile for specific hardware
|
||||
ifeq ($(FX_GLIDE_HW),SST96)
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
HWSPEC = sst96.c
|
||||
LCDEFS += -DSST96 -DGLIDE_USE_ALT_REGMAP
|
||||
|
||||
@@ -63,7 +63,7 @@ endif
|
||||
#
|
||||
|
||||
# SST96 has no notion of alternate register mapping
|
||||
ifneq ($(FX_GLIDE_HW),SST96)
|
||||
ifneq ($(FX_GLIDE_HW),sst96)
|
||||
# Turn on/off alt register set. (G lide R eg M ap OPTS)
|
||||
ifeq ($(FX_GLIDE_REG_MAP),ORIG)
|
||||
GRMOPTS = -DGLIDE_USE_ALT_REGMAP
|
||||
@@ -158,7 +158,7 @@ SUBLIBRARIES = \
|
||||
|
||||
|
||||
LINKLIBRARIES+=-lm
|
||||
ifeq ($(FX_GLIDE_HW),SST96)
|
||||
ifeq ($(FX_GLIDE_HW),sst96)
|
||||
LINKLIBRARIES += -L$(XLOCATION)/lib -lX11 -lXext \
|
||||
-lXxf86rush -lXxf86dga -lXxf86vm
|
||||
endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user