878 Commits

Author SHA1 Message Date
48e1209c00 trial 2026-03-27 01:52:16 +01:00
d360e9684e test 2026-03-27 01:43:19 +01:00
4253416778 trial 2026-03-27 01:25:22 +01:00
a0f1117bc7 restore nop for mmx 2026-03-27 01:08:06 +01:00
2fb623617d woups 2026-03-27 00:55:30 +01:00
8c63c25d3d fix mmx on linux 2026-03-27 00:54:20 +01:00
1458b8f773 remove no-strict-aliasing 2026-03-27 00:38:57 +01:00
57d57e8161 Revert "trial"
This reverts commit 58692a7fd8.
2026-03-27 00:38:26 +01:00
58692a7fd8 trial 2026-03-27 00:22:05 +01:00
79f59f3c97 work 2026-03-27 00:03:45 +01:00
c111f47e42 add execution bit (again) 2026-03-25 20:12:31 +01:00
a7ffcad6a3 test 2026-03-25 01:35:47 +01:00
ea6b9fa72a test 2026-03-25 01:22:58 +01:00
272994024c test 2026-03-25 01:11:31 +01:00
ec0b7e35b9 grrr 2026-03-25 00:45:07 +01:00
583de68697 cleanning 2026-03-25 00:29:34 +01:00
1acaf93b2d clean 2026-03-25 00:00:23 +01:00
92b702246d work 2026-03-24 23:26:47 +01:00
c83f76c089 work 2026-03-24 23:17:05 +01:00
69aede93a6 work 2026-03-24 23:10:28 +01:00
7ba493dec6 fix asm 2026-03-24 22:59:06 +01:00
53aff71bbd update makefiles 2026-03-24 22:49:12 +01:00
85266ef91e fix compilation 2026-03-24 22:03:03 +01:00
4c9d7d88f0 remove binary files 2026-03-24 21:51:57 +01:00
6a464b6985 fix cqse again 2026-03-24 21:37:26 +01:00
76dd80b647 remove temp files 2026-03-24 21:27:28 +01:00
d3b0a2617e fix case 2026-03-24 21:26:32 +01:00
8f164d5664 fix 2026-03-24 21:21:21 +01:00
c416c1b7a2 trial 2026-03-24 21:11:02 +01:00
8d7d0b0ab9 fix 2.6.24 device creation (and hopefully later kernels) 2026-03-24 20:36:39 +01:00
2ec5dc2709 revert to old driver (ugly tree, will fix that later) 2026-03-24 01:19:53 +01:00
4816fb5893 arch opts 2026-03-23 23:23:27 +01:00
4267922ec2 CRLF fix 2026-03-23 23:16:31 +01:00
a9cc616aeb bump version 2026-03-21 02:22:34 +01:00
6234780d24 fix + opt 2026-03-21 02:07:00 +01:00
ed1812e9ce bump glide2 versions 2026-03-21 01:52:44 +01:00
159f4518d5 trying to sync headers... 2026-03-21 01:23:04 +01:00
578e623aad fix build 2026-03-20 23:37:27 +01:00
759ac19aff implement device_class to auto create /dev/3dfx 2026-03-20 20:42:31 +01:00
df592b464f add execution bit to rules file for debian packaging 2026-03-20 20:12:55 +01:00
6717a618ac integration 2026-03-20 19:48:08 +01:00
8a704cd926 fix target 2026-03-20 19:10:32 +01:00
d0735d0b99 implement simple debian module package creation 2026-03-20 18:35:39 +01:00
Khralkatorrix
ee38094805 glide2x, glide3x: On MSVC, don't treat warning as error for glide tests.
Signed-off-by: Khralkatorrix <garuda2550@gmail.com>
2024-01-27 18:23:24 +03:00
Ozkan Sezer
6e79c3d9b7 add note to glide3x README about swlibs. 2022-12-25 14:02:40 +03:00
Jonathan Schleifer
d86e089d35 Fix compilation with MinGW
Change the 'extern inline' procedures in fxglide.h to 'static inline' .
2022-12-25 12:02:40 +01:00
Ozkan Sezer
7d4a1ddda1 h3/h5, minihwc: inline configmg code, remove win9x.asm. 2022-07-23 03:28:28 +03:00
Ozkan Sezer
5ba939612e sst1: sync glide2/3 versions of makefiles, minor reorganization in init. 2021-11-11 17:50:04 +03:00
Ozkan Sezer
85186e0206 remove irrelevant ssttype checks from individual hw code 2021-11-11 17:37:50 +03:00
Ozkan Sezer
587e01e573 do not include SST1 and SST96 init codes together. 2021-11-11 17:37:04 +03:00
Ozkan Sezer
a20bb982cc cvg, sst1: tweak another getenv() usage. 2021-11-11 17:33:40 +03:00
Ozkan Sezer
5ffccc63b8 cvg, sst1, sst96: cache the getenv() results in init code. 2021-11-11 17:33:32 +03:00
Ozkan Sezer
c9727c8829 shortened a few error messages 2021-11-11 17:33:02 +03:00
Ozkan Sezer
d254f7f28e reverted commit a6ceeebd00 from glide2x/h3 - not needed. 2021-08-08 23:55:50 +03:00
Ozkan Sezer
170185784e fxpci.c (pciOpen): commented out assert(0) for !busDetected case :
let the procedure return false with pciErrorCode == PCI_ERR_NO_BUS
2021-08-08 23:55:50 +03:00
Ozkan Sezer
a6ceeebd00 h3, h5, grGlideInit: return if _GlideRoot.hwConfig.num_sst == 0:
In case of error, _GlideInitEnvironment() calls GrErrorCallback() which is
supposed to be a noreturn function, but it really is not for non-windows..
Eww...
2021-08-08 23:55:10 +03:00
Ozkan Sezer
67ad843c88 removed dxe description from djgpp dxe builds 2021-08-08 23:55:04 +03:00
Ozkan Sezer
f7bcf2ba77 h3, minihwc.c: added missing string.h include 2021-08-08 23:55:02 +03:00
Ozkan Sezer
5e6b39fb2b h3/h5, hwcInit, GLIDE_INIT_HWC: set errorString in case of failure. 2021-08-08 20:23:02 +03:00
Ozkan Sezer
43fbe0bf3c minor warning fixes. 2021-02-02 11:11:10 +03:00
Ozkan Sezer
438ac12be4 fix typo from unintended search/replace 2020-11-27 11:44:50 +03:00
Ozkan Sezer
1f827a4602 glide2x/README: added note about cross-compiling on 64-bit hosts. 2020-10-07 23:00:50 +03:00
Ozkan Sezer
acddb52685 glide3x/sst1: replaced several [unsigned] long type usage with FxI32/FxU32
should fix issue noted at
e8f60ad8bb (commitcomment-40186242)

the glide2x tree in whole needs a similar massage..
2020-10-07 23:00:40 +03:00
Ozkan Sezer
fe35279d12 updated djgpp cross-build scripts 2020-07-08 15:10:00 +03:00
Ozkan Sezer
6d671089f6 added quick shell scripts for djgpp cross-compile. 2020-07-08 14:32:30 +03:00
sezero
1ceb326d78 added top-level 3DFX GLIDE Source Code General Public License file. 2019-09-11 11:11:50 +03:00
sezero
9fbf8482a8 swlibs: remove rest of the old makefiles
the old glide-devel-branch has them for reference.
2019-09-08 01:20:00 +03:00
sezero
f0adaa0423 glide2x: remove rest of the old makefiles
the old glide-devel-branch has them for reference.
2019-09-08 01:10:00 +03:00
sezero
0cfcfe0e88 glide2x: added new Makefiles for tests. 2019-09-08 00:28:00 +03:00
sezero
8522edee5c glide2x: allow disabling the splash screen and the shameless plug code. 2019-07-07 00:47:28 +03:00
sezero
8be8bb66b5 glide2x, sst1: use different lib directories for sst1 and sst96 targets,
just like we do in the glide3x/sst1 tree.
2019-07-06 23:44:02 +03:00
sezero
91669cea49 glide2x, sst1: use different lib directories for sst1 and sst96 targets,
just like we do in the glide3x/sst1 tree.
2019-07-06 23:33:10 +03:00
sezero
305fab3650 glide2x: initial makefiles to target DOS/DJGPP.
build-tested yet, will see if they actually run later.
2019-07-06 18:37:00 +03:00
sezero
a5e52f47f5 glide2x djgpp build fixes #7/7:
h3, dos_mode.c: backported a fix by Daniel Borca from commit 3e642e03.
2019-07-06 14:06:40 +03:00
sezero
671cee61eb glide2x djgpp build fixes #6/7:
h3, dos_mode.c: add missing includes.
2019-07-06 14:06:07 +03:00
sezero
7f50068a47 glide2x djgpp build fixes #5/7:
h3, minihwc.c, gdebug.c: minor warning fixes.
2019-07-06 14:05:50 +03:00
sezero
ccadf5f395 glide2x djgpp build fixes #4/7:
sst1: change Int10 handler code to build if GLIDE_DEBUG10 is defined
instead of just GLIDE_DEBUG. (same thing is done in glide3x/sst1 tree.)
the code is for watcom, but can actually be ported to djgpp if it is
really needed some day.
2019-07-06 14:05:35 +03:00
sezero
1096fc0efb glide2x djgpp build fixes #3/7:
enable rle_decode_line_asm() stub for djgpp builds too.
2019-07-06 14:05:18 +03:00
sezero
0e352d42c1 glide2x djgpp build fixes #2/7:
gerror.c: _guHeapCheck() is for watcom builds only due to _heapchk()
2019-07-06 14:05:04 +03:00
sezero
ee5fecf71f glide2x djgpp build fixes #1/7:
sst1, gerror.c: add proper dos includes for djgpp
2019-07-06 14:04:45 +03:00
sezero
26c95e24f6 glide2x, h3: added cinit from glide3x after removing napalm-only bits. 2019-07-06 14:03:26 +03:00
sezero
a0f4e5a4e6 sst1: a bit more style cleanup 2018-11-05 21:50:20 +03:00
sezero
347ccd8391 glide2x, sst1/sst96, init: added includes for djgpp 2018-11-05 19:41:28 +03:00
sezero
c468e627e7 sst1/sst96: some whitespace/style cleanup.
also removed commented out code from glide3x _grChromaRangeExt(),
guGammaCorrectionRGB() and grLoadGammaTable().

the djgpp dxe output is still exactly the same.
2018-11-05 19:35:55 +03:00
sezero
426c3988a3 glide2x, cvg: fix fxoem2x.dll build (in case it ever gets enabled.) 2018-09-12 14:00:02 +03:00
sezero
da8d31c9d5 Makefile.mingw: revise so that it works for both cross- and native-builds 2018-09-11 23:00:02 +03:00
sezero
50de6810a0 Makefile.wat: fix linkage of texus.exe if run with TEXUS2=1 2018-09-11 19:15:02 +03:00
sezero
cd39eb5320 fx64.h: Watcom 11.0 added "long long" support, adjust accordingly.
The legacy Watcom <= 10.5 code of 3dfx didn't compile using OpenWatcom.
2018-09-11 19:10:51 +03:00
sezero
99ee5eec74 Makefile.wat: revise so that watcom builds work on both linux and win32
- not tested on pure dos, and it shouldn't be a problem really..
- this needs to be done for Makefile.DJ and Makefile.mingw, too.
2018-09-11 17:21:04 +03:00
sezero
186bb19d28 tests, tlib.c: include conio.h for watcom builds 2018-09-11 17:20:01 +03:00
sezero
274d0d31c2 3dfx.h, glidesys.h: check __MSDOS__ along with __DOS__
Necessary when they are used for building 3rd-party programs.
__DOS__ is defined by Watcom, __MSDOS__ is defined by DJGPP.
2018-09-10 06:55:10 +03:00
sezero
01f2e823f7 Makefile.wat: use -bt=dos option for cross-builds to target dos correctly 2018-09-10 06:27:50 +03:00
sezero
fa2272350a Makefile.linux updates for XPATH usage: add and use X11LIBS variable. 2018-08-30 17:51:56 +03:00
sezero
4a33160a11 glide2x, sst1, Makefile.linux: updated XPATH usage to match glide3x tree
minor tidy-up in its glide3x counterpart.
2018-08-30 17:05:56 +03:00
sezero
c93f294492 sst1, init96.c: fixed minor warning in DEBUG builds 2018-08-30 17:04:05 +03:00
sezero
34fa903aea glide2x, cvg: fixed DEBUG builds. 2018-08-30 17:03:20 +03:00
sezero
2a770d57d5 cvg, gglide.c (grBufferClear): avoid parentheses warning.
binary output is identical.
2018-08-30 17:02:47 +03:00
sezero
a7b3d9290c glide3x, h5: remove gendate.h dependency.
BUILD_DATE is not used anywhare, at all.
2018-08-30 16:01:55 +03:00
sezero
e2dd1b0ba0 fxbldno.c: minor warning fixes. 2018-08-30 15:40:32 +03:00
sezero
11f9ba7f56 glide3x, Makefile.DJ: tweaked DXE descriptions. 2018-08-25 21:21:10 +03:00
sezero
5db23883e9 glide3x, Makefile.win32: reverted most parts of commit 8c917cb2 2018-08-25 21:20:30 +03:00
sezero
72028096b9 g3df.c: fix msvc build because of a sign-compare warning after 66386d5 2018-08-25 21:05:15 +03:00
sezero
ed0fb7ba52 h3/h5, lin_mode.c, linhwc.c (loadEnvFile): don't leak FILE* pointer 2018-08-24 23:10:40 +03:00
sezero
dbcbbb1313 sst1, sst1InitVoodooFile(): don't leak FILE* pointer in case of failure 2018-08-24 21:55:50 +03:00
sezero
db8ef4d0ef cvg,sst1, init: shortened a few messages. 2018-08-24 21:03:55 +03:00
sezero
575bafe6c9 glide3x: remove obsoleted README, and rename README.2 to README
also edit the Voodoo Rush entry to mention Macronix along with AT3D
2018-08-23 17:20:50 +03:00
sezero
e11ac4e5db h5, tests: rename Makefile.mgw to Makefile.mingw 2018-08-23 15:39:24 +03:00
sezero
0402d46e43 fxos.c, fxGethostname: fix a strict aliasing issue 2018-08-23 15:37:20 +03:00
sezero
cec38774f4 glide3x, tests: sbench depends on fxos.o for non-linux. 2018-08-23 15:20:02 +03:00
sezero
661f489f88 tests: conio.h or linutil.h includes are not needed
kbhit() and getch() are called from tlib
2018-08-23 14:33:50 +03:00
sezero
c430cef2b2 glide3x,tests,sbench.c: rename PI to FX_PI (avoid redefinition warnings) 2018-08-23 14:11:30 +03:00
sezero
4a72d2061d glide3x, tests, tlib.c: add missing DJGPP includes for cvg, h3 and sst1 2018-08-23 14:05:55 +03:00
sezero
eb40729806 glide3x: remove old makefiles, which are obsoleted for quite some time.
the master branch still has the old makefiles I guess, so, look at the
master branch if need reference.

update sst1 makefiles to store the libs under individual sst1 and sst96
directories.

update linux makefiles for XPATH variable usage.

rename makefile.linux to Makefile.linux under the tests directories.
2018-08-23 14:00:02 +03:00
sezero
bd3e0372c1 glide3x, tests, sbench.c: fix build errors:
sbench.c:300: error: lvalue required as left operand of assignment
sbench.c:301: error: lvalue required as left operand of assignment
sbench.c:375: error: lvalue required as left operand of assignment
sbench.c:376: error: lvalue required as left operand of assignment

I _think_ this is the correct fix: MSVC6 generates the same output
before and after this patch.
2018-08-23 03:47:50 +03:00
sezero
d565bf19ef glide3x, tests: more build fixes -- mostly for windows this time. 2018-08-23 01:20:20 +03:00
sezero
2ab9b505eb glide3x, tests: applied warning and build fixes from glide2x tree. 2018-08-23 00:28:02 +03:00
sezero
f2e22ecf56 glide2x, tests: minor tidy-up. 2018-08-22 22:55:40 +03:00
sezero
8574e105f2 glide2x,tests,display.c: silence 'diff.data' may be used uninitialized warning. 2018-08-22 22:44:50 +03:00
sezero
a4a70bba5b glide2x, tests: initialize firstTime to 1 instead of 0. 2018-08-22 22:20:10 +03:00
sezero
e649ca4613 glide2x, tests: comment out unused helper proc in plib.c 2018-08-22 22:02:28 +03:00
sezero
64b744733d glide2x, tests: fix out-of-bounds access to localVerts in test25.c 2018-08-22 21:55:02 +03:00
sezero
e7cc47e93e glide2x, tests: fix format warning test25.c 2018-08-22 21:36:33 +03:00
sezero
c6de03a346 glide2x, tests: fix warning from qatest00.c:
qatest00.c:517: warning: operation on 'nCurrAlpha' may be undefined
qatest00.c:528: warning: operation on 'nCurrAlpha' may be undefined
2018-08-22 21:32:40 +03:00
sezero
40230a559e glide2x, tests: replace exit()s with return 2018-08-22 20:33:33 +03:00
sezero
ffac0696a3 glide3x: applied commit fd64b6ac of guillemj to the sst1 testsuite. 2018-08-22 16:27:02 +03:00
sezero
1567a193fe glide2x, testsuite updates:
- style tidy-up in cvg and h3
- applied commit df4085a to sst1 tree
- there are suspicious -Wuninitialized warning fixes,
  will revisit them soon.
2018-08-22 16:15:37 +03:00
sezero
14c8945a32 tests, tlib.c, tlib.h: silence / fix warnings:
fix wrong error check in SimpleRleDecode() (thanks gcc -Wsign-compare).
fix some old wrong warning fixes in glide2x tree.
also remove ctype.h dependency and use a generic strupr().
2018-08-22 14:03:15 +03:00
sezero
e3612b4f58 add missing symlinks to Makefile.linux 2018-08-22 11:32:24 +03:00
sezero
b8c4edab9d glide2x: merge scanf() and fread() updates to g3df.c and gpci.c from glide3x 2018-08-22 03:15:56 +03:00
sezero
66386d5ac4 h5, g3df.c: fix wrong error fread() checks.
commit 4b63afa8 by jwrdegoede added fread() checks like:

 if(fread(buf,size,nelem,fp) != size*nelem) error();

however the check must be against nelem alone, and _not_
the total bytes.
2018-08-22 02:24:24 +03:00
sezero
c30be75227 g3df.c (ReadDataShort): slightly shortened by adapting from original glide2x/sst1 version. 2018-08-22 02:11:36 +03:00
sezero
7ced8d7f32 g3df.c: don't leak the FILE* in failure cases.
only h5 handled that but with inlined fclose() and FXFALSE returns.
used goto statements to simplify things.
2018-08-22 02:06:40 +03:00
sezero
5d1a34c31c h3, h5: fix a few uninitialized warnings 2018-08-21 14:05:50 +03:00
sezero
2d63cec195 h5, minihwc (hwcMapBoard): avoid shadowing a local var. 2018-08-21 12:55:02 +03:00
sezero
4a6f09253a fix my stupid typo from commit 85ec47f 2018-08-21 04:20:04 +03:00
sezero
85ec47f22b glide3x, h3/h5: changed threadValue stuff from FxU32 to unsigned long. 2018-08-21 04:11:28 +03:00
sezero
d04deb23d6 h5, minihwc (hwcMapBoard): make length const FxI32 type. 2018-08-21 04:10:50 +03:00
sezero
c4b365abdf h5, minihwc (hwcAAScreenShot): change fileNameNum to unsigned int type. 2018-08-21 04:10:24 +03:00
sezero
e4fc9db7db h3, minihwc (hwcInitRegisters): fix stupid printf/sprintf/FN_NAME typos
was there since the beginning.
2018-08-21 04:10:00 +03:00
sezero
537a15a2fc glide2x/cvg (grBufferClear): revert a parentheses warning fix from 2000
Building glide3x/cvg, gcc emits the following warning:
gglide.c: In function `grBufferClear':
gglide.c:733: warning: suggest parentheses around arithmetic in operand of |

... but glide2x/cvg is silent for it, because commit df4085a80 from
about 18 years ago added parentheses to silence it, like:

 GR_SET(BROADCAST_ID, hw, bltSize,
 - ( ((((tileHi - tileLow) * gc->hwDep.cvgDep.xTilePages) - 1) << 16) | (0x1000 >> 3)  - 1));
 + ((((((tileHi - tileLow) * gc->hwDep.cvgDep.xTilePages) - 1) << 16) | (0x1000 >> 3)) - 1));

... which seems wrong.  Substraction has precedence, therefore the
original code OR'ed the size by 511,  but the fixed code OR'ed the
size by 512 and then substracted 1 from the result.

Looking at sst1InitVideoBuffers() init/video.c: it sets sst->bltSize
like:

 ISET(sst->bltSize, ((pagesToFill-1)<<16) | 511);

Therefore, reverting this part of df4085a80 now.  We can live with the
warning.
2018-08-21 00:15:55 +03:00
sezero
46ca75c1dd glide2x, sst1: unused variable warning fixes. 2018-08-20 22:30:55 +03:00
sezero
36dc997a1d glide2x, sst1, gglide.c: warning fix:
gglide.c: In function `grAlphaCombine':
gglide.c:337: warning: suggest explicit braces to avoid ambiguous `else'
gglide.c: In function `grColorCombine':
gglide.c:917: warning: suggest explicit braces to avoid ambiguous `else'
2018-08-20 22:30:15 +03:00
sezero
d2c076b8ab fix some unused variable warnings 2018-08-20 20:55:32 +03:00
sezero
19c5f4e705 glide2x, cvg, oeminit.c: ifdef magic 2018-08-20 20:24:05 +03:00
sezero
ee6f124929 sst1: fix argc arg of main() 2018-08-20 20:16:20 +03:00
sezero
4d29b7f47f glide2x, sst1, ddgump.c: silence unitialized warnings. 2018-08-20 20:01:56 +03:00
sezero
8ee1de4bcf glide2x, h3, linhwc.c: fix a strict aliasing issue (same as in sst96.)
also make some stuff static.
2018-08-20 19:56:02 +03:00
sezero
c8f2b9f621 glide2x, sst1/cvg init: merge scanf updates from glide3x 2018-08-20 19:35:50 +03:00
sezero
c94050cb87 glide2x: added top-level makefiles. 2018-08-20 17:37:02 +03:00
sezero
3e2cc50867 glide3x,sst1 (sst1InitVoodooFile, INIT_LINUX): changed path separator to '/' 2018-08-20 17:01:36 +03:00
sezero
fa071d0a93 glide2x, sst1: fixed incompatible assignment warning for swapBuffers().
kept the original case in commented out form.
2018-08-20 16:40:57 +03:00
sezero
d39173dfd2 missed replacing an instance of '(char) NULL' with 0 2018-08-20 15:50:02 +03:00
sezero
ccf3cc1dc9 forgot renaming glide3x/sst1 version of makefile.linux 2018-08-20 15:10:00 +03:00
sezero
3be55b6512 fix "unknown conversion type character `v' in format" 2018-08-20 15:07:00 +03:00
sezero
0f6ca06167 rename makefile.linux -> Makefile.linux 2018-08-20 14:47:02 +03:00
sezero
61ebabbc40 glide2x: remove dependency on ctype.h functionality 2018-08-20 14:32:24 +03:00
sezero
103dec9ab9 glide2x,sst96: merged dborca commit 2506470 (Rush: fixed grLfbLock(AUXBUFFER)) 2018-08-20 14:00:02 +03:00
sezero
a5352b0145 glide2x, cvg, cpuid.c: fix strict aliasing issues with newer gcc 2018-08-20 13:45:01 +03:00
sezero
34b5d19350 remove a duplicated windows.h include 2018-08-20 11:40:15 +03:00
sezero
9ba0795fc7 glide2x: added experimental MinGW makefiles. 2018-08-20 10:23:10 +03:00
sezero
e9133561f1 glide2x, init96MapBoard: uncomment initAT3DGetHALData() (we do have initat3d.c) 2018-08-20 01:58:04 +03:00
sezero
5ebace29f9 more warning fixing and syncing glide2x init with glide3x 2018-08-20 01:34:20 +03:00
sezero
ece8c244f3 glide2x, cvg, sst1init: update P6FENCE macros from glide3 2018-08-20 01:33:24 +03:00
sezero
1488d68cff a bunch of warning fixes 2018-08-19 23:55:10 +03:00
sezero
ed2350c8f0 glide2x, sst1, vgdrvr.c: rename gamma() to sst1gamma() 2018-08-19 19:01:56 +03:00
sezero
54e3669349 glide2x, h3: added a Windows (MSVC6) makefile 2018-08-19 17:55:02 +03:00
sezero
ed11fcc3cc glide2x, h3: add windows build dependency 2018-08-19 17:51:00 +03:00
sezero
90d647cfa6 glide2x, h3, minihwc.c: minor warning fixes 2018-08-19 16:45:11 +03:00
sezero
ffb144a87e glide2x, h3, minihwc.c: more build fixes 2018-08-19 16:42:35 +03:00
sezero
415127f697 glide2x, h3, linhwc.c: update P6FENCE macros from glide3 2018-08-19 16:36:33 +03:00
sezero
2b2d13f32e glide2x, h3, gsst.c (grSstWinClose): restrict hwcUnmapBoard() call to linux
-- hwcUnmapBoard() is only in linhwc.c, not in minihwc.c.
2018-08-19 16:17:15 +03:00
sezero
e2a15684a1 glide2x, h3, minihwc.c: build fixes fixes from glide3 2018-08-19 16:15:01 +03:00
sezero
e0d29a1656 glide2x, h3, win_mode.c: build fixes / mysterious bug fixes from glide3 2018-08-19 16:13:40 +03:00
sezero
6d7be29632 glide2x, h3, gdebug.c: fix gdbg_msgfile initializer issue with mingw. 2018-08-19 16:11:01 +03:00
sezero
16f66e6d28 glide2x, cvg/h3: minor mikefile.linux updates 2018-08-19 16:09:13 +03:00
sezero
377f8d78a8 glide2x,cvg/sst1 init: #undef FX_DLL_ENABLE so we don't dllexport the syms 2018-08-19 13:40:20 +03:00
sezero
9f5fb2a342 glide2x, sst1: warning fixes. 2018-08-19 13:25:15 +03:00
sezero
4f59670015 glide2x, sst1/cvg: build fixes, warning fixes. 2018-08-19 12:41:50 +03:00
sezero
eb96ad7944 glide2x, grDrawTriangle() dispatch code for cvg and h3:
It fails to build for linux with the current compiler flags:

- static builds:
gdraw.c: In function `grDrawTriangle':
gdraw.c:757: error: bp cannot be used in asm here

- shared lib (-fPIC) builds:
gdraw.c: In function `grDrawTriangle':
gdraw.c:731: error: PIC register `ebx' clobbered in `asm'

Only if I use '-DBIG_OPT -fomit-frame-pointer', _then_ it builds into:

00000a20 <grDrawTriangle>:
     a20:	a1 2c 00 00 00       	mov    0x2c,%eax
     a25:	ff a0 50 03 00 00    	jmp    *0x350(%eax)
     a2b:	c3                   	ret
     a2c:	8d 74 26 00          	lea    0x0(%esi,%eiz,1),%esi

... which is good but only for static builds.  The PIC build still
fails with the above message with my gcc3.4 or gcc4.x.

So, I moved the x86 dispatch code to a new xdrawtri.asm, for linux,
and even for MSVC without any prologue/epilogue like the following:
  movl (_GlideRoot + curGC),%eax
  jmp  *kTriProcOffset(%eax)

Let's see how this goes.
2018-08-19 10:41:20 +03:00
sezero
d13007941b glide2x, sst1, grDrawTriangle(): directly use the proc from xdraw.asm.
this makes it more like the glide3x version, and fixes windows build
and linkage.  only Watcom build is special-cased: don't know the reason
why it was adjusted that way in gdraw.c but I kept it that way for now.
2018-08-18 22:32:02 +03:00
sezero
bc1d8f3932 glide2x, sst96: we have an initat3d.c now, so replaced that #if 0. 2018-08-18 22:26:11 +03:00
sezero
d917bb66ab glide2x, sst1: windows MSVC 6 build fixes in init 2018-08-18 22:16:37 +03:00
sezero
5672bdf2be glide2x, sst1: Makefile.win32 fix 2018-08-18 22:16:00 +03:00
sezero
5c3ead43e6 glide2x, cvg/h3, fxgasm.c: write kTriProcOffset into fxgasm.h, too. 2018-08-18 20:01:56 +03:00
sezero
6e6171b857 glide2x, cvg: build fixes for MSVC 6 2018-08-18 17:56:51 +03:00
sezero
14b3357ab8 glide2x, h3: converted asm to nasm syntax, adjusted fxgasm.c for it.
it builds for linux now. (not tested though..)
2018-08-18 17:15:02 +03:00
sezero
4e3b368794 glide2x, cvg, fxgasm.c: remove the old 'kTriProcOffsetClean' hack. 2018-08-18 13:23:40 +03:00
sezero
8a425599ef glide2x, sst1: converted asm to nasm syntax, adjusted fxgasm.c for it.
it builds for linux now. (not tested though..)
2018-08-18 13:00:24 +03:00
sezero
8080e4a845 glide2x, cvg, sst1: further makefile updates 2018-08-18 12:58:36 +03:00
sezero
3a00e0af75 glide2x, sst1, makefile.linux: gxdraw.c is needed even with USE_X86=1. 2018-08-18 12:30:50 +03:00
sezero
e42511abcc minor whitespace adjustment 2018-08-18 12:03:50 +03:00
sezero
bfad389fff glide2x, sst1: makefile.linux updates. 2018-08-18 10:10:04 +03:00
sezero
a23359fc29 more glide2x / makefile.linux updates:
remove duplicated -DGLIDE_USE_C_TRISETUP flags.
2018-08-18 10:03:50 +03:00
sezero
e9384d45a3 glide2x, h3: makefile.linux updates:
- there is no such thing as DRI with glide2x
- there are no xdraw3.asm is glide2x tree
- nasm support isn't there yet: gas sources
2018-08-18 01:55:10 +03:00
sezero
cdd969974a glide2x, sst1: remove generated file fxinline.h 2018-08-17 23:38:20 +03:00
sezero
eeb8c98bb9 glide2x,cvg,fpu.c: change movw to movl in double_precision_asm()
Otherwise we get the following warnings: (some compilers error.)

Assembler messages:
Warning: using `%ax' instead of `%eax' due to `w' suffix
2018-08-17 23:35:02 +03:00
sezero
23b0364245 glide2x, cvg: makefile.linux updates. 2018-08-17 23:28:11 +03:00
sezero
62cc477a02 cvg, rcver.h: comment out fxbldno.h and hard-code BUILD_NUMBER [glide2x] 2018-08-17 23:26:15 +03:00
sezero
60d8447b98 glide2x, h3,minihwc: add p6fence stuff for linux, gcc & co. 2018-08-17 23:21:50 +03:00
sezero
fe99a42068 missed doing this in commit 2ee4b4f5 2018-08-17 23:20:20 +03:00
sezero
8844a3f2e7 h3,h5: move CM_Get_DevNode_Key() call to asm so we don't need win9x ddk 2018-08-17 13:28:21 +03:00
sezero
e6797e4fd8 asm: rename TEXT, DATA, CONST macros to SEG_TEXT, SEG_DATA and SEG_CONST
Defining certain keywords in nasm makes it go haywire.
See, https://bugzilla.nasm.us/show_bug.cgi?id=3392505

$ cat 1.asm
%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

segment TEXT
segment DATA
segment CONST

$ nasm -E 1.asm
%line 4+1 1.asm

[segment _TEXT align=1 public use32 class=CODE FLAT]
[segment _DATA align=4 public use32 class=_DATA align=4 public use32 class=DATA FLAT FLAT]
[segment CONST2 align=4 public use32 class=_DATA align=4 public use32 class=_DATA align=4 public use32 class=DATA FLAT FLAT FLAT]

Either this (with nasm-2.0..nasm-2.09.xx), or it errors out with:
1.asm:6: error: interminable macro recursion
1.asm:7: error: interminable macro recursion
... which happens with nasm-2.10.xx-nasm-2.13.01

The glide3 tree uses this for Watcom builds / obj output format,
and the result is not what is intended.  After the renaming, it
works as expected:

$ cat 1.asm
%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

segment SEG_TEXT
segment SEG_DATA
segment SEG_CONST

$ nasm -E 1.asm
%line 4+1 1.asm

[segment _TEXT align=1 public use32 class=CODE FLAT]
[segment _DATA align=4 public use32 class=DATA FLAT]
[segment CONST2 align=4 public use32 class=DATA FLAT]
2018-08-16 21:11:10 +03:00
sezero
9d646ac504 cvg, sst1, Makefile.mingw: undefine WINNT for consistency. 2018-08-14 11:35:55 +03:00
sezero
8e9e9acbb1 h5, dos_mode.c: fixed watcom build
FX_CSTYLE wasn't being defined because of missing FX_DLL_DEFINITION.
DJGPP builds aren't affected.
2018-08-14 03:01:02 +03:00
sezero
1ee5e06295 h5, gpio.c: removed watcom workaround for building under dos 2018-08-14 02:40:55 +03:00
sezero
a1f750e924 h3,h5 gdraw.c (grDrawPoint): removed weird ifdef, kept standart version
don't know why it was needed. Visual Studio 6 generates identical output
for both cases, so it was for earlier versions??? huh...
2018-08-14 00:15:40 +03:00
sezero
902edc7a66 gdraw.c, Makefile.mingw: integrate new xdrawtri.asm to build.
h3 and h5 trees now build using MinGW.  will run-test later..
2018-08-13 23:24:02 +03:00
sezero
49be990209 h3, h5: added grDrawTriangle() implementation for MinGW using nasm
grDrawTriangle() for MSVC/x86 is a naked function, so doing it in C
code won't work.  new file: xdrawtri.asm
2018-08-13 23:20:24 +03:00
sezero
04bc43e39c MinGW makefiles 2018-08-13 23:10:00 +03:00
sezero
c195d7acdc remove all makefile.unix files (obsoleted for quite some time..) 2018-08-13 10:28:02 +03:00
sezero
84728cbfb0 sst96, init96.c: make the BufInfo bI[] array static 2018-08-12 21:00:20 +03:00
sezero
542a45b6e9 sst96: mingw inline asm for _inp, _outp, and _outpw. 2018-08-12 20:55:02 +03:00
sezero
b35c0478be sst1, init96.c: coding style tidy-up.
dxdrvr.c: add missing braces around BufDesc[] initializer
2018-08-12 20:10:51 +03:00
sezero
02a608c61c h3,h5, fxglide.h: restrict Unix version of TRISETUP macro to x86 family.
because the inline asm uses the 'd' constraint, and to my knowledge, it
is x86-specific.
2018-08-12 17:23:10 +03:00
sezero
21fa4b55f0 h5, fxglide.h: don't limit forward declaration of struct GrGC_s to gcc 2018-08-12 17:00:02 +03:00
sezero
3e461e9f67 h3,h5, fxglide.h: tidy-up preprocessor checks for TRISETUP macro 2018-08-12 16:47:50 +03:00
sezero
99f02c80e6 linux makefile updates 2018-08-12 15:51:28 +03:00
sezero
76d8804c33 updates to top-level makefiles 2018-08-12 13:37:50 +03:00
sezero
0ff42bceb5 makefile updates 2018-08-12 13:24:24 +03:00
sezero
0652ba3057 h3,h5, gdraw.c: adjust/tidy preprocessor conditions for grDrawTriangle()
and made h3 and h5 versions look more alike
2018-08-12 12:11:28 +03:00
sezero
41324bf11c h3, gdraw.c: apply grDrawPoint() change from h5 commit 9a64ace 2018-08-12 12:10:32 +03:00
sezero
789be06f0f h3, h5, fxgasm.c: write kTriProcOffset into fxgasm.h, too. 2018-08-11 22:30:21 +03:00
sezero
208cbf570f h5: revert fxglide.h part of shamelessness commit 4b715ac
(my commit 8b047bb missed it)
2018-08-11 22:30:21 +03:00
sezero
673403f9cf h5,fxglide.h: adjust USE_STANDARD_TLS_FUNC case of getThreadValueFast() for gcc 2018-08-11 22:30:21 +03:00
sezero
6c40713033 minihwc.c (EnumDisplayMonitors_func): fix warning: 'dllimport' attribute ignored
also make EnumDisplayMonitors_func a proper function pointer type.
2018-08-11 11:03:24 +03:00
sezero
32b399b380 gsfc.c: warning: operation on 'gc->state.shadow.auxBufferAddr' may be undefined 2018-08-11 10:29:20 +03:00
sezero
7bfd3b95f9 minor makefiles update 2018-08-11 02:29:50 +03:00
sezero
2a711e29fe h3, minihwc.c: fix p6Fence for MinGW. 2018-08-11 01:21:10 +03:00
sezero
3b522046d6 h3/minihwc (hwcShareContextData): copy over gcc inline asm support from h5. 2018-08-11 00:32:02 +03:00
sezero
898013970a h3, h5, minihwc: minor warning fixes. 2018-08-11 00:29:35 +03:00
sezero
ca1e7fd506 h3, h5, gdebug.c: fix gdbg_msgfile initializer issue with mingw. 2018-08-11 00:28:15 +03:00
sezero
ccbd5a7b41 h5, minihwc: use local _aligned_malloc implementation with mingw. 2018-08-11 00:26:31 +03:00
sezero
c62583a3ee h3, gthread.c: fix breakage after commiet 797d81af 2018-08-10 21:01:32 +03:00
sezero
93dcdb9390 h3,h5, gdraw.c: minor typo/whitespace fixes and some syncing. 2018-08-10 20:45:20 +03:00
sezero
797d81af4a h3, fxglide.h, gthread.c: copy over gcc compatibility changes from h5. 2018-08-10 20:38:57 +03:00
sezero
8a406cba3d h3, h5: gsfc.c: replace backslash path separators in include directive. 2018-08-10 20:38:32 +03:00
sezero
da4d6857ba sst1, xdraw.asm: don't add _ prefix to exported symbol name with mingw.
Otherwise GNU toolchain fails with the error message:
   "Cannot export _grDrawTriangle@12: symbol not found"

Learning something everyday.
2018-08-10 20:38:15 +03:00
sezero
b6d45d842c sst1, Makefile.win32: remove duplicated gxdraw.obj in objects list. 2018-08-10 20:37:55 +03:00
sezero
355dca22a1 fxvxd.c: gcc inline asm for _inp, _inpw, _inpd, _outp, _outpw, _outpd. 2018-08-10 20:37:33 +03:00
sezero
57230a2161 cvg, parse.c: fixed a format warning from mingw. 2018-08-10 20:37:17 +03:00
sezero
b594bf89aa sst1init.h: remove a weirdness from INIT_PRINTF definition for windows
gcc (mingw) emitted lots of 'left-hand operand of comma expression has
no effect' warnings for it..
2018-08-10 20:36:28 +03:00
sezero
043f38b035 restrict #pragma optimize to Visual Studio builds 2018-08-10 20:36:10 +03:00
sezero
f3ed63fc58 fix parens around truth value warnings. 2018-08-10 20:35:54 +03:00
sezero
d92d50efc8 oeminit.h: fix 'extra tokens at end of #endif directive' warning 2018-08-10 20:35:41 +03:00
sezero
2a7cfdfec7 warning fixes. 2018-08-09 21:50:10 +03:00
sezero
faf890d878 cvg, h5, cpuid.c: fixed strict aliasing issue with newer gcc versions. 2018-08-09 20:51:50 +03:00
sezero
5f69e69154 3dfx.h: minor update for Fx?32 types 2018-08-09 17:55:02 +03:00
sezero
6759df5ead cvg, makefile.linux: remove fxremap.o from objects.
fxremap() is called only in dos and windows builds.
2018-08-09 16:10:50 +03:00
sezero
7dbc64777a apply the commit 721b6fcf changes to h3info.h, too. [glide2x side] 2018-08-09 16:10:01 +03:00
sezero
5c6e58e4e2 apply the commit 721b6fcf changes to ddglobal.h and h3info.h, too. 2018-08-09 15:55:28 +03:00
sezero
b5a555a538 cvg,fxremap.c: only include sst1init.h (for INIT_PRINTF) for dos builds
for others, make INIT_PRINTF() in fxremap.c a nop.
2018-08-09 15:55:01 +03:00
sezero
b4c30b1693 h3cinit.c: made mode_table[] and vgaattr[] static const 2018-08-09 12:51:50 +03:00
sezero
721b6fcf1b cvg, fxremap: removed all unnecessary stuff, made it to use INIT_OUTPUT 2018-08-09 11:56:56 +03:00
sezero
43f6bbc977 cvginfo.h: remove top-level defines and forward declare struct sstregs.
It 'defined' FxU32 and FxBool for if __unix__ is defined and cvgregs.h
not included.  DJGPP does define __unix__, and this caused a mess with
one of my experiments.

I do not see the real need for this.  So, adding a forward declaration
of struct sstregs, replacing all SstRegs* with volatile struct sstregs*
serves the purpose. 3dfx.h (which typedefs FxU32 and FxBool) is always
included before cvginfo.h everywhere in the code, so, there is no need
for 'defining' FxU32 and FxBool here, either.

DJGPP build gives an identical DXE output before and after this change.
2018-08-09 11:50:02 +03:00
sezero
64bae86d19 cvg, fxremap: leave out lots of actually unused code from build.
glide code only calls fxremap() and not fxremap_main(), so silent
is always true, there is no cmdline processing, and nothing can
actually print to console. added a new FXREMAP_EXE ifdef in there
to filter things out.
2018-08-09 02:20:40 +03:00
sezero
43291704cb h5,dos_mode.c,lin_mode.c: made buildVideoModeData and setVideoModeSlave static.
whitespace tidy-up.
2018-08-08 23:55:32 +03:00
sezero
12d926449a cvg, gu.c: added guEncodeRLE16()
this function used to be exported by earlier versions of glide3x.dll in
voodoo2 reference drivers, but later it disappeared. it _is_ present in
glide3x.dll versions for all other voodoo boards, so added it here.
2018-08-08 23:04:10 +03:00
sezero
b62e3fd33c h5, fxglide.h: restored FX_EXPORT in GR_ENTRY definition.
koolsmoky commit 0b8571b (initial checkin of dos win32 glide) commented
it out for who knows why, and that resulted in two of the exports in the
dll to go missing, namely grCheckForRoom and guEncodeRLE16. they are now
back.
2018-08-08 22:39:10 +03:00
sezero
3c54cfde1e cvg,sst1 init: #undef FX_DLL_ENABLE so that we don't dllexport the symbols. 2018-08-08 22:38:50 +03:00
sezero
40ee824879 swlibs, fxpci: #undef FX_DLL_ENABLE, so that we don't dllexport the symbols. 2018-08-08 22:38:27 +03:00
sezero
bc18c519d7 gdebug.c: #undef FX_DLL_ENABLE, so that we don't dllexport the symbols. 2018-08-08 22:38:12 +03:00
sezero
1fe48886a8 gdebug.c: whitespace tidy-up. 2018-08-08 22:37:50 +03:00
sezero
de0e7ca28f fxdll.h: revert koolsmoky commit bab2f1c 'use dllimport for __MSC__ imports'
it was wrong, and was causing LNK4049 warnings.
2018-08-08 22:35:48 +03:00
sezero
1e89ef2670 cvg, Makefile.win32: missed replacing one path separator 2018-08-08 18:55:04 +03:00
sezero
8c917cb2a2 convert win32 Makefiles to crlf, convert path separators to backslash. 2018-08-08 14:56:02 +03:00
sezero
8adf484af7 h3, h5: last of the VC6 and ddraw.h compatibility stuff. 2018-08-08 14:25:50 +03:00
sezero
e710954c4e h5, minihwc.c: VC6 rejects pMinSW in the inline asm.
changed pMinSW mm0,mm3  to
    _asm _emit 0x0f _asm _emit 0xea  _asm _emit 0xc3
2018-08-08 11:10:02 +03:00
sezero
59d59bad72 h5, minihwc.c: VC6 doesn't have _aligned_malloc(). locally implemented. 2018-08-08 11:06:51 +03:00
sezero
380a78de05 h3, h5, minihwc: remove some unused stuff from win_mode.c. minor cleanup. 2018-08-08 10:50:10 +03:00
sezero
42c8b28993 Windows (VC6) build fixes, 03/##: HMONITOR type hack for h3 and h5. 2018-08-08 08:55:02 +03:00
sezero
d6fce294b4 h3, h5, minihwc: don't unconditionally define GDBG_INFO_ON in win_mode.c 2018-08-08 08:50:37 +03:00
sezero
0aa1e159bf Windows (VC6) build fixes, 02/##: grDrawLine() const issue.
this is a hack and need to be fixed properly by constifying other
procedures.
2018-08-08 08:47:00 +03:00
sezero
d6448ee662 Windows (VC6) build fixes, 01/## 2018-08-08 08:45:02 +03:00
sezero
29212e8a14 fxremap.c: warning fixes. 2018-08-07 12:04:40 +03:00
sezero
af4ebfce0c warning fixes and minor cleanup. 2018-08-07 11:58:55 +03:00
sezero
19efdba7e0 swlibs/fxmisc/fximg.c: -Wformat warning fixes 2018-08-07 11:57:45 +03:00
sezero
032b25b708 minor type corrections 2018-08-07 10:37:24 +03:00
sezero
d46910aa23 sst96.c (_grSst96Load32): fix a minor warning after commit 30ec8787 2018-08-06 17:00:02 +03:00
sezero
2ee4b4f583 h3, h5, minihwc: don't unconditionally define GDBG_INFO_ON in minihwc.c
several constifications.  exclude the debug stuff from release builds.
fixed that 'waxRegnames' typo in HWC_WAX_STORE and HWC_WAX_LOAD macros.
2018-08-06 14:10:02 +03:00
sezero
b33d69b0a3 cvg, fxremap.c: make almost everything static.
except for the two exported functions.
also replaced 'null' by 'NULL' (why that 'null' define I wonder..)
2018-08-06 14:00:50 +03:00
sezero
1f08466bc6 sst96: more of making several global vars static:
- initat3d.c: make ClockTableAT3D[] const and static.
- initad3d.c: make const vars  bPowerOff, bHighSpeed,
  and bBypass static.
2018-08-06 14:00:01 +03:00
sezero
30ec87871d sst96: exclude debug stuff from release-builds (regNames & co.) 2018-08-06 13:56:50 +03:00
sezero
f053d6b0cf sst96: constified iRegNames[] 2018-08-06 13:55:02 +03:00
sezero
ef5108ae49 sst96: vgdrvr.c, vg96drvr.c: minor whitespace cleanups. 2018-08-05 17:24:28 +03:00
sezero
9fee9e454d sst96: fix warnings introduced by commit 383731e84 2018-08-05 17:23:37 +03:00
sezero
46226e7d14 revert commit 16a4feb6, define INIT_ACCESS_DIRECT for SST96 DOS builds. 2018-08-05 12:04:04 +03:00
sezero
383731e840 make a few more global vars static. remove glideIdent[] from gglide.c (unused.) 2018-08-05 12:02:59 +03:00
sezero
08e1e599fd xos.inc: fixed 'unterminated string' warning from nasm. 2018-08-05 12:02:59 +03:00
sezero
4f81f1ed1b added a top-level README file. 2018-08-05 12:02:59 +03:00
sezero
ae760389ae glide2x/h3 (linhwc.c/minihwc.c): fix fenceVar with newer gcc versions.
from glide3x tree.
2018-08-05 12:02:59 +03:00
sezero
486276471e add missing Rush files to glide2x side. 2018-08-05 12:02:59 +03:00
sezero
1a273ba12a sst1 cleanup: remove non-existent h3drvr (FX_SST2) stuff [glide2x side] 2018-08-05 12:02:59 +03:00
sezero
8b047bb95c splash and shameless plug updates:
removed experimental splash stuff from h3/h5 for non-windows.
if either of GLIDE_SPLASH or GLIDE_PLUG aren't defined their
respective data are completey excluded from the binary image,
and their respective functions aren't called at all.
2018-08-05 12:02:59 +03:00
sezero
bbbb581698 add a sst96 subdirectory to sst1/lib/ 2018-08-05 12:02:59 +03:00
sezero
cb46d5b49c disable shameless plug overlay and splash screen in DOS builds.
reduces binary size and not really needed.
2018-08-05 12:02:59 +03:00
sezero
8bdf368c58 Makefile.DJ: define a DXE3GEN variable, defaulting to dxe3gen 2018-08-05 12:02:59 +03:00
sezero
720d0b125e DJGPP Makefile updates with some (ugly) cross-build workarounds. 2018-08-05 12:02:59 +03:00
sezero
35be4ad445 sst1 cleanup: remove non-existent h3drvr (FX_SST2) stuff 2018-08-05 12:02:59 +03:00
sezero
dc5f7d0065 commented out some unused static vars 2018-08-05 12:02:59 +03:00
sezero
9b83acbefd linux build fixes 2018-08-05 12:02:59 +03:00
sezero
bc892aff15 cvg: added -DGLIDE_CHIP_BROADCAST=1 and -DGLIDE_BLIT_CLEAR=1 among the CFLAGS.
Windows makefile has them, already.  The linux makefile used to have them but
magically lost them somehow in the glide-devel-branch. Let's see how it goes..
2018-08-05 12:02:59 +03:00
sezero
16a4feb6e6 sst1,initmcrx (initMCRXSetVideo): make Macronix Rush cards function under DOS
achieved by commenting out the INIT_ACCESS_DIRECT ifdef.  maybe just defining
INIT_ACCESS_DIRECT works too? that adds a initAT3DWait(100) call for the AT3D
cards. to be revisited / tested in future...
2018-08-05 12:02:59 +03:00
sezero
78a5774bc8 h5, minihwc.c (hwcInitRegisters): call h4InitPlls() if H4 is defined for v4/5
patch from Frank Sapone <emoaddict15@gmail.com> --- overclocking support with
SSTH3_GRXCLOCK for Voodoo 4/5 cards.
2018-08-05 12:02:59 +03:00
sezero
eea61facf8 h3/h5, linhwc.c, minihwc.c: fix fenceVar with newer gcc versions. build fixes. 2018-08-05 12:02:59 +03:00
sezero
dd7cb10225 cvg, rcver.h: comment out fxbldno.h and hard-code BUILD_NUMBER for now. 2018-08-05 12:02:59 +03:00
sezero
e8c99cbad5 swlibs/newpci/pcilib/fxpci.c (pciGetErrorString): unsigned casts to fix warning 2018-08-05 12:02:59 +03:00
sezero
4092b17053 3dfx.h: change FxI32 and FxU32 to be of long types for Windows and DOS. 2018-08-05 12:02:59 +03:00
sezero
e6d386eb3c sst1, initat3d.c: build / warning fixes. 2018-08-05 12:02:59 +03:00
sezero
8448392757 sst1, init96.c: remove static redeclaration of init96SetupRendering(). 2018-08-05 12:02:59 +03:00
sezero
c2eaa35f54 sst1, gxdraw.c: fix typo introduced by the gcc4.1 strict aliasing fixes 2018-08-05 12:02:59 +03:00
sezero
7415325040 h5, minihwc.h: fix misplaced HWC_EXT_INIT ifdef in struct hwcBoardInfo_s 2018-08-05 12:02:59 +03:00
sezero
5ca0c8b42f h5, gtexdl.c: commented out unused local var 'didcompress' 2018-08-05 12:02:59 +03:00
sezero
fdeb88fac5 h5, gdraw.c: fix build with newer gcc versions. 2018-08-05 12:02:59 +03:00
sezero
14e33eb51d h3, gthread.c: build fix 2018-08-05 12:02:59 +03:00
sezero
d257dd2bc2 h3cinit.c: removed an ugly hack for building under dos. 2018-08-05 12:02:59 +03:00
sezero
371f2af8ec gdebug.c: gdbg_set_file() fixes. 2018-08-05 12:02:59 +03:00
sezero
6a898856bb cvg, splshdat.c: fix missing braces in initializer warning 2018-08-05 12:02:59 +03:00
sezero
de08f2ebbf gsplash.c: changed type of fogTableSize to FxI32 2018-08-05 12:02:59 +03:00
sezero
dde408cf00 added missing newline at end of two files 2018-08-05 12:02:59 +03:00
sezero
76a8dc0416 removed dependency on ctype.h functionality. also simplified NULL usage. 2018-08-05 12:02:59 +03:00
sezero
4819e38cc4 cvg: replaced a build fix hack with a better one 2018-08-05 12:02:59 +03:00
sezero
4fd268232a replaced broken binary files as best as I can 2018-08-05 12:02:43 +03:00
sezero
ec57d92c97 remove two test binaries 2018-08-05 12:02:39 +03:00
sezero
968e385010 removed most of the cvs keywords.
in some files, added back last-revision logs which cvs2git removed:
feel more comfortable that way for now..

also removed all of the .cvsignore files.
2018-08-05 12:02:27 +03:00
sezero
367a3b66c4 fix stupid eol 2018-08-05 12:01:50 +03:00
sezero
2c11e03776 removed some static vars relying on cvs revision number (glide2x side) 2018-08-05 11:58:06 +03:00
sezero
d7086902f1 removed some static vars relying on cvs revision number. 2018-08-05 11:58:00 +03:00
guillemj
944b60eac8 Clarify that the driver works on kernels >= 2.x 2011-07-03 02:11:38 +00:00
guillemj
9ab3c4634c Handle Linux 3.x versions 2011-07-03 02:06:12 +00:00
guillemj
d37f7b7a70 Add changelog entry 2011-07-03 02:04:51 +00:00
guillemj
348d63fc2b Do not print “make help” commands, only their output 2011-07-03 02:01:25 +00:00
guillemj
cfdb4dcafe Bump version to '2011.05.27' 2011-05-27 06:27:40 +00:00
guillemj
51b434999b Use .unlocked_ioctl file operations member when .ioctl is not present 2011-05-27 05:11:10 +00:00
guillemj
d0db8256e4 Use new paths for generated header files with Linux >= 2.6.33
On Linux >= 2.6.33, use <generated/autoconf.h> instead of
<linux/autoconf.h>. Include it after <linux/version.h>.
Use generated/utsrelease.h as VERSION_HEADER if present instead of
linux/utsrelease.h or linux/version.h.
2011-05-27 05:06:11 +00:00
guillemj
f4f0afe53d Do not use negative exit numbers 2011-05-27 05:00:47 +00:00
guillemj
b10938edc0 Do not use negative exit numbers
This is a bashism which might not work on POSIX shells.
2011-05-27 04:55:50 +00:00
guillemj
0a7f20cf1f Bump version to '2008.06.24' 2008-06-24 04:42:25 +00:00
guillemj
154718fe78 Remove KERNEL_MIN_VER macro and replace all users with its contents 2008-06-24 04:35:29 +00:00
guillemj
858e6f7e15 Use pci_dev_put to release the refcount for the Intel 82441FX device 2008-06-24 04:24:22 +00:00
guillemj
ec48aba80f Terminate id_table_3dfx list with an empty element 2008-06-22 07:52:30 +00:00
guillemj
2832abfc79 Use pci_get_device instead of deprecated pci_find_device
Add compatibility code for Linux < 2.5.73.
2008-06-22 07:43:39 +00:00
guillemj
2952168561 Ignore unregister_chrdev's return value as it actually returns void now 2008-06-22 06:53:40 +00:00
koolsmoky
09fae37520 fixed problem with performance trilinear and lodbias sign 2007-09-29 14:19:23 +00:00
koolsmoky
408a154309 fixed compile errors with MSVC 2007-09-29 14:17:14 +00:00
koolsmoky
f0f02c3383 no message 2007-09-29 14:11:54 +00:00
koolsmoky
02f96edc18 enabled rigorous address range checks 2007-09-29 14:07:49 +00:00
koolsmoky
39adf6422d added glide sf advertisement 2007-09-29 14:02:31 +00:00
koolsmoky
e46c92242b removed false swapInterval envar checks 2007-09-29 14:01:24 +00:00
koolsmoky
9490b841d7 completed grStippleMode and grStipplePattern 2007-09-29 13:59:34 +00:00
koolsmoky
e8d880e66f changes to support added extensions. 2007-06-23 09:23:57 +00:00
koolsmoky
d6004952bd added extensions; QUERY, POINTCAST, MULTIRENDERING 2007-06-23 09:22:41 +00:00
koolsmoky
6385e41d0e currently only single chip mode is supported for windowed mode 2007-06-23 09:10:53 +00:00
koolsmoky
95831f0553 removed unneeded emms calls 2007-06-23 09:09:10 +00:00
koolsmoky
c1791171c5 removed unneeded emms calls 2007-06-23 08:50:57 +00:00
koolsmoky
234f54da93 use fxbldno for build numbers 2007-06-23 08:49:47 +00:00
koolsmoky
cb5c93a417 use fxbldno for build numbers 2007-06-23 08:44:09 +00:00
koolsmoky
4f5beb723c Removed duplicate disableDitherSub envars 2007-06-23 08:42:10 +00:00
koolsmoky
6a4a030bb3 cleaned v56k dac workaround 2007-05-20 00:46:05 +00:00
koolsmoky
2bc2ada7fa win32 build fix 2007-05-19 19:27:45 +00:00
koolsmoky
18c63bcf35 compensated 64bit changes 2007-05-19 19:24:42 +00:00
koolsmoky
ee0637513a added extra trilinear checks and 1chip x2fsaa for subsample lod dithering 2007-05-19 11:44:24 +00:00
koolsmoky
0e30810868 conserve packets in TWO_TRI_FILL code 2007-05-19 11:32:43 +00:00
koolsmoky
7f952e5fd9 win32 build workaround 2007-05-19 11:06:47 +00:00
koolsmoky
59f561890c force 4x4 dither with alpha dither subtraction 2007-05-19 10:58:19 +00:00
koolsmoky
eac64a908e included ctype.h for toupper 2007-05-19 10:54:10 +00:00
koolsmoky
04ef64970f packed rgb fixes 2007-05-19 08:38:01 +00:00
koolsmoky
8749e39edc packed rgb fixes
force 4x4 dither with alpha dither subtraction
2007-05-19 08:37:25 +00:00
koolsmoky
9a6eac9c31 packed rgb fixes 2007-05-19 08:29:25 +00:00
koolsmoky
075b942975 win32 multi-monitor fixes 2007-05-13 09:27:23 +00:00
koolsmoky
034de08665 simple ms os detection
win32 multi-monitor fixes
cleaned up v56k gamma fix
2007-05-13 09:26:51 +00:00
koolsmoky
8756ab93d2 removed problematic context checks 2007-05-13 09:21:06 +00:00
koolsmoky
0d1c03ec4f cleanup 2007-05-13 09:16:26 +00:00
koolsmoky
4d5cadd8c8 simple ms os detection 2007-05-13 09:16:10 +00:00
koolsmoky
e2a6f44d01 simple ms os detection
splash screen dll load unload cleanup
removed autobump testcode
2007-05-13 09:14:36 +00:00
koolsmoky
4fece0a55b remove old ms os detection stuff 2007-05-13 09:08:32 +00:00
koolsmoky
c00327dd0a assure dither subtraction stays off when in 32bpp mode 2007-05-13 09:06:38 +00:00
koolsmoky
682ffd4d33 fix for win32 builds 2007-05-13 09:04:01 +00:00
koolsmoky
06e25214f1 removed old ms os detection stuff 2007-05-13 09:02:57 +00:00
koolsmoky
9072e6d7f9 fix for non-debug builds 2007-05-13 08:56:06 +00:00
guillemj
47aabade08 Fix regression in GLIDE_VERSION_MINOR, set it to '10.0'. 2007-02-14 20:24:10 +00:00
guillemj
7bbce2ccdb Fix typo. 2007-02-06 05:04:20 +00:00
guillemj
57a15b8aab * 3dfx_driver.c (MODULE_VERSION): Bump to '2007.02.06'. 2007-02-06 04:55:09 +00:00
guillemj
1f3ee6bb30 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 04:50:34 +00:00
guillemj
6fccc2cbdb * 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 04:32:58 +00:00
guillemj
d919a05407 * Makefile (CFLAGS): Use '-march' instead of the deprecated '-mcpu'. 2007-02-06 04:15:01 +00:00
guillemj
b06c63abed * 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 04:10:21 +00:00
guillemj
8f254569e5 * 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-02-06 03:37:28 +00:00
guillemj
42a995335e Fix typo. 2007-01-31 01:05:41 +00:00
guillemj
e0fdb356a3 * 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.
2007-01-31 01:02:21 +00:00
guillemj
e4d0ae4ff1 * 3dfx_device.c (my_remap_page_range): Define as remap_pfn_range for
linux 2.6.10 or higher.
2006-12-03 08:16:01 +00:00
guillemj
22a95077f9 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 07:51:02 +00:00
guillemj
8c2fdd661a * 3dfx_device.c (doQueryFetch): Assign desc->device to i, and use it
when referencing cards.
2006-12-03 07:34:28 +00:00
guillemj
3a78ad5818 Remove first forgotten argument from pci_write_config_*. 2006-12-03 07:30:26 +00:00
guillemj
b92f14b42c * 3dfx_device.c (setmtrr_3dfx): Make it static.
(resetmtrr_3dfx): Likewise.
2006-12-03 07:13:34 +00:00
guillemj
3afa27274d Bah, fix typo VMA_OFFSET_ALIGNED -> VM_OFFSET_ALIGNED. 2006-12-03 07:10:47 +00:00
guillemj
97b9d60875 * 3dfx_device.c (id_table_3dfx): Move newar the corresponding ifdef
for older kernels.
	(findCards): Likewise.
	(driver_3dfx): Forward declare.
2006-12-03 07:09:57 +00:00
guillemj
054807b1dd 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 06:50:14 +00:00
guillemj
526262f4a6 * 3dfx_device.c (VMA_OFFSET_ALIGNED): New macro.
(mmap_3dfx): Use VMA_OFFSET_ALIGNED, instead of checking for specific
	kernel versions and changing behaviour.
2006-12-03 05:48:58 +00:00
guillemj
0ee0b2add4 Indentation fixes. 2006-12-03 05:42:50 +00:00
guillemj
871c2bcf65 Backport "sequence point" fix for string upper code from glide3x. 2006-12-03 04:49:19 +00:00
guillemj
37d9fc555e Ooops, forgot to add this file.
Backported from glide3x.
2006-12-03 04:47:28 +00:00
guillemj
4372942b61 Remove the shared library on realclean as well. 2006-11-30 09:45:33 +00:00
guillemj
acbd24bb88 Unify library name to be libglide3.
Create the shared library with the full major.minor (taking the number from
old sources).
Create a symlink for the shared library for the .so file.
2006-11-30 09:42:50 +00:00
guillemj
a1e9017af6 No autoconf anymore. 2006-11-30 09:21:28 +00:00
guillemj
1ffbd85481 No TEXUS2 option in glide2x. 2006-11-30 09:18:59 +00:00
guillemj
9c38a603a0 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.
2006-11-30 09:16:50 +00:00
guillemj
b11bb573b0 Link against fxmisc/fxos.o and fxmisc/fximg.o to match the old library
signature, should be checked if it's really needed.
2006-11-30 09:10:25 +00:00
guillemj
019a1ff4dc Sync Makefile to the general style used in the other libs. 2006-11-30 09:05:08 +00:00
guillemj
fd08c9c716 Link libraries against libm, needed by pow. 2006-11-12 02:38:43 +00:00
guillemj
1d47a8de8e Remove the autoconf build system. It was broken and out of sync with the
working makefiles.linux.
2006-09-04 23:02:01 +00:00
guillemj
6cc1fe6e7e Move library soname to GLIDE_SONAME. 2006-09-04 20:55:56 +00:00
guillemj
959334ad71 Remove redundant definition of single_precision_asm and double_precision_asm,
to fix the code not building from source.
2006-09-02 03:13:53 +00:00
guillemj
910bd84cf8 Backport glide3 fix for PIC compilation with gcc 4.1 from Hans de Goede. 2006-09-02 03:12:29 +00:00
guillemj
00a387e94f Fix typo (glide3x -> glide2x). 2006-09-01 19:45:54 +00:00
guillemj
dfd3327037 Fix warnings by moving the assignments from inside the if conditionals
to outside.
2006-09-01 19:44:38 +00:00
guillemj
0070c1729d Make main return an int instead of void.
Protect assignment inside the while conditional.
Actually pass strings to the printf code with %s.
2006-09-01 19:43:08 +00:00
guillemj
84cd0d554f Make tlErrorMessage function return something (true). 2006-09-01 19:40:34 +00:00
guillemj
5a517c8e2f Remove init96SetupRendering function prototype from inside init96MapBoard
function to the beginning of the file.
2006-09-01 19:39:25 +00:00
guillemj
f82d3a3a0a Remove redundant (and thus making it fail to build) PCI_VENDOR_ID and
PCI_DEVICE_ID declarations.
2006-09-01 19:36:46 +00:00
guillemj
87f391fec1 Add missing include <string.h>. 2006-09-01 19:35:12 +00:00
guillemj
1738b62d40 Fix spaces in ChangeLog entry. 2006-09-01 19:22:40 +00:00
dborca
ebbc49b41b Missing Rush files. 2006-07-24 06:52:23 +00:00
guillemj
91fdbf4feb Rename HAVE_MTRR to CONFIG_MTRR. 2006-03-03 02:15:27 +00:00
jwrdegoede
1561d5a656 Fix gcc 4.1 new type-punned ptr breaks antialias. warnings 2006-01-16 21:22:46 +00:00
dborca
d2e6e8062f removed -mcpu=pentium 2005-11-29 22:05:55 +00:00
guillemj
c67e1e2526 Protect against multiple macro definitions. 2005-09-21 22:21:57 +00:00
guillemj
fd64b6ac96 Move imageConvert declaration from inside main to before it.
Fixes build failure with gcc 4.0.1.
2005-09-21 22:12:27 +00:00
jwrdegoede
fef69dbf9a Add -soname to linux linkerflags 2005-08-15 15:21:20 +00:00
jwrdegoede
93f42cc6f8 Last needed 64 bit fixes for h5/h3, complete 64 bit support for cvg 2005-08-13 21:07:04 +00:00
jwrdegoede
a30877fb0f Add 64 bit todo list 2005-06-26 07:06:10 +00:00
jwrdegoede
4338d7a4e9 Add warning about stack layout assumptions 2005-06-25 20:56:53 +00:00
jwrdegoede
12dbdd977a Add Linux-portability.txt 2005-06-25 20:53:42 +00:00
jwrdegoede
0c312424e3 Add missing P6FENCE for x86_64 2005-06-23 20:03:38 +00:00
jwrdegoede
23a241e1c7 change some scanf %u back to %i to allow using both hex and dec numbers 2005-06-17 14:53:33 +00:00
jwrdegoede
87a74e1a2b Fix few warnings when USE_X86=1 is not set 2005-06-17 14:18:50 +00:00
jwrdegoede
759cde16ea Fix 2 sst1 bugs accidently introduced by warning fixes 2005-06-16 18:58:33 +00:00
jwrdegoede
a072e43eb1 Really fix cvg linking when GL_X86 is not defined 2005-06-10 19:10:54 +00:00
jwrdegoede
fb1109315a Fix linking when GL_X86 is not defined 2005-06-10 18:59:00 +00:00
jwrdegoede
6f3645a1cf Fix compilation when GL_X86 is not defined 2005-06-10 14:17:56 +00:00
jwrdegoede
8106609282 h3/h5 Remove swlibs/fxmisc/linutil.o on a make clean 2005-06-09 18:34:50 +00:00
jwrdegoede
4b63afa845 Fixed all warnings with gcc4 -Wall -W -Wno-unused-parameter, except for a couple I believe to be a gcc bug. This has been reported to gcc. 2005-06-09 18:32:40 +00:00
jwrdegoede
dca89ecb08 Make h5 and h3 tree 64 bit clean. This is ported over from the non-devel branch so this might be incomplete 2005-05-25 08:56:37 +00:00
jwrdegoede
5eff1f0e44 Add P6FENCE (ish) macro for non-x86 archs 2005-05-25 08:53:23 +00:00
jwrdegoede
a96ecc4d15 Add #ifdef GL_X86 around x86 specific code 2005-05-25 08:51:53 +00:00
jwrdegoede
1d189c8b84 Makefile changes: add -DGL_X86 on x86, replace CPU option by OPTFLAGS 2005-05-25 08:49:29 +00:00
jwrdegoede
2f942cc686 Fix unwanted shadowing of global var:first with local val first 2005-05-11 14:52:02 +00:00
jwrdegoede
a905834f07 Also fix gcc4 PIC compilation of cpuid.c for cvg 2005-05-11 14:42:15 +00:00
jwrdegoede
e2d97af291 sst1 gcc4 compile fixes 2005-05-10 11:27:23 +00:00
jwrdegoede
292e2fba9c make c-code match comment 2005-05-10 08:17:40 +00:00
jwrdegoede
4c00987aa2 Make header output more verbose (output complete header) 2005-05-09 13:50:31 +00:00
jwrdegoede
47daaa8aad lvalue cast fixes for gcc4 2005-05-07 08:40:30 +00:00
jwrdegoede
4a8fdd2725 fix for newer libtools 2005-05-07 08:27:23 +00:00
jwrdegoede
c5dff3e9da gcc4 cpuid fix 2005-05-07 08:26:35 +00:00
koolsmoky
bc2d475372 Use grDrawTriangle where TRISETUP is not necessary. 2005-04-26 00:02:45 +00:00
koolsmoky
9fcb0ace2a Fix _texDownloadProcs comma separator.
Thanks to Ozkan Sezer <sezeroz@gmail.com>.
2005-04-25 23:58:41 +00:00
koolsmoky
1a365fe143 Fix grDrawTriangle calling convention for Linux.
Thanks to Ozkan Sezer <sezeroz@gmail.com>.
2005-04-25 23:53:59 +00:00
koolsmoky
7768c6150f Fix for Linux 2005-04-25 23:50:00 +00:00
koolsmoky
c9e2c802f9 pragma directives for win32
removed detritus
2005-04-25 22:08:48 +00:00
guillemj
7e265ee0e5 Add GPL notice. 2005-04-23 22:18:15 +00:00
guillemj
8bc22af8d8 3dfx_device.c: Add Macronix MX86251 Voodoo Rush support.
Thanks to Ozkan Sezer <sezeroz@gmail.com>.
2005-04-23 22:16:30 +00:00
guillemj
fe7ea78d17 3dfx_device.c (setmtrr_3dfx): Add missing break on default case.
Thanks to Ozkan Sezer <sezeroz@gmail.com>.
2005-04-23 22:13:06 +00:00
guillemj
72f246a7c9 Fix configure help output for fx-dri-build option.
Thanks to Ozkan Sezer <sezeroz@gmail.com>.
2005-04-23 21:53:52 +00:00
guillemj
a5eca811b3 * 3dfx_device.c: Fix comment format. Remove obsolete compiler flags
info.
2005-04-23 21:45:05 +00:00
guillemj
92f8d35750 Move ChangeLog entries to a separate file. 2005-04-23 21:29:11 +00:00
koolsmoky
74da7049a3 fixed 3dnow! and mmx optimizations 2005-04-23 18:36:36 +00:00
koolsmoky
881c63f226 added workaround for 8bit wide texture downloads for old revision TMUs 2005-04-23 18:33:33 +00:00
koolsmoky
0c01d45d7a fixed grDrawTriangle triangle dispatch code 2005-04-23 18:27:26 +00:00
koolsmoky
d795e8907d changes to support calling conventions in asm files 2005-04-23 18:23:46 +00:00
guillemj
eff4c4ebc5 Lowercase FX_GLIDE_HW values.
Thanks to Ozkan Sezer <sezeroz@ttnet.net.tr> for the notice.
2005-04-02 19:26:43 +00:00
koolsmoky
aa932364fe enabled packed argb for cmd packet type 3 2005-01-22 14:52:02 +00:00
dborca
2007f26c53 remove unecessary defines 2005-01-17 09:39:49 +00:00
dborca
7df16681b6 let Linux/DOS INIT sequence be verbose 2005-01-17 09:25:18 +00:00
koolsmoky
c0ff0141d6 Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode.
allow mismatched sli. added SSTV2_MISMATCHED_SLI envvar.
2005-01-13 16:22:53 +00:00
koolsmoky
6d736fd608 Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode. 2005-01-13 16:22:01 +00:00
koolsmoky
8040c684ef fixed builds without the USE_X86 option. 2005-01-13 16:20:18 +00:00
koolsmoky
f0cb59432c prepare for packed rgb 2005-01-13 16:11:39 +00:00
koolsmoky
e8812e71bf fixed Metabyte WickedGL detection 2005-01-13 16:11:20 +00:00
koolsmoky
cfbaebc615 Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode. 2005-01-13 16:09:06 +00:00
koolsmoky
d9fa6f7198 Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode.
allow mismatched sli. added SSTV2_MISMATCHED_SLI envvar.
2005-01-13 16:07:06 +00:00
koolsmoky
5414eddde4 Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode. 2005-01-13 16:03:25 +00:00
koolsmoky
79b31d35a4 fixed Metabyte WickedGL detection 2005-01-13 15:48:32 +00:00
koolsmoky
489324c55a prepare for packed rgb 2005-01-13 15:46:50 +00:00
koolsmoky
a04cbf9994 fixed warning typo 2005-01-13 15:42:51 +00:00
koolsmoky
5958659f70 disabled mtrr's on sli slave devices 2005-01-02 04:15:53 +00:00
koolsmoky
0074568397 added dll entry point to call grGlideShutdown when a process is detached 2004-12-27 20:47:11 +00:00
koolsmoky
3309cb7dd1 copied from cvg glide3 2004-12-27 08:29:43 +00:00
koolsmoky
bcdf3a20e4 merged with cvg glide3 2004-12-27 08:28:57 +00:00
koolsmoky
56cd565a3e copied from cvg glide3 2004-12-27 07:36:30 +00:00
koolsmoky
8cb69ddacd enabled envar reads from windows registry 2004-12-27 07:32:16 +00:00
koolsmoky
ec0fb6b1f0 fix os detection 2004-12-25 17:53:24 +00:00
koolsmoky
1b65b3fe37 remove bump test (forceautobump) 2004-12-25 17:52:46 +00:00
koolsmoky
65c280be54 detect os and cpu before detecting glide devices 2004-12-25 17:52:04 +00:00
koolsmoky
c59d79b104 clean.
disable 24->16bpp dithering when in 32bpp mode.
2004-12-25 17:51:09 +00:00
koolsmoky
5f51d98eb1 swapinterval 2004-12-23 21:03:14 +00:00
koolsmoky
6d9fbdee4a builds without asm optimizations (USE_X86=1) 2004-12-23 20:56:25 +00:00
koolsmoky
f952be1383 works with cygwin gnu make 2004-12-23 20:47:40 +00:00
koolsmoky
5e0365a93a converted to nasm syntax
added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
2004-12-23 20:45:56 +00:00
koolsmoky
471935edbb remove dll export/import fix 2004-12-23 20:36:10 +00:00
koolsmoky
3568e6bebb remove old cpuid 2004-12-23 20:24:08 +00:00
koolsmoky
6406255463 works with cygwin gnu make 2004-12-23 20:22:38 +00:00
koolsmoky
b523ad8b58 works with cygwin gnu make 2004-12-23 20:14:37 +00:00
dborca
9477334927 sst1/cvg generates libglide3x 2004-12-16 07:48:31 +00:00
dborca
b3b3bf4853 hasDev3DfxLinux is really a function (Max Behensky) 2004-12-16 07:46:45 +00:00
dborca
3dff6714b3 added more win32 flags 2004-12-14 08:31:36 +00:00
dborca
d3b76d2e16 unite the clans... once again (unified build process) 2004-12-14 08:30:07 +00:00
dborca
899068c963 updated status, build info 2004-12-14 08:28:54 +00:00
dborca
9d14fa297e added GNU makefile for Win32 2004-12-13 08:41:32 +00:00
dborca
1af5c552fe fixed splash DLL code (but partially left disabled) 2004-12-13 08:40:18 +00:00
dborca
e36b40e673 added prototypes for splash DLL 2004-12-13 08:38:37 +00:00
dborca
752b1f6e3d updated status, build info 2004-12-13 08:37:31 +00:00
koolsmoky
97fbce5c9c cosmetics 2004-12-12 15:29:44 +00:00
koolsmoky
c5cc9ba363 changes to support new cpuid
set default to disable alpha dither subtraction
2004-12-12 15:27:47 +00:00
koolsmoky
1ed952f4b6 changes to support new cpuid 2004-12-12 15:26:04 +00:00
koolsmoky
ef890f8425 grDitherMode(): force 2x2 dithering for 4x1 dither
grBufferSwap(): enable vsync and set swapbufferinterval to 0 for tripple buffering.
2004-12-12 15:24:40 +00:00
koolsmoky
c6986acec1 use toupper for __MSC__ 2004-12-12 15:20:35 +00:00
koolsmoky
d431b91202 changes to support new cpuid; moved single_precision_asm(), double_precision_asm() from cpudetect.asm 2004-12-12 15:18:58 +00:00
koolsmoky
34936e9bc3 support new cpuid 2004-12-12 15:17:18 +00:00
koolsmoky
b2b8265a5d new cpuid 2004-12-12 15:16:43 +00:00
koolsmoky
e64083bdfe win32 make file. need to convert asm files to nasm syntax for USE_X86 build option to work. 2004-12-12 15:14:44 +00:00
koolsmoky
c9e2822c70 added options; GLIDE_BLIT_CLEAR - sli buffer clears, GLIDE_CHIP_BROADCAST - workaround for faulty tsus. 2004-12-12 15:07:49 +00:00
koolsmoky
e424d6ab07 revert swapInterval environmental override in grBufferSwap(). SLI lines get misaligned when swapInterval 0 and vsync disabled. 2004-12-12 15:05:25 +00:00
koolsmoky
f05af3ceec revert swapPendingCount default value to 4. 2004-12-12 15:00:09 +00:00
koolsmoky
2244ac2d97 cleanup win32 os detection 2004-11-25 19:39:55 +00:00
koolsmoky
a575ff59d4 more hacks for windowed rendering 2004-11-25 19:31:46 +00:00
koolsmoky
10093a8902 fix for mixed dll export/import declarations 2004-11-25 19:16:44 +00:00
koolsmoky
cb935e9a6f support for new cpuid and mmx texture downloads 2004-11-25 19:13:22 +00:00
koolsmoky
1b53dbd236 fixed 3dnow! and mmx texture download routines 2004-11-25 19:12:22 +00:00
koolsmoky
e870206226 set up 3dnow! triangle/vertex list routines 2004-11-25 19:11:02 +00:00
koolsmoky
c1b24a67e7 Prepare for newer splash screens 2004-11-25 19:07:31 +00:00
koolsmoky
e6cf09e358 Always allow user to override swapInterval (vsync) but force vsync on with swapbuffer interval set to 0x0 when triple buffering is enabled. 2004-11-25 19:04:25 +00:00
koolsmoky
f3753d29fe support new cpuid 2004-11-25 18:56:59 +00:00
koolsmoky
c4ca1c5f84 new cpuid copied from H5 2004-11-25 18:54:10 +00:00
dborca
d75a3e2029 added forward declaration for hwcBufferLfbAddr (Martin Weissenborn) 2004-11-18 10:11:59 +00:00
dborca
5c5664acc5 avoid warning 2004-10-11 10:02:48 +00:00
dborca
25a4af8b52 update status 2004-10-08 06:32:11 +00:00
dborca
4998a36679 save a round-trip with grDrawTriangle in SST1 2004-10-08 06:30:19 +00:00
dborca
7f45a997ab small matters concerning "ActiveWindow" on non-Windows 2004-10-08 06:28:37 +00:00
dborca
8b98c55564 use whatever swap interval user decides 2004-10-08 06:22:10 +00:00
dborca
32f0f47956 makefile cleanup 2004-10-08 06:20:23 +00:00
dborca
0e1f6972b0 MSC doesn't like aliasing the stack 2004-10-08 06:18:51 +00:00
dborca
727ec864fb comment the GR_CDECL hack to prevent accidents 2004-10-07 07:49:08 +00:00
dborca
9e1fbb7dd9 update status 2004-10-07 07:31:30 +00:00
dborca
e41a4dddeb make grValidateState consistent with its prototype 2004-10-07 07:26:04 +00:00
dborca
e805228038 fixed some misterious bugs. some... 2004-10-07 07:19:50 +00:00
dborca
7a84ec28e0 use the right Escape sequence on win32 2004-10-07 07:17:56 +00:00
dborca
da70978cfd corrected grDrawTriangle on MSVC 2004-10-07 07:16:38 +00:00
dborca
8932dd3ffe added a bunch of files to allow sst1/cvg build out-of-the-box 2004-10-05 15:01:12 +00:00
dborca
6045061d5b removed detritus 2004-10-05 14:56:50 +00:00
dborca
12ba1ce38b DOS/OpenWatcom woes 2004-10-05 14:54:44 +00:00
dborca
8bb1bb352d killed some warnings 2004-10-05 14:52:36 +00:00
dborca
b3e4a22e6d removed misplaced else 2004-10-05 14:50:54 +00:00
dborca
0406bce42f conditional compilation a bit more sane 2004-10-05 14:47:18 +00:00
dborca
d0657978d8 removed detritus 2004-10-05 14:43:19 +00:00
dborca
b410bb7e20 added DOS/OpenWatcom makefiles 2004-10-05 14:34:58 +00:00
dborca
7f19a09dc5 remove unnecessary files from build 2004-10-05 14:33:53 +00:00
dborca
0633a3231f added DOS/OpenWatcom support 2004-10-04 09:43:39 +00:00
dborca
f4ddf221d6 killed some warnings 2004-10-04 09:41:26 +00:00
dborca
4dd1af0e85 second cut at Glide3x for Voodoo1/Rush (massive update):
delayed validation, vertex snapping, clip coordinates, strip/fan_continue, bugfixes.
and probably a bunch of other crap that I forgot
2004-10-04 09:36:00 +00:00
dborca
a5115738b3 DOS/OpenWatcom support 2004-10-04 09:26:31 +00:00
dborca
46295978d5 taming FX_CSTYLE havoc 2004-10-04 09:24:02 +00:00
dborca
57e51764f8 made Win32 compile... not too useful ATM 2004-10-04 09:23:18 +00:00
dborca
73db6676a4 OpenWatcom support 2004-10-04 09:22:44 +00:00
dborca
8341485146 handle STDCALL correctly 2004-10-04 09:19:25 +00:00
dborca
5d59cd4e2f killed some warnings / compilation errors 2004-10-04 09:17:16 +00:00
dborca
22d4f642cb make sure SLI boards are correctly counted 2004-10-04 09:13:33 +00:00
dborca
3707221248 watcom fixes 2004-10-04 09:06:15 +00:00
dborca
024bd0832f avoid silly warnings 2004-10-04 09:04:24 +00:00
dborca
d5cdfe9374 small fixes to the testsuite(s) 2004-10-04 09:00:33 +00:00
dborca
b292afdb71 supporting DOS/OpenWatcom in Assembly files 2004-10-04 08:57:52 +00:00
dborca
9c02fa48e5 added makefiles for DOS/OpenWatcom and Win32 2004-10-04 08:55:20 +00:00
dborca
329ac0931f detailed info about each branch 2004-10-04 08:50:50 +00:00
dborca
833ae187e5 removed extra info 2004-10-04 08:48:16 +00:00
dborca
2d1b632d7b add this back to prevent pruning on checkouts 2004-10-04 08:25:56 +00:00
dborca
ec7faefa52 avoid unsigned wrap-arounds 2004-09-27 09:14:46 +00:00
dborca
0b4dbea566 avoid unsigned wrap-arounds 2004-09-27 09:09:41 +00:00
dborca
ada722548b aligned aux buffer correctly (maybe) 2004-09-27 09:05:22 +00:00
dborca
4bb204b929 fixed trilinearness bug. reorg brackets 2004-09-27 09:02:11 +00:00
dborca
a803ae4ed1 clamp lod bias 2004-09-27 08:59:45 +00:00
dborca
f9001acfe6 type-punning warning 2004-09-27 08:58:15 +00:00
dborca
54c4601dd0 reorg brackets 2004-09-27 08:51:05 +00:00
dborca
fa967172f3 fixed debug paths 2004-09-27 08:49:42 +00:00
dborca
e79dd613ee fixed testsuite for all libs 2004-09-27 07:27:52 +00:00
dborca
2506470f93 Rush: fixed grLfbLock(AUXBUFFER) 2004-09-24 06:58:10 +00:00
dborca
5484926668 small fixes 2004-09-24 06:56:30 +00:00
dborca
e1a07c1ff2 grDrawLine for Rush and other fixes 2004-09-24 06:55:12 +00:00
guillemj
90cb835f39 Add missing function grBufferSwap() when using the DRI build.
Thanks to Hans de Goede <j.w.r.degoede@hhs.nl>.
2004-09-07 17:33:21 +00:00
guillemj
05750ad397 Move KVERS and MODULES_DIR to the outern Makefile so they get a value when
no config file exist.
2004-08-21 07:16:26 +00:00
guillemj
1a752ef706 Document new build system. 2004-08-21 05:57:46 +00:00
guillemj
e049e53976 New build system for Linux kernels using kbuild (2.6+) and the legacy ones. 2004-08-21 05:44:39 +00:00
dborca
b7ca0e0fa7 restrict ports that can be accessed 2004-08-20 08:26:47 +00:00
dborca
c89df99c6e Linux should use INIT_LINUX, really 2004-08-20 08:25:10 +00:00
guillemj
d34710e10d Do not show the modules target as a default example. 2004-08-18 18:32:15 +00:00
guillemj
b58bfd998c Add module version macro. 2004-08-18 18:31:10 +00:00
dborca
d67cd249c0 make sure we stay on path if someone decides to import some more src here 2004-07-27 08:06:12 +00:00
dborca
914d1d9149 separate alpha from rgb. it was causing problems with Rush's ZBuffer 2004-07-26 07:59:30 +00:00
dborca
ce994a7077 avoid unsigned wrap-arounds 2004-07-26 07:58:00 +00:00
dborca
9c378ee7c6 make sure we stay on path if someone decides to import some more src here 2004-07-26 07:56:55 +00:00
guillemj
24b6f748c5 Fix build failure due to missing appended slashes ('/') on include dirs
passed to nasm.
Thanks to jlm <jsado_sc3@earthlink.net> for the patch.
2004-07-25 07:04:56 +00:00
koolsmoky
ac5cdd19bf clean up grSstWinOpen 2004-07-19 07:39:04 +00:00
koolsmoky
bab2f1ce05 use dllimport for __MSC__ imports 2004-07-12 17:41:24 +00:00
koolsmoky
2ce94fd316 more dll build options 2004-07-12 17:34:33 +00:00
koolsmoky
a24bf3695d correct FX_CALL and FX_ENTRY 2004-07-12 17:33:41 +00:00
koolsmoky
d46a668566 removed duplicate grStipplePattern() 2004-07-12 17:31:47 +00:00
dborca
4d853558e1 fixed nasm flags for the auto* combo 2004-07-09 11:59:43 +00:00
guillemj
9ab5549e22 Switch to bare sh. Some cleaning. 2004-07-01 20:23:08 +00:00
guillemj
f305b6c853 Added libtoolize. 2004-07-01 07:27:09 +00:00
koolsmoky
915ba05f03 update dll build options 2004-06-29 09:26:01 +00:00
koolsmoky
867d9be05d TLS updates 2004-06-29 09:24:28 +00:00
koolsmoky
df77cf56d7 Use Microsoft's recomended build settings for win32 dll 2004-06-20 14:31:18 +00:00
koolsmoky
8753ab9f02 revert: allow EdgeAA on top of FSAA 2004-06-19 16:25:57 +00:00
koolsmoky
0423c58099 disable AA'ed primitives in FSAA mode 2004-06-13 08:30:39 +00:00
koolsmoky
1bb2e0b0d2 fill in TAA jitter values for 4-chip 8xFSAA and 1-chip 2xFSAA 2004-06-13 08:26:28 +00:00
koolsmoky
68cf1e1da6 no message 2004-06-13 08:19:29 +00:00
koolsmoky
ad0696197c fixed V56k 4xFSAA (1 subsample per chip, analog sli) 2004-06-08 16:19:13 +00:00
dborca
ff03d4b88f temporal AA. new jitter offsets courtesy of Koolsmoky 2004-06-07 06:08:00 +00:00
koolsmoky
9ba0dc01b9 texture base address alignment fix for dxt1 downloads. 2004-05-11 19:35:44 +00:00
koolsmoky
0b554c2612 account for the changes of how %include is handled in NASM 0.98.38 2004-05-08 13:43:38 +00:00
dborca
91e7543a18 updated makefiles for NASM (no more phase error) 2004-05-07 06:06:12 +00:00
guillemj
74574721b7 Use designators in fops_3dfx instead of the obsolete colon syntax. 2004-05-04 22:36:29 +00:00
guillemj
7338f90ad4 Indentation fixes. Normalized ChangeLog date format. 2004-05-04 21:47:41 +00:00
guillemj
250ed3ef5b Finish porting to linux kernel 2.6, using the new api, and new kernel build
system, by Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>. Thanks!

Reworked the new kernel build system support from Aristeu's patch.
2004-05-04 20:55:05 +00:00
koolsmoky
6f3748e9c4 grDrawVertexArrayContiguous fix for Mesa 2004-05-04 17:08:18 +00:00
koolsmoky
8a883aaec9 clean up 2004-05-04 17:04:31 +00:00
dborca
099a207814 evil memo cleanup 2004-04-29 08:19:20 +00:00
koolsmoky
18720fa683 Enabled use of real Napalm bus 2004-04-28 17:54:35 +00:00
koolsmoky
0cbd7ad567 Daniel Borca's fixes
Compensate for the new GETENV changes
Changed behavior of '22bit' post filter
2004-04-28 17:54:05 +00:00
koolsmoky
2de9805027 Removed registry path from GETENV.
Removed FX_GLIDE_AA_PIXELCENTER, FX_GLIDE_AA_JITTERDISP, FX_GLIDE_AA_GRIDROTATION, and FX_GLIDE_FORCE_SST0.
Removed FX_GL_LFBLOCK_HACK and FX_GLIDE_USE_HWC_AA_FOR_LFB_READ.
Moved _grSstDetectResources into _GlideInitEnvironment so that it will not be called everytime _grGlideInit is called.
2004-04-28 17:40:52 +00:00
koolsmoky
b965f50702 fixed texture buffer being cut in half for single tmu cards (H3). 2004-04-02 14:38:41 +00:00
dborca
6ee0f85391 Linux makefile fixes (ajax 'at' nwnk 'dot' net) 2004-03-17 08:17:12 +00:00
dborca
230c88f374 added DRI switches description in top makefile.linux 2004-03-15 10:02:08 +00:00
dborca
88b0b8a650 Voodoo Rush fixes 2004-03-08 07:42:24 +00:00
dborca
13d6a0f4e5 Bastardised Glide3x for SST1 2004-03-02 07:56:29 +00:00
dborca
6ce0e9ab42 changed the build process to make the branches independent
made glide.h consistent across all branches
grQueryResolution now works in DOS
more tests in CVG branch
some other fixes
2004-03-02 07:30:59 +00:00
dborca
397102116f Koolsmoky latest changes wrt TLS 2004-02-20 10:12:58 +00:00
dborca
36aa323d87 exposed grSetNumPendingBuffers through grGetProcAddress 2004-02-20 10:07:38 +00:00
dborca
08220f02bd grSetNumPendingBuffers visible with grGetProcAddress 2004-02-16 07:42:16 +00:00
koolsmoky
a9362d59c3 dxt1 texture fix 2004-02-11 06:46:18 +00:00
dborca
ca68a1e33e grSstSelect refactor 2004-02-09 08:03:14 +00:00
koolsmoky
55aa3d89dd fixed comments 2004-02-08 21:58:57 +00:00
koolsmoky
2dbc6d696e fixed bug scanning min and max alpha values 2004-02-08 18:28:26 +00:00
koolsmoky
26c4247cdd set alpha threshold for 1bit alpha dxt1 as specified in OpenGL spec. 2004-02-08 01:49:39 +00:00
koolsmoky
0c15f5c91a analyze the entire texture for 1bit alpha dxt1
use error diffusion for dxtn rgb565 conversions
fixed dxt4,5 quantizer
2004-02-08 00:55:01 +00:00
dborca
ab1fe87f14 main ALWAYS returns int 2004-02-02 07:47:13 +00:00
guillemj
873a724200 Fix autotool build system. 2004-01-25 11:03:04 +00:00
guillemj
3b11585bb0 Remove obsolete libtool generation script. 2004-01-25 11:01:37 +00:00
guillemj
87e90b9541 Fixed autotools build system. 2004-01-25 10:53:01 +00:00
guillemj
d0a9cb47d6 Support linux kernels 2.6. 2004-01-25 09:40:47 +00:00
guillemj
0b9e4e1c84 Added changelog entry. 2004-01-25 08:39:01 +00:00
guillemj
b57e2c294b Ported to linux kernel 2.6. 2004-01-21 12:58:52 +00:00
dborca
6ffeebc162 compilation and some other minor fixes to aid in debugging 2004-01-20 14:04:10 +00:00
dborca
21a713dc68 compilation errors (mainly for DEBUG mode) 2004-01-13 09:22:51 +00:00
dborca
da0be8d904 fixed _stdcall RET opcodes in Assembly 2004-01-13 09:19:12 +00:00
koolsmoky
1452e51cdd no message 2004-01-11 18:32:29 +00:00
koolsmoky
9110ab17f1 [win32] Converted winsurf.cpp to C. Fixes and additions for windowed rendering. 2004-01-11 18:29:29 +00:00
koolsmoky
a5e24cc268 [win32] Cleaned hwcInit() and removed window association. 2004-01-11 18:16:37 +00:00
dborca
beb671ed0e GPIO 2003-12-08 13:15:31 +00:00
dborca
e869300446 better Texus2 integration 2003-12-08 13:13:11 +00:00
dborca
698db33051 Voodoo5 6000 happiness 2003-12-08 13:12:39 +00:00
koolsmoky
a20451f387 disabled two tri fill 2003-11-25 16:21:05 +00:00
koolsmoky
bc8321de06 removed comments 2003-11-25 16:19:28 +00:00
koolsmoky
0c477a7afb attempt to fix DXT1 4x4 mipmap downloads to the TMUs 2003-11-25 16:18:20 +00:00
dborca
6b5e8acf71 fixed pointcast... again! 2003-11-18 12:55:20 +00:00
koolsmoky
517dfb03be attempt to fix DXT1 4x4 mipmap downloads to the TMUs 2003-11-09 02:01:06 +00:00
koolsmoky
148fd0ada3 attempt to fix DXT1 4x4 mipmap downloads to the TMUs 2003-11-09 01:54:13 +00:00
dborca
faf822daf3 removed stray backslash 2003-11-08 10:07:53 +00:00
guillemj
69f957db74 Finish uniting the clans for Automake files. 2003-11-08 08:43:21 +00:00
guillemj
e08300cb43 Unify multi-arch implementation of _grErrorDefaultCallback() function. 2003-11-08 08:39:15 +00:00
dborca
e229833d24 keeping things simple 2003-11-07 13:52:32 +00:00
dborca
42132e3665 unite the clans 2003-11-07 13:38:39 +00:00
dborca
15848b504f Removed balanced #endif. 2003-11-04 12:53:38 +00:00
dborca
4c956aa0a6 embedded Texus2 2003-11-03 13:36:54 +00:00
dborca
2ff376b852 Voodoo2 happiness (DJGPP & Linux) 2003-11-03 13:34:30 +00:00
dborca
b19d6d3bf5 limited pointcast 2003-11-03 13:28:31 +00:00
guillemj
ff0a4a4905 Splitted install target.
Do not trash user variables (CFLAGS).
Honour DESTDIR.
Added support for KVERS, KHEADERS, and MODULES_DIR.
2003-11-03 08:33:08 +00:00
guillemj
9d5ef92b50 Remove invalid use of sizeof from ioctl calls. 2003-11-03 07:30:05 +00:00
guillemj
ee8430cb2c Remove unbalanced #endif. 2003-11-03 07:27:50 +00:00
guillemj
2ffb39127f Removed function keyword to make it a POSIX Shell. 2003-11-02 23:29:47 +00:00
guillemj
b0551a7c4b Fixed an unbalanced quotation mark on --make-hst sed expression.
Protected all other sed expressions.
2003-11-02 23:28:16 +00:00
dborca
b80cf1c1de added unconditional Texus2 compilation 2003-10-30 11:41:38 +00:00
dborca
deae98043b conditioned Texus2 compilation 2003-10-30 11:40:40 +00:00
dborca
3d453046cc properly exported some Texus2 functions 2003-10-30 11:39:18 +00:00
guillemj
c54d6a2ee4 * configure.in: Use double square braquets in the architecture line, so
it's correctly parsed to generate configure.
2003-10-26 16:20:06 +00:00
dborca
7558076800 changes to allow compressed texture tests 2003-10-21 08:08:06 +00:00
dborca
28535c886e fixed minihwc; conditioned context checking; added Texus2 to Glide3 2003-10-14 15:04:07 +00:00
dborca
e778c12ca2 Fixed paths in Linux tests makefile 2003-10-13 13:36:05 +00:00
koolsmoky
0754713319 favor 4x1 over 2x2 video filter for analog sli
use normal video filters if FX_GLIDE_V56K_DAC_FIX is disabled
2003-10-13 01:39:33 +00:00
dborca
f44571f658 More non-DRI Linux fixes 2003-10-11 09:24:18 +00:00
dborca
ff9b98e56f Linux makefile 2003-10-10 10:05:11 +00:00
dborca
c9a74b1b17 Linux redivivus 2003-10-10 09:53:30 +00:00
dborca
29570c57c4 SST IO support. Napalm recognition. Makefile fixes. 2003-10-09 15:33:23 +00:00
koolsmoky
05fdf9461a use 4x4 filter if > 1024x768 2003-09-24 20:18:52 +00:00
koolsmoky
d8d62a1e70 indentation 2003-09-24 19:35:11 +00:00
koolsmoky
63c3c6a873 Added FX_GLIDE_V56K_DAC_FIX to enable/disable DAC workaround for Voodoo5 6000 2003-09-24 19:30:20 +00:00
koolsmoky
4bcd5665b0 indentation 2003-09-24 19:23:00 +00:00
koolsmoky
ffd7598574 win32 alt-tab fix changes 2003-09-24 19:22:22 +00:00
koolsmoky
9a910ee5f8 cleaned win32 alt-tab fix
added FX_GLIDE_ALT_TAB_FIX to force win32 alt-tab fix
cleaned v56k gamma interpolation
2003-09-12 05:20:13 +00:00
koolsmoky
6ad857c9e0 cleaned win32 alt-tab fix 2003-09-12 05:12:28 +00:00
koolsmoky
095bb6777a preparing for graphic context checks
fixed jmp errors
2003-09-12 05:11:45 +00:00
koolsmoky
89ff5c6968 preparing for graphic context checks 2003-09-12 05:08:35 +00:00
koolsmoky
5f1285c441 cleaned win32 alt-tab fix 2003-09-12 05:06:23 +00:00
dborca
cedb308d38 renamed library to cope with short filenames 2003-08-28 15:34:26 +00:00
koolsmoky
a65846e4d6 clean up 2003-08-26 18:03:41 +00:00
koolsmoky
6b3b2afb74 indentation cleanup 2003-08-26 15:41:34 +00:00
koolsmoky
7c059e2029 global context num_tmu max is 2 2003-08-26 15:40:11 +00:00
koolsmoky
01013ad51e DRI fixes for grTBufferWriteMaskExt 2003-08-26 15:34:47 +00:00
dborca
cfeb5c8a20 dangerous macro construction 2003-08-26 06:55:18 +00:00
dborca
b5896cf6e6 makefile consistency 2003-08-25 12:08:01 +00:00
dborca
9eb8ae93c6 makefile consistency 2003-08-25 12:06:36 +00:00
dborca
b6b71a4d68 Linux cleanup... eheh! 2003-08-22 05:29:59 +00:00
dborca
7aa4e220de Assembler flags 2003-08-21 09:03:22 +00:00
dborca
03e59b7e59 Texture fixes by Koolsmoky 2003-08-21 08:49:55 +00:00
dborca
eb9ca4dbed cleansed code 2003-08-21 08:49:11 +00:00
dborca
5d26edba88 some things to remember 2003-08-21 08:44:33 +00:00
dborca
6dab1639d5 removed unused files 2003-08-21 08:41:52 +00:00
dborca
4e71aa3eed cleaned up DJGPP/MinGW makefiles 2003-08-21 08:39:38 +00:00
dborca
00c107305c moved CINIT to h5 (h3 is phased out) 2003-08-21 08:32:12 +00:00
koolsmoky
6932027116 use msvcrt c runtime 2003-08-17 16:00:35 +00:00
koolsmoky
c5bcf24387 removed unused file 2003-08-15 12:41:42 +00:00
koolsmoky
e536bd8f3a remove unused files 2003-08-15 12:14:28 +00:00
koolsmoky
359a05b2d5 added glide3 specific build flags 2003-08-15 11:51:52 +00:00
koolsmoky
0657059cff use automatic versioning 2003-08-15 11:50:38 +00:00
koolsmoky
fdb64e3424 always default to 2 pixel per clock mode 2003-08-11 00:20:09 +00:00
koolsmoky
758d3324e5 fixed ifdef error for *bsd in grBufferSwap 2003-08-08 20:49:07 +00:00
koolsmoky
cfbd5e7bde fixed buffer size for registry paths
minimum runtime between GetDC and ReleaseDC
delete device context when exiting
2003-08-07 20:01:22 +00:00
koolsmoky
07ce126519 removed uneeded window handle check and fixed ddEnumCbEx usage in checkResolutions 2003-08-07 19:50:37 +00:00
dborca
3e5ddeacce MinGW issues again. 2003-08-07 10:32:51 +00:00
dborca
2687c043af Preparing for MinGW 2.0 2003-08-04 12:45:47 +00:00
dborca
c0979a598b Enabled 32bit Z writes 2003-08-04 12:44:40 +00:00
dborca
8283931df7 Four chip by Koolsmoky 2003-08-01 10:06:41 +00:00
koolsmoky
796f119669 fixed EOL 2003-07-30 20:07:06 +00:00
dborca
07ccf2d302 Fixed Linux... again!!!
Changed contact address!
2003-07-29 10:05:04 +00:00
dborca
890926228a Shamelessness.
Safeguard in CPUID.
Changed contact address!
Koolsmoky's texture download fixes.
2003-07-29 10:04:32 +00:00
dborca
69259445a7 Removed unused files! 2003-07-28 14:12:05 +00:00
koolsmoky
92dfa218b4 symbols for debug builds 2003-07-27 12:20:01 +00:00
koolsmoky
787776dc0e removed const from _grBufferClear2D buffOffset because it's not 2003-07-26 22:36:13 +00:00
koolsmoky
0c31bd094c enabled debug symbols for debug builds 2003-07-26 22:32:46 +00:00
dborca
53a8d8b1b0 Attempt to fix texturebuffer/SLI. 2003-07-25 07:15:51 +00:00
dborca
533a477142 ... in the name of the Linux, DRI and the sacred Glide... 2003-07-25 07:14:59 +00:00
dborca
d83e85c6a4 removed debris 2003-07-25 07:13:41 +00:00
koolsmoky
babd8326bd use __try/__except mechanism for win32 to catch SSE sigillegal in win95 2003-07-24 13:13:03 +00:00
koolsmoky
285b967be2 added win me,2k,xp to supported list 2003-07-24 13:08:08 +00:00
anholt
535ade3552 FreeBSD also can't do static initialization to stdout/stderr, and most unixes
are going to need the prototype for hwcGetenv.
2003-07-24 03:53:02 +00:00
anholt
4a53bfb160 Convert h5/glide3/src/ for FreeBSD, mostly by changing #ifdef __linux__ to
#ifdef DRI_BUILD, and removing a bit of dead code.
2003-07-24 03:51:08 +00:00
anholt
6f367986f4 Make hwcGetenv's argument a const to match the prototype. 2003-07-23 18:52:36 +00:00
anholt
8f048f464d automake/autoconf changes for FreeBSD:
- Add the X11 header location to CFLAGS in minihwc.
- Add a DRI_BUILD conditional and define it in the CFLAGS in glide3.
- Use gmake instead of make when it's found.
- Add AC_CANONICAL_TARGET, which appeases libtool.
2003-07-23 18:51:01 +00:00
anholt
63c16626f8 Disable the fxTime and timer functions on FreeBSD, which are only used by
the tests.
2003-07-23 18:45:17 +00:00
anholt
59ee0209d0 Move code from fxfreebsd.c to fxlinux.c. Note that this code is almost all
dead in the DRI case, anyway.
2003-07-23 18:43:47 +00:00
anholt
d570839952 malloc.h is deprecated, use stdlib.h instead. 2003-07-23 06:29:33 +00:00
koolsmoky
d183c81f39 fixed debug 2003-07-21 22:03:40 +00:00
koolsmoky
2eacd87ff3 fixed clean 2003-07-21 21:15:55 +00:00
koolsmoky
796540cd5b added rules for sbench 2003-07-21 14:43:10 +00:00
koolsmoky
8f32bcb3b3 removed cast to volatile float 2003-07-21 14:41:57 +00:00
koolsmoky
c11ed99fa3 modified debug and switched to single thread standard c library 2003-07-21 14:41:03 +00:00
dborca
e42f28137a DJGPP SSE happiness 2003-07-21 10:24:24 +00:00
koolsmoky
8b76cc1944 Fixed getregpath 2003-07-19 17:25:39 +00:00
dborca
8eec69e649 even smaller matters 2003-07-18 08:59:25 +00:00
koolsmoky
61494a9258 Explicitly specified link libraries. 2003-07-17 10:50:32 +00:00
koolsmoky
c3c5f2e0f0 Added win32 makefile for glide3 tests 2003-07-17 10:15:27 +00:00
koolsmoky
bd04c38ade no message 2003-07-16 19:27:23 +00:00
koolsmoky
0c87f5dad8 Disabled release of exclusive mode in grSstWinClose for win32. 2003-07-16 17:53:42 +00:00
koolsmoky
5d727e3651 Removed IS_ALT_TAB and unused functions.
Modifications to revive win95 support.
2003-07-16 17:49:53 +00:00
koolsmoky
dc6c1c036c no message 2003-07-16 17:36:29 +00:00
koolsmoky
99355828b0 new makefile for win32 2003-07-16 17:31:58 +00:00
dborca
1df56889ab small matters 2003-07-15 10:28:23 +00:00
dborca
72a46fc1ad fixed small bug: readPtr -> depth 2003-07-15 10:27:05 +00:00
dborca
d0251d38ed shamelessness again 2003-07-11 10:06:39 +00:00
dborca
30d2c54cba no message 2003-07-10 12:30:35 +00:00
dborca
4b715ac8be shamelessness 2003-07-10 12:16:56 +00:00
koolsmoky
ed1f80f916 removed unused local variables 2003-07-08 18:43:37 +00:00
koolsmoky
83c37ba65b fixed vga_vsync_offset field in cfgSliAAMisc 2003-07-08 17:32:59 +00:00
dborca
d158b58a28 cosmetics... 2003-07-08 08:08:20 +00:00
dborca
4591450d8e updates to MMX/FPU specializations 2003-07-08 08:06:45 +00:00
dborca
9d17415f93 fixed variadic macros 2003-07-08 07:30:17 +00:00
koolsmoky
1c65fd4046 cleaned logs 2003-07-07 23:29:07 +00:00
koolsmoky
20e154479a hwcGetenv/Ex to match header 2003-07-07 22:28:15 +00:00
dborca
c2d3c2695a small fixes 2003-07-07 16:45:03 +00:00
guillemj
1655f07627 Reintroduced gthread.c compilation. 2003-07-07 01:45:55 +00:00
guillemj
3f9a537344 Added parameters to automake to copy and update missing files. 2003-07-07 01:45:00 +00:00
koolsmoky
4d57a8ac56 cleaned hwcGammaTable 2003-07-05 11:07:19 +00:00
koolsmoky
d136e83778 no message 2003-07-03 13:16:46 +00:00
koolsmoky
a577528108 obscure activities from other app's window 2003-07-03 13:15:53 +00:00
koolsmoky
aaa1fe6d5d changed overlay filter rules. prepared for dos_mode.c sli/aa setup additions. 2003-07-03 10:45:29 +00:00
koolsmoky
23c393d4b2 compensate for grGlideInit changes 2003-07-03 10:41:47 +00:00
koolsmoky
59d1ea8cc1 disabled 2ppc mode for high res 2003-07-03 10:37:14 +00:00
koolsmoky
c9c41ef84b cleaned _grlfblock 2003-07-03 10:35:34 +00:00
dborca
578c360bf4 removed CPUID detritus 2003-07-01 11:18:03 +00:00
dborca
004928ff15 fixed a bug in GNUC code when running Intel; also removed detritus 2003-07-01 11:16:42 +00:00
dborca
4ac226f1b5 enabled NAPALM for tests 2003-07-01 11:13:34 +00:00
guillemj
787ac42bf2 Fixed nested comments warnings.
Removed some trailing spaces.
2003-06-29 19:00:36 +00:00
guillemj
da40699dd9 Fixed preprocessor invalid token errors. 2003-06-29 18:45:56 +00:00
guillemj
ec0e9dc38b Fix compilation warnings. 2003-06-29 18:43:28 +00:00
guillemj
4768c1f721 Fixed so much warnings generated by debug macros that caused the
compilation to fail on newer gcc 3.x.
2003-06-29 18:39:05 +00:00
guillemj
061cb96484 Fixed giving build.3dfx multiple arguments, thus allowing to pass variable
assignments.
2003-06-29 18:35:39 +00:00
guillemj
979effcff2 Script converted to bash. 2003-06-29 18:32:13 +00:00
guillemj
c0820d2e93 When building with no optimizations libm is required. 2003-06-29 18:31:10 +00:00
guillemj
03622b4b3e Fixed gcc warnings on -m486 flag, and use pentium instead. 2003-06-29 18:28:55 +00:00
guillemj
5dd058b7ae Include newer 3dfx.mak file. 2003-06-29 18:25:27 +00:00
guillemj
f726c002ec Fixed compilation warnings. 2003-06-29 18:23:28 +00:00
koolsmoky
1dc8c723d6 added LFB read/write FPU specializations 2003-06-29 15:10:32 +00:00
koolsmoky
a03b54c2e9 added more CPU families 2003-06-29 14:47:58 +00:00
FIXME
eaf0155978 This commit was manufactured by cvs2svn to create branch 'glide-devel-
branch'.
2003-06-28 19:31:07 +00:00
koolsmoky
c80b119803 changes to support h5/glide3/tests/makefile 2003-06-27 15:13:13 +00:00
koolsmoky
79248afda5 fixed win32 compile error for LFB read/write MMX specializations 2003-06-27 15:11:07 +00:00
koolsmoky
913a569838 fixed for win32 2003-06-27 15:08:12 +00:00
dborca
0ddbb273b6 added LFB read/write MMX specializations 2003-06-27 10:40:52 +00:00
koolsmoky
e115acc717 moved OS and CPU flags from bInfo to _GlideRoot 2003-06-26 19:23:59 +00:00
koolsmoky
2880476dbf call _GlideInitEnvironment() only once 2003-06-24 22:45:01 +00:00
koolsmoky
12741a635b no message 2003-06-24 22:41:03 +00:00
dborca
9221bcb46a minor changes to aid in debugging 2003-06-24 11:25:17 +00:00
koolsmoky
0b5e52ab40 no message 2003-06-23 20:42:14 +00:00
koolsmoky
8a2c5318c0 winxp context work around 2003-06-23 20:40:35 +00:00
koolsmoky
75931c9a1d no message 2003-06-23 20:15:18 +00:00
koolsmoky
8dc98e970a refreshrate validation fix 2003-06-23 20:13:01 +00:00
dborca
83d9fcba9b h3cinit cleanup 2003-06-21 12:43:05 +00:00
dborca
5be1e23a0c fixes: DOS gamma, modetabl.h timings (avoid shimmering),
Napalm memory probing, more DJGPP MMX specializations,
new 32bit texture files, Linux build valid again, etc.
2003-06-19 08:38:28 +00:00
dborca
e791da7f5d no message 2003-06-19 08:25:42 +00:00
dborca
28b6186e43 no message 2003-06-19 08:16:03 +00:00
dborca
fac64e3dc4 fixed big textures 2003-06-19 08:11:08 +00:00
dborca
b1363fbf0f more fixes to NASM sources 2003-06-13 07:22:59 +00:00
koolsmoky
12753febc7 no message 2003-06-08 13:29:31 +00:00
koolsmoky
f99e23b323 fixed 2-tri fill of _grTriFill 2003-06-08 13:26:35 +00:00
koolsmoky
608d808cfc fixed debug to compile 2003-06-08 13:23:21 +00:00
koolsmoky
16a5b539db changes to support nasm sources for win32 2003-06-08 08:12:18 +00:00
dborca
463f37d20e initial checkin for NASM sources 2003-06-07 09:53:25 +00:00
koolsmoky
64216c4eaf no message 2003-06-06 19:26:43 +00:00
koolsmoky
60452f0d6f making sure djgpp works with mmx 2003-06-06 19:25:34 +00:00
koolsmoky
970f823ed6 Cleaned up win32 makefiles. 2003-06-05 08:24:35 +00:00
koolsmoky
9a64ace60c Cleaned up win32 makefiles. Added work around for v5 6000 dac problem. Completed merging screen shot routines. 2003-06-05 08:24:00 +00:00
dborca
ba980646b9 fixed DJGPP test-suite 2003-05-06 12:55:17 +00:00
dborca
3e642e03c4 no message 2003-05-05 07:12:48 +00:00
dborca
11cf13c445 no message 2003-05-05 06:50:42 +00:00
koolsmoky
3b8ff42693 initial checkin of dos win32 glide 2003-04-06 18:30:26 +00:00
koolsmoky
0b8571b620 initial checkin of dos win32 glide 2003-04-06 18:23:11 +00:00
FIXME
f65153dfe9 This commit was manufactured by cvs2svn to create branch 'glide-devel-
branch'.
2002-04-09 22:21:44 +00:00
alanh
e11ce4f2d6 AMD 3DNow fixes 2002-04-09 22:21:43 +00:00
mercury
aa7ed8a4ee Compile for MTRR if the kernel is, without checking the cpuinfo.
(And if setting the MTRR fails the module still works fine.)

Updated to remove the support for kernels before 2.2.x.
(Made the first a bit easier.)

We now only use kinfo for the makefile.
2001-07-28 08:00:12 +00:00
alanh
191ef6482f Set FX_GLIDE_SWAPINTERVAL to 0 by default 2001-03-05 15:02:18 +00:00
mercury
1e58a2b677 Added a brief comment above the changes in the last commit for the
pciSetConfigData function.
2000-11-27 09:49:33 +00:00
mercury
b7d74ee9de Fixed <> for glide2x sst1, this was broken in the initial CVS tree,
fixed in CVS reversion 1.2, then broken again in cvs reversion 1.5.
(Which was the merge of the H3 swlibs changes)
2000-11-27 09:43:52 +00:00
alanh
58ece79b77 Add new grStippleMode and grStipplePattern functions for both Voodoo3 and
Voodoo5 hardware.
2000-11-24 18:36:48 +00:00
joseph
660ac4eef4 Restored changes that were lost when I imported new sources from 3dfx's
internal source repository.
2000-11-17 21:31:08 +00:00
alanh
8632c51168 fix a __linux__ reversal problem when Joseph imported the 3dfx tree. 2000-11-17 11:29:23 +00:00
joseph
4eb87a496f Replaced old copyright message with the Glide General Public License copyright
message.
2000-11-16 20:28:58 +00:00
alanh
3a9fbd102e fix a typo 2000-11-16 20:25:38 +00:00
joseph
b141b886ce Removed proprietary copyright message and replaced with Glide General Public
License copyright message.
2000-11-16 19:26:03 +00:00
joseph
11dd6742ca Fixed copyright message. 2000-11-16 19:21:27 +00:00
alanh
7af730791b add linux specific grRenderBuffer to fix problems switching between FRONT and
BACK buffers.
2000-11-16 18:58:27 +00:00
joseph
5a917c34f6 Syncing up with 3dfx internal source repository. These changes contain a
number of bug fixes.
2000-11-15 23:32:58 +00:00
mercury
db65e7ae20 Testing cvs commit messages, again. 2000-11-15 18:34:14 +00:00
mercury
0e2ea3df40 Testing CVS commit messages, joy. 2000-11-15 03:57:31 +00:00
mercury
b36fcc2d3c Removed the blank line at the end.
(Really just a test of CVS commit logs.)
2000-11-14 18:22:27 +00:00
joseph
49b177642f Testing broken commit messages 2000-11-14 02:27:03 +00:00
joseph
f66c82faa0 Testing broken commit messages 2000-11-14 02:25:33 +00:00
mercury
3c8fc15b39 Oops, updated ltconfig, but not ltmain.sh, fixed now. 2000-11-13 18:10:04 +00:00
mercury
780652ecad Converted 'function xyz() { ...; }' to 'xyz() { ...; }'.
(The first is a bashism, the latter is POSIX sh.)
2000-11-03 11:23:57 +00:00
mercury
5ccd4caf65 New libtool version, fixes some compile issues. 2000-11-03 05:31:37 +00:00
mercury
b3ee445a2a Use named structure members for init, instead of order.
(Patch from 'neuro', SF bug #109556)
2000-11-02 09:45:11 +00:00
joseph
ee145101d4 Fixed typo cpudtct.lo --> cpudtect.lo that was causing the wrong ASM
build rule to be executed for cpudtect.s
2000-10-31 03:25:45 +00:00
alanh
d2e6f85c43 fix depth buffer offset calculation. 2000-10-27 10:27:27 +00:00
alanh
f2ad0dfdc3 fix readPtr0/1 -> depth0/1 check 2000-10-27 07:54:51 +00:00
billwhite
f256ce1ac3 1.) Added changes for AMD 3DNow instructions in h5/glide3 and
h3/glide3.
2.) Fixed a typographical error in configure.in.  The default
    texture utility library is texus2, not texus.
2000-10-20 19:07:00 +00:00
joseph
fa556faeb0 Don't try to clean the CVS directory. 2000-10-07 21:16:22 +00:00
joseph
9bbe51f887 Don't try to clean the CVS directory. 2000-10-07 20:59:03 +00:00
joseph
9d4712b735 Don't try to clean CVS directory. 2000-10-07 20:55:48 +00:00
joseph
4440d3ed94 Include the correct master level makefile and set new env variables. 2000-10-07 20:47:51 +00:00
joseph
7c24221d66 Slightly better wording. This checkin is really being used to test
the automatic CVS mailing to glide-patches for commits.
2000-10-07 19:42:56 +00:00
mercury
9a5b01b41c 006-fxpci-000, revert to a previous fxpci.c, one which actually works. 2000-10-03 18:37:59 +00:00
mercury
098165b921 003-clean_up_swlibs-000, swlibs tree cleanup. 2000-10-03 18:31:53 +00:00
mercury
fba7cae79d 003-clean_up_h3-000, h3 tree cleanup. 2000-10-03 18:29:57 +00:00
mercury
df4085a80e 003-clean_up_cvg-000, cvg tree cleanup. 2000-10-03 18:28:36 +00:00
mercury
0aa3f36a94 002-clobber-000, make clobber actually does now. 2000-10-03 18:25:35 +00:00
mercury
ce1325b90b 001-mojo-000 patch, the end of mojo. 2000-10-03 18:24:41 +00:00
mercury
b5e57a476a The 000-compile-000 patch from the debian packages. 2000-10-03 03:09:57 +00:00
billwhite
3c118f915e 1.) use mkdir -p to build the build directory in chores.3dfx.
2.) change some macros in makefile.autoconf.am to put glide in
    libglide3 not libglide3x.
2000-09-25 18:41:33 +00:00
joseph
de998a021b Changed library name from libglide3x to libglide3 2000-09-24 22:59:27 +00:00
joseph
659837a56d set library name to libglide3 instead of libglide3x 2000-09-24 22:58:38 +00:00
billwhite
a1c96224d7 Correctly compute the LFB strides in grLfbLock. 2000-09-14 01:58:31 +00:00
billwhite
f3e0e811fc Added one typedef needed for the alpha port. 2000-09-11 18:51:51 +00:00
846 changed files with 140170 additions and 63331 deletions

9
.gitignore vendored Normal file
View 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
View 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().

View File

@@ -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 Name: Device3Dfx
Version: 2.3 Version: 2.3
Release: 5 Release: 5
@@ -121,9 +121,9 @@ Group: Drivers
%description %description
This package installs the 3Dfx device driver to allow access to 3Dfx This package installs the 3Dfx device driver to allow access to 3Dfx
boards without the user having root privledges. It should work on both boards without the user having root privledges. It should work on >= 2.x
2.0 and 2.1/2.2 kernels and set the MTRR settings correctly. It should kernels and set the MTRR settings correctly. It should also work with
also work with SMP kernels (2.1/2.2). SMP kernels (>= 2.1).
%prep %prep
%setup -c %setup -c

View File

@@ -1,127 +1,155 @@
############################################################################### ###############################################################################
# Makefile by Carlo Wood (and others) # Makefile by Carlo Wood (and others)
ifeq ($(OPT_CFLAGS),)
# Determine the machine type # 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/) 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 # Setup machine dependant compiler flags
ifeq ($(ARCH), i386) ifeq ($(ARCH), i386)
OPT_CFLAGS = -O2 -m486 -fomit-frame-pointer \ CFLAGS ?= -O2 -march=pentium -fomit-frame-pointer -fno-strength-reduce \
-fno-strength-reduce \ -falign-loops=2 -falign-jumps=2 -falign-functions=2
-malign-loops=2 -malign-jumps=2 -malign-functions=2
endif endif
ifeq ($(ARCH), alpha) ifeq ($(ARCH), alpha)
OPT_CFLAGS = -O2 -mno-fp-regs -mcpu=ev4 \ CFLAGS ?= -O2 -mno-fp-regs -mcpu=ev4 -ffixed-8 -Wa,-mev6 \
-ffixed-8 \ -fomit-frame-pointer -fno-strict-aliasing
-Wa,-mev6 \
-fomit-frame-pointer -fno-strict-aliasing
endif 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. # 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 checks
sanity: sanity:
@( \ @( \
if [ ! -e /usr/src/linux ]; then \ if [ ! -r $(KHEADERS)/linux ]; then \
echo "Expect kernel source at location /usr/src/linux"; \ echo "Expect readable headers in $(KHEADERS)/linux"; \
echo "Sym.link /usr/src/linux -> where you have your sources"; \ exit 1; \
exit -1; \
fi; \ fi; \
if [ ! -r /usr/src/linux/include ]; then \ if [ ! -r $(KHEADERS)/linux/version.h ]; then \
echo "Expect readable headers in /usr/src/linux/include"; \ echo "Missing $(KHEADERS)/linux/version.h"; \
exit -1; \
fi; \
if [ ! -r /usr/src/linux/include/linux/version.h ]; then \
echo "Missing /usr/src/linux/include/linux/version.h"; \
echo "Configure and install the kernel first"; \ echo "Configure and install the kernel first"; \
exit -1; \ exit 1; \
fi; \ fi; \
if [ ! -e /proc/cpuinfo ]; then \ if [ ! -e /proc/cpuinfo ]; then \
echo "You need the /proc file system"; \ echo "You need the /proc file system"; \
echo "Reconfigure kernel and say Yes to CONFIG_PROC_FS"; \ echo "Reconfigure kernel and say Yes to CONFIG_PROC_FS"; \
exit -1; \ exit 1; \
fi; \ fi; \
) )
kinfo: kinfo.c KVER_MAJOR = $(shell echo "$(KVERS)" | cut -d. -f1 )
$(CC) -o kinfo kinfo.c KVER_MINOR = $(shell echo "$(KVERS)" | cut -d. -f2 )
kinfo.h: kinfo KBUILD = $(shell [ "$(KVER_MAJOR)" = 2 ] && [ "$(KVER_MINOR)" -ge 6 ] || \
./kinfo [ "$(KVER_MAJOR)" -ge 3 ] && echo yes )
ifneq ($(KERNEL_VERSION_MAJOR),2.0) help:
@echo KVER_MAJOR = $(KVER_MAJOR)
############################################################################### @echo KVER_MINOR = $(KVER_MINOR)
# kernel 2.1+ @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 else
BUILD_TYPE = legacy
############################################################################### MODULE_TDFX = $(NAME).o
# Kernel 2.0
OBJS = 3dfx_driver.o
ifneq ($(HAVE_MTRR),)
OBJS += mtrrs.o
endif endif
3dfx.o: kinfo.h $(OBJS) Makefile clean_type = clean_$(BUILD_TYPE)
$(LD) -r -o $@ $(OBJS) module_type = module_$(BUILD_TYPE)
endif
############################################################################### ###############################################################################
install: modules: sanity $(module_type)
mkdir -p /lib/modules/$(shell ./kinfo --UTS)/misc
cp 3dfx.o /lib/modules/$(shell ./kinfo --UTS)/misc/3dfx.o 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 \ if [ -e $(MODULES_DIR)/modules.dep ]; then \
indep=`grep 'misc/3dfx.o:' /lib/modules/$(shell ./kinfo --UTS)/modules.dep`; \ indep=`grep '$(NAME)/$(MODULE_TDFX):' $(MODULES_DIR)/modules.dep`; \
if [ -z "$$indep" ]; then \ if [ -z "$$indep" ]; then \
echo "/lib/modules/$(shell ./kinfo --UTS)/misc/3dfx.o:" >> /lib/modules/$(shell ./kinfo --UTS)/modules.dep; \ echo "$(MODULES_DIR)/$(NAME)/$(MODULE_TDFX):" >> $(MODULES_DIR)/modules.dep; \
echo "" >> /lib/modules/$(shell ./kinfo --UTS)/modules.dep; \ echo "" >> $(MODULES_DIR)/modules.dep; \
fi; \ fi; \
fi; \ fi; \
if [ ! -c /dev/3dfx ]; then \ if [ ! -e $(DESTDIR)/dev/.devfsd -a ! -c $(DESTDIR)/dev/$(NAME) ]; then \
mknod /dev/3dfx c 107 0; \ mknod $(DESTDIR)/dev/$(NAME) c 107 0; \
chmod go+w /dev/3dfx; \ chmod go+w $(DESTDIR)/dev/$(NAME); \
fi; \ fi; \
if [ "$(RPM_INSTALL)" = "1" ]; then \ if [ "$(RPM_INSTALL)" = "1" ]; then \
echo "/lib/modules/$(shell ./kinfo --UTS)/misc/3dfx.o"; \ echo "$(MODULES_DIR)/$(NAME)/$(MODULE_TDFX)"; \
else \ 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 \ 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; \
fi; \ fi; \
) )
install_modules: modules
mkdir -p $(MODULES_DIR)/$(NAME)
cp $(MODULE_TDFX) $(MODULES_DIR)/$(NAME)/
############################################################################### ###############################################################################
# This is for debugging purposes by the developers: # This is for debugging purposes by the developers:
clean: clean: $(clean_type)
rm -f *.o *.s kinfo kinfo.h rm -f kver.mak kver
3dfx.s: 3dfx_driver.c Makefile clean_legacy:
$(CC) $(CFLAGS) -S -c 3dfx_driver.c rm -f *.ko *.o *.mod.* .*.mod.* .*.cmd
clean_kbuild:
$(MAKE) -C kbuild clean
tar: tar:
tar czf ../../SOURCES/Dev3Dfx-2.5.tar.gz 3dfx_driver.c mtrrs.c Makefile tar czf ../../SOURCES/Dev3Dfx-2.5.tar.gz 3dfx_driver.c Makefile
debug: 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
View 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.

View 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
View File

@@ -0,0 +1 @@
5

View 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
View 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

View 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

View File

@@ -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
View File

@@ -0,0 +1,8 @@
#include <stdio.h>
int main()
{
printf("KVERS = %s\n", UTS_RELEASE);
return 0;
}

View File

@@ -1,935 +0,0 @@
/* Generic MTRR (Memory Type Range Register) driver.
Copyright (C) 1997-1998 Richard Gooch
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Richard Gooch may be reached by email at rgooch@atnf.csiro.au
The postal address is:
Richard Gooch, c/o ATNF, P. O. Box 76, Epping, N.S.W., 2121, Australia.
Source: "Pentium Pro Family Developer's Manual, Volume 3:
Operating System Writer's Guide" (Intel document number 242692),
section 11.11.7
ChangeLog
Prehistory Martin Tischhäuser <martin@ikcbarka.fzk.de>
Initial register-setting code (from proform-1.0).
19971216 Richard Gooch <rgooch@atnf.csiro.au>
Original version for /proc/mtrr interface, SMP-safe.
v1.0
19971217 Richard Gooch <rgooch@atnf.csiro.au>
Bug fix for ioctls()'s.
Added sample code in Documentation/mtrr.txt
v1.1
19971218 Richard Gooch <rgooch@atnf.csiro.au>
Disallow overlapping regions.
19971219 Jens Maurer <jmaurer@menuett.rhein-main.de>
Register-setting fixups.
v1.2
19971222 Richard Gooch <rgooch@atnf.csiro.au>
Fixups for kernel 2.1.75.
v1.3
19971229 David Wragg <dpw@doc.ic.ac.uk>
Register-setting fixups and conformity with Intel conventions.
19971229 Richard Gooch <rgooch@atnf.csiro.au>
Cosmetic changes and wrote this ChangeLog ;-)
19980106 Richard Gooch <rgooch@atnf.csiro.au>
Fixups for kernel 2.1.78.
v1.4
19980119 David Wragg <dpw@doc.ic.ac.uk>
Included passive-release enable code (elsewhere in PCI setup).
v1.5
19980131 Richard Gooch <rgooch@atnf.csiro.au>
Replaced global kernel lock with private spinlock.
v1.6
19980201 Richard Gooch <rgooch@atnf.csiro.au>
Added wait for other CPUs to complete changes.
v1.7
19980202 Richard Gooch <rgooch@atnf.csiro.au>
Bug fix in definition of <set_mtrr> for UP.
v1.8
19980319 Richard Gooch <rgooch@atnf.csiro.au>
Fixups for kernel 2.1.90.
19980323 Richard Gooch <rgooch@atnf.csiro.au>
Move SMP BIOS fixup before secondary CPUs call <calibrate_delay>
v1.9
19980325 Richard Gooch <rgooch@atnf.csiro.au>
Fixed test for overlapping regions: confused by adjacent regions
19980326 Richard Gooch <rgooch@atnf.csiro.au>
Added wbinvd in <set_mtrr_prepare>.
19980401 Richard Gooch <rgooch@atnf.csiro.au>
Bug fix for non-SMP compilation.
19980418 David Wragg <dpw@doc.ic.ac.uk>
Fixed-MTRR synchronisation for SMP and use atomic operations
instead of spinlocks.
19980418 Richard Gooch <rgooch@atnf.csiro.au>
Differentiate different MTRR register classes for BIOS fixup.
v1.10
19980419 David Wragg <dpw@doc.ic.ac.uk>
Bug fix in variable MTRR synchronisation.
v1.11
19980419 Richard Gooch <rgooch@atnf.csiro.au>
Fixups for kernel 2.1.97.
v1.12
19980421 Richard Gooch <rgooch@atnf.csiro.au>
Safer synchronisation across CPUs when changing MTRRs.
v1.13
19980423 Richard Gooch <rgooch@atnf.csiro.au>
Bugfix for SMP systems without MTRR support.
v1.14
19980427 Richard Gooch <rgooch@atnf.csiro.au>
Trap calls to <mtrr_add> and <mtrr_del> on non-MTRR machines.
v1.15
19980427 Richard Gooch <rgooch@atnf.csiro.au>
Use atomic bitops for setting SMP change mask.
v1.16
19980428 Richard Gooch <rgooch@atnf.csiro.au>
Removed spurious diagnostic message.
v1.17
19980429 Richard Gooch <rgooch@atnf.csiro.au>
Moved register-setting macros into this file.
Moved setup code from init/main.c to i386-specific areas.
v1.18
19980502 Richard Gooch <rgooch@atnf.csiro.au>
Moved MTRR detection outside conditionals in <mtrr_init>.
v1.19
19980502 Richard Gooch <rgooch@atnf.csiro.au>
Documentation improvement: mention Pentium II and AGP.
v1.20
19980521 Richard Gooch <rgooch@atnf.csiro.au>
Only manipulate interrupt enable flag on local CPU.
Allow enclosed uncachable regions.
v1.21
v1.21-- Emil Briggs <briggs@tick.physics.ncsu.edu>
Backported to 2.0.x kernels, /proc and ioctl
interfaces removed and the result incorporated
into the 3dfx device driver. Not SMP safe. If
you have an SMP use the 2.2 series kernels.
v1.22
19991222 Joseph Kain <joseph@3dfx.com>
Do kernel version checks here instead of in
Makefile. The Makefile now only needs the
kernel version for install.
*/
/* Include this first as it defines things that affect the kernel headers */
#include "kinfo.h"
/* MTRR support is only available in kerenls versioned 2.1.0 or higher.
* For earlier kernels this code compiles to nothing. */
#include <linux/version.h>
#ifndef KERNEL_VERSION
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 0)
#ifndef _LINUX_MTRR_H
#define _LINUX_MTRR_H
struct mtrr_sentry
{
unsigned long base; /* Base address */
unsigned long size; /* Size of region */
unsigned int type; /* Type of region */
};
struct mtrr_gentry
{
unsigned int regnum; /* Register number */
unsigned long base; /* Base address */
unsigned long size; /* Size of region */
unsigned int type; /* Type of region */
};
/* These are the region types */
#define MTRR_TYPE_UNCACHABLE 0
#define MTRR_TYPE_WRCOMB 1
/*#define MTRR_TYPE_ 2*/
/*#define MTRR_TYPE_ 3*/
#define MTRR_TYPE_WRTHROUGH 4
#define MTRR_TYPE_WRPROT 5
#define MTRR_TYPE_WRBACK 6
#define MTRR_NUM_TYPES 7
static char *mtrr_strings[MTRR_NUM_TYPES] =
{
"uncachable", /* 0 */
"write-combining", /* 1 */
"?", /* 2 */
"?", /* 3 */
"write-through", /* 4 */
"write-protect", /* 5 */
"write-back", /* 6 */
};
#ifdef __KERNEL__
/* The following functions are for use by other drivers */
extern int mtrr_add (unsigned long base, unsigned long size,
unsigned int type, char increment);
extern int mtrr_del (int reg, unsigned long base, unsigned long size);
#endif
#endif /* _LINUX_MTRR_H */
#ifdef MODULE
#include <linux/autoconf.h>
#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
#define MODVERSIONS
#endif
#ifdef MODVERSIONS
#include <linux/modversions.h>
#endif
#endif
#include <linux/sched.h>
#include <linux/tty.h>
#include <linux/timer.h>
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/wait.h>
#include <linux/string.h>
#include <linux/malloc.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/fs.h>
#include <linux/ctype.h>
#include <linux/proc_fs.h>
#define MTRR_NEED_STRINGS
#include <asm/io.h>
#include <asm/processor.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/segment.h>
#include <asm/bitops.h>
#include <asm/smp_lock.h>
#include <asm/atomic.h>
#include <linux/smp.h>
#undef __SMP__
#define MTRR_VERSION "1.21 (19980521)"
#define TRUE 1
#define FALSE 0
#define X86_FEATURE_MTRR 0x1000 /* memory type registers */
#define MTRRcap_MSR 0x0fe
#define MTRRdefType_MSR 0x2ff
#define MTRRphysBase_MSR(reg) (0x200 + 2 * (reg))
#define MTRRphysMask_MSR(reg) (0x200 + 2 * (reg) + 1)
#define NUM_FIXED_RANGES 88
#define MTRRfix64K_00000_MSR 0x250
#define MTRRfix16K_80000_MSR 0x258
#define MTRRfix16K_A0000_MSR 0x259
#define MTRRfix4K_C0000_MSR 0x268
#define MTRRfix4K_C8000_MSR 0x269
#define MTRRfix4K_D0000_MSR 0x26a
#define MTRRfix4K_D8000_MSR 0x26b
#define MTRRfix4K_E0000_MSR 0x26c
#define MTRRfix4K_E8000_MSR 0x26d
#define MTRRfix4K_F0000_MSR 0x26e
#define MTRRfix4K_F8000_MSR 0x26f
#ifdef __SMP__
# define MTRR_CHANGE_MASK_FIXED 0x01
# define MTRR_CHANGE_MASK_VARIABLE 0x02
# define MTRR_CHANGE_MASK_DEFTYPE 0x04
#endif
/* In the processor's MTRR interface, the MTRR type is always held in
an 8 bit field: */
typedef u8 mtrr_type;
#define LINE_SIZE 80
#define JIFFIE_TIMEOUT 100
#define set_mtrr(reg,base,size,type) set_mtrr_up (reg, base, size, type,TRUE)
static unsigned int *usage_table = NULL;
struct set_mtrr_context
{
unsigned long flags;
unsigned long deftype_lo;
unsigned long deftype_hi;
unsigned long cr4val;
};
/*
* Access to machine-specific registers (available on 586 and better only)
* Note: the rd* operations modify the parameters directly (without using
* pointer indirection), this allows gcc to optimize better
*/
#define rdmsr(msr,val1,val2) \
__asm__ __volatile__("rdmsr" \
: "=a" (val1), "=d" (val2) \
: "c" (msr))
#define wrmsr(msr,val1,val2) \
__asm__ __volatile__("wrmsr" \
: /* no outputs */ \
: "c" (msr), "a" (val1), "d" (val2))
#define rdtsc(low,high) \
__asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
#define rdpmc(counter,low,high) \
__asm__ __volatile__("rdpmc" \
: "=a" (low), "=d" (high) \
: "c" (counter))
/* Put the processor into a state where MTRRs can be safely set. */
static void set_mtrr_prepare(struct set_mtrr_context *ctxt)
{
unsigned long tmp;
/* disable interrupts locally */
save_flags (ctxt->flags); cli ();
/* save value of CR4 and clear Page Global Enable (bit 7) */
asm volatile ("movl %%cr4, %0\n\t"
"movl %0, %1\n\t"
"andb $0x7f, %b1\n\t"
"movl %1, %%cr4\n\t"
: "=r" (ctxt->cr4val), "=q" (tmp) : : "memory");
/* disable and flush caches. Note that wbinvd flushes the TLBs as
a side-effect. */
asm volatile ("movl %%cr0, %0\n\t"
"orl $0x40000000, %0\n\t"
"wbinvd\n\t"
"movl %0, %%cr0\n\t"
"wbinvd\n\t"
: "=r" (tmp) : : "memory");
/* disable MTRRs, and set the default type to uncached. */
rdmsr(MTRRdefType_MSR, ctxt->deftype_lo, ctxt->deftype_hi);
wrmsr(MTRRdefType_MSR, ctxt->deftype_lo & 0xf300UL, ctxt->deftype_hi);
} /* End Function set_mtrr_prepare */
/* Restore the processor after a set_mtrr_prepare */
static void set_mtrr_done(struct set_mtrr_context *ctxt)
{
unsigned long tmp;
/* flush caches and TLBs */
asm volatile ("wbinvd" : : : "memory" );
/* restore MTRRdefType */
wrmsr(MTRRdefType_MSR, ctxt->deftype_lo, ctxt->deftype_hi);
/* enable caches */
asm volatile ("movl %%cr0, %0\n\t"
"andl $0xbfffffff, %0\n\t"
"movl %0, %%cr0\n\t"
: "=r" (tmp) : : "memory");
/* restore value of CR4 */
asm volatile ("movl %0, %%cr4"
: : "r" (ctxt->cr4val) : "memory");
/* re-enable interrupts locally (if enabled previously) */
restore_flags (ctxt->flags);
} /* End Function set_mtrr_done */
/* this function returns the number of variable MTRRs */
static unsigned int get_num_var_ranges (void)
{
unsigned long config, dummy;
rdmsr(MTRRcap_MSR, config, dummy);
return (config & 0xff);
} /* End Function get_num_var_ranges */
/* non-zero if we have the write-combining memory type. */
static int have_wrcomb (void)
{
unsigned long config, dummy;
rdmsr(MTRRcap_MSR, config, dummy);
return (config & (1<<10));
}
static void get_mtrr (unsigned int reg, unsigned long *base,
unsigned long *size, mtrr_type *type)
{
unsigned long dummy, mask_lo, base_lo;
rdmsr(MTRRphysMask_MSR(reg), mask_lo, dummy);
if ((mask_lo & 0x800) == 0) {
/* Invalid (i.e. free) range. */
*base = 0;
*size = 0;
*type = 0;
return;
}
rdmsr(MTRRphysBase_MSR(reg), base_lo, dummy);
/* We ignore the extra address bits (32-35). If someone wants to
run x86 Linux on a machine with >4GB memory, this will be the
least of their problems. */
/* Clean up mask_lo so it gives the real address mask. */
mask_lo = (mask_lo & 0xfffff000UL);
/* This works correctly if size is a power of two, i.e. a
contiguous range. */
*size = ~(mask_lo - 1);
*base = (base_lo & 0xfffff000UL);
*type = (base_lo & 0xff);
} /* End Function get_mtrr */
static void set_mtrr_up (unsigned int reg, unsigned long base,
unsigned long size, mtrr_type type, int do_safe)
/* [SUMMARY] Set variable MTRR register on the local CPU.
<reg> The register to set.
<base> The base address of the region.
<size> The size of the region. If this is 0 the region is disabled.
<type> The type of the region.
<do_safe> If TRUE, do the change safely. If FALSE, safety measures should
be done externally.
*/
{
struct set_mtrr_context ctxt;
if (do_safe) set_mtrr_prepare (&ctxt);
if (size == 0)
{
/* The invalid bit is kept in the mask, so we simply clear the
relevant mask register to disable a range. */
wrmsr (MTRRphysMask_MSR (reg), 0, 0);
}
else
{
wrmsr (MTRRphysBase_MSR (reg), base | type, 0);
wrmsr (MTRRphysMask_MSR (reg), ~(size - 1) | 0x800, 0);
}
if (do_safe) set_mtrr_done (&ctxt);
} /* End Function set_mtrr_up */
#ifdef __SMP__
struct mtrr_var_range
{
unsigned long base_lo;
unsigned long base_hi;
unsigned long mask_lo;
unsigned long mask_hi;
};
/* Get the MSR pair relating to a var range. */
static void get_mtrr_var_range (unsigned int index,
struct mtrr_var_range *vr)
{
rdmsr (MTRRphysBase_MSR (index), vr->base_lo, vr->base_hi);
rdmsr (MTRRphysMask_MSR (index), vr->mask_lo, vr->mask_hi);
} /* End Function get_mtrr_var_range */
/* Set the MSR pair relating to a var range. Returns TRUE if
changes are made. */
static int set_mtrr_var_range_testing (unsigned int index,
struct mtrr_var_range *vr)
{
unsigned int lo, hi;
int changed = FALSE;
rdmsr(MTRRphysBase_MSR(index), lo, hi);
if ((vr->base_lo & 0xfffff0ffUL) != (lo & 0xfffff0ffUL)
|| (vr->base_hi & 0xfUL) != (hi & 0xfUL)) {
wrmsr(MTRRphysBase_MSR(index), vr->base_lo, vr->base_hi);
changed = TRUE;
}
rdmsr(MTRRphysMask_MSR(index), lo, hi);
if ((vr->mask_lo & 0xfffff800UL) != (lo & 0xfffff800UL)
|| (vr->mask_hi & 0xfUL) != (hi & 0xfUL)) {
wrmsr(MTRRphysMask_MSR(index), vr->mask_lo, vr->mask_hi);
changed = TRUE;
}
return changed;
}
static void get_fixed_ranges(mtrr_type *frs)
{
unsigned long *p = (unsigned long *)frs;
int i;
rdmsr(MTRRfix64K_00000_MSR, p[0], p[1]);
for (i = 0; i < 2; i++)
rdmsr(MTRRfix16K_80000_MSR + i, p[2 + i*2], p[3 + i*2]);
for (i = 0; i < 8; i++)
rdmsr(MTRRfix4K_C0000_MSR + i, p[6 + i*2], p[7 + i*2]);
}
static int set_fixed_ranges_testing(mtrr_type *frs)
{
unsigned long *p = (unsigned long *)frs;
int changed = FALSE;
int i;
unsigned long lo, hi;
rdmsr(MTRRfix64K_00000_MSR, lo, hi);
if (p[0] != lo || p[1] != hi) {
wrmsr(MTRRfix64K_00000_MSR, p[0], p[1]);
changed = TRUE;
}
for (i = 0; i < 2; i++) {
rdmsr(MTRRfix16K_80000_MSR + i, lo, hi);
if (p[2 + i*2] != lo || p[3 + i*2] != hi) {
wrmsr(MTRRfix16K_80000_MSR + i, p[2 + i*2], p[3 + i*2]);
changed = TRUE;
}
}
for (i = 0; i < 8; i++) {
rdmsr(MTRRfix4K_C0000_MSR + i, lo, hi);
if (p[6 + i*2] != lo || p[7 + i*2] != hi) {
wrmsr(MTRRfix4K_C0000_MSR + i, p[6 + i*2], p[7 + i*2]);
changed = TRUE;
}
}
return changed;
}
struct mtrr_state
{
unsigned int num_var_ranges;
struct mtrr_var_range *var_ranges;
mtrr_type fixed_ranges[NUM_FIXED_RANGES];
unsigned char enabled;
mtrr_type def_type;
};
/* Grab all of the MTRR state for this CPU into *state. */
static void get_mtrr_state(struct mtrr_state *state)
{
unsigned int nvrs, i;
struct mtrr_var_range *vrs;
unsigned long lo, dummy;
nvrs = state->num_var_ranges = get_num_var_ranges();
vrs = state->var_ranges
= kmalloc(nvrs * sizeof(struct mtrr_var_range), GFP_KERNEL);
if (vrs == NULL)
nvrs = state->num_var_ranges = 0;
for (i = 0; i < nvrs; i++)
get_mtrr_var_range(i, &vrs[i]);
get_fixed_ranges(state->fixed_ranges);
rdmsr(MTRRdefType_MSR, lo, dummy);
state->def_type = (lo & 0xff);
state->enabled = (lo & 0xc00) >> 10;
} /* End Function get_mtrr_state */
/* Free resources associated with a struct mtrr_state */
static void finalize_mtrr_state(struct mtrr_state *state)
{
if (state->var_ranges) kfree (state->var_ranges);
} /* End Function finalize_mtrr_state */
static unsigned long set_mtrr_state (struct mtrr_state *state,
struct set_mtrr_context *ctxt)
/* [SUMMARY] Set the MTRR state for this CPU.
<state> The MTRR state information to read.
<ctxt> Some relevant CPU context.
[NOTE] The CPU must already be in a safe state for MTRR changes.
[RETURNS] 0 if no changes made, else a mask indication what was changed.
*/
{
unsigned int i;
unsigned long change_mask = 0;
for (i = 0; i < state->num_var_ranges; i++)
if (set_mtrr_var_range_testing(i, &state->var_ranges[i]))
change_mask |= MTRR_CHANGE_MASK_VARIABLE;
if (set_fixed_ranges_testing(state->fixed_ranges))
change_mask |= MTRR_CHANGE_MASK_FIXED;
/* set_mtrr_restore restores the old value of MTRRdefType,
so to set it we fiddle with the saved value. */
if ((ctxt->deftype_lo & 0xff) != state->def_type
|| ((ctxt->deftype_lo & 0xc00) >> 10) != state->enabled)
{
ctxt->deftype_lo |= (state->def_type | state->enabled << 10);
change_mask |= MTRR_CHANGE_MASK_DEFTYPE;
}
return change_mask;
} /* End Function set_mtrr_state */
static atomic_t undone_count;
static void (*handler_func) (struct set_mtrr_context *ctxt, void *info);
static void *handler_info;
static volatile int wait_barrier_execute = FALSE;
static volatile int wait_barrier_cache_enable = FALSE;
static void sync_handler (void)
/* [SUMMARY] Synchronisation handler. Executed by "other" CPUs.
[RETURNS] Nothing.
*/
{
struct set_mtrr_context ctxt;
set_mtrr_prepare (&ctxt);
/* Notify master CPU that I'm at the barrier and then wait */
atomic_dec (&undone_count);
while (wait_barrier_execute) barrier ();
/* The master has cleared me to execute */
(*handler_func) (&ctxt, handler_info);
/* Notify master CPU that I've executed the function */
atomic_dec (&undone_count);
/* Wait for master to clear me to enable cache and return */
while (wait_barrier_cache_enable) barrier ();
set_mtrr_done (&ctxt);
} /* End Function sync_handler */
static void do_all_cpus (void (*handler) (struct set_mtrr_context *ctxt,
void *info),
void *info, int local)
/* [SUMMARY] Execute a function on all CPUs, with caches flushed and disabled.
[PURPOSE] This function will synchronise all CPUs, flush and disable caches
on all CPUs, then call a specified function. When the specified function
finishes on all CPUs, caches are enabled on all CPUs.
<handler> The function to execute.
<info> An arbitrary information pointer which is passed to <<handler>>.
<local> If TRUE <<handler>> is executed locally.
[RETURNS] Nothing.
*/
{
unsigned long timeout;
struct set_mtrr_context ctxt;
mtrr_hook = sync_handler;
handler_func = handler;
handler_info = info;
wait_barrier_execute = TRUE;
wait_barrier_cache_enable = TRUE;
/* Send a message to all other CPUs and wait for them to enter the
barrier */
atomic_set (&undone_count, smp_num_cpus - 1);
smp_message_pass (MSG_ALL_BUT_SELF, MSG_MTRR_CHANGE, 0, 0);
/* Wait for it to be done */
timeout = jiffies + JIFFIE_TIMEOUT;
while ( (atomic_read (&undone_count) > 0) && (jiffies < timeout) )
barrier ();
if (atomic_read (&undone_count) > 0)
{
panic ("mtrr: timed out waiting for other CPUs\n");
}
mtrr_hook = NULL;
/* All other CPUs should be waiting for the barrier, with their caches
already flushed and disabled. Prepare for function completion
notification */
atomic_set (&undone_count, smp_num_cpus - 1);
/* Flush and disable the local CPU's cache and release the barier, which
should cause the other CPUs to execute the function. Also execute it
locally if required */
set_mtrr_prepare (&ctxt);
wait_barrier_execute = FALSE;
if (local) (*handler) (&ctxt, info);
/* Now wait for other CPUs to complete the function */
while (atomic_read (&undone_count) > 0) barrier ();
/* Now all CPUs should have finished the function. Release the barrier to
allow them to re-enable their caches and return from their interrupt,
then enable the local cache and return */
wait_barrier_cache_enable = FALSE;
set_mtrr_done (&ctxt);
handler_func = NULL;
handler_info = NULL;
} /* End Function do_all_cpus */
struct set_mtrr_data
{
unsigned long smp_base;
unsigned long smp_size;
unsigned int smp_reg;
mtrr_type smp_type;
};
static void set_mtrr_handler (struct set_mtrr_context *ctxt, void *info)
{
struct set_mtrr_data *data = info;
set_mtrr_up (data->smp_reg, data->smp_base, data->smp_size, data->smp_type,
FALSE);
} /* End Function set_mtrr_handler */
/* A warning that is common to the module and non-module cases. */
/* Some BIOS's are fucked and don't set all MTRRs the same! */
#ifdef MODULE
static void mtrr_state_warn (unsigned long mask)
#else
static void mtrr_state_warn (unsigned long mask)
#endif
{
if (!mask) return;
if (mask & MTRR_CHANGE_MASK_FIXED)
printk ("mtrr: your CPUs had inconsistent fixed MTRR settings\n");
if (mask & MTRR_CHANGE_MASK_VARIABLE)
printk ("mtrr: your CPUs had inconsistent variable MTRR settings\n");
if (mask & MTRR_CHANGE_MASK_DEFTYPE)
printk ("mtrr: your CPUs had inconsistent MTRRdefType settings\n");
printk ("mtrr: probably your BIOS does not setup all CPUs\n");
} /* End Function mtrr_state_warn */
#ifdef MODULE
/* As a module, copy the MTRR state using an IPI handler. */
static volatile unsigned long smp_changes_mask = 0;
static void copy_mtrr_state_handler (struct set_mtrr_context *ctxt, void *info)
{
unsigned long mask, count;
struct mtrr_state *smp_mtrr_state = info;
mask = set_mtrr_state (smp_mtrr_state, ctxt);
/* Use the atomic bitops to update the global mask */
for (count = 0; count < sizeof mask * 8; ++count)
{
if (mask & 0x01) set_bit (count, &smp_changes_mask);
mask >>= 1;
}
} /* End Function copy_mtrr_state_handler */
/* Copies the entire MTRR state of this CPU to all the others. */
static void copy_mtrr_state (void)
{
struct mtrr_state ms;
get_mtrr_state (&ms);
do_all_cpus (copy_mtrr_state_handler, &ms, FALSE);
finalize_mtrr_state (&ms);
mtrr_state_warn (smp_changes_mask);
} /* End Function copy_mtrr_state */
#endif /* MODULE */
#endif /* __SMP__ */
static char *attrib_to_str (int x)
{
return (x <= 6) ? mtrr_strings[x] : "?";
} /* End Function attrib_to_str */
static void init_table (void)
{
int i, max;
max = get_num_var_ranges ();
if ( ( usage_table = kmalloc (max * sizeof *usage_table, GFP_KERNEL) )
== NULL )
{
printk ("mtrr: could not allocate\n");
return;
}
for (i = 0; i < max; i++) usage_table[i] = 1;
} /* End Function init_table */
int mtrr_add (unsigned long base, unsigned long size, unsigned int type,
char increment)
/* [SUMMARY] Add an MTRR entry.
<base> The starting (base) address of the region.
<size> The size (in bytes) of the region.
<type> The type of the new region.
<increment> If true and the region already exists, the usage count will be
incremented.
[RETURNS] The MTRR register on success, else a negative number indicating
the error code.
[NOTE] This routine uses a spinlock.
*/
{
int i, max;
mtrr_type ltype;
unsigned long lbase, lsize, last;
if (!usage_table) init_table();
if ( (base & 0xfff) || (size & 0xfff) )
{
printk ("mtrr: size and base must be multiples of 4kB\n");
printk ("mtrr: size: %lx base: %lx\n", size, base);
return -EINVAL;
}
if (base + size < 0x100000)
{
printk ("mtrr: cannot set region below 1 MByte (0x%lx,0x%lx)\n",
base, size);
return -EINVAL;
}
/* Check upper bits of base and last are equal and lower bits are 0 for
base and 1 for last */
last = base + size - 1;
for (lbase = base; !(lbase & 1) && (last & 1);
lbase = lbase >> 1, last = last >> 1);
if (lbase != last)
{
printk ("mtrr: base(0x%lx) is not aligned on a size(0x%lx) boundary\n",
base, size);
return -EINVAL;
}
if (type >= MTRR_NUM_TYPES)
{
printk ("mtrr: type: %u illegal\n", type);
return -EINVAL;
}
/* If the type is WC, check that this processor supports it */
if ( (type == MTRR_TYPE_WRCOMB) && !have_wrcomb () )
{
printk ("mtrr: your processor doesn't support write-combining\n");
return -ENOSYS;
}
increment = increment ? 1 : 0;
max = get_num_var_ranges ();
/* Search for existing MTRR */
for (i = 0; i < max; ++i)
{
get_mtrr (i, &lbase, &lsize, &ltype);
if (base >= lbase + lsize) continue;
if ( (base < lbase) && (base + size <= lbase) ) continue;
/* At this point we know there is some kind of overlap/enclosure */
if ( (base < lbase) || (base + size > lbase + lsize) )
{
printk ("mtrr: 0x%lx,0x%lx overlaps existing 0x%lx,0x%lx\n",
base, size, lbase, lsize);
return -EINVAL;
}
/* New region is enclosed by an existing region */
if (ltype != type)
{
if (type == MTRR_TYPE_UNCACHABLE) continue;
printk ( "mtrr: type mismatch for %lx,%lx old: %s new: %s\n",
base, size, attrib_to_str (ltype), attrib_to_str (type) );
return -EINVAL;
}
if (increment) ++usage_table[i];
return i;
}
/* Search for an empty MTRR */
for (i = 0; i < max; ++i)
{
get_mtrr (i, &lbase, &lsize, &ltype);
if (lsize > 0) continue;
set_mtrr (i, base, size, type);
usage_table[i] = 1;
return i;
}
printk ("mtrr: no more MTRRs available\n");
return -ENOSPC;
} /* End Function mtrr_add */
int mtrr_del (int reg, unsigned long base, unsigned long size)
/* [SUMMARY] Delete MTRR/decrement usage count.
<reg> The register. If this is less than 0 then <<base>> and <<size>> must
be supplied.
<base> The base address of the region. This is ignored if <<reg>> is >= 0.
<size> The size of the region. This is ignored if <<reg>> is >= 0.
[RETURNS] The register on success, else a negative number indicating
the error code.
[NOTE] This routine uses a spinlock.
*/
{
int i, max;
mtrr_type ltype;
unsigned long lbase, lsize;
if (!usage_table) init_table();
max = get_num_var_ranges ();
if (reg < 0)
{
/* Search for existing MTRR */
for (i = 0; i < max; ++i)
{
get_mtrr (i, &lbase, &lsize, &ltype);
if ( (lbase == base) && (lsize == size) )
{
reg = i;
break;
}
}
if (reg < 0)
{
printk ("mtrr: no MTRR for %lx,%lx found\n", base, size);
return -EINVAL;
}
}
if (reg >= max)
{
printk ("mtrr: register: %d too big\n", reg);
return -EINVAL;
}
get_mtrr (reg, &lbase, &lsize, &ltype);
if (lsize < 1)
{
printk ("mtrr: MTRR %d not used\n", reg);
return -EINVAL;
}
if (usage_table[reg] < 1)
{
printk ("mtrr: reg: %d has count=0\n", reg);
return -EINVAL;
}
if (--usage_table[reg] < 1) set_mtrr (reg, 0, 0, 0);
return reg;
} /* End Function mtrr_del */
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 0) */

255
LICENSE Normal file
View 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
View 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.

View File

@@ -21,8 +21,8 @@ DEBUG=1: Turn on debugging information, note this disables
FX_GLIDE_PIC=1: Enable PIC in shared libraries. FX_GLIDE_PIC=1: Enable PIC in shared libraries.
FX_GLIDE_CTRISETUP=1: Use C versions as opposed to ASM versions of triangle FX_GLIDE_CTRISETUP=1: Use C versions as opposed to ASM versions of triangle
setup code. setup code.
GL_AMD3D=1: Enable AMD 3DNow! optimizations. Note this is broken GL_AMD3D=1: Enable AMD 3DNow! optimizations. Note this is
on several platforms. currently broken on several platforms.
All glide source trees use a common set of libraries kept in the All glide source trees use a common set of libraries kept in the
swlibs branch. In order to build any glide library the swlibs branch swlibs branch. In order to build any glide library the swlibs branch

View File

@@ -21,6 +21,6 @@
# $Date$ # $Date$
# #
LDIRT = $(patsubst makefile%,,$(wildcard *)) LDIRT = $(patsubst CVS,,$(patsubst makefile%,,$(wildcard *)))
include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak

View File

@@ -28,7 +28,7 @@
/* This should be exported, but isn't yet */ /* This should be exported, but isn't yet */
#define SST1INIT_MAX_BOARDS 16 #define SST1INIT_MAX_BOARDS 16
int main (int argc[], char* argv[]) int main (int argc, char* argv[])
{ {
FxU32* sst[SST1INIT_MAX_BOARDS]; FxU32* sst[SST1INIT_MAX_BOARDS];
int num_sst; int num_sst;

View File

@@ -17,7 +17,7 @@
# #
# COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED # COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
!if "$(FX_GLIDE_HW)" == "SST96" !if "$(FX_GLIDE_HW)" == "sst96"
GLIDE_SRC_BASE = sst1 GLIDE_SRC_BASE = sst1
!else !else
GLIDE_SRC_BASE = $(FX_GLIDE_HW) GLIDE_SRC_BASE = $(FX_GLIDE_HW)

View File

@@ -17,7 +17,7 @@
# #
# COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED # COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
ifeq ($(FX_GLIDE_HW),SST96) ifeq ($(FX_GLIDE_HW),sst96)
GLIDE_SRC_BASE = sst1 GLIDE_SRC_BASE = sst1
else else
GLIDE_SRC_BASE = $(FX_GLIDE_HW) GLIDE_SRC_BASE = $(FX_GLIDE_HW)

View File

@@ -20,6 +20,7 @@
*/ */
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#ifndef __linux__ #ifndef __linux__
#include <windows.h> #include <windows.h>
@@ -106,10 +107,11 @@ MyDebugPrintf(FILE* outputFile, const char* fmtString, ...)
va_start(args, fmtString); va_start(args, fmtString);
{ {
char msgBuf[256]; //char msgBuf[256];
vsprintf(msgBuf, fmtString, args); vfprintf(stderr, fmtString, args);
OutputDebugString(msgBuf); //vsprintf(msgBuf, fmtString, args);
//OutputDebugString(msgBuf);
} }
va_end(args); va_end(args);
} }

View File

@@ -89,5 +89,5 @@ FX_EXPORT FxU32 FX_CSTYLE fxoemInitSetVideo(OemInitInfo *oem);
FX_EXPORT FxU32 FX_CSTYLE fxoemRestoreVideo(OemInitInfo *oem); FX_EXPORT FxU32 FX_CSTYLE fxoemRestoreVideo(OemInitInfo *oem);
FX_EXPORT FxU32 FX_CSTYLE fxoemControl(FxU32 mode); FX_EXPORT FxU32 FX_CSTYLE fxoemControl(FxU32 mode);
#endif __OEMINIT_H__ #endif /* __OEMINIT_H__ */

View 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)

View File

@@ -20,6 +20,7 @@
#include <sys/utsname.h> #include <sys/utsname.h>
#include <stdio.h> #include <stdio.h>
#include <string.h>
int _cpu_detect_asm() { int _cpu_detect_asm() {
struct utsname name; struct utsname name;

View 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

View File

@@ -19,6 +19,15 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.2.2.1 2005/01/22 14:52:01 koolsmoky
** enabled packed argb for cmd packet type 3
**
** Revision 1.2 2000/10/03 18:28:33 mercury
** 003-clean_up_cvg-000, cvg tree cleanup.
**
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
** Initial checkin into SourceForge.
**
** **
** 16 2/20/98 11:00a Peter ** 16 2/20/98 11:00a Peter
** removed glide3 from glid2 tree ** removed glide3 from glid2 tree
@@ -279,8 +288,8 @@ GR_ENTRY(guMPDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const Gr
FxU32 alphamode, alphamode_orig; FxU32 alphamode, alphamode_orig;
FxU32 fbzcolorpath, fbzcolorpath_orig; FxU32 fbzcolorpath, fbzcolorpath_orig;
FxU32 fbzmode, fbzmode_orig; FxU32 fbzmode, fbzmode_orig = 0;
FxU32 fogmode, fogmode_orig; FxU32 fogmode, fogmode_orig = 0;
alphamode = alphamode_orig = gc->state.fbi_config.alphaMode; alphamode = alphamode_orig = gc->state.fbi_config.alphaMode;
fbzcolorpath = fbzcolorpath_orig = gc->state.fbi_config.fbzColorPath; fbzcolorpath = fbzcolorpath_orig = gc->state.fbi_config.fbzColorPath;
@@ -399,8 +408,8 @@ GR_ENTRY(guMPDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const Gr
FxU32 alphamode, alphamode_orig; FxU32 alphamode, alphamode_orig;
FxU32 fbzcolorpath, fbzcolorpath_orig; FxU32 fbzcolorpath, fbzcolorpath_orig;
FxU32 fbzmode, fbzmode_orig; FxU32 fbzmode, fbzmode_orig = 0;
FxU32 fogmode, fogmode_orig; FxU32 fogmode, fogmode_orig = 0;
alphamode = alphamode_orig = gc->state.fbi_config.alphaMode; alphamode = alphamode_orig = gc->state.fbi_config.alphaMode;
fbzcolorpath = fbzcolorpath_orig = gc->state.fbi_config.fbzColorPath; fbzcolorpath = fbzcolorpath_orig = gc->state.fbi_config.fbzColorPath;

View File

@@ -19,6 +19,19 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 ** 40 6/23/98 5:38p Peter
** lfb hinting ** lfb hinting
@@ -212,26 +225,26 @@ _grSwizzleColor(GrColor_t *color)
break; break;
case GR_COLORFORMAT_ABGR: case GR_COLORFORMAT_ABGR:
red = *color & 0x00ff; red = (*color & 0x000000ff) << 16; /* 00RR0000 */
blue = (*color >> 16) & 0xff; blue = (*color & 0x00ff0000) >> 16; /* 000000BB */
*color &= 0xff00ff00; *color &= 0xff00ff00; /* AA00GG00 */
*color |= ((red << 16) | blue); *color |= (red | blue); /* AARRGGBB */
break; break;
case GR_COLORFORMAT_RGBA: case GR_COLORFORMAT_RGBA:
blue = (*color & 0x0000ff00) >> 8; blue = (*color & 0x0000ff00) >> 8; /* 000000BB */
green = (*color & 0x00ff0000) >> 16; green = (*color & 0x00ff0000) >> 8; /* 0000GG00 */
red = (*color & 0xff000000) >> 24; red = (*color & 0xff000000) >> 8; /* 00RR0000 */
alpha = (*color & 0x000000ff); alpha = (*color & 0x000000ff) << 24; /* AA000000 */
*color = (alpha << 24) | (red << 16) | (green << 8) | blue; *color = alpha | red | green | blue; /* AARRGGBB */
break; break;
case GR_COLORFORMAT_BGRA: case GR_COLORFORMAT_BGRA:
blue = (*color & 0xff000000) >> 24; blue = (*color & 0xff000000) >> 24; /* 000000BB */
green = (*color & 0x00ff0000) >> 16; green = (*color & 0x00ff0000) >> 8; /* 0000GG00 */
red = (*color & 0x0000ff00) >> 8; red = (*color & 0x0000ff00) << 8; /* 00RR0000 */
alpha = (*color & 0x000000ff); alpha = (*color & 0x000000ff) << 24; /* AA000000 */
*color = (alpha << 24) | (red << 16) | (green << 8) | blue; *color = alpha | red | green | blue; /* AARRGGBB */
break; break;
default: default:

View File

@@ -19,6 +19,9 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
** Initial checkin into SourceForge.
**
** **
** 22 4/21/98 10:05a Peter ** 22 4/21/98 10:05a Peter
** grSstSelect cleanup (Thanks John/Rufus) ** grSstSelect cleanup (Thanks John/Rufus)
@@ -109,7 +112,7 @@ GR_DIENTRY(grSstQueryBoards, FxBool, ( GrHwConfiguration *hwc ))
GDBG_INIT(); GDBG_INIT();
GDBG_INFO(80,"grSstQueryBoards(0x%x)\n",hwc); GDBG_INFO(80,"grSstQueryBoards(0x%x)\n",hwc);
#if GLIDE_INIT_HAL #if 1 /*GLIDE_INIT_HAL*/
hwc->num_sst = (_grSstDetectResources() hwc->num_sst = (_grSstDetectResources()
? _GlideRoot.hwConfig.num_sst ? _GlideRoot.hwConfig.num_sst
: 0); : 0);

View File

@@ -19,6 +19,9 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.1.1.1 1999/12/07 21:49:08 joseph
** Initial checkin into SourceForge.
**
** **
** 22 3/14/98 1:07p Peter ** 22 3/14/98 1:07p Peter
** mac port happiness ** mac port happiness
@@ -512,7 +515,7 @@ const FxU32 kFifoCheckMask = 0xFFFF;
FxU32 gFifoCheckCount = 0; FxU32 gFifoCheckCount = 0;
#endif #endif
void GR_CDECL void FX_CALL
_FifoMakeRoom(const FxI32 blockSize, const char* fName, const int fLine) _FifoMakeRoom(const FxI32 blockSize, const char* fName, const int fLine)
{ {
#define FN_NAME "_FifoMakeRoom" #define FN_NAME "_FifoMakeRoom"

View 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

View File

@@ -37,7 +37,6 @@
* macros for creating assembler offset files * macros for creating assembler offset files
*----------------------------------------------------------------------*/ *----------------------------------------------------------------------*/
#ifndef __linux__
#define NEWLINE printf("\n") #define NEWLINE printf("\n")
#define COMMENT printf(";----------------------------------------------------------------------\n") #define COMMENT printf(";----------------------------------------------------------------------\n")
@@ -46,44 +45,16 @@
COMMENT; NEWLINE COMMENT; NEWLINE
#define OFFSET(p,o,pname) if (hex) \ #define OFFSET(p,o,pname) if (hex) \
printf("%s\t= %08xh\n",pname,((int)&p.o)-(int)&p); \ printf("%s\tequ %08xh\n",pname,((int)&p.o)-(int)&p); \
else printf("%s\t= %10d\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) \ #define OFFSET2(p,o,pname) if (hex) \
printf("%s\t= %08xh\n",pname,((int)&o)-(int)&p); \ printf("%s\tequ %08xh\n",pname,((int)&o)-(int)&p); \
else printf("%s\t= %10d\n",pname,((int)&o)-(int)&p) else printf("%s\tequ %10d\n",pname,((int)&o)-(int)&p)
#define SIZEOF(p,pname) if (hex) \ #define SIZEOF(p,pname) if (hex) \
printf("SIZEOF_%s\t= %08xh\n",pname,sizeof(p)); \ printf("SIZEOF_%s\tequ %08lxh\n",pname,sizeof(p)); \
else printf("SIZEOF_%s\t= %10d\n",pname,sizeof(p)) else printf("SIZEOF_%s\tequ %10ld\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
int int
main (int argc, char **argv) main (int argc, char **argv)
@@ -106,17 +77,17 @@ main (int argc, char **argv)
printf("\n"); printf("\n");
#if GLIDE_DISPATCH_SETUP #if GLIDE_DISPATCH_SETUP
printf("#define kCurGCOffset 0x%XUL\n", printf("#define kCurGCOffset 0x%lXUL\n",
offsetof(struct _GlideRoot_s, curGC)); offsetof(struct _GlideRoot_s, curGC));
printf("#define kTriProcOffset 0x%XUL\n", printf("#define kTriProcOffset 0x%lXUL\n",
offsetof(struct GrGC_s, cmdTransportInfo.triSetupProc)); offsetof(struct GrGC_s, curArchProcs.triSetupProc));
printf("#define kTriProcOffsetClean %d\n", printf("#define kTriProcOffsetClean %d\n",
offsetof(struct GrGC_s, cmdTransportInfo.triSetupProc)); offsetof(struct GrGC_s, curArchProcs.triSetupProc));
#endif /* GLIDE_DISPATCH_SETUP */ #endif /* GLIDE_DISPATCH_SETUP */
printf("/* The # of 2-byte entries in the hw fog table */\n"); 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); sizeof(dummyRegs.fogTable) >> 1);
printf("\n"); printf("\n");
@@ -135,6 +106,7 @@ main (int argc, char **argv)
OFFSET (gc,base_ptr,"base_ptr\t"); OFFSET (gc,base_ptr,"base_ptr\t");
OFFSET (gc,reg_ptr,"reg_ptr\t\t"); OFFSET (gc,reg_ptr,"reg_ptr\t\t");
OFFSET (gc,lfb_ptr,"lfb_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,state.cull_mode,"cull_mode\t");
OFFSET (gc, regDataList,"regDataList\t"); OFFSET (gc, regDataList,"regDataList\t");
OFFSET (gc, tsuDataList,"tsuDataList\t"); OFFSET (gc, tsuDataList,"tsuDataList\t");
@@ -157,6 +129,10 @@ main (int argc, char **argv)
OFFSET (gc, cmdTransportInfo.fifoLfbP, "fifoLfbP"); OFFSET (gc, cmdTransportInfo.fifoLfbP, "fifoLfbP");
OFFSET (gc, cmdTransportInfo.lfbLockCount, "lfbLockCount"); 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.GCs[0].state,"GrState\t");
SIZEOF (gr.hwConfig,"GrHwConfiguration"); SIZEOF (gr.hwConfig,"GrHwConfiguration");
SIZEOF (gr.GCs[0],"GC\t"); SIZEOF (gr.GCs[0],"GC\t");

View File

@@ -19,6 +19,23 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.2.2.3 2005/01/22 14:52:01 koolsmoky
** enabled packed argb for cmd packet type 3
**
** Revision 1.2.2.2 2004/12/23 20:45:56 koolsmoky
** converted to nasm syntax
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
**
** Revision 1.2.2.1 2004/12/12 15:17:18 koolsmoky
** support new cpuid
**
** Revision 1.2 2003/06/28 19:31:06 guillemj
** Fix compilation warnings.
** Removed some trailing spaces.
**
** Revision 1.1.1.1 1999/12/07 21:49:09 joseph
** Initial checkin into SourceForge.
**
** **
** 206 6/06/98 12:06p Peter ** 206 6/06/98 12:06p Peter
** gmt's trilinear hell bug ** gmt's trilinear hell bug
@@ -272,6 +289,7 @@
#include <3dfx.h> #include <3dfx.h>
#include <glidesys.h> #include <glidesys.h>
#include <gdebug.h> #include <gdebug.h>
#include <cpuid.h>
#if (GLIDE_PLATFORM & GLIDE_HW_H3) #if (GLIDE_PLATFORM & GLIDE_HW_H3)
#include <h3.h> #include <h3.h>
@@ -418,7 +436,7 @@ do { \
** **
*/ */
struct _GrState_s struct _GrState_s
{ {
GrCullMode_t /* these go in front for cache hits */ GrCullMode_t /* these go in front for cache hits */
cull_mode; /* cull neg, cull pos, don't cull */ cull_mode; /* cull neg, cull pos, don't cull */
@@ -500,6 +518,102 @@ struct _GrState_s
a, r, g, b; /* Constant color values for Delta0 mode */ 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 typedef struct GrGC_s
{ {
FxU32 FxU32
@@ -524,6 +638,15 @@ typedef struct GrGC_s
GrState GrState
state; /* state of Glide/SST */ 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 { struct cmdTransportInfo {
FxU32 triPacketHdr; /* Pre-computed packet header for FxU32 triPacketHdr; /* Pre-computed packet header for
* independent triangles. * independent triangles.
@@ -565,10 +688,6 @@ typedef struct GrGC_s
FxBool fifoLfbP; /* Do we expect lfb writes to go through the fifo? */ FxBool fifoLfbP; /* Do we expect lfb writes to go through the fifo? */
FxBool lfbLockCount; /* Have we done an lfb lock? Count of the locks. */ 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 #if GLIDE_USE_SHADOW_FIFO
FxU32* fifoShadowBase; /* Buffer that shadows the hw fifo for debugging */ FxU32* fifoShadowBase; /* Buffer that shadows the hw fifo for debugging */
@@ -716,7 +835,7 @@ typedef struct GrGC_s
struct _GlideRoot_s { struct _GlideRoot_s {
int p6Fencer; /* xchg to here to keep this in cache!!! */ int p6Fencer; /* xchg to here to keep this in cache!!! */
int current_sst; int current_sst;
FxU32 CPUType; _p_info CPUType; /* CPUID */
GrGC *curGC; /* point to the current GC */ GrGC *curGC; /* point to the current GC */
FxU32 packerFixAddress; /* address to write packer fix to */ FxU32 packerFixAddress; /* address to write packer fix to */
FxBool windowsInit; /* Is the Windows part of glide initialized? */ FxBool windowsInit; /* Is the Windows part of glide initialized? */
@@ -812,6 +931,17 @@ struct _GlideRoot_s {
* sst's and actual boards. * sst's and actual boards.
*/ */
GrGC GCs[MAX_NUM_SST]; /* one GC per board */ 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; extern struct _GlideRoot_s GR_CDECL _GlideRoot;
@@ -879,37 +1009,13 @@ extern GrGCFuncs _curGCFuncs;
void _grMipMapInit(void); void _grMipMapInit(void);
#if GLIDE_DISPATCH_SETUP #if GLIDE_DISPATCH_SETUP
FxI32 FX_CSTYLE #define TRISETUP_NORGB (*_GlideRoot.deviceArchProcs.curTriProcs + 0)
_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)
#if GLIDE_PACKED_RGB #if GLIDE_PACKED_RGB
FxI32 FX_CSTYLE #define TRISETUP_RGB (*_GlideRoot.deviceArchProcs.curTriProcs + 1)
_trisetup_cull_rgb(const GrVertex *va, const GrVertex *vb, const GrVertex *vc); #define TRISETUP_ARGB (*_GlideRoot.deviceArchProcs.curTriProcs + 2)
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)
#endif /* !GLIDE_PACKED_RGB */ #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 */ #else /* !GLIDE_DISPATCH_SETUP */
FxI32 FX_CSTYLE FxI32 FX_CSTYLE
_trisetup_asm(const GrVertex *va, const GrVertex *vb, const GrVertex *vc); _trisetup_asm(const GrVertex *va, const GrVertex *vb, const GrVertex *vc);
@@ -1154,7 +1260,7 @@ ASSERT_FAULT_IMMED((FxU32)gc->cmdTransportInfo.fifoRoom < gc->cmdTransportInfo.f
ASSERT_FAULT_IMMED((FxU32)gc->cmdTransportInfo.fifoPtr < (FxU32)gc->cmdTransportInfo.fifoEnd) ASSERT_FAULT_IMMED((FxU32)gc->cmdTransportInfo.fifoPtr < (FxU32)gc->cmdTransportInfo.fifoEnd)
#endif /* !FIFO_ASSERT_FULL */ #endif /* !FIFO_ASSERT_FULL */
void GR_CDECL extern void FX_CALL
_FifoMakeRoom(const FxI32 blockSize, const char* fName, const int fLine); _FifoMakeRoom(const FxI32 blockSize, const char* fName, const int fLine);
#define GR_CHECK_FOR_ROOM(__n, __p) \ #define GR_CHECK_FOR_ROOM(__n, __p) \
@@ -1904,11 +2010,21 @@ _grCVGFifoDump_Linear(const FxU32* const linearPacketAddr);
* probably do something silly like wrap around zero. * probably do something silly like wrap around zero.
*/ */
#if GLIDE_PACKED_RGB #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))), \ ((_GlideRoot.pool.ftemp1 = (float)((float)(__fpVal) + (float)(__fpBias))), \
GR_ASSERT((__fpVal) >= 0.0f), \ GR_ASSERT((__fpVal) >= 0.0f), \
GR_ASSERT((__fpVal) < 256.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) \ #define RGBA_COMP_CLAMP(__fpVal, __compToken) \
RGBA_COMP(__fpVal, kPackBias##__compToken, kPackShift##__compToken, kPackMask##__compToken) RGBA_COMP(__fpVal, kPackBias##__compToken, kPackShift##__compToken, kPackMask##__compToken)
@@ -2078,7 +2194,7 @@ enum {
}; };
#if (GLIDE_PLATFORM & GLIDE_HW_CVG) #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) #elif (GLIDE_PLATFORM & GLIDE_HW_H3)
#define TEX_ROW_ADDR_INCR(__t, __lod) ((__t) << 7) #define TEX_ROW_ADDR_INCR(__t, __lod) ((__t) << 7)
#else #else
@@ -2222,7 +2338,7 @@ do { \
#define REG_GROUP_SETF_CLAMP(__regBase, __regAddr, __val) \ #define REG_GROUP_SETF_CLAMP(__regBase, __regAddr, __val) \
do { \ do { \
const FxU32 fpClampVal = FP_FLOAT_CLAMP(__val); \ const FxU32 fpClampVal = FP_FLOAT_CLAMP(__val); \
REG_GROUP_ASSERT(__regAddr, fpClampVal, FXTRUE); \ REG_GROUP_ASSERT(__regAddr, fpClampVal, FXTRUE); \
SET(((FxU32*)(__regBase))[offsetof(SstRegs, __regAddr) >> 2], fpClampVal); \ SET(((FxU32*)(__regBase))[offsetof(SstRegs, __regAddr) >> 2], fpClampVal); \
GR_INC_SIZE(sizeof(FxU32)); \ GR_INC_SIZE(sizeof(FxU32)); \
} while(0) } while(0)
@@ -2372,8 +2488,8 @@ _grErrorCallback(const char* const procName,
va_list args); va_list args);
#endif #endif
extern FxU32 GR_CDECL /*extern FxU32 GR_CDECL
_cpu_detect_asm(void); _cpu_detect_asm(void);*/
extern void GR_CDECL extern void GR_CDECL
single_precision_asm(void); single_precision_asm(void);

View 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_ */

View File

@@ -19,6 +19,15 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 ** 17 2/20/98 11:00a Peter
** removed glide3 from glid2 tree ** removed glide3 from glid2 tree
@@ -55,7 +64,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <ctype.h>
#include <3dfx.h> #include <3dfx.h>
#define FX_DLL_DEFINITION #define FX_DLL_DEFINITION
@@ -297,18 +306,13 @@ GR_DIENTRY(gu3dfGetInfo, FxBool,
/* /*
** determine the color format of the input image ** determine the color format of the input image
*/ */
#ifdef __GNUC__
/* This function is not found in libgcc.a */
{ {
char* tempStr = (char*)color_format; char *tempStr = (char*)color_format;
while(*tempStr != '\0') *tempStr++ = toupper(*tempStr); while (*tempStr != '\0') {
*tempStr = toupper(*tempStr);
tempStr++;
}
} }
#else
{
extern char* strupr(char*);
strupr(color_format);
}
#endif /* __GNUC__ */
i = 0; i = 0;
format_found = FXFALSE; format_found = FXFALSE;

View File

@@ -19,6 +19,12 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 ** 64 5/18/98 12:15p Peter
** crybaby check for alpha enable ** crybaby check for alpha enable
@@ -246,13 +252,12 @@ GR_ENTRY(grAADrawPoint, void, (const GrVertex *e))
dataList++; dataList++;
} }
packedColor |= RGBA_COMP_CLAMP(FARRAY(fp, (GR_VERTEX_A_OFFSET << 2)), A); packedColor |= RGBA_COMP_CLAMP(FARRAY(fp, (GR_VERTEX_A_OFFSET << 2)), A);
dataList++;
TRI_SET(packedColor); TRI_SET(packedColor);
} else {
TRI_SETF(FARRAY(fp, (GR_VERTEX_A_OFFSET << 2)));
} }
dataList++;
#endif /* GLIDE_PACKED_RGB */ #endif /* GLIDE_PACKED_RGB */
#if GLIDE_FP_CLAMP_TEX #if GLIDE_FP_CLAMP_TEX
@@ -300,12 +305,12 @@ GR_ENTRY(grAADrawPoint, void, (const GrVertex *e))
dataList++; dataList++;
} }
/* Alpha set to 0.0 */
TRI_SET(packedColor); TRI_SET(packedColor);
} else { } else {
TRI_SETF(0.0f); #endif /* !GLIDE_PACKED_RGB */
}
#else /* !GLIDE_PACKED_RGB */
/* Parameters up to alpha. /* Parameters up to alpha.
* *
* NB: It is up to the user to correctly set this up * 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 */ /* Send constant Alpha == 0.0f */
TRI_SETF(0.0f); TRI_SETF(0.0f);
#if GLIDE_PACKED_RGB
}
#endif /* !GLIDE_PACKED_RGB */ #endif /* !GLIDE_PACKED_RGB */
/* Skip the actual alpha value in the data list */ /* Skip the actual alpha value in the data list */
@@ -426,13 +433,12 @@ grAADrawStrip(const FxU32 cullMode, const float* const vectorList[], const FxU32
dataList++; dataList++;
} }
packedColor |= RGBA_COMP_CLAMP(FARRAY(vector, (GR_VERTEX_A_OFFSET << 2)), A); packedColor |= RGBA_COMP_CLAMP(FARRAY(vector, (GR_VERTEX_A_OFFSET << 2)), A);
dataList++;
TRI_SET(packedColor); TRI_SET(packedColor);
} else {
TRI_SETF(FARRAY(vector, (GR_VERTEX_A_OFFSET << 2)));
} }
dataList++;
#endif /* GLIDE_PACKED_RGB */ #endif /* GLIDE_PACKED_RGB */
#if GLIDE_FP_CLAMP_TEX #if GLIDE_FP_CLAMP_TEX
@@ -663,6 +669,27 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
v2->a = 0.0f; v2->a = 0.0f;
datalist = gc->tsuDataList; 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 ) { while( *datalist != 0 ) {
TRI_SETF(FARRAY(v2, *datalist)); TRI_SETF(FARRAY(v2, *datalist));
datalist++; datalist++;
@@ -680,6 +707,27 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
v1->a = 0.0f; v1->a = 0.0f;
datalist = gc->tsuDataList; 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 ) { while( *datalist != 0 ) {
TRI_SETF(FARRAY(v1, *datalist)); TRI_SETF(FARRAY(v1, *datalist));
datalist++; datalist++;
@@ -692,6 +740,25 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
TRI_SETF( v2->x ); TRI_SETF( v2->x );
TRI_SETF( v2->y ); 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 ) { while( *datalist != 0 ) {
TRI_SETF(FARRAY(v2, *datalist)); 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->x );
TRI_SETF( v1->y ); 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 ) { while( *datalist != 0 ) {
TRI_SETF(FARRAY(v1, *datalist)); TRI_SETF(FARRAY(v1, *datalist));
@@ -719,6 +805,27 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
v2->a = 0.0f; v2->a = 0.0f;
datalist = gc->tsuDataList; 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 ) { while( *datalist != 0 ) {
TRI_SETF(FARRAY(v2, *datalist)); TRI_SETF(FARRAY(v2, *datalist));
datalist++; datalist++;
@@ -736,6 +843,26 @@ GR_ENTRY(grAADrawLine, void, (const GrVertex *v1, const GrVertex *v2))
v1->a = 0.0f; v1->a = 0.0f;
datalist = gc->tsuDataList; 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 ) { while( *datalist != 0 ) {
TRI_SETF(FARRAY(v1, *datalist)); TRI_SETF(FARRAY(v1, *datalist));

View File

@@ -17,8 +17,23 @@
** **
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED ** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** $Header$ ** Revision 1.4.2.4 2005/04/25 23:53:59 koolsmoky
** $Log$ ** 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 ** Revision 1.3 2000/01/17 22:18:41 joseph
** A nicer, cleaner fix than the evil hack. ** A nicer, cleaner fix than the evil hack.
** **
@@ -635,7 +650,10 @@ all_done: /* come here on degenerate lines */
/*--------------------------------------------------------------------------- /*---------------------------------------------------------------------------
** grDrawTriangle ** 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)) GR_ENTRY(grDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const GrVertex *c))
{ {
#define FN_NAME grDrawTriangle #define FN_NAME grDrawTriangle
@@ -677,70 +695,22 @@ GR_ENTRY(grDrawTriangle, void, (const GrVertex *a, const GrVertex *b, const GrVe
all_done: all_done:
GR_END(); GR_END();
#else
#if defined(__MSC__)
{
extern struct _GlideRoot_s _GlideRoot;
_asm { #elif defined(_MSC_VER)
mov eax, [_GlideRoot + kCurGCOffset]; {
mov eax, [eax + kTriProcOffset]; __asm {
mov edx, [_GlideRoot + kCurGCOffset];
mov eax, [edx + kTriProcOffset];
jmp eax; jmp eax;
} }
} }
#endif
#if defined( __linux__ )
/* Here's the basic strategy for this dispatch code: #else
* We jump to _GlideRoot.curGC->archDispatchProcs.triSetupProc #error "Write triangle proc dispatch for this compiler"
* 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
#endif #endif
#undef FN_NAME #undef FN_NAME
} /* grDrawTriangle */ } /* grDrawTriangle */
#endif /* HAVE_XDRAWTRI_ASM */
/*--------------------------------------------------------------------------- /*---------------------------------------------------------------------------
** grDrawPlanarPolygon ** grDrawPlanarPolygon
@@ -885,25 +855,23 @@ __doPolyVertexSend:
const int* dataList = gc->tsuDataList; const int* dataList = gc->tsuDataList;
#if GLIDE_PACKED_RGB #if GLIDE_PACKED_RGB
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0)
{ {
FxBool doColorP = FXFALSE;
FxU32 packedColor = 0x00; FxU32 packedColor = 0x00;
if (*dataList == (GR_VERTEX_R_OFFSET << 2)) { if (*dataList == (GR_VERTEX_R_OFFSET << 2)) {
packedColor = (RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_B_OFFSET << 2)), B) | 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_G_OFFSET << 2)), G) |
RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_R_OFFSET << 2)), R)); RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_R_OFFSET << 2)), R));
doColorP = FXTRUE;
dataList++; dataList++;
} }
if (*dataList == (GR_VERTEX_A_OFFSET << 2)) { if (*dataList == (GR_VERTEX_A_OFFSET << 2)) {
packedColor |= RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_A_OFFSET << 2)), A); packedColor |= RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_A_OFFSET << 2)), A);
doColorP = FXTRUE;
dataList++; dataList++;
} }
if (doColorP) TRI_SET(packedColor); TRI_SET(packedColor);
} }
#endif /* GLIDE_PACKED_RGB */ #endif /* GLIDE_PACKED_RGB */
@@ -1007,37 +975,23 @@ __doPolyVertexSend:
const int* dataList = gc->tsuDataList; const int* dataList = gc->tsuDataList;
#if GLIDE_PACKED_RGB #if GLIDE_PACKED_RGB
/* dpc - 10 feb 1998 - if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0)
* 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))
{ {
FxBool doColorP = FXFALSE;
FxU32 packedColor = 0x00; FxU32 packedColor = 0x00;
if (*dataList == (GR_VERTEX_R_OFFSET << 2)) { if (*dataList == (GR_VERTEX_R_OFFSET << 2)) {
packedColor = (RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_B_OFFSET << 2)), B) | 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_G_OFFSET << 2)), G) |
RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_R_OFFSET << 2)), R)); RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_R_OFFSET << 2)), R));
doColorP = FXTRUE;
dataList++; dataList++;
} }
if (*dataList == (GR_VERTEX_A_OFFSET << 2)) { if (*dataList == (GR_VERTEX_A_OFFSET << 2)) {
packedColor |= RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_A_OFFSET << 2)), A); packedColor |= RGBA_COMP_CLAMP(FARRAY(vertex, (GR_VERTEX_A_OFFSET << 2)), A);
doColorP = FXTRUE;
dataList++; dataList++;
} }
if (doColorP) TRI_SET(packedColor); TRI_SET(packedColor);
} }
#endif /* GLIDE_PACKED_RGB */ #endif /* GLIDE_PACKED_RGB */

View File

@@ -20,6 +20,9 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
** Initial checkin into SourceForge.
**
** **
** 28 3/14/98 1:07p Peter ** 28 3/14/98 1:07p Peter
** mac port happiness ** mac port happiness
@@ -240,6 +243,7 @@ _grAssert(char *exp, char *fileName, int lineNo)
#if !GLIDE_INIT_HAL #if !GLIDE_INIT_HAL
if (gc->scanline_interleaved) { if (gc->scanline_interleaved) {
SstRegs* slaveHw = (SstRegs*)gc->slave_ptr; SstRegs* slaveHw = (SstRegs*)gc->slave_ptr;
slaveHw = slaveHw; // FIXME: Below might not exist. *sigh*
GDBG_INFO_MORE(gc->myLevel, "\tsli: 0x%X : (0x%X : 0x%X : 0x%X)\n", GDBG_INFO_MORE(gc->myLevel, "\tsli: 0x%X : (0x%X : 0x%X : 0x%X)\n",
HW_FIFO_PTR(FXFALSE), HW_FIFO_PTR(FXFALSE),

View File

@@ -19,6 +19,29 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.2.2.5 2005/01/22 14:52:02 koolsmoky
** enabled packed argb for cmd packet type 3
**
** Revision 1.2.2.4 2004/12/27 20:46:37 koolsmoky
** added dll entry point to call grGlideShutdown when a process is detached
**
** Revision 1.2.2.3 2004/12/23 21:03:14 koolsmoky
** swapinterval
**
** Revision 1.2.2.2 2004/12/23 20:45:56 koolsmoky
** converted to nasm syntax
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
**
** Revision 1.2.2.1 2004/12/12 15:24:40 koolsmoky
** grDitherMode(): force 2x2 dithering for 4x1 dither
** grBufferSwap(): enable vsync and set swapbufferinterval to 0 for tripple buffering.
**
** Revision 1.2 2000/10/03 18:28:33 mercury
** 003-clean_up_cvg-000, cvg tree cleanup.
**
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
** Initial checkin into SourceForge.
**
** **
** 168 7/02/98 6:59p Peter ** 168 7/02/98 6:59p Peter
** Fixed merge problem from previous checkin ** Fixed merge problem from previous checkin
@@ -510,7 +533,7 @@ GR_ENTRY(grBufferClear, void, (GrColor_t color, GrAlpha_t alpha, FxU16 depth))
{ {
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1); GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
GR_SET(BROADCAST_ID, hw, bltSize, GR_SET(BROADCAST_ID, hw, bltSize,
(((((tileHi - tileLow) * gc->hwDep.cvgDep.xTilePages) - 1) << 16) | (0x1000 >> 3) - 1)); ((((((tileHi - tileLow) * gc->hwDep.cvgDep.xTilePages) - 1) << 16) | (0x1000 >> 3)) - 1));
GR_CHECK_SIZE(); GR_CHECK_SIZE();
} }
@@ -778,6 +801,12 @@ GR_ENTRY(grBufferSwap, void, (int swapInterval))
/* if the interval is non-zero turn on VSYNC waiting */ /* if the interval is non-zero turn on VSYNC waiting */
vSync = (swapInterval > 0); 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--; if (swapInterval > 0) swapInterval--;
@@ -1495,21 +1524,24 @@ GR_STATE_ENTRY(grDitherMode, void, (GrDitherMode_t mode))
GDBG_INFO_MORE(gc->myLevel, "(%d)\n", mode); GDBG_INFO_MORE(gc->myLevel, "(%d)\n", mode);
fbzMode = gc->state.fbi_config.fbzMode; fbzMode = gc->state.fbi_config.fbzMode;
if (_GlideRoot.environment.disableDitherSub == FXTRUE) fbzMode &= ~(SST_ENDITHER | SST_DITHER2x2 | SST_ENDITHERSUBTRACT);
fbzMode &= ~(SST_ENDITHER | SST_DITHER2x2);
else
fbzMode &= ~(SST_ENDITHER | SST_DITHER2x2 | SST_ENDITHERSUBTRACT);
switch (mode) { switch (mode) {
case GR_DITHER_DISABLE: case GR_DITHER_DISABLE:
break; /* alpha dither subtract should be disabled */
case GR_DITHER_2x2:
fbzMode |= (SST_ENDITHER | SST_DITHER2x2);
break; break;
case GR_DITHER_2x2:
case GR_DITHER_4x4: case GR_DITHER_4x4:
/* force 4x4 dither with alpha dither subtraction */
fbzMode |= (SST_ENDITHER | SST_ENDITHERSUBTRACT); 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; break;
} }
@@ -1701,9 +1733,9 @@ GR_ENTRY(grGlideShutdown, void, (void))
*/ */
for(i = 0; i < _GlideRoot.hwConfig.num_sst; i++) { for(i = 0; i < _GlideRoot.hwConfig.num_sst; i++) {
if (_GlideRoot.GCs[i].hwInitP) { if (_GlideRoot.GCs[i].hwInitP) {
if (_GlideRoot.CPUType >= 6) { /*if (_GlideRoot.CPUType.family >= 6) {*/
sst1InitCaching(_GlideRoot.GCs[i].base_ptr, FXFALSE); sst1InitCaching(_GlideRoot.GCs[i].base_ptr, FXFALSE);
} /*}*/
sst1InitShutdown(_GlideRoot.GCs[i].base_ptr); sst1InitShutdown(_GlideRoot.GCs[i].base_ptr);
_GlideRoot.GCs[i].hwInitP = FXFALSE; _GlideRoot.GCs[i].hwInitP = FXFALSE;
@@ -1715,6 +1747,8 @@ GR_ENTRY(grGlideShutdown, void, (void))
gc->grSstRez = GR_RESOLUTION_NONE; gc->grSstRez = GR_RESOLUTION_NONE;
gc->grSstRefresh = GR_REFRESH_NONE; gc->grSstRefresh = GR_REFRESH_NONE;
} }
_GlideRoot.initialized = FXFALSE;
} /* grGlideShutdown */ } /* grGlideShutdown */
@@ -2112,11 +2146,11 @@ _grUpdateTriPacketHdr(FxU32 paramMask,
? kSetupCullPositive ? kSetupCullPositive
: kSetupCullNegative); : kSetupCullNegative);
#if GLIDE_DISPATCH_SETUP
#define COLOR_COMP_ARGB ((SST_SETUP_RGB | SST_SETUP_A) << SSTCP_PKT3_PMASK_SHIFT) #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_RGB (SST_SETUP_RGB << SSTCP_PKT3_PMASK_SHIFT)
#define COLOR_COMP_MASK COLOR_COMP_ARGB #define COLOR_COMP_MASK COLOR_COMP_ARGB
#if GLIDE_DISPATCH_SETUP
/* Setup custom triangle/strip procs. /* Setup custom triangle/strip procs.
* *
* NB: Currently this selection is based entirely on if * NB: Currently this selection is based entirely on if
@@ -2124,30 +2158,51 @@ _grUpdateTriPacketHdr(FxU32 paramMask,
* select on cpu type as well to determine if we should * select on cpu type as well to determine if we should
* do sw culling or not. * 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) { #if GLIDE_PACKED_RGB
case COLOR_COMP_ARGB: if ((paramMask & SSTCP_PKT3_PACKEDCOLOR) == SSTCP_PKT3_PACKEDCOLOR) {
gc->cmdTransportInfo.triSetupProc = TRISETUP_ARGB(cullMode); const FxU32 colorComp = paramMask & COLOR_COMP_MASK;
break;
case COLOR_COMP_RGB: switch(colorComp) {
gc->cmdTransportInfo.triSetupProc = TRISETUP_RGB(cullMode); case COLOR_COMP_ARGB:
break; curTriProcVector = TRISETUP_ARGB;
break;
/* If no rgb data then it is not worthwhile to pack case COLOR_COMP_RGB:
* just alpha so just mask off the packed color bit curTriProcVector = TRISETUP_RGB;
* and just use the looping proc. break;
*/
default: /* If no rgb data then it is not worthwhile to pack
gc->cmdTransportInfo.triSetupProc = TRISETUP_NORGB(cullMode); * just alpha so just mask off the packed color bit
paramMask &= ~SSTCP_PKT3_PACKEDCOLOR; * and just use the looping proc.
break; */
default:
curTriProcVector = TRISETUP_NORGB;
paramMask &= ~SSTCP_PKT3_PACKEDCOLOR;
break;
}
} }
} else { #endif
gc->cmdTransportInfo.triSetupProc = TRISETUP_NORGB(cullMode);
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 */ #endif /* GLIDE_DISPATCH_SETUP */
gc->cmdTransportInfo.paramMask = paramMask; gc->cmdTransportInfo.paramMask = paramMask;

View File

@@ -19,6 +19,9 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.1.1.1 1999/12/07 21:49:10 joseph
** Initial checkin into SourceForge.
**
** **
** 75 6/23/98 5:38p Peter ** 75 6/23/98 5:38p Peter
** lfb hinting ** lfb hinting
@@ -206,7 +209,7 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
{ {
#define FN_NAME "grLfbLock" #define FN_NAME "grLfbLock"
FxBool rv = FXTRUE; FxBool rv = FXTRUE;
FxU32 lfbMode, zaColor, fbzMode; FxU32 lfbMode = 0, zaColor = 0, fbzMode = 0;
const FxBool idleLockP = ((type & GR_LFB_NOIDLE) == 0); const FxBool idleLockP = ((type & GR_LFB_NOIDLE) == 0);
#if (GLIDE_PLATFORM & GLIDE_OS_MACOS) && SET_BSWAP #if (GLIDE_PLATFORM & GLIDE_OS_MACOS) && SET_BSWAP
FxBool swizzleByteP = FXFALSE; FxBool swizzleByteP = FXFALSE;

View File

@@ -19,6 +19,12 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 #define OFFICIAL 1
@@ -26,7 +32,7 @@
#include <fxver.h> #include <fxver.h>
#include "rcver.h" #include "rcver.h"
#include "fxbldno.h" //#include "fxbldno.h"
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
@@ -56,11 +62,12 @@ BEGIN
VALUE "FileDescription", "3Dfx Interactive, Inc. Glide DLL\0" VALUE "FileDescription", "3Dfx Interactive, Inc. Glide DLL\0"
VALUE "FileVersion", VERSIONSTR VALUE "FileVersion", VERSIONSTR
VALUE "InternalName", VERSIONNAME 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 "OriginalFilename", VERSIONNAME
VALUE "ProductName", PRODNAME VALUE "ProductName", PRODNAME
VALUE "ProductVersion", VERSIONSTR VALUE "ProductVersion", VERSIONSTR
VALUE "Graphics Subsystem", HWSTR VALUE "Graphics Subsystem", HWSTR
VALUE "Contact", "The Glide Open Source Project http://glide.sourceforge.net/"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"

View File

@@ -19,6 +19,33 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 ** 110 6/30/98 6:08p Jeske
** fixed bug where we tried to setup MTRRs on old (<p6) systems which ** fixed bug where we tried to setup MTRRs on old (<p6) systems which
@@ -226,6 +253,123 @@
#include <glide.h> #include <glide.h>
#include "fxglide.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 Function: _grSstDetectResources
Date: -- Date: --
@@ -324,7 +468,7 @@ _grSstDetectResources(void)
* pair then we don't want to waste mtrr's that we're never * pair then we don't want to waste mtrr's that we're never
* really going to write to. * really going to write to.
*/ */
if (!inSliPairP && (_GlideRoot.CPUType >= 6)) { if (!inSliPairP/* && (_GlideRoot.CPUType.family >= 6)*/) {
sst1InitCaching((FxU32*)devRegs, FXTRUE); sst1InitCaching((FxU32*)devRegs, FXTRUE);
} }
@@ -442,9 +586,9 @@ _grSstDetectResources(void)
#if GLIDE_INIT_HAL #if GLIDE_INIT_HAL
fxHalShutdown(devRegs); fxHalShutdown(devRegs);
#else /* !GLIDE_INIT_HAL */ #else /* !GLIDE_INIT_HAL */
if (_GlideRoot.CPUType >= 6) { /*if (_GlideRoot.CPUType.family >= 6) {*/
sst1InitCaching((FxU32*)devRegs, FXFALSE); sst1InitCaching((FxU32*)devRegs, FXFALSE);
} /*}*/
pciUnmapPhysical((FxU32)devRegs, 0x1000000UL); pciUnmapPhysical((FxU32)devRegs, 0x1000000UL);
#endif /* !GLIDE_INIT_HAL */ #endif /* !GLIDE_INIT_HAL */
} }
@@ -543,8 +687,55 @@ _GlideInitEnvironment(void)
} }
#endif #endif
_GlideRoot.CPUType = _cpu_detect_asm(); /* Get CPU Info */
if (GETENV("FX_CPU")) _GlideRoot.CPUType = atoi(GETENV("FX_CPU")); _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 */ /* Check for user environment tweaks */
{ {
@@ -557,7 +748,6 @@ _GlideInitEnvironment(void)
_GlideRoot.environment.noSplash = (GETENV("FX_GLIDE_NO_SPLASH") != NULL); _GlideRoot.environment.noSplash = (GETENV("FX_GLIDE_NO_SPLASH") != NULL);
_GlideRoot.environment.shamelessPlug = (GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL); _GlideRoot.environment.shamelessPlug = (GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL);
_GlideRoot.environment.ignoreReopen = (GETENV("FX_GLIDE_IGNORE_REOPEN") != 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) _GlideRoot.environment.texLodDither = ((GETENV("FX_GLIDE_LOD_DITHER") == NULL)
? 0x00UL ? 0x00UL
: SST_TLODDITHER); : SST_TLODDITHER);
@@ -572,12 +762,25 @@ _GlideInitEnvironment(void)
} }
_GlideRoot.environment.snapshot = GLIDE_GETENV("FX_SNAPSHOT", 0); _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," triBoundsCheck: %d\n",_GlideRoot.environment.triBoundsCheck);
GDBG_INFO(80," swapInterval: %d\n",_GlideRoot.environment.swapInterval); GDBG_INFO(80," swapInterval: %d\n",_GlideRoot.environment.swapInterval);
GDBG_INFO(80," noSplash: %d\n",_GlideRoot.environment.noSplash); GDBG_INFO(80," noSplash: %d\n",_GlideRoot.environment.noSplash);
GDBG_INFO(80," shamelessPlug: %d\n",_GlideRoot.environment.shamelessPlug); 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," snapshot: %d\n",_GlideRoot.environment.snapshot);
GDBG_INFO(80," disableDitherSub: %d\n",_GlideRoot.environment.disableDitherSub); GDBG_INFO(80," disableDitherSub: %d\n",_GlideRoot.environment.disableDitherSub);
} }

View File

@@ -19,6 +19,9 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
** Initial checkin into SourceForge.
**
** **
** 26 2/20/98 11:00a Peter ** 26 2/20/98 11:00a Peter
** removed glide3 from glid2 tree ** removed glide3 from glid2 tree
@@ -767,8 +770,7 @@ GR_DIENTRY(grSplash,void,(float x,float y,float w,float h,FxU32 _frame))
int fadeInFrames, fadeOutFrames; int fadeInFrames, fadeOutFrames;
GR_BEGIN_NOFIFOCHECK("grSplash", 85); GR_BEGIN_NOFIFOCHECK("grSplash", 85);
GDBG_INFO_MORE(gc->myLevel,"(%f,%f,%f,%f,%d)\n", GDBG_INFO_MORE(gc->myLevel,"(%f,%f,%f,%f,%d)\n", x, y, w, h, _frame);
x, y, w, h, _frame);
/* Check Screen Dimensions and Check Avail of Depth Buffer */ /* Check Screen Dimensions and Check Avail of Depth Buffer */
if ((x > gc->state.screen_width) || if ((x > gc->state.screen_width) ||

View File

@@ -19,6 +19,22 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.2.2.3 2005/01/13 16:09:06 koolsmoky
** Restict calls to pciOpen() pciClose() when compiled with DIRECTX option. this fixes problems with the win32 miniport opened in exclusive mode.
**
** Revision 1.2.2.2 2004/12/23 20:45:56 koolsmoky
** converted to nasm syntax
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
**
** Revision 1.2.2.1 2004/12/12 15:26:04 koolsmoky
** changes to support new cpuid
**
** Revision 1.2 2000/10/03 18:28:33 mercury
** 003-clean_up_cvg-000, cvg tree cleanup.
**
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
** Initial checkin into SourceForge.
**
** **
** 168 6/30/98 6:08p Jeske ** 168 6/30/98 6:08p Jeske
** fixed bug where we tried to setup MTRRs on old (<p6) systems which ** fixed bug where we tried to setup MTRRs on old (<p6) systems which
@@ -327,6 +343,7 @@
#include <fxdll.h> #include <fxdll.h>
#include <glide.h> #include <glide.h>
#include "fxglide.h" #include "fxglide.h"
#include "fxsplash.h"
#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) #if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
@@ -411,7 +428,7 @@ GR_ENTRY(grSstWinOpen, FxBool, (
#define FN_NAME "grSstWinOpen" #define FN_NAME "grSstWinOpen"
FxBool rv = FXTRUE; FxBool rv = FXTRUE;
int tmu; int tmu;
int xres, yres, fbStride; int xres = 0, yres = 0, fbStride;
FxDeviceInfo devInfo; FxDeviceInfo devInfo;
#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) #if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
sst1VideoTimingStruct *sstVideoRez = NULL, tvVidtiming; sst1VideoTimingStruct *sstVideoRez = NULL, tvVidtiming;
@@ -465,12 +482,14 @@ __tryReOpen:
*/ */
if (!gc->hwInitP) { if (!gc->hwInitP) {
FxU32* sstRegs = NULL; FxU32* sstRegs = NULL;
#if !DIRECTX
rv = pciOpen(); rv = pciOpen();
if (!rv) { if (!rv) {
GDBG_INFO(gc->myLevel, "%s: pci bus could not be opened\n", FN_NAME); GDBG_INFO(gc->myLevel, "%s: pci bus could not be opened\n", FN_NAME);
goto BAILOUT; goto BAILOUT;
} }
#endif
sstRegs = sst1InitMapBoard(_GlideRoot.current_sst); sstRegs = sst1InitMapBoard(_GlideRoot.current_sst);
rv = (sstRegs != NULL); rv = (sstRegs != NULL);
@@ -481,9 +500,9 @@ __tryReOpen:
} }
/* Re-enabled write combining */ /* Re-enabled write combining */
if (_GlideRoot.CPUType >= 6) { /*if (_GlideRoot.CPUType.family >= 6) {*/
sst1InitCaching(sstRegs, FXTRUE); sst1InitCaching(sstRegs, FXTRUE);
} /*}*/
rv = sst1InitRegisters(sstRegs); rv = sst1InitRegisters(sstRegs);
if (!rv) { if (!rv) {
@@ -874,10 +893,10 @@ __tryReOpen:
* NB: The order of the caching changes is relevant here since * NB: The order of the caching changes is relevant here since
* we don't want to waste mtrr's, even briefly. * 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->base_ptr, FXFALSE);
sst1InitCaching((gc + 1)->base_ptr, FXTRUE); sst1InitCaching((gc + 1)->base_ptr, FXTRUE);
} /*}*/
sst1InitShutdown(gc->base_ptr); sst1InitShutdown(gc->base_ptr);
@@ -898,12 +917,14 @@ __tryReOpen:
gc->hwInitP = FXFALSE; gc->hwInitP = FXFALSE;
} }
#if !DIRECTX
/* dpc - 14 feb 1997 - HackAlert!!!! /* dpc - 14 feb 1997 - HackAlert!!!!
* The sst1InitShutdown above will close the pci library which * The sst1InitShutdown above will close the pci library which
* then prevents other pci library calls which we need to init * then prevents other pci library calls which we need to init
* video next. * video next.
*/ */
pciOpen(); pciOpen();
#endif
/* Re-init the new master */ /* Re-init the new master */
{ {
@@ -971,10 +992,10 @@ __tryReOpen:
* NB: The order of the caching changes is relevant here since * NB: The order of the caching changes is relevant here since
* we don't want to waste mtrr's, even briefly. * 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->slave_ptr, FXFALSE);
sst1InitCaching(gc->base_ptr, FXTRUE); sst1InitCaching(gc->base_ptr, FXTRUE);
} /*}*/
} }
/* Save that we swapped teh master sense so that we can /* Save that we swapped teh master sense so that we can
@@ -1332,9 +1353,9 @@ __errSliExit:
* This is currently being done in _grDetectResources so that we * This is currently being done in _grDetectResources so that we
* can match the nt driver semantics in win95. * can match the nt driver semantics in win95.
*/ */
if (_GlideRoot.CPUType >= 6) { /*if (_GlideRoot.CPUType.family >= 6) {*/
sst1InitCaching(gc->reg_ptr, FXTRUE); sst1InitCaching(gc->reg_ptr, FXTRUE);
} /*}*/
#endif /* !GLIDE_INIT_HAL */ #endif /* !GLIDE_INIT_HAL */
#else #else
#error "Need to write command transport init for glide for this hw" #error "Need to write command transport init for glide for this hw"
@@ -1552,13 +1573,53 @@ __errSliExit:
if (!_GlideRoot.environment.noSplash) { if (!_GlideRoot.environment.noSplash) {
HMODULE newSplash; HMODULE newSplash;
if (newSplash = LoadLibrary("3dfxsplash2.dll")) { if (newSplash = LoadLibrary("3dfxspl2.dll")) {
FARPROC fxSplash; GrState glideState;
FxBool didLoad;
GrSplashProc fxSplash;
GrSplashInitProc fxSplashInit;
GrSplashPlugProc fxSplashPlug;
GrSplashShutdownProc fxSplashShutdown;
if (fxSplash = GetProcAddress(newSplash, "_fxSplash@16")) { fxSplash = (GrSplashProc)GetProcAddress(newSplash, "_fxSplash@20");
fxSplash(hWnd, gc->state.screen_width, gc->state.screen_height, nAuxBuffers); fxSplashInit = (GrSplashInitProc)GetProcAddress(newSplash, "_fxSplashInit@24");
_GlideRoot.environment.noSplash = 1; 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) */ #endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */
@@ -1676,9 +1737,9 @@ GR_ENTRY(grSstWinClose, void, (void))
* track of the mtrr's. * track of the mtrr's.
*/ */
sst1InitIdle(gc->reg_ptr); sst1InitIdle(gc->reg_ptr);
if (_GlideRoot.CPUType >= 6) { /*if (_GlideRoot.CPUType.family >= 6) {*/
sst1InitCaching(gc->base_ptr, FXFALSE); sst1InitCaching(gc->base_ptr, FXFALSE);
} /*}*/
sst1InitShutdown(gc->reg_ptr); sst1InitShutdown(gc->reg_ptr);
#endif /* !GLIDE_INIT_HAL */ #endif /* !GLIDE_INIT_HAL */
@@ -1803,7 +1864,7 @@ GR_ENTRY(grSstControl, FxBool, (GrControl_t code))
#elif (GLIDE_PLATFORM & GLIDE_HW_CVG) && !GLIDE_INIT_HAL #elif (GLIDE_PLATFORM & GLIDE_HW_CVG) && !GLIDE_INIT_HAL
{ {
FxBool isValidP = FXTRUE; FxBool isValidP = FXTRUE;
FxBool passFlag; FxBool passFlag = 0;
switch ( code ) { switch ( code ) {
case GR_CONTROL_DEACTIVATE: case GR_CONTROL_DEACTIVATE:

View File

@@ -19,6 +19,19 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.2.2.2 2005/01/22 14:52:02 koolsmoky
** enabled packed argb for cmd packet type 3
**
** Revision 1.2.2.1 2004/12/23 20:45:56 koolsmoky
** converted to nasm syntax
** added x86 asm, 3dnow! triangle and mmx, 3dnow! texture download optimizations
**
** Revision 1.2 2000/10/03 18:28:33 mercury
** 003-clean_up_cvg-000, cvg tree cleanup.
**
** Revision 1.1.1.1 1999/12/07 21:49:11 joseph
** Initial checkin into SourceForge.
**
** **
** 61 5/18/98 12:11p Peter ** 61 5/18/98 12:11p Peter
** removed unnecesasry fencing ** removed unnecesasry fencing
@@ -271,7 +284,7 @@ GR_DDFUNC(_grTexDownloadPalette,
slopCount, (0xFF >> (8 - slopCount))); slopCount, (0xFF >> (8 - slopCount)));
while(i < start + slopCount) { while(i < start + slopCount) {
REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)], REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)],
(0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF)); (0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF)));
i++; i++;
} }
REG_GROUP_END(); REG_GROUP_END();
@@ -284,7 +297,7 @@ GR_DDFUNC(_grTexDownloadPalette,
REG_GROUP_BEGIN(chipId, nccTable0[4], 8, 0xFF); REG_GROUP_BEGIN(chipId, nccTable0[4], 8, 0xFF);
while(i < endIndex) { while(i < endIndex) {
REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)], REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)],
(0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF)); (0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF)));
i++; i++;
} }
REG_GROUP_END(); REG_GROUP_END();
@@ -298,7 +311,7 @@ GR_DDFUNC(_grTexDownloadPalette,
slopCount, (0xFF >> (8 - slopCount))); slopCount, (0xFF >> (8 - slopCount)));
while(i <= end) { while(i <= end) {
REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)], REG_GROUP_SET(hw, nccTable0[4 + (i & 0x07)],
(0x80000000 | ((i & 0xFE) << 23) | pal->data[i] & 0xFFFFFF)); (0x80000000 | ((i & 0xFE) << 23) | (pal->data[i] & 0xFFFFFF)));
i++; i++;
} }
REG_GROUP_END(); REG_GROUP_END();
@@ -388,7 +401,9 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
{ {
const FifoChipField chipId = (FifoChipField)(0x02UL << tmu); const FifoChipField chipId = (FifoChipField)(0x02UL << tmu);
FxI32 sh; FxI32 sh;
#if !GLIDE_DISPATCH_DOWNLOAD
FxU32 max_s, width, tmu_baseaddress; FxU32 max_s, width, tmu_baseaddress;
#endif
#define FN_NAME "grTexDownloadMipMapLevelPartial" #define FN_NAME "grTexDownloadMipMapLevelPartial"
GR_BEGIN_NOFIFOCHECK(FN_NAME, 89); GR_BEGIN_NOFIFOCHECK(FN_NAME, 89);
@@ -474,6 +489,63 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
REG_GROUP_END(); 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 Determine max_s
------------------------------------------------------------*/ ------------------------------------------------------------*/
@@ -496,7 +568,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
------------------------------------------------------------*/ ------------------------------------------------------------*/
if (format < GR_TEXFMT_16BIT) { /* 8 bit textures */ if (format < GR_TEXFMT_16BIT) { /* 8 bit textures */
/* Hoisted initialization */ /* 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; const FxU8* src8 = (const FxU8*)data;
switch(width) { switch(width) {
@@ -509,7 +581,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
LINEAR_WRITE_END(); LINEAR_WRITE_END();
src8 += width; src8 += width;
tex_address += TEX_ROW_ADDR_INCR(1, thisLod); tex_address += TEX_ROW_ADDR_INCR(1);
} }
break; break;
@@ -522,7 +594,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
LINEAR_WRITE_END(); LINEAR_WRITE_END();
src8 += width; src8 += width;
tex_address += TEX_ROW_ADDR_INCR(1, thisLod); tex_address += TEX_ROW_ADDR_INCR(1);
} }
break; break;
@@ -535,7 +607,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
LINEAR_WRITE_END(); LINEAR_WRITE_END();
src8 += width; src8 += width;
tex_address += TEX_ROW_ADDR_INCR(1, thisLod); tex_address += TEX_ROW_ADDR_INCR(1);
} }
break; break;
@@ -547,7 +619,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
for (; t <= max_t; t++) { for (; t <= max_t; t++) {
FxU32 s; 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, LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,
(FxU32)tex_address - (FxU32)gc->tex_ptr, (FxU32)tex_address - (FxU32)gc->tex_ptr,
@@ -569,7 +641,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
} }
} else { /* 16-bit Textures */ } else { /* 16-bit Textures */
/* Hoisted initialization */ /* 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; const FxU16* src16 = (const FxU16*)data;
/* Cases 1, 2 don't need inner loops for s */ /* Cases 1, 2 don't need inner loops for s */
@@ -583,7 +655,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
LINEAR_WRITE_END(); LINEAR_WRITE_END();
src16 += width; src16 += width;
tex_address += TEX_ROW_ADDR_INCR(1, thisLod); tex_address += TEX_ROW_ADDR_INCR(1);
} }
break; break;
@@ -596,7 +668,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
LINEAR_WRITE_END(); LINEAR_WRITE_END();
src16 += width; src16 += width;
tex_address += TEX_ROW_ADDR_INCR(1, thisLod); tex_address += TEX_ROW_ADDR_INCR(1);
} }
break; break;
@@ -604,7 +676,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
for (; t <= max_t; t++) { for (; t <= max_t; t++) {
FxU32 s; 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 */ /* Loop unrolled to process 2 dwords per iteration */
LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex, LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,
@@ -629,6 +701,7 @@ GR_ENTRY(grTexDownloadMipMapLevelPartial,
break; break;
} }
} }
#endif
/*------------------------------------------------------------ /*------------------------------------------------------------
Restore TLOD, texMode, baseAddress Restore TLOD, texMode, baseAddress
@@ -768,7 +841,7 @@ GR_ENTRY(ConvertAndDownloadRle,
rle_line_end=rle_line+width+u0; rle_line_end=rle_line+width+u0;
for(t=0;t<max_t;t++) { 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; src = rle_line + u0;
rle_decode_line_asm(tlut,&bm_data[offset],rle_line); rle_decode_line_asm(tlut,&bm_data[offset],rle_line);
@@ -786,7 +859,7 @@ GR_ENTRY(ConvertAndDownloadRle,
} }
if (dest_height>height) { 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; src=rle_line+u0;
LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex, LINEAR_WRITE_BEGIN(max_s, kLinearWriteTex,

View File

@@ -19,6 +19,12 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 * 12 12/15/97 5:52p Atai
* disable obsolete glide2 api for glide3 * disable obsolete glide2 api for glide3

View File

@@ -19,6 +19,12 @@
** **
** $Header$ ** $Header$
** $Log$ ** $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 ** 61 3/17/98 3:00p Peter
** removed vertex sorting ** removed vertex sorting
@@ -250,6 +256,7 @@ GR_DDFUNC(_trisetup_nogradients,
const int* dataList = gc->tsuDataList; const int* dataList = gc->tsuDataList;
#if GLIDE_PACKED_RGB #if GLIDE_PACKED_RGB
if ((gc->cmdTransportInfo.paramMask & SSTCP_PKT3_PACKEDCOLOR) != 0)
{ {
FxBool doColorP = FXFALSE; FxBool doColorP = FXFALSE;
FxU32 packedColor = 0x00; FxU32 packedColor = 0x00;
@@ -374,10 +381,10 @@ GR_DDFUNC(_trisetup_nogradients,
if (hasColor || hasAlpha) { if (hasColor || hasAlpha) {
FxU32 packedVal = 0x00; FxU32 packedVal = 0x00;
if (hasColor) packedVal = ((RGBA_COMP_CLAMP(curVertex->b) << 0UL) | if (hasColor) packedVal = ((RGBA_COMP_CLAMP(curVertex->b, B) << 0UL) |
(RGBA_COMP_CLAMP(curVertex->g) << 8UL) | (RGBA_COMP_CLAMP(curVertex->g, G) << 8UL) |
(RGBA_COMP_CLAMP(curVertex->r) << 16UL)); (RGBA_COMP_CLAMP(curVertex->r, R) << 16UL));
if (hasAlpha) packedVal |= (RGBA_COMP_CLAMP(curVertex->a) << 24UL); if (hasAlpha) packedVal |= (RGBA_COMP_CLAMP(curVertex->a, A) << 24UL);
REG_GROUP_SET(hw, sARGB, packedVal); REG_GROUP_SET(hw, sARGB, packedVal);
} }

View File

@@ -20,7 +20,7 @@
TAG_REGEXP = $(BUILD_ROOT)\$(FX_GLIDE_HW)\glide\src\glide.rx TAG_REGEXP = $(BUILD_ROOT)\$(FX_GLIDE_HW)\glide\src\glide.rx
# Compile for specific hardware # Compile for specific hardware
!if "$(FX_GLIDE_HW)" == "CVG" !if "$(FX_GLIDE_HW)" == "cvg"
FX_GLIDE_REAL_HW= 1 FX_GLIDE_REAL_HW= 1
!if "$(FX_GLIDE_CTRISETUP)" == "" !if "$(FX_GLIDE_CTRISETUP)" == ""
@@ -32,7 +32,7 @@ LCDEFS = $(LCDEFS) -DCVG \
-DGLIDE_CHIP_BROADCAST=1 -DGLIDE_DEFAULT_GAMMA=1.3f -DGLIDE_CHIP_BROADCAST=1 -DGLIDE_DEFAULT_GAMMA=1.3f
LCDEFS = $(LCDEFS) \ LCDEFS = $(LCDEFS) \
-DGLIDE_BLIT_CLEAR=1 \ -DGLIDE_BLIT_CLEAR=1 \
!else if "$(FX_GLIDE_HW)" == "H3" !else if "$(FX_GLIDE_HW)" == "h3"
FX_GLIDE_REAL_HW= 1 FX_GLIDE_REAL_HW= 1
FX_GLIDE_NO_FIFO= 1 FX_GLIDE_NO_FIFO= 1
FX_GLIDE_CTRISETUP = 1 FX_GLIDE_CTRISETUP = 1
@@ -40,7 +40,7 @@ HWSPEC = fifo.c
LCDEFS = $(LCDEFS) -DH3 \ LCDEFS = $(LCDEFS) -DH3 \
-DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKET3_TRI_SETUP=0 -DGLIDE_HW_TRI_SETUP=1 -DGLIDE_PACKET3_TRI_SETUP=0
!else !else
!error "FX_GLIDE_HW == unknown value (H3|CVG)" !error "FX_GLIDE_HW == unknown value (h3|cvg)"
!endif !endif

View File

@@ -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 # $Id$
# PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT #
# TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX # Copyright (c) 2004 - Daniel Borca
# INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE # Email : dborca@users.sourceforge.net
# DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com). # Web : http://www.geocities.com/dborca
# THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER #
# EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A # Copyright (c) 2004 - Hiroshi Morii
# FULL TEXT OF THE NON-WARRANTY PROVISIONS. # Email : koolsmoky@users.sourceforge.net
# # Web : http://www.3dfxzone.it/koolsmoky
# USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO #
# RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN # Copyright (c) 2006 - Guillem Jover <guillem@hadrons.org>
# 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.
# #
# 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 # Available options:
$(CC) -o $@ fxgasm.c $(GCDEFS) $(LCDEFS) $(VCDEFS) $(LCOPTS) \ #
-I$(BUILD_ROOT)/$(FX_GLIDE_HW)/include -I$(BUILD_ROOT)/swlibs/include $(LDFLAGS) # 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.h: fxgasm
./fxgasm > fxgasm.h ./$< -hex > $@
fxinline.h: fxgasm
./fxgasm -inline > fxinline.h
#-------------------------------------------------------------------------- fxgasm: fxgasm.c
# special rules for making FXBLDNO.H $(CC) -o $@ $(CFLAGS) $<
#
fxbldno: fxbldno.c $(HEADERS) $(PRIVATE_HEADERS) ###############################################################################
$(CC) -o $@ fxbldno.c $(GCDEFS) $(LCDEFS) $(VCDEFS) $(LCOPTS) $(LDFLAGS) # clean, realclean
###############################################################################
fxbldno.h: fxbldno.exe clean:
fxbldno > fxbldno.h -$(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 realclean: clean
gglide.obj: rcver.h -$(RM) $(GLIDE_LIBDIR)/$(GLIDE_LIB)
-$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SHARED)
ifeq ($(FX_GLIDE_CTRISETUP),1) -$(RM) $(GLIDE_LIBDIR)/$(GLIDE_SO)
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

View File

@@ -1,19 +1,25 @@
/*#include "fxbldno.h"*/
#define MANVERSION 2 #define MANVERSION 2
#define MANREVISION 53 #define MANREVISION 56
#define BUILD_NUMBER 40405
#ifndef GLIDE3 #ifndef GLIDE3
#define VERSIONSTR "2.53\0" #define VERSIONSTR "2.56\0"
#else #else
#define VERSIONSTR "3.0\0" #define VERSIONSTR "3.0\0"
#endif #endif
#if defined(CVG) || defined(VOODOO2) #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 # 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 # 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 */ # endif /* NT_BUILD */
#elif defined(H3) #elif defined(H3)
# define HWSTR " Banshee(tm)\0" # define HWSTR " Banshee(tm)\0"

View File

@@ -19,6 +19,9 @@
** **
** $Header$ ** $Header$
** $Log$ ** $Log$
** Revision 1.1.1.1 1999/12/07 21:49:13 joseph
** Initial checkin into SourceForge.
**
** **
** 7 2/20/98 11:00a Peter ** 7 2/20/98 11:00a Peter
** removed glide3 from glid2 tree ** removed glide3 from glid2 tree
@@ -10655,7 +10658,7 @@ static Gu3dfInfo hilite_3dfinfo = {
GR_ASPECT_1x1, /* aspect_ratio */ GR_ASPECT_1x1, /* aspect_ratio */
GR_TEXFMT_INTENSITY_8 /* format */ GR_TEXFMT_INTENSITY_8 /* format */
}, },
{ 0x0000000 }, /* table */ { {{0x0000000}} }, /* table */
NULL, /* data */ NULL, /* data */
0x00000ab0 /* mem_required */ 0x00000ab0 /* mem_required */
}; };
@@ -12040,7 +12043,7 @@ static Gu3dfInfo shadow_3dfinfo = {
GR_ASPECT_2x1, /* aspect_ratio */ GR_ASPECT_2x1, /* aspect_ratio */
GR_TEXFMT_INTENSITY_8 /* format */ GR_TEXFMT_INTENSITY_8 /* format */
}, },
{ 0x00000000 }, /* table */ { {{0x00000000}} }, /* table */
NULL, /* data */ NULL, /* data */
0x00000ab0 /* mem_required */ 0x00000ab0 /* mem_required */
}; };

View File

@@ -19,6 +19,19 @@
;; $Header$ ;; $Header$
;; $Revision$ ;; $Revision$
;; $Log$ ;; $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 ;; 7 5/18/98 12:16p Peter
;; culling enabling ;; culling enabling
@@ -47,174 +60,166 @@
; B4 Chip field fix. ; B4 Chip field fix.
;; ;;
TITLE xdraw2.asm %include "xos.inc"
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>
;;; Definitions of cvg regs and glide root structures. ;;; 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 ;; enables/disables trisProcessed and trisDrawn counters
STATS = 1 %define STATS 1
;-------------------------------------------------------------------------- segment TEXT
; Arguments (STKOFF = 16 from 4 pushes)
STKOFF = 16
_va$ = 4 + STKOFF
_vb$ = 8 + STKOFF
_vc$ = 12 + STKOFF
X = 0 ALIGN 32
Y = 4 PROC_TYPE _trisetup_cull
; edx is used as index, loading from *src
gc TEXTEQU <esi> ; points to graphics context
_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 endp
PUBLIC _trisetup_cull@12
_trisetup_cull@12 PROC NEAR
.code
GLIDE_CULLING textequ <1> %IF GLIDE_PACKED_RGB
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>
_trisetup_cull@12 ENDP ALIGN 32
PROC_TYPE _trisetup_cull_rgb
IF GLIDE_PACKED_RGB %define GLIDE_CULLING 1
align 4 %define GLIDE_PACK_RGB 1
PUBLIC _trisetup_cull_rgb@12 %define GLIDE_PACK_ALPHA 0
_trisetup_cull_rgb@12 PROC NEAR %define GLIDE_GENERIC_SETUP 0
.code %INCLUDE "xdraw2.inc"
%undef GLIDE_GENERIC_SETUP
%undef GLIDE_PACK_ALPHA
%undef GLIDE_PACK_RGB
%undef GLIDE_CULLING
GLIDE_CULLING textequ <1> endp
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>
_trisetup_cull_rgb@12 ENDP ALIGN 32
PROC_TYPE _trisetup_cull_argb
align 4 %define GLIDE_CULLING 1
PUBLIC _trisetup_cull_argb@12 %define GLIDE_PACK_RGB 1
_trisetup_cull_argb@12 PROC NEAR %define GLIDE_PACK_ALPHA 1
.code %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> endp
GLIDE_PACK_RGB textequ <1> %ENDIF ; GLIDE_PACKED_RGB
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>
_trisetup_cull_argb@12 ENDP ALIGN 32
ENDIF ; GLIDE_PACKED_RGB PROC_TYPE _trisetup
align 4
PUBLIC _trisetup@12
_trisetup@12 PROC NEAR
.code
GLIDE_CULLING textequ <0> %define GLIDE_CULLING 0
GLIDE_PACK_RGB textequ <0> %define GLIDE_PACK_RGB 0
GLIDE_PACK_ALPHA textequ <0> %define GLIDE_PACK_ALPHA 0
GLIDE_GENERIC_SETUP textequ <0> %define GLIDE_GENERIC_SETUP 0
INCLUDE xdraw2.inc %INCLUDE "xdraw2.inc"
GLIDE_GENERIC_SETUP textequ <0> %undef GLIDE_GENERIC_SETUP
GLIDE_PACK_ALPHA textequ <0> %undef GLIDE_PACK_ALPHA
GLIDE_PACK_RGB textequ <0> %undef GLIDE_PACK_RGB
GLIDE_CULLING textequ <0> %undef GLIDE_CULLING
_trisetup@12 ENDP endp
IF GLIDE_PACKED_RGB %IF GLIDE_PACKED_RGB
align 4
PUBLIC _trisetup_rgb@12
_trisetup_rgb@12 PROC NEAR
.code
GLIDE_CULLING textequ <0> ALIGN 32
GLIDE_PACK_RGB textequ <1> PROC_TYPE _trisetup_rgb
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>
_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 endp
PUBLIC _trisetup_argb@12
_trisetup_argb@12 PROC NEAR
.code
GLIDE_CULLING textequ <0> ALIGN 32
GLIDE_PACK_RGB textequ <1> PROC_TYPE _trisetup_argb
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>
_trisetup_argb@12 ENDP %define GLIDE_CULLING 0
ENDIF ; GLIDE_PACKED_RGB %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 endp
END
%ENDIF ; GLIDE_PACKED_RGB

File diff suppressed because it is too large Load Diff

View 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

View 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

View 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

View 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
}

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -43,11 +46,6 @@ static const char name[] = "display";
static const char purpose[] = "display a 16 bit frame buffer (565 format) dump out"; static const char purpose[] = "display a 16 bit frame buffer (565 format) dump out";
static const char usage[] = "-n <frames> -r <res> -s srcimage -t testimage"; static const char usage[] = "-n <frames> -r <res> -s srcimage -t testimage";
static const char *renderBufferString[] = {
"GR_BUFFER_FRONTBUFFER",
"GR_BUFFER_BACKBUFFER "
};
static const char *sourceFormatString[] = { static const char *sourceFormatString[] = {
"GR_LFB_SRC_FMT_565 ", "GR_LFB_SRC_FMT_565 ",
"GR_LFB_SRC_FMT_555 ", "GR_LFB_SRC_FMT_555 ",
@@ -67,8 +65,13 @@ static const char *sourceFormatString[] = {
"GR_LFB_SRC_FMT_ZA16 " "GR_LFB_SRC_FMT_ZA16 "
}; };
static void imageConvert( void *dst,
void *src,
GrLfbSrcFmt_t format,
FxU32 *bpp );
void main( int argc, char **argv) { int main( int argc, char **argv)
{
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -84,7 +87,7 @@ void main( int argc, char **argv) {
LFB_Img src, dst, diff; LFB_Img src, dst, diff;
FxBool txtdisplay = FXTRUE; FxBool txtdisplay = FXTRUE;
void *image; void *image = NULL;
FxU32 bpp; FxU32 bpp;
GrLfbSrcFmt_t sourceFormat; GrLfbSrcFmt_t sourceFormat;
@@ -92,22 +95,17 @@ void main( int argc, char **argv) {
static FxU32 imageWidth; static FxU32 imageWidth;
static FxU32 imageHeight; static FxU32 imageHeight;
static void imageConvert( void *dst,
void *src,
GrLfbSrcFmt_t format,
FxU32 *bpp );
srcfname[0] = 0; srcfname[0] = 0;
dstfname[0] = 0; dstfname[0] = 0;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrst", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrst", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -171,8 +169,8 @@ void main( int argc, char **argv) {
/* readng the LFB file header */ /* readng the LFB file header */
fread(&src.signature, 4, 1, fp); fread(&src.signature, 4, 1, fp);
if (src.signature != IMAGE_SRLE) { if (src.signature != IMAGE_SRLE) {
printf("%s file type incorrect\n"); printf("%s file type incorrect\n", srcfname);
return; exit(1);
} }
fread(&src.width, 2, 1, fp); fread(&src.width, 2, 1, fp);
fread(&src.height, 2, 1, fp); fread(&src.height, 2, 1, fp);
@@ -205,8 +203,8 @@ void main( int argc, char **argv) {
/* readng the LFB file header */ /* readng the LFB file header */
fread(&dst.signature, 4, 1, fp); fread(&dst.signature, 4, 1, fp);
if (dst.signature != IMAGE_SRLE) { if (dst.signature != IMAGE_SRLE) {
printf("%s file type incorrect\n"); printf("%s file type incorrect\n", dstfname);
return; exit(1);
} }
fread(&dst.width, 2, 1, fp); fread(&dst.width, 2, 1, fp);
fread(&dst.height, 2, 1, fp); fread(&dst.height, 2, 1, fp);
@@ -269,7 +267,7 @@ void main( int argc, char **argv) {
} }
if ( ( imageWidth > (FxU32)scrWidth ) || if ( ( imageWidth > (FxU32)scrWidth ) ||
( imageHeight > (FxU32)scrHeight ) ) ( imageHeight > (FxU32)scrHeight ) )
return; exit(1);
while( frames-- ) { while( frames-- ) {
@@ -360,7 +358,7 @@ void main( int argc, char **argv) {
if (srcfname[0] && dstfname[0]) if (srcfname[0] && dstfname[0])
free(diff.data); free(diff.data);
free(image); free(image);
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -90,10 +93,9 @@ void drawBoxes(int w, int h, unsigned long c1, unsigned long c2) {
grDrawLine(&p2,&p3); grDrawLine(&p2,&p3);
} }
void main( int argc, char **argv) { int main( int argc, char **argv) {
int keepworking = 1; int keepworking = 1;
GrScreenResolution_t resolution; GrScreenResolution_t resolution;
int frames = -1;
int redraw = 1; int redraw = 1;
int redrawPattern = 0; int redrawPattern = 0;
int patternon = 1; int patternon = 1;
@@ -193,6 +195,6 @@ void main( int argc, char **argv) {
} }
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -40,7 +43,7 @@ static unsigned int iRandom (unsigned int maxr);
typedef enum { NORMAL, ANTIALIASED } Mode; typedef enum { NORMAL, ANTIALIASED } Mode;
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -68,13 +71,13 @@ void main( int argc, char **argv) {
// GrFog_t fogtable[GR_FOG_TABLE_SIZE]; // GrFog_t fogtable[GR_FOG_TABLE_SIZE];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -254,7 +257,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }
static unsigned long randx = 1; static unsigned long randx = 1;

View File

@@ -18,9 +18,13 @@
LDIRT= $(PROGRAMS) LDIRT= $(PROGRAMS)
GLIDE_ROOT = $(BUILD_ROOT)/$(FX_GLIDE_HW)
LIBOBJS = tlib.o plib.o LIBOBJS = tlib.o plib.o
LLDLIBS = $(LIBOBJS) -lglide GLIDELIB = -L$(GLIDE_ROOT)/lib -lglide
LLDLIBS = $(LIBOBJS) $(GLIDELIB)
PRIVATE_HEADERS = tlib.h tlib.c plib.h plib.c tldata.inc PRIVATE_HEADERS = tlib.h tlib.c plib.h plib.c tldata.inc
@@ -69,3 +73,5 @@ DATAFILES = alpha.3df decal1.3df lava.3df light.3df matt1.3df miro.3df \
include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak include $(BUILD_ROOT_SWLIBS)/include/make/3dfx.mak
$(PROGRAMS): $(LIBOBJS)

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** **
** $Revision$ ** $Revision$
@@ -44,6 +47,19 @@ static GrChipID_t currTMU = GR_TMU0;
static FxBool bMultiRevOrder; static FxBool bMultiRevOrder;
static FxBool bMultiOffsetFix; static FxBool bMultiOffsetFix;
/* static helper prototypes */
static FxU32 prGetLodSize( GrTexInfo *const disTexInfo, GrLOD_t disLOD );
static FxU32 prTexMultiMemRequired( FxU32 deMipMask, GrTexBaseRange_t deRange,
GrTexInfo* deTexInfo );
static void prGetLod( GrTexInfo *lpTexInfo, GrLOD_t deLod, void *data );
static void prPopLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
static void prPushLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
static FxU32 prGetTxMnAdd( hTexId_t deTexId, GrLOD_t deLod );
static int prGetLodWidth( GrLOD_t lod, GrAspectRatio_t aspect );
static int prGetLodHeight( GrLOD_t lod, GrAspectRatio_t aspect );
static FxU32 prGetMultiMemBump( const GrTexInfo *const deTexInfo,
GrTexBaseRange_t deTexBase,
FxU32 deMipMask );
/*------------------------------------------------------------------- /*-------------------------------------------------------------------

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** **
** $Revision$ ** $Revision$
@@ -99,20 +102,6 @@ void plPopLod( hTexId_t hCurrTexture, mipMapEnd_t mipMapEnd );
void plPushLod( hTexId_t hCurrTexture, mipMapEnd_t mipMapEnd ); void plPushLod( hTexId_t hCurrTexture, mipMapEnd_t mipMapEnd );
void plCreateTlTexture( TlTexture *disTlTexture, FxU16 daColors[] ); void plCreateTlTexture( TlTexture *disTlTexture, FxU16 daColors[] );
/* static helper prototypes */
static void prSetBeenPopd( hTexId_t deTexId, FxBool bBeenPopd );
static FxU32 prGetLodSize( GrTexInfo *const disTexInfo, GrLOD_t disLOD );
static FxU32 prTexMultiMemRequired( FxU32 deMipMask, GrTexBaseRange_t deRange,
GrTexInfo* deTexInfo );
static void prGetLod( GrTexInfo *lpTexInfo, GrLOD_t deLod, void *data );
static void prPopLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
static void prPushLod( GrTexInfo *lpDeTexInfo, mipMapEnd_t deMipMapEnd );
static FxU32 prGetTxMnAdd( hTexId_t deTexId, GrLOD_t deLod );
static int prGetLodWidth( GrLOD_t lod, GrAspectRatio_t aspect );
static int prGetLodHeight( GrLOD_t lod, GrAspectRatio_t aspect );
static FxU32 prGetMultiMemBump( const GrTexInfo *const deTexInfo,
GrTexBaseRange_t deTexBase,
FxU32 deMipMask );

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -61,7 +64,7 @@ static FxBool g_bDoLodPrtlDwnld = FXFALSE;
static FxI32 g_nLodPrtlFstRow; static FxI32 g_nLodPrtlFstRow;
static FxI32 g_nLodPrtlLstRow; static FxI32 g_nLodPrtlLstRow;
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -88,10 +91,10 @@ void main( int argc, char **argv) {
/* templates for all algorithmic textures */ /* templates for all algorithmic textures */
GrTexInfo yAlgTxtreTmplts[][9] = GrTexInfo yAlgTxtreTmplts[][9] =
{{ GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL }, {{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL }}; { {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL} }};
const int nDwnLodTxtres = 8; const int nDwnLodTxtres = 8;
FxU16 yDwnLodClrs[][9] = FxU16 yDwnLodClrs[][9] =
@@ -105,23 +108,23 @@ void main( int argc, char **argv) {
{ BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565 }}; { BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565, BLU_565 }};
GrTexInfo yDwnTxtreTmplts[][9] = GrTexInfo yDwnTxtreTmplts[][9] =
{{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL }, {{ {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_332, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_332, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_1555, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_1555, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_4444, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_ARGB_4444, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_1x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_8x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL }, { {GR_LOD_1, GR_LOD_256, GR_ASPECT_4x1, GR_TEXFMT_RGB_565, NULL} },
{ GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL }}; { {GR_LOD_1, GR_LOD_256, GR_ASPECT_2x1, GR_TEXFMT_RGB_565, NULL} }};
/* texture handles */ /* texture handles */
hTexId_t hCurrFgTxtre, /* current fg texture */ hTexId_t hCurrFgTxtre, /* current fg texture */
hFstFgTxtre, /* first fg texture */ hFstFgTxtre = 0, /* first fg texture */
hLstFgTxtre, /* last fg texture */ hLstFgTxtre, /* last fg texture */
hFstAlgFgTxtre, /* first algo texture */ hFstAlgFgTxtre, /* first algo texture */
hLstAlgFgTxtre, /* last algo texture */ hLstAlgFgTxtre = 0, /* last algo texture */
hFstDwnlTxtre, /* first lod download texture */ hFstDwnlTxtre = 0, /* first lod download texture */
hLstDwnlTxtre, /* last lod download texture */ hLstDwnlTxtre = 0, /* last lod download texture */
hDwlnSrcTxtre, hDwlnSrcTxtre,
hTmpTxtre; hTmpTxtre;
hTexId_t hBgTxtre; /* bg texture */ hTexId_t hBgTxtre; /* bg texture */
@@ -179,14 +182,14 @@ void main( int argc, char **argv) {
fgVerts[3].tmuvtx[0].tow = 0.f; fgVerts[3].tmuvtx[0].tow = 0.f;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) )
{ {
if ( rv == -1 ) if ( rv == -1 )
{ {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", tlGetResolutionList() ); printf( "Available resolutions:\n%s\n", tlGetResolutionList() );
return; exit(1);
} }
switch( match ) switch( match )
@@ -739,8 +742,7 @@ void main( int argc, char **argv) {
doUnloadTextures(); doUnloadTextures();
grGlideShutdown(); grGlideShutdown();
exit(1);
return;
} /* main */ } /* main */

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */

View File

@@ -1,19 +1,22 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc.
** All Rights Reserved.
**
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of 3Dfx Interactive, Inc.
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
** **
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
**
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** $Revision$ ** $Revision$
** $Date$ ** $Date$
@@ -51,8 +54,7 @@ static const char purpose[] = "Buffer Swap Alliance bug";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void int main( int argc, char **argv)
main( int argc, char **argv)
{ {
/* Definitions */ /* Definitions */
char match; char match;
@@ -84,13 +86,13 @@ main( int argc, char **argv)
/* Code */ /* Code */
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -165,5 +167,5 @@ main( int argc, char **argv)
} }
grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER ); grLfbUnlock( GR_LFB_WRITE_ONLY, GR_BUFFER_BACKBUFFER );
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** **
** $Revision$ ** $Revision$
@@ -38,7 +41,7 @@ static const char name[] = "test00";
static const char purpose[] = "Clear screen to blue"; static const char purpose[] = "Clear screen to blue";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void int
main( int argc, char **argv) main( int argc, char **argv)
{ {
char match; char match;
@@ -53,13 +56,13 @@ main( int argc, char **argv)
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while(( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) )) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -129,6 +132,6 @@ main( int argc, char **argv)
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,19 +1,22 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc.
** All Rights Reserved.
**
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of 3Dfx Interactive, Inc.
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
** **
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
**
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
*/ */
#include <stdlib.h> #include <stdlib.h>
@@ -35,7 +38,7 @@ static const char name[] = "test01";
static const char purpose[] = "draws a diagonal line of points from top-left to bottom-right"; static const char purpose[] = "draws a diagonal line of points from top-left to bottom-right";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void int
main( int argc, char **argv) { main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
@@ -49,13 +52,13 @@ main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -145,7 +148,7 @@ main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test02";
static const char purpose[] = "draws a parabolic envelope of lines"; static const char purpose[] = "draws a parabolic envelope of lines";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -147,7 +150,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test03";
static const char purpose[] = "draws gouraud shaded lines"; static const char purpose[] = "draws gouraud shaded lines";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -142,7 +145,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test04";
static const char purpose[] = "draws gouraud shaded triangle"; static const char purpose[] = "draws gouraud shaded triangle";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -145,7 +148,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test05";
static const char purpose[] = "renders two interpenetrating triangles with z-buffering"; static const char purpose[] = "renders two interpenetrating triangles with z-buffering";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void int
main( int argc, char **argv) main( int argc, char **argv)
{ {
char match; char match;
@@ -50,13 +53,13 @@ main( int argc, char **argv)
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -179,7 +182,7 @@ main( int argc, char **argv)
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test06";
static const char purpose[] = "renders two interpenetrating triangles with w-buffering"; static const char purpose[] = "renders two interpenetrating triangles with w-buffering";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -176,7 +179,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,19 +1,22 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc.
** All Rights Reserved.
**
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of 3Dfx Interactive, Inc.
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
** **
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
**
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
*/ */
#include <stdlib.h> #include <stdlib.h>
@@ -35,7 +38,7 @@ static const char name[] = "test07";
static const char purpose[] = "alpha blending test"; static const char purpose[] = "alpha blending test";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -159,7 +162,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test08";
static const char purpose[] = "fogging"; static const char purpose[] = "fogging";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -50,13 +53,13 @@ void main( int argc, char **argv) {
GrFog_t fogtable[GR_FOG_TABLE_SIZE]; GrFog_t fogtable[GR_FOG_TABLE_SIZE];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -158,7 +161,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -36,7 +39,7 @@ static const char purpose[] = "chromakey - render a red and blue"
" triangle but chromakey one out"; " triangle but chromakey one out";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -52,13 +55,13 @@ void main( int argc, char **argv) {
unsigned long chromaColor; unsigned long chromaColor;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) )) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -166,7 +169,7 @@ void main( int argc, char **argv) {
cnt = strcspn(filename, "."); cnt = strcspn(filename, ".");
strncpy(fname, filename, cnt); strncpy(fname, filename, cnt);
fname[cnt] = 0; fname[cnt] = 0;
sprintf(tmp,"_%d\0", subframe); sprintf(tmp,"_%d", subframe);
strcat(fname, tmp); strcat(fname, tmp);
strcat(fname, filename+cnt); strcat(fname, filename+cnt);
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight)) if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
@@ -200,7 +203,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,19 +1,22 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc.
** All Rights Reserved.
**
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of 3Dfx Interactive, Inc.
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
** **
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
**
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
*/ */
#include <stdlib.h> #include <stdlib.h>
@@ -37,7 +40,7 @@ static const char purpose[] = "culling test - render a red and blue"
", blue negative"; ", blue negative";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -53,13 +56,13 @@ void main( int argc, char **argv) {
GrCullMode_t cullMode; GrCullMode_t cullMode;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -162,7 +165,7 @@ void main( int argc, char **argv) {
cnt = strcspn(filename, "."); cnt = strcspn(filename, ".");
strncpy(fname, filename, cnt); strncpy(fname, filename, cnt);
fname[cnt] = 0; fname[cnt] = 0;
sprintf(tmp,"_%d\0", subframe); sprintf(tmp,"_%d", subframe);
strcat(fname, tmp); strcat(fname, tmp);
strcat(fname, filename+cnt); strcat(fname, filename+cnt);
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight)) if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
@@ -195,7 +198,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -38,7 +41,7 @@ static const char usage[] = "-n <frames> -r <res>";
static int rRandom(int s, int e); static int rRandom(int s, int e);
static unsigned int iRandom (unsigned int maxr); static unsigned int iRandom (unsigned int maxr);
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -54,13 +57,13 @@ void main( int argc, char **argv) {
int x,y; int x,y;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(0);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -148,7 +151,7 @@ void main( int argc, char **argv) {
if ( tlScaleX(1.0f) < 64.0 || if ( tlScaleX(1.0f) < 64.0 ||
tlScaleY(1.0f) < 64.0 ) tlScaleY(1.0f) < 64.0 )
return; exit(1);
/* generate random start position */ /* generate random start position */
startX = (int)rRandom( 64, (int)tlScaleX(1.0f) - 65 ); startX = (int)rRandom( 64, (int)tlScaleX(1.0f) - 65 );
@@ -223,7 +226,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }
static unsigned long randx = 1; static unsigned long randx = 1;

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -70,7 +73,7 @@ static const char *pixPipeString[] = {
"PIXELPIPE ENABLED " "PIXELPIPE ENABLED "
}; };
void int
main( int argc, char **argv) main( int argc, char **argv)
{ {
char match; char match;
@@ -94,13 +97,13 @@ main( int argc, char **argv)
FxBool pixPipe; FxBool pixPipe;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -116,7 +119,7 @@ main( int argc, char **argv)
if ( resolution == GR_RESOLUTION_NONE ) { if ( resolution == GR_RESOLUTION_NONE ) {
tlErrorMessage( "Error!: Frontbuffer rendering not supported in a window\n" ); tlErrorMessage( "Error!: Frontbuffer rendering not supported in a window\n" );
return; exit(1);
} }
tlSetScreen( scrWidth, scrHeight ); tlSetScreen( scrWidth, scrHeight );
@@ -335,7 +338,7 @@ main( int argc, char **argv)
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} /* main */ } /* main */

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -36,7 +39,7 @@ static const char name[] = "test13";
static const char purpose[] = "iterated alpha test - blue triangle fades towards one vertex\n"; static const char purpose[] = "iterated alpha test - blue triangle fades towards one vertex\n";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -49,13 +52,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -167,5 +170,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -36,7 +39,7 @@ static const char purpose[] = "depth bias test: vary depth bias \n"
"over time with two interpenetrating triangles"; "over time with two interpenetrating triangles";
static const char usage[] = "-n <frames> -r <res>"; static const char usage[] = "-n <frames> -r <res>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -50,13 +53,13 @@ void main( int argc, char **argv) {
short zDelta; short zDelta;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -177,5 +180,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test15";
static const char purpose[] = "clip rectangle testing - clip rectangle travels around screen"; static const char purpose[] = "clip rectangle testing - clip rectangle travels around screen";
static const char usage[] = "-n <frames> -r <res>"; static const char usage[] = "-n <frames> -r <res>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -48,13 +51,13 @@ void main( int argc, char **argv) {
float clipX, clipY, clipSize, clipSizeDelta, clipPosDelta; float clipX, clipY, clipSize, clipSizeDelta, clipPosDelta;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -210,5 +213,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -36,7 +39,7 @@ static const char name[] = "test16";
static const char purpose[] = "test grShamelessPlug and grSplash"; static const char purpose[] = "test grShamelessPlug and grSplash";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -49,13 +52,13 @@ void main( int argc, char **argv) {
char filename[256]; char filename[256];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -194,5 +197,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -45,7 +48,7 @@ const char *textureModeNames[] = {
"(ITRGB * TEXTURE)+WHITE SPECULAR" "(ITRGB * TEXTURE)+WHITE SPECULAR"
}; };
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -61,13 +64,13 @@ void main( int argc, char **argv) {
TlTexture texture; TlTexture texture;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -257,7 +260,7 @@ void main( int argc, char **argv) {
cnt = strcspn(filename, "."); cnt = strcspn(filename, ".");
strncpy(fname, filename, cnt); strncpy(fname, filename, cnt);
fname[cnt] = 0; fname[cnt] = 0;
sprintf(tmp,"_%d\0", subframe); sprintf(tmp,"_%d", subframe);
strcat(fname, tmp); strcat(fname, tmp);
strcat(fname, filename+cnt); strcat(fname, filename+cnt);
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight)) if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
@@ -285,5 +288,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -36,7 +39,7 @@ static const char name[] = "test18";
static const char purpose[] = "alpha texture test"; static const char purpose[] = "alpha texture test";
static const char usage[] = "-n <frames> -r <res> -d <filename>"; static const char usage[] = "-n <frames> -r <res> -d <filename>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -51,13 +54,13 @@ void main( int argc, char **argv) {
TlTexture texture; TlTexture texture;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -251,5 +254,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -63,7 +66,7 @@ static int loadTexture( const char *filename,
void *table ); void *table );
static GrTexTable_t texTableType( GrTextureFormat_t format ); static GrTexTable_t texTableType( GrTextureFormat_t format );
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -79,13 +82,13 @@ void main( int argc, char **argv) {
Texture texture; Texture texture;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrd", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -245,7 +248,7 @@ void main( int argc, char **argv) {
cnt = strcspn(filename, "."); cnt = strcspn(filename, ".");
strncpy(fname, filename, cnt); strncpy(fname, filename, cnt);
fname[cnt] = 0; fname[cnt] = 0;
sprintf(tmp,"_%d\0", subframe); sprintf(tmp,"_%d", subframe);
strcat(fname, tmp); strcat(fname, tmp);
strcat(fname, filename+cnt); strcat(fname, filename+cnt);
if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight)) if (!tlScreenDump(fname, (FxU16)scrWidth, (FxU16)scrHeight))
@@ -293,7 +296,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -38,7 +41,7 @@ static const char usage[] = "-n <frames> -r <res>";
typedef enum { DISABLE, NEAREST, TRILINEAR } MipMapMode; typedef enum { DISABLE, NEAREST, TRILINEAR } MipMapMode;
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -55,13 +58,13 @@ void main( int argc, char **argv) {
MipMapMode mipMapMode; MipMapMode mipMapMode;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -310,7 +313,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -37,7 +40,7 @@ static const char usage[] = "-n <frames> -r <res>";
typedef enum { LIGHTMAP, SPECULAR, DETAIL } Mode; typedef enum { LIGHTMAP, SPECULAR, DETAIL } Mode;
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -60,13 +63,13 @@ void main( int argc, char **argv) {
Mode mode; Mode mode;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -364,7 +367,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test22";
static const char purpose[] = "fog with multi-pass texturing"; static const char purpose[] = "fog with multi-pass texturing";
static const char usage[] = "-n <frames> -r <res>"; static const char usage[] = "-n <frames> -r <res>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -56,13 +59,13 @@ void main( int argc, char **argv) {
float distance, dDelta; float distance, dDelta;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -296,7 +299,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -40,7 +43,7 @@ static unsigned int iRandom (unsigned int maxr);
typedef enum { NORMAL, ANTIALIASED } Mode; typedef enum { NORMAL, ANTIALIASED } Mode;
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -60,13 +63,13 @@ void main( int argc, char **argv) {
GrFog_t fogtable[GR_FOG_TABLE_SIZE]; GrFog_t fogtable[GR_FOG_TABLE_SIZE];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -222,7 +225,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }
static unsigned long randx = 1; static unsigned long randx = 1;

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -40,7 +43,7 @@ static unsigned int iRandom (unsigned int maxr);
typedef enum { NORMAL, ANTIALIASED } Mode; typedef enum { NORMAL, ANTIALIASED } Mode;
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -59,13 +62,13 @@ void main( int argc, char **argv) {
GrFog_t fogtable[GR_FOG_TABLE_SIZE]; GrFog_t fogtable[GR_FOG_TABLE_SIZE];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -217,7 +220,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }
static unsigned long randx = 1; static unsigned long randx = 1;

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -164,7 +167,7 @@ static int screenFulls[] = {
#define NFRAMES 20 #define NFRAMES 20
#define NVERTS 3 #define NVERTS 3
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -187,7 +190,7 @@ void main( int argc, char **argv) {
y_angle = 0.0f; /* rotation amount */ y_angle = 0.0f; /* rotation amount */
int int
firstTime; /* Used for performance calculations */ firstTime = 0; /* Used for performance calculations */
GrPassthruMode_t GrPassthruMode_t
passthruMode = GR_PASSTHRU_SHOW_SST1; /* For toggling passthru */ passthruMode = GR_PASSTHRU_SHOW_SST1; /* For toggling passthru */
@@ -211,7 +214,7 @@ void main( int argc, char **argv) {
swapDelay = 1, /* Arg to grBufferSwap */ swapDelay = 1, /* Arg to grBufferSwap */
trisDrawn, /* # triangles drawn */ trisDrawn, /* # triangles drawn */
trisProcessed, /* # triangles through pipeline */ trisProcessed, /* # triangles through pipeline */
lastFrame, /* Number of last frame we did perf stats */ lastFrame = 0, /* Number of last frame we did perf stats */
frameNum = 0L; /* id of each frame drawn */ frameNum = 0L; /* id of each frame drawn */
GrCullMode_t GrCullMode_t
@@ -238,13 +241,13 @@ void main( int argc, char **argv) {
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nrbtea", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nrbtea", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -872,7 +875,7 @@ void main( int argc, char **argv) {
{ {
char str[256]; char str[256];
swapDelay = (int) c - 0x30; swapDelay = (int) c - 0x30;
sprintf(str, "Swapdelay = %d\n", swapDelay); sprintf(str, "Swapdelay = %ld\n", swapDelay);
tlConOutput(str); tlConOutput(str);
} }
break; break;
@@ -891,4 +894,5 @@ void main( int argc, char **argv) {
break; break;
} }
grGlideShutdown(); grGlideShutdown();
exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,11 +38,6 @@ static const char name[] = "test26";
static const char purpose[] = "tests grLfbWriteRegion, and grLfbReadRegion"; static const char purpose[] = "tests grLfbWriteRegion, and grLfbReadRegion";
static const char usage[] = "-b <# color buffers> -d <# aux buffers> -n <frames> -r <res>"; static const char usage[] = "-b <# color buffers> -d <# aux buffers> -n <frames> -r <res>";
static const char *renderBufferString[] = {
"GR_BUFFER_FRONTBUFFER",
"GR_BUFFER_BACKBUFFER "
};
static const char *sourceFormatString[] = { static const char *sourceFormatString[] = {
"GR_LFB_SRC_FMT_565 ", "GR_LFB_SRC_FMT_565 ",
"GR_LFB_SRC_FMT_555 ", "GR_LFB_SRC_FMT_555 ",
@@ -59,8 +57,12 @@ static const char *sourceFormatString[] = {
"GR_LFB_SRC_FMT_ZA16 " "GR_LFB_SRC_FMT_ZA16 "
}; };
static void imageConvert( void *dst,
void *src,
GrLfbSrcFmt_t format,
FxU32 *bpp );
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -82,19 +84,14 @@ void main( int argc, char **argv) {
static FxU32 imageWidth; static FxU32 imageWidth;
static FxU32 imageHeight; static FxU32 imageHeight;
static void imageConvert( void *dst,
void *src,
GrLfbSrcFmt_t format,
FxU32 *bpp );
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "bdnr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "bdnr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'b': case 'b':
@@ -169,7 +166,7 @@ void main( int argc, char **argv) {
(int) scrWidth, (int) scrHeight); (int) scrWidth, (int) scrHeight);
tlErrorMessage(errMsg); tlErrorMessage(errMsg);
return; exit(1);
} }
sourceFormat = GR_LFB_SRC_FMT_565; sourceFormat = GR_LFB_SRC_FMT_565;
@@ -289,7 +286,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** **
** $Revision$ ** $Revision$
@@ -42,7 +45,7 @@ static unsigned int iRandom (unsigned int maxr);
#define SNAP_BIAS ((float)(3<<18)) #define SNAP_BIAS ((float)(3<<18))
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -56,13 +59,13 @@ void main( int argc, char **argv) {
int cycles; int cycles;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "Nnr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "Nnr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -167,7 +170,7 @@ doNothing:
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }
static unsigned long randx = 1; static unsigned long randx = 1;

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -90,7 +93,7 @@ static const char name[] = "test28";
static const char purpose[] = "planar polygon test"; static const char purpose[] = "planar polygon test";
static const char usage[] = "-n <frames> -r <res>"; static const char usage[] = "-n <frames> -r <res>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -107,13 +110,13 @@ void main( int argc, char **argv) {
RGB hues[NHUE]; RGB hues[NHUE];
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -222,5 +225,5 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
*/ */
@@ -35,7 +38,7 @@ static const char name[] = "test29";
static const char purpose[] = "oow diff hint"; static const char purpose[] = "oow diff hint";
static const char usage[] = "-n <frames> -r <res>"; static const char usage[] = "-n <frames> -r <res>";
void main( int argc, char **argv) { int main( int argc, char **argv) {
char match; char match;
char **remArgs; char **remArgs;
int rv; int rv;
@@ -50,13 +53,13 @@ void main( int argc, char **argv) {
float distance, dDelta; float distance, dDelta;
/* Process Command Line Arguments */ /* Process Command Line Arguments */
while( rv = tlGetOpt( argc, argv, "nr", &match, &remArgs ) ) { while( (rv = tlGetOpt( argc, argv, "nr", &match, &remArgs )) ) {
if ( rv == -1 ) { if ( rv == -1 ) {
printf( "Unrecognized command line argument\n" ); printf( "Unrecognized command line argument\n" );
printf( "%s %s\n", name, usage ); printf( "%s %s\n", name, usage );
printf( "Available resolutions:\n%s\n", printf( "Available resolutions:\n%s\n",
tlGetResolutionList() ); tlGetResolutionList() );
return; exit(1);
} }
switch( match ) { switch( match ) {
case 'n': case 'n':
@@ -261,7 +264,7 @@ void main( int argc, char **argv) {
} }
grGlideShutdown(); grGlideShutdown();
return; exit(0);
} }

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** **
** $Revision$ ** $Revision$
@@ -338,7 +341,6 @@ static const int charsPerLine = 14;
static int fontInitialized; static int fontInitialized;
static void grabTex( FxU32 addr, void *storage );
static void putTex( FxU32 addr, void *storage ); static void putTex( FxU32 addr, void *storage );
static void consoleScroll( void ); static void consoleScroll( void );
static void drawChar( char character, float x, float y, float w, float h ); static void drawChar( char character, float x, float y, float w, float h );
@@ -450,7 +452,6 @@ static void strupr(char *str) {
int - number of chars printed int - number of chars printed
-------------------------------------------------------------------*/ -------------------------------------------------------------------*/
int tlConOutput( const char *fmt, ... ) { int tlConOutput( const char *fmt, ... ) {
static short tmpTex[256*256];
int rv = 0; int rv = 0;
va_list argptr; va_list argptr;
@@ -531,8 +532,6 @@ void tlConClear() {
none none
-------------------------------------------------------------------*/ -------------------------------------------------------------------*/
void tlConRender( void ) { void tlConRender( void ) {
static short tmpTex[256*256];
if( fontInitialized ) { if( fontInitialized ) {
int x, y; int x, y;
@@ -955,14 +954,10 @@ static void drawChar( char character, float x, float y, float w, float h ) {
grConstantColorValue( consoleColor ); grConstantColorValue( consoleColor );
a.tmuvtx[0].sow = c.tmuvtx[0].sow = a.tmuvtx[0].sow = c.tmuvtx[0].sow = (float)fontTable[(int) character][0];
(float)fontTable[character][0]; a.tmuvtx[0].tow = b.tmuvtx[0].tow = (float)fontTable[(int) character][1];
a.tmuvtx[0].tow = b.tmuvtx[0].tow = d.tmuvtx[0].sow = b.tmuvtx[0].sow = a.tmuvtx[0].sow + (float)fontWidth;
(float)fontTable[character][1]; d.tmuvtx[0].tow = c.tmuvtx[0].tow = a.tmuvtx[0].tow + (float)fontHeight;
d.tmuvtx[0].sow = b.tmuvtx[0].sow =
a.tmuvtx[0].sow + (float)fontWidth;
d.tmuvtx[0].tow = c.tmuvtx[0].tow =
a.tmuvtx[0].tow + (float)fontHeight;
grDrawTriangle( &a, &d, &c ); grDrawTriangle( &a, &d, &c );
grDrawTriangle( &a, &b, &d ); grDrawTriangle( &a, &b, &d );
@@ -992,74 +987,6 @@ static void putTex( FxU32 addr, void *storage ) {
grTexDownloadMipMap( 0, addr, GR_MIPMAPLEVELMASK_BOTH, &fontInfo ); grTexDownloadMipMap( 0, addr, GR_MIPMAPLEVELMASK_BOTH, &fontInfo );
} }
static void grabTex( FxU32 addr, void *storage ) {
static FxU16 tmpSpace[256][256];
GrTexInfo texInfo;
GrVertex a, b, c, d;
grGlideGetState( &state );
grDitherMode( GR_DITHER_DISABLE );
grColorMask( FXTRUE, FXFALSE );
grSstOrigin( GR_ORIGIN_UPPER_LEFT );
grCullMode( GR_CULL_DISABLE );
/* Grab Upper Left 256*256 of frame buffer */
readRegion( tmpSpace, 0, 0, 256, 256 );
/* Grab First 256x256 MM in Texture Ram */
texInfo.smallLod = GR_LOD_256;
texInfo.largeLod = GR_LOD_256;
texInfo.aspectRatio = GR_ASPECT_1x1;
texInfo.format = GR_TEXFMT_RGB_565;
texInfo.data = 0;
grTexMipMapMode( 0, GR_MIPMAP_DISABLE, FXFALSE );
grTexFilterMode( 0,
GR_TEXTUREFILTER_POINT_SAMPLED,
GR_TEXTUREFILTER_POINT_SAMPLED );
grTexCombine( 0,
GR_COMBINE_FUNCTION_LOCAL,
GR_COMBINE_FACTOR_NONE,
GR_COMBINE_FUNCTION_LOCAL,
GR_COMBINE_FACTOR_NONE,
FXFALSE,
FXFALSE );
grColorCombine( GR_COMBINE_FUNCTION_SCALE_OTHER,
GR_COMBINE_FACTOR_ONE,
GR_COMBINE_LOCAL_NONE,
GR_COMBINE_OTHER_TEXTURE,
FXFALSE );
grTexSource( 0, addr, GR_MIPMAPLEVELMASK_BOTH, &texInfo );
grAlphaBlendFunction( GR_BLEND_ONE, GR_BLEND_ZERO,
GR_BLEND_ONE, GR_BLEND_ZERO);
grDepthBufferFunction( GR_DEPTHBUFFER_DISABLE );
grAlphaTestFunction( GR_CMP_ALWAYS );
grFogMode( GR_FOG_DISABLE );
grCullMode( GR_CULL_DISABLE );
grChromakeyMode( GR_CHROMAKEY_DISABLE );
/*-------------------
A---B
| \ |
C---D
-------------------*/
a.oow = a.tmuvtx[0].oow = 1.0f;
b = c = d = a;
a.x = c.x = a.y = b.y = 0.5f;
b.x = d.x = c.y = d.y = 255.6f;
a.tmuvtx[0].sow = c.tmuvtx[0].sow = a.tmuvtx[0].tow = b.tmuvtx[0].tow =
0.5f;
b.tmuvtx[0].sow = d.tmuvtx[0].sow = c.tmuvtx[0].tow = d.tmuvtx[0].tow =
0.5f;
grDrawTriangle( &a, &d, &c );
grDrawTriangle( &a, &b, &d );
readRegion( storage, 0, 0, 256, 256 );
/* Restore The Upper Left Hand of Frame Buffer */
writeRegion( tmpSpace, 0, 0, 256, 256 );
grGlideSetState( &state );
return;
}
static void readRegion( void *data, static void readRegion( void *data,
int sx, int sy, int sx, int sy,
int w, int h ) { int w, int h ) {
@@ -1433,7 +1360,7 @@ char tlGetCH( void ) {
FxBool FxBool
tlErrorMessage( char *err) { tlErrorMessage( char *err) {
fprintf(stderr, err); return !!fprintf(stderr, err);
} /* tlErrorMessage */ } /* tlErrorMessage */
#else #else

View File

@@ -1,18 +1,21 @@
/* /*
** Copyright (c) 1997, 3Dfx Interactive, Inc. ** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** All Rights Reserved. ** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** ** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** the contents of this file may not be disclosed to third parties, copied or ** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** duplicated in any form, in whole or in part, without the prior written ** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** permission of 3Dfx Interactive, Inc. ** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** ** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
** RESTRICTED RIGHTS LEGEND: **
** Use, duplication or disclosure by the Government is subject to restrictions ** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** rights reserved under the Copyright Laws of the United States. ** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** **
** **
** $Revision$ ** $Revision$
@@ -32,10 +35,7 @@ extern "C" {
* so that it is a harmless wrapper rather than ((void)0) as in <assert.h> * so that it is a harmless wrapper rather than ((void)0) as in <assert.h>
*/ */
#ifndef DEBUG #ifndef DEBUG
#ifdef assert #define NDEBUG
#undef assert
#endif
#define assert(exp) (exp)
#endif #endif
int tlGetOpt( int argc, char *argv[], const char *tags, char *match, char **remArgs[] ); int tlGetOpt( int argc, char *argv[], const char *tags, char *match, char **remArgs[] );

View 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

View File

@@ -42,10 +42,24 @@
// if debug info turned on then GDBG_INFO does something // if debug info turned on then GDBG_INFO does something
#ifdef GDBG_INFO_ON #ifdef GDBG_INFO_ON
// Standard C provides no clean way to do this, but the GNU C tools do..
#ifdef __GNUC__
#define GDBG_INFO(level, format, args...) \
gdbg_info(level, format , ## args)
#define GDBG_INFO_MORE(level, format, args...) \
gdbg_info_more(level, format , ## args)
#define GDBG_PRINTF(format, args...) \
gdbg_printf(format , ## args)
#else
#define GDBG_INFO gdbg_info #define GDBG_INFO gdbg_info
#define GDBG_INFO_MORE gdbg_info_more #define GDBG_INFO_MORE gdbg_info_more
#define GDBG_PRINTF gdbg_printf #define GDBG_PRINTF gdbg_printf
#endif
#define GDBG_ERROR_SET_CALLBACK gdbg_error_set_callback #define GDBG_ERROR_SET_CALLBACK gdbg_error_set_callback
#define GDBG_ERROR_CLEAR_CALLBACK gdbg_error_clear_callback #define GDBG_ERROR_CLEAR_CALLBACK gdbg_error_clear_callback
@@ -66,6 +80,15 @@
#pragma disable_message (111, 201) #pragma disable_message (111, 201)
#endif /* defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__) */ #endif /* defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__) */
// Standard C provides no clean way to do this, but the GNU C tools do..
#ifdef __GNUC__
#define GDBG_INFO(level, format, args...)
#define GDBG_INFO_MORE(level, format, args...)
#define GDBG_PRINTF(format, args...)
#else
#define GDBG_INFO 0 && (unsigned long) #define GDBG_INFO 0 && (unsigned long)
#define GDBG_INFO_MORE 0 && (unsigned long) #define GDBG_INFO_MORE 0 && (unsigned long)
#define GDBG_PRINTF 0 && (unsigned long) #define GDBG_PRINTF 0 && (unsigned long)
@@ -73,9 +96,12 @@
#define GDBG_ERROR_SET_CALLBACK 0 && (unsigned long) #define GDBG_ERROR_SET_CALLBACK 0 && (unsigned long)
#define GDBG_ERROR_CLEAR_CALLBACK 0 && (unsigned long) #define GDBG_ERROR_CLEAR_CALLBACK 0 && (unsigned long)
#endif
#define GDBG_GET_DEBUGLEVEL(x) 0 #define GDBG_GET_DEBUGLEVEL(x) 0
#define GDBG_SET_DEBUGLEVEL(a,b) #define GDBG_SET_DEBUGLEVEL(a,b)
#endif #endif
#define GDBG_INIT gdbg_init #define GDBG_INIT gdbg_init

Some files were not shown because too many files have changed in this diff Show More