merge trunk into 64bit branch.

This commit is contained in:
alanh
2000-11-16 19:32:35 +00:00
parent b17cdee744
commit 32c9fceb2b
51 changed files with 1935 additions and 1737 deletions

View File

@@ -1,4 +1,4 @@
Microsoft (R) Macro Assembler Version 6.14.8444 06/20/00 17:18:56
Microsoft (R) Macro Assembler Version 6.14.8444 06/30/00 13:01:25
cpudtect.asm Page 1 - 1
@@ -23,6 +23,10 @@ cpudtect.asm Page 1 - 1
;;
;; $Header$
;; $Log$
;; Revision 1.3 2000/11/15 23:32:52 joseph
;; Syncing up with 3dfx internal source repository. These changes contain a
;; number of bug fixes.
;;
;; Revision 1.1 2000/06/15 00:27:42 joseph
;; Initial checkin into SourceForge.
;;
@@ -321,7 +325,7 @@ cpudtect.asm Page 1 - 1
000001D0 _TEXT ENDS
END
Microsoft (R) Macro Assembler Version 6.14.8444 06/20/00 17:18:56
Microsoft (R) Macro Assembler Version 6.14.8444 06/30/00 13:01:25
cpudtect.asm Symbols 2 - 1
@@ -379,7 +383,9 @@ CPUTypeP5 . . . . . . . . . . . Number 00000005h
CPUTypeP6 . . . . . . . . . . . Number 00000006h
CPUTypePrePent . . . . . . . . . Number 00000004h
CPUTypeUnknown . . . . . . . . . Number FFFFFFFFh
GDBG_INFO_ON . . . . . . . . . . Text
GLIDE_ALT_TAB . . . . . . . . . Text
GLIDE_DEBUG . . . . . . . . . . Text
GLIDE_INIT_HWC . . . . . . . . . Text
GLIDE_PACKED_RGB . . . . . . . . Text 0
GLIDE_TRI_CULLING . . . . . . . Text 1

View File

@@ -20,6 +20,13 @@
/* $Header$ *
/* $Log$
/* Revision 1.3 2000/11/15 23:32:52 joseph
/* Syncing up with 3dfx internal source repository. These changes contain a
/* number of bug fixes.
/*
/* Revision 1.2.2.1 2000/08/30 08:37:51 alanh
/* Voodoo5 changes for 64bit architectures
/*
/* Revision 1.2 2000/06/27 19:59:34 joseph
/* Previous checkin of asm files were already preprocessed.
/* Fixed build rules for 3DNow optimized assembly.

View File

@@ -1,28 +1,73 @@
/*
** 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
** 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.
**
** $Header$
** $Log$
** Revision 1.2 2000/06/26 21:26:24 joseph
** Merged with 3dfx internal source repository so that the source base stays
** up to date.
**
** $Log:
** 22 3dfx 1.17.1.0.1.210/11/00 Brent Forced check in to enforce
** branching.
** 21 3dfx 1.17.1.0.1.109/15/00 troy thornton grqueryresolutions now
** checks the refreshrate of the monitor before returning a valid screen mode
**
** 20 3dfx 1.17.1.0.1.008/29/00 Jonny Cochrane Some 8x FSAA code
** 19 3dfx 1.17.1.0 06/07/00 Daoxiang Gong Fixes PRS 14363. Make sure
** grGet returns proper color bit depth info.
** 18 3dfx 1.17 04/17/00 Adam Briggs added
** grGetRegistryOrEnvironmentStringExt call so that OpenGL has an easy way to
** read environment settings from the registry. To save you the trouble of
** asking, the answer is no, I could not think of a longer name for the
** function. I did try, though.
** 17 3dfx 1.16 04/10/00 Larry warner Report max texture size
** 2048 for Napalm and 256 otherwise.
** 16 3dfx 1.15 04/06/00 Larry warner So much for the palindrome.
** 15 3dfx 1.14 03/31/00 Kenneth Dyke Get number of chips from
** bInfo so we report back the right kind of card. (Cosmetic).
** 14 3dfx 1.13 02/22/00 Kenneth Dyke Base min/max z and w buffer
** values on actual pixel depth, and not on the hardware we're on.
** 13 3dfx 1.12 02/10/00 Adam Briggs grGet(GR_NUM_FB) now
** returns the number of chips on a board.
** 12 3dfx 1.11 01/31/00 Adam Briggs changed the IS_NAPALM macro
** to cooperate with the display driver version of the same
** 11 3dfx 1.10 01/31/00 Adam Briggs Changed all device ID magic
** numbers to use those defined in fxhal.h & added IS_NAPALM macro to test
** against device ID range
** 10 3dfx 1.9 01/30/00 Adam Briggs get napalm status correctly
** 9 3dfx 1.8 01/18/00 Kenneth Dyke Fix query value for maximum
** texture size.
** 8 3dfx 1.7 01/04/00 Adam Briggs changed grGetGammaTable to
** be an extension called grGetGammaTableExt
** 7 3dfx 1.6 12/13/99 Adam Briggs Made
** grGetString(GR_HARDWARE) return Voodoo4 or VoodooV instead of Napalm
** 6 3dfx 1.5 12/10/99 Leo Galway Removed previous hi-res
** mode information for Glide3. These modes were only necessary for
** Cornerstone (or future hi-res) support in RT4.2 source branch and
** proceeded to break the V3 and V2 builds (from 3dfx view), hence they have
** been removed.
** 5 3dfx 1.4 12/08/99 Leo Galway Added mode information for
** 1600x1280, 1792x1440, 1920x1080, 1920x1200, 2046x1536 (as a result of
** glide being tested with Cornerstone modes). Although not all of these
** modes are currently capable under Glide, their inclusion prevents Glide
** apps from displaying in incorrect modes when these hi-res modes are
** selected. Search for SUSTAINED_ENGINEERING_CHANGE_BEGIN.
** 4 3dfx 1.3 10/26/99 Anthony tai workaround for calling
** grGetString before the gc exist
** 3 3dfx 1.2 09/28/99 Anthony tai workaround for dct bug
** 2 3dfx 1.1 09/22/99 Adam Briggs Added
** grConstantColorValueExt
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
** $
**
** 93 9/09/99 4:19p Adamb
** Added TEXTUREBUFFER to GR_EXTENSION string
@@ -389,17 +434,47 @@ GR_DIENTRY(grGet, FxU32, (FxU32 pname, FxU32 plength, FxI32 *params))
switch(pname) {
case GR_BITS_DEPTH:
if (plength == 4) {
GR_DCL_GC;
retVal = plength;
*params = SST1_BITS_DEPTH;
*params = gc->bInfo->h3pixelSize << 3 ;
}
break;
case GR_BITS_RGBA:
if (plength == 16) {
retVal = plength;
*params = 5;
*(params+1) = 6;
*(params+2) = 5;
*(params+3) = 0;
GR_DCL_GC;
retVal = plength;
switch(gc->grPixelFormat)
{
case GR_PIXFMT_RGB_565:
case GR_PIXFMT_AA_2_RGB_565:
case GR_PIXFMT_AA_4_RGB_565:
case GR_PIXFMT_AA_8_RGB_565: /* 8xaa */
*params = 5;
*(params+1) = 6;
*(params+2) = 5;
*(params+3) = 0;
break;
case GR_PIXFMT_ARGB_1555:
case GR_PIXFMT_AA_2_ARGB_1555:
case GR_PIXFMT_AA_4_ARGB_1555:
case GR_PIXFMT_AA_8_ARGB_1555: /* 8xaa */
*params = 5;
*(params+1) = 5;
*(params+2) = 5;
*(params+3) = 1;
break;
case GR_PIXFMT_ARGB_8888:
case GR_PIXFMT_AA_2_ARGB_8888:
case GR_PIXFMT_AA_4_ARGB_8888:
case GR_PIXFMT_AA_8_ARGB_8888: /* 8xaa */
*params = 8;
*(params+1) = 8;
*(params+2) = 8;
*(params+3) = 8;
break;
default:
break;
}
}
break;
case GR_FIFO_FULLNESS:
@@ -1142,7 +1217,7 @@ GR_DIENTRY(grQueryResolutions, FxI32, (const GlideResolution *resTemplate, Glide
for (j = min_ref; j <= max_ref; j++) {
FxBool resSuported;
GDBG_INFO(80, FN_NAME ": _grResolutionRefresh passed\n");
resSuported = hwcResolutionSupported(gc->bInfo, i);
resSuported = hwcResolutionSupported(gc->bInfo, i, j);
GDBG_INFO(80, FN_NAME ": hwcResolutionSupported returned %s\n",
resSuported ? "FXTRUE" : "FXFALSE");
if (resSuported) {

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -20,6 +20,14 @@
**
** $Header$
** $Log:
** 33 3dfx 1.25.1.2.1.311/14/00 Jonny Cochrane Implement multisample LOD
** Dithering for 2x and 4x FSAA modes
** 32 3dfx 1.25.1.2.1.210/11/00 Brent Forced check in to enforce
** branching.
** 31 3dfx 1.25.1.2.1.109/26/00 Andy Hanson Add environment variable of
** glide group so they can do wacky things safely.
** 30 3dfx 1.25.1.2.1.009/19/00 Matt McClure Added a call to win_mode.c
** to enable OpenGL.
** 29 3dfx 1.25.1.2 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 28 3dfx 1.25.1.1 06/20/00 Joseph Kain Changes to support the
@@ -1481,6 +1489,8 @@ _grValidateTMUState()
palletizedTexture = gc->state.palletizedTexture[0] | gc->state.palletizedTexture[1];
for(tmu = 0; tmu < gc->num_tmu; tmu++) {
tmuSource = tmu;
@@ -1618,7 +1628,8 @@ _grValidateTMUState()
/* Mark TMU state as valid. */
gc->state.tmuInvalid[tmu] = 0;
} else {
} else {
#if DEBUG_2PPC
GDBG_PRINTF("TMU%d not required by downstream units or passthrough enabled\n",tmu);
#endif
@@ -1785,6 +1796,7 @@ _grValidateTMUState()
} else {
#endif
/* Set LOD on TMU to 1x1. */
SstRegs* tmuHw = SST_TMU(hw, tmu);
@@ -1804,7 +1816,11 @@ _grValidateTMUState()
}
#endif
}
}
if(MultitextureAndTrilinear()) g3LodBiasPerChip();
}
#undef FN_NAME
}
@@ -2573,8 +2589,20 @@ GR_DIENTRY(grEnable, void , (GrEnableMode_t mode) )
}
break;
case GR_OPENGL_MODE_EXT:
/* Set up some stuff that's affected by OpenGL's behaviour. */
_GlideRoot.environment.sliBandHeightForce = FXTRUE;
{
#ifdef WIN32
/* EnableOpenGL - Win_Mode.c
** Allow minihwc to know about OpenGL
*/
void EnableOpenGL ( void );
EnableOpenGL();
/* setup env to determine whether we are an OGL app */
_GlideRoot.environment.is_opengl=FXTRUE;
#endif
/* Set up some stuff that's affected by OpenGL's behaviour. */
_GlideRoot.environment.sliBandHeightForce = FXTRUE;
}
break;
#endif
}
@@ -2641,6 +2669,9 @@ GR_DIENTRY(grDisable, void , (GrEnableMode_t mode) )
gc->state.grEnableArgs.stencil_mode = GR_MODE_DISABLE;
INVALIDATE(stencilMode);
break;
case GR_OPENGL_MODE_EXT:
_GlideRoot.environment.is_opengl=FXFALSE;
break;
#ifdef FX_GLIDE_NAPALM
case GR_AA_MULTI_SAMPLE:
{

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -1,24 +1,26 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
** $Header$
** $Log:
** 10 3dfx 1.4.1.3.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 9 3dfx 1.4.1.3 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 8 3dfx 1.4.1.2 06/20/00 Joseph Kain Changes to support the

View File

@@ -1,24 +1,25 @@
/*
** 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
** Copyright (c) 1995, 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 o
** duplicated in any form, in whole or in part, without the prior writte
** permission of 3Dfx Interactive, Inc
*
** RESTRICTED RIGHTS LEGEND
** Use, duplication or disclosure by the Government is subject to restriction
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Dat
** and Computer Software clause at DFARS 252.227-7013, and/or in similar o
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished
** rights reserved under the Copyright Laws of the United States
*
** $Header$
** $Log:
** 14 3dfx 1.8.1.2.1.1 10/11/00 Brent Forced check in to enforce
** branching.
** 13 3dfx 1.8.1.2.1.0 07/21/00 Adam Briggs don't try to bump > 0xffff
** at a time
** 12 3dfx 1.8.1.2 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 11 3dfx 1.8.1.1 06/20/00 Joseph Kain Changes to support the
@@ -683,7 +684,17 @@ _grBumpNGrind()
#else /* !HAL_CSIM */
FIFO_CACHE_FLUSH(gc->cmdTransportInfo.fifoPtr);
P6FENCE;
GR_CAGP_SET(bump, gc->cmdTransportInfo.fifoPtr - gc->cmdTransportInfo.lastBump);
/* AH FUK: the bump register can only handle a 16bit value */
while ((gc->cmdTransportInfo.fifoPtr - gc->cmdTransportInfo.lastBump) > 0xFFFFL)
{
GR_CAGP_SET(bump, 0xFFFFL);
gc->cmdTransportInfo.lastBump += 0xFFFFL ;
}
if (gc->cmdTransportInfo.fifoPtr - gc->cmdTransportInfo.lastBump)
GR_CAGP_SET(bump, gc->cmdTransportInfo.fifoPtr - gc->cmdTransportInfo.lastBump);
gc->cmdTransportInfo.lastBump = gc->cmdTransportInfo.fifoPtr;
gc->cmdTransportInfo.bumpPos = gc->cmdTransportInfo.fifoPtr + (gc->cmdTransportInfo.bumpSize);
if (gc->cmdTransportInfo.bumpPos > gc->cmdTransportInfo.fifoEnd)

View File

@@ -19,6 +19,8 @@
*
* $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.

View File

@@ -21,6 +21,8 @@
** $Revision$
** $Date$
** $Log:
** 7 3dfx 1.4.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 6 3dfx 1.4.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.

View File

@@ -1,21 +1,21 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
** $Revision$
** $Date$

View File

@@ -1,21 +1,21 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
** $Header: fxglide.h, 44, 6/15/2000 9:18:11 AM, Bill White
** $Log:
@@ -2003,6 +2003,7 @@ struct _GlideRoot_s {
FxBool texLodDither; /* Always do lod-dithering */
FxI32 tmuMemory; /* tmuMemory */
float gammaR, gammaG, gammaB; /* Gamma settings */
FxBool useAppGamma; /* enable(1)(default)/disable(0) application gamma control */
FxBool guardbandclipping; /* enable gbc */
FxI32 do2ppc; /* enable 2ppc */
FxU32 band2ppc; /* 2ppc band */
@@ -2015,6 +2016,7 @@ struct _GlideRoot_s {
FxI32 analogSli ; /* force digital or analog sli */
FxI32 lodBias; /* User-adjustable lod bias value (signed) */
FxU32 sliBandHeightForce; /* Force user-specified band height */
FxU32 is_opengl; /* specify whether we are opengl app or not */
FxU32 noHW; /* Disable HW writes */
/* Force alternate buffer strategy */
@@ -2030,8 +2032,8 @@ struct _GlideRoot_s {
FxU32 columnWidth; /* 'n' in columns of n */
/* Anti-aliasing default perturbation values */
FxU32 aaXOffset[4][4];
FxU32 aaYOffset[4][4];
FxU32 aaXOffset[10][8]; /* increase arrays for 8xaa */
FxU32 aaYOffset[10][8];
/* Limit number of writes between fences */
FxI32 fenceLimit;
} environment;
@@ -3147,5 +3149,9 @@ extern const FxU32 _gr_aspect_xlate_table[];
GrLOD_t
_g3LodXlat(const GrLOD_t someLOD, const FxBool tBig);
extern void g3LodBiasPerChip(void);
extern FxBool MultitextureAndTrilinear(void);
#endif /* __FXGLIDE_H__ */

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -81,6 +81,10 @@ typedef FxU32 GrPixelFormat_t;
#define GR_PIXFMT_AA_4_RGB_565 0x0009
#define GR_PIXFMT_AA_4_ARGB_1555 0x000a
#define GR_PIXFMT_AA_4_ARGB_8888 0x000b
#define GR_PIXFMT_AA_8_RGB_565 0x000c /* 8xaa */
#define GR_PIXFMT_AA_8_ARGB_1555 0x000d
#define GR_PIXFMT_AA_8_ARGB_8888 0x000e
#define GR_LFBWRITEMODE_Z32 0x0008

View File

@@ -19,6 +19,8 @@
**
** $Header$
** $Log:
** 5 3dfx 1.2.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 4 3dfx 1.2.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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -1,24 +1,28 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
** $Header$
** $Log:
** 11 3dfx 1.5.1.2.1.1 10/11/00 Brent Forced check in to enforce
** branching.
** 10 3dfx 1.5.1.2.1.0 07/10/00 troy thornton changed grDrawPoints to
** draw points in FSAA
** 9 3dfx 1.5.1.2 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 8 3dfx 1.5.1.1 06/20/00 Joseph Kain Changes to support the
@@ -431,6 +435,7 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
*/
#define kNumMantissaBits 12UL
const float bias = (const float)(3UL << kNumMantissaBits);
GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
@@ -495,13 +500,13 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
* triangle from the first packet sent.
*/
/* Mask off the real fractional bits from the mantissa */
/* Mask off the real fractional bits from the mantissa */
x = ((*(FxU32*)&gc->pool.ftemp1 & (0xFFFFFFFFUL << (22UL - kNumMantissaBits))) +
(0x01UL << (22UL - kNumMantissaBits)));
y = ((*(FxU32*)&gc->pool.ftemp2 & (0xFFFFFFFFUL << (22UL - kNumMantissaBits))) +
(0x01UL << (22UL - kNumMantissaBits)));
/* Lower right corner */
/* Lower right corner */
DA_SET(x);
DA_SET(y);
@@ -516,8 +521,8 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
/* Packet w/ actual point coordinate and parameter data */
DA_CONT(kSetupStrip | kSetupCullDisable, gc->cmdTransportInfo.paramMask,
1, gc->state.vData.vSize, SSTCP_PKT3_DDDDDD);
1, gc->state.vData.vSize, SSTCP_PKT3_DDDDDD);
i = gc->tsuDataList[dataElem];
DA_SET(x);
DA_SET(y);
@@ -540,7 +545,7 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
float *vPtr;
FxI32 k, i;
FxI32 vcount = count >= POINTS_BUFFER ? POINTS_BUFFER : count;
GR_SET_EXPECTED_SIZE((3*gc->state.vData.vSize) * vcount, vcount);
GR_SET_EXPECTED_SIZE((gc->state.vData.vSize << 2) * vcount, vcount);
/* begin points routine */
DA_BEGIN;
@@ -560,20 +565,23 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
FxU32 dataElem;
DA_CONT(kSetupStrip | kSetupCullDisable, gc->cmdTransportInfo.paramMask,
3, -1/*NOT USED*//*gc->state.vData.vSize * 3*/, SSTCP_PKT3_BDDDDD);
4, -1/*NOT USED*//*gc->state.vData.vSize * 3*/, SSTCP_PKT3_BDDDDD);
x = FARRAY(vPtr, gc->state.vData.vertexInfo.offset) + 0.5f;
y = FARRAY(vPtr, gc->state.vData.vertexInfo.offset + 4) + 0.5f;
x += lbias;
y += lbias;
/* Convert to 32-bit representation */
x = FARRAY(vPtr, gc->state.vData.vertexInfo.offset);
y = FARRAY(vPtr, gc->state.vData.vertexInfo.offset + 4);
x += .5f;
y += .5f;
x = x + lbias;
y = y + lbias;
x = x - lbias;
y = y - lbias;
gc->pool.ftemp1 = (const float)x;
gc->pool.ftemp2 = (const float)y;
/* Correct the bias to get rid of the fractional bits */
x = (volatile float)gc->pool.ftemp1 - lbias;
y = (volatile float)gc->pool.ftemp2 - lbias;
/* Lower right corner */
/* Lower right corner */
DA_SETF(x);
DA_SETF(y);
dataElem = 0;
@@ -589,8 +597,8 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
i = gc->tsuDataList[dataElem];
}
/* Upper right corner */
y -= .5f;
/* Upper right corner */
y -= 1.0f;
DA_SETF(x);
DA_SETF(y);
dataElem = 0;
@@ -601,12 +609,11 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
i = gc->tsuDataList[dataElem];
}
/* Upper Left corner */
x -= .5f;
/* Lower left corner */
y += 1.0f;
x -= 1.0f;
DA_SETF(x);
DA_SETF(y);
dataElem = 0;
i = gc->tsuDataList[dataElem];
while (i != GR_DLIST_END) {
@@ -614,7 +621,19 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
dataElem++;
i = gc->tsuDataList[dataElem];
}
}
/* Upper leftcorner */
y += 1.0f;
DA_SETF(x);
DA_SETF(y);
dataElem = 0;
i = gc->tsuDataList[dataElem];
while (i != GR_DLIST_END) {
DA_SET(ARRAY(vPtr, i));
dataElem++;
i = gc->tsuDataList[dataElem];
}
}
}
DA_END;
GR_CHECK_SIZE();
@@ -631,10 +650,11 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
float oow;
while (count > 0) {
float lbias = (float)( 3 << 22);
float *vPtr;
FxI32 k;
FxI32 vcount = count >= POINTS_BUFFER ? POINTS_BUFFER : count;
GR_SET_EXPECTED_SIZE(((sizeof(FxU32) << 2) + gc->state.vData.vSize) * vcount, vcount << 1);
GR_SET_EXPECTED_SIZE((gc->state.vData.vSize << 2) * vcount, vcount << 1);
/* begin points routine */
DA_BEGIN;
@@ -647,48 +667,59 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
oow = 1.0f / FARRAY(vPtr, gc->state.vData.wInfo.offset);
(float *)pointers += stride;
{
FxU32 x, y;
{
float fx, fy;
DA_CONT(kSetupStrip | kSetupCullDisable, 0x00,
0x02, sizeof(FxU32) << 1, SSTCP_PKT3_BDDDDD);
0x03, sizeof(FxU32) << 1, SSTCP_PKT3_BDDDDD);
/* Convert to 32-bit representation */
gc->pool.ftemp1 = (FARRAY(vPtr, gc->state.vData.vertexInfo.offset) *
oow *
gc->state.Viewport.hwidth +
gc->state.Viewport.ox +
bias);
gc->state.Viewport.ox +
0.5f);
gc->pool.ftemp2 = (FARRAY(vPtr, gc->state.vData.vertexInfo.offset + 4) *
oow *
gc->state.Viewport.hheight +
gc->state.Viewport.oy +
bias);
0.5f);
/* Mask off the real fractional bits from the mantissa */
x = ((*(FxU32*)&gc->pool.ftemp1 & (0xFFFFFFFFUL << (22UL - kNumMantissaBits))) +
(0x01UL << (22UL - kNumMantissaBits)));
y = ((*(FxU32*)&gc->pool.ftemp2 & (0xFFFFFFFFUL << (22UL - kNumMantissaBits))) +
(0x01UL << (22UL - kNumMantissaBits)));
/* Lower right cornder */
DA_SET(x);
DA_SET(y);
fx = gc->pool.ftemp1;
fy = gc->pool.ftemp2;
/* Upper right corner. */
y -= (0x01UL << (21UL - kNumMantissaBits));
DA_SET(x);
DA_SET(y);
gc->pool.ftemp1 += lbias;
gc->pool.ftemp2 += lbias;
fx = gc->pool.ftemp1 - lbias;
fy = gc->pool.ftemp2 - lbias;
/* Lower right corner */
DA_SETF(fx);
DA_SETF(fy);
/* Upper right corner. */
fy -= 1.0f;
DA_SETF(fx);
DA_SETF(fy);
/* Lower left corner */
fy += 1.0f;
fx -= 1.0f;
DA_SETF(fx);
DA_SETF(fy);
/* Upper Left corner */
x -= (0x01UL << (21UL - kNumMantissaBits));
/* Packet w/ actual point coordinate and parameter data */
DA_CONT(kSetupStrip | kSetupCullDisable, gc->cmdTransportInfo.paramMask,
1, gc->state.vData.vSize, SSTCP_PKT3_DDDDDD);
DA_SET(x);
DA_SET(y);
/*Upper left corner */
fy -= 1.0f;
DA_SETF(fx);
DA_SETF(fy);
DA_VP_SETFS(vPtr, oow);
}
}

View File

@@ -1,25 +1,27 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
**
** $Header$
** $Log:
** 6 3dfx 1.1.1.2.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 5 3dfx 1.1.1.2 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 4 3dfx 1.1.1.1 06/20/00 Joseph Kain Changes to support the

View File

@@ -1,25 +1,28 @@
/*
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
**
** $Header$
** $Log:
** 51 3dfx 1.41.1.6.1.110/11/00 Brent Forced check in to enforce
** branching.
** 50 3dfx 1.41.1.6.1.008/29/00 Jonny Cochrane Some 8x FSAA code
** 49 3dfx 1.41.1.6 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 48 3dfx 1.41.1.5 06/20/00 Joseph Kain Changes to support the
@@ -1816,12 +1819,7 @@ GR_ENTRY(grBufferClear, void, (GrColor_t color, GrAlpha_t alpha, FxU32 depth))
} else {
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3);
REG_GROUP_SET(hw, colBufferAddr, gc->buffers0[gc->windowed ? 0 : gc->curBuffer]);
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.colBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride,gc->state.shadow.colBufferStride);
REG_GROUP_END();
#ifdef FX_GLIDE_NAPALM
if (IS_NAPALM(gc->bInfo->pciInfo.deviceID)) {
@@ -2300,12 +2298,7 @@ GR_EXT_ENTRY(grBufferClearExt, void, (GrColor_t color, GrAlpha_t alpha, FxU32 de
/* tbext */
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3) ;
REG_GROUP_SET(hw, colBufferAddr, gc->state.shadow.auxBufferAddr) ;
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.auxBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.auxBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.auxBufferStride) ;
REG_GROUP_END() ;
#ifdef FX_GLIDE_NAPALM
@@ -2350,12 +2343,7 @@ GR_EXT_ENTRY(grBufferClearExt, void, (GrColor_t color, GrAlpha_t alpha, FxU32 de
} else {
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3) ;
REG_GROUP_SET(hw, colBufferAddr, gc->buffers0[gc->windowed ? 0 : gc->curBuffer]) ;
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.colBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride,gc->state.shadow.colBufferStride) ;
REG_GROUP_END() ;
#ifdef FX_GLIDE_NAPALM
@@ -5017,10 +5005,10 @@ GR_DDFUNC(_grACExtcombineMode, void, (GrACUColor_t a,
GR_EXT_ENTRY(grTBufferWriteMaskExt, void , (FxU32 tmask) )
{
#define FN_NAME "grTBufferWriteMaskExt"
FxU32 defaultXOffset0[4] = {0x7a, 0x2, 0x7c, 0x4};
FxU32 defaultYOffset0[4] = {0x7b, 0x4, 0x3, 0x7d};
FxU32 defaultXOffset1[4] = {0x2, 0x7a, 0x4, 0x7c};
FxU32 defaultYOffset1[4] = {0x4, 0x7b, 0x7d, 0x3};
/* increase arrays for 8xaa */
FxU32 defaultXOffset0[8] = {0x7a, 0x2, 0x7c, 0x4, 0x7a, 0x2, 0x7c, 0x4};
FxU32 defaultYOffset0[8] = {0x7b, 0x4, 0x3, 0x7d, 0x7a, 0x2, 0x7c, 0x4};
FxU32 chipIndex, chipEnList, i;
GR_BEGIN_NOFIFOCHECK("grTBufferWriteMaskExt",85);
GDBG_INFO_MORE(gc->myLevel, "(0x%x)\n", tmask);
@@ -5038,12 +5026,12 @@ GR_EXT_ENTRY(grTBufferWriteMaskExt, void , (FxU32 tmask) )
}
/* This is sortof slow, but this function doesn't need to be that fast. */
for(i = 0; i < 4; i++) {
/* 8xaa - loop to load 8 sample offsets */
for(i = 0; i < 8; i++) {
defaultXOffset0[i] = _GlideRoot.environment.aaXOffset[gc->grPixelSample - 1][i];
defaultYOffset0[i] = _GlideRoot.environment.aaYOffset[gc->grPixelSample - 1][i];
defaultXOffset1[i] = _GlideRoot.environment.aaXOffset[gc->grPixelSample - 1][i^1];
defaultYOffset1[i] = _GlideRoot.environment.aaYOffset[gc->grPixelSample - 1][i^1];
}
chipEnList = gc->chipmask;
for (chipIndex = 0; chipIndex < gc->chipCount; chipIndex++) {
@@ -5068,12 +5056,7 @@ GR_EXT_ENTRY(grTBufferWriteMaskExt, void , (FxU32 tmask) )
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 4, 0xf);
{
REG_GROUP_SET(hw, colBufferAddr, gc->state.shadow.colBufferAddr);
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.colBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride);
REG_GROUP_SET(hw, auxBufferAddr, gc->state.shadow.auxBufferAddr);
REG_GROUP_SET(hw, auxBufferStride, gc->state.shadow.auxBufferStride);
}
@@ -5093,12 +5076,7 @@ GR_EXT_ENTRY(grTBufferWriteMaskExt, void , (FxU32 tmask) )
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 4, 0xf);
{
REG_GROUP_SET(hw, colBufferAddr, gc->state.shadow.colBufferAddr);
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.colBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride);
REG_GROUP_SET(hw, auxBufferAddr, gc->state.shadow.auxBufferAddr);
REG_GROUP_SET(hw, auxBufferStride, gc->state.shadow.auxBufferStride);
}
@@ -5116,12 +5094,7 @@ GR_EXT_ENTRY(grTBufferWriteMaskExt, void , (FxU32 tmask) )
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 4, 0xf);
{
REG_GROUP_SET(hw, colBufferAddr, gc->state.shadow.colBufferAddr);
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.colBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride);
REG_GROUP_SET(hw, auxBufferAddr, gc->state.shadow.auxBufferAddr);
REG_GROUP_SET(hw, auxBufferStride, gc->state.shadow.auxBufferStride);
}
@@ -5129,12 +5102,7 @@ GR_EXT_ENTRY(grTBufferWriteMaskExt, void , (FxU32 tmask) )
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 4, 0xf);
{
REG_GROUP_SET(hw, colBufferAddr, gc->buffers1[gc->curBuffer] | SST_BUFFER_BASE_SELECT);
#ifdef __linux__
REG_GROUP_SET(hw, colBufferStride, (!gc->curBuffer) ? driInfo.stride :
gc->state.shadow.colBufferStride );
#else
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride );
#endif
REG_GROUP_SET(hw, colBufferStride, gc->state.shadow.colBufferStride);
REG_GROUP_SET(hw, auxBufferAddr, gc->buffers1[gc->grColBuf] | SST_BUFFER_BASE_SELECT);
REG_GROUP_SET(hw, auxBufferStride, gc->state.shadow.auxBufferStride);
}

View File

@@ -1,24 +1,31 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
** $Header$
** $Log:
** 14 3dfx 1.7.1.2.1.2 10/11/00 Brent Forced check in to enforce
** branching.
** 13 3dfx 1.7.1.2.1.1 08/29/00 Jonny Cochrane Some 8x FSAA code
** 12 3dfx 1.7.1.2.1.0 08/08/00 Andy Hanson Fix in grLfbReadRegion for
** 32 bit surfaces. If 32 bit is forced, and game isn't aware, we could
** overflow the destination buffer now. but it wouldn't look right anyways.
** Will add FX_GLIDE_LFB_OVERFLOW evar if a problem arises.
** 11 3dfx 1.7.1.2 06/20/00 Joseph Kain Fixed errors introduced by
** my previous merge.
** 10 3dfx 1.7.1.1 06/20/00 Joseph Kain Changes to support the
@@ -419,18 +426,21 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
case GR_PIXFMT_ARGB_1555:
case GR_PIXFMT_AA_2_ARGB_1555:
case GR_PIXFMT_AA_4_ARGB_1555:
case GR_PIXFMT_AA_8_ARGB_1555: /* 8xaa */
fbMode = GR_LFBWRITEMODE_1555;
depthMode = GR_LFBWRITEMODE_ZA16;
break;
case GR_PIXFMT_ARGB_8888:
case GR_PIXFMT_AA_2_ARGB_8888:
case GR_PIXFMT_AA_4_ARGB_8888:
case GR_PIXFMT_AA_8_ARGB_8888: /* 8xaa */
fbMode = GR_LFBWRITEMODE_8888;
depthMode = GR_LFBWRITEMODE_Z32;
break;
case GR_PIXFMT_RGB_565:
case GR_PIXFMT_AA_2_RGB_565:
case GR_PIXFMT_AA_4_RGB_565:
case GR_PIXFMT_AA_8_RGB_565: /* 8xaa */
default:
fbMode = GR_LFBWRITEMODE_565;
depthMode = GR_LFBWRITEMODE_ZA16;
@@ -483,18 +493,21 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
case GR_PIXFMT_ARGB_1555:
case GR_PIXFMT_AA_2_ARGB_1555:
case GR_PIXFMT_AA_4_ARGB_1555:
case GR_PIXFMT_AA_8_ARGB_1555: /* 8xaa */
fbMode = GR_LFBWRITEMODE_1555;
depthMode = GR_LFBWRITEMODE_ZA16;
break;
case GR_PIXFMT_ARGB_8888:
case GR_PIXFMT_AA_2_ARGB_8888:
case GR_PIXFMT_AA_4_ARGB_8888:
case GR_PIXFMT_AA_8_ARGB_8888: /* 8xaa */
fbMode = GR_LFBWRITEMODE_8888;
depthMode = GR_LFBWRITEMODE_Z32;
break;
case GR_PIXFMT_RGB_565:
case GR_PIXFMT_AA_2_RGB_565:
case GR_PIXFMT_AA_4_RGB_565:
case GR_PIXFMT_AA_8_RGB_565: /* 8xaa */
default:
fbMode = GR_LFBWRITEMODE_565;
depthMode = GR_LFBWRITEMODE_ZA16;
@@ -591,7 +604,7 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
/* Get the current lfb buffer */
{
/* FixMe: Is this true if we're triple buffering? */
FxU32 colBufferIndex = 0;
FxU32 colBufferIndex;
switch(buffer) {
case GR_BUFFER_FRONTBUFFER:
@@ -631,17 +644,15 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
if (rv) {
#ifdef __linux__
if (!colBufferIndex) {
info->strideInBytes = driInfo.stride;
} else {
info->strideInBytes = gc->bInfo->buffInfo.bufLfbStride;
}
if (!colBufferIndex)
info->strideInBytes = driInfo.stride;
else
info->strideInBytes = 0x1000; /* This is the default for 3D LFBs,
* which are always 2048
pixels wide. */
#else /* defined(__linux__) */
/*
* This is the default for 3D LFBs,
* which are always 2048 pixels wide.
*/
info->strideInBytes = 0x1000;
info->strideInBytes = 0x1000; /* This is the default for 3D LFBs,
* which are always 2048 pixels wide. */
#endif /* defined(__linux__) */
info->origin = origin;
@@ -684,19 +695,12 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
info->strideInBytes = gc->textureBuffer.stride ;
}
#endif
#endif
else {
#ifdef __linux__
/*
* For Linux, we just return the correct address and
* stride.
*/
info->strideInBytes = gc->bInfo->buffInfo.bufLfbStride;
info->lfbPtr = (void *)gc->lfbBuffers[colBufferIndex];
#else /* defined(__linux__) */
info->lfbPtr = (void *)gc->lfb_ptr;
#endif /* defined(__linux__) */
#ifndef __linux__
#ifdef __linux__
info->strideInBytes = 0x1000;
#endif /* defined(__linux__) */
switch (writeMode) {
case GR_LFBWRITEMODE_565_DEPTH:
case GR_LFBWRITEMODE_555_DEPTH:
@@ -707,7 +711,6 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
info->strideInBytes <<= 1;
break;
}
#endif /* defined(__linux__) */
}
REG_GROUP_BEGIN(BROADCAST_ID, colBufferAddr, 2, 0x3);
REG_GROUP_SET(hw, colBufferAddr, gc->textureBuffer.addr );
@@ -716,15 +719,7 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
} else /* else !gc->textureBuffer.on */ {
if (type == GR_LFB_READ_ONLY) {
info->lfbPtr = (void *)gc->lfbBuffers[colBufferIndex];
#if defined(__linux__)
if (colBufferIndex == 0) {
info->strideInBytes = driInfo.stride;
} else {
info->strideInBytes = gc->bInfo->buffInfo.bufLfbStride;
}
#else /* defined(__linux__) */
info->strideInBytes = gc->bInfo->buffInfo.bufLfbStride;
#endif /* defined(__linux__) */
#if __POWERPC__
if(IS_NAPALM(gc->bInfo->pciInfo.deviceID)) {
if(gc->grPixelSize == 2) {
@@ -774,18 +769,8 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
/* Make sure dither rotation is disabled for 3D LFBs. */
_3dlfb = FXTRUE;
#if defined(__linux__)
/*
* For Linux, we just return the correct address and
* stride.
*/
info->strideInBytes = gc->bInfo->buffInfo.bufLfbStride;
info->lfbPtr = (void *)gc->lfbBuffers[colBufferIndex];
#else /* defined(__linux__) */
info->lfbPtr = (void *)gc->lfb_ptr;
#endif /* defined(__linux__) */
#ifndef __linux__
switch (writeMode) {
case GR_LFBWRITEMODE_565_DEPTH:
case GR_LFBWRITEMODE_555_DEPTH:
@@ -796,7 +781,6 @@ GR_ENTRY(grLfbLock, FxBool,(GrLock_t type, GrBuffer_t buffer,
info->strideInBytes <<= 1;
break;
}
#endif /* defined(__linux__) */
}
}
@@ -1266,6 +1250,91 @@ GR_ENTRY(grLfbWriteRegion, FxBool, (GrBuffer_t dst_buffer,
FXTRUE - success
FXFALSE - failure
-------------------------------------------------------------------*/
#if !__POWERPC__
GR_ENTRY(grLfbReadRegion, FxBool, (GrBuffer_t src_buffer,
FxU32 src_x, FxU32 src_y,
FxU32 src_width, FxU32 src_height,
FxU32 dst_stride, void *dst_data))
{
#define FN_NAME "grLfbReadRegion"
FxU32 bpp;
FxBool rv;
GrLfbInfo_t info;
GR_BEGIN_NOFIFOCHECK_RET("grLfbReadRegion",82);
GDBG_INFO_MORE(gc->myLevel,
"(0x%x,%d,%d,%d,%d,%d,0x%x)\n",
src_buffer, src_x, src_y,
src_width, src_height, dst_stride, dst_data);
bpp=gc->bInfo->h3pixelSize;
info.size = sizeof(info);
if (!src_width)
{
rv=FXTRUE;
goto done;
}
rv=FXFALSE;
if (grLfbLock(GR_LFB_READ_ONLY,
src_buffer,
GR_LFBWRITEMODE_ANY,
GR_ORIGIN_UPPER_LEFT,
FXFALSE,
&info))
{
FxU32 *src,*dst;
FxI32 length,scanline;
FxU32 src_adjust,dst_adjust,tmp;
src=(FxU32 *) (((char*)info.lfbPtr)+
(src_y*info.strideInBytes) + (src_x * bpp));
dst=dst_data;
scanline=src_height;
/* set length - alignment fix*/
tmp=(((FxU32)src)&2);
length=src_width * bpp - tmp;
src_adjust=info.strideInBytes - tmp;
dst_adjust=dst_stride - tmp;
/* should be endian and pixel size safe */
/* it would be nice to test if quad blocks were faster */
/* like mmx loads and stores */
while(src_height--)
{
/* adjust starting alignment */
if (((FxU32)src)&3)
*((FxU16 *)dst)++=*((FxU16 *)src)++;
/* read in dwords of pixels */
if(length)
{
FxU32 byte_index=0;
FxU32 aligned=length&(~3);
/* copies aligned dwords */
do
{
*((FxU32 *)(((FxU32)dst) + byte_index))=*((FxU32 *)(((FxU32)src) + byte_index));
}while((byte_index+=4)<aligned);
/* handle backend misalignment */
if (byte_index!=(FxU32)length)
*((FxU16 *)(((FxU32)dst) + byte_index))=*((FxU16 *)(((FxU32)src) + byte_index));
}
/* adjust for next line */
((FxU8 *)src)+=src_adjust;
((FxU8 *)dst)+=dst_adjust;
}
rv=FXTRUE;
/* unlock buffer */
grLfbUnlock(GR_LFB_READ_ONLY,src_buffer);
}
done:
GR_RETURN(rv);
}
#else /* if __POWERPC__ */
GR_ENTRY(grLfbReadRegion, FxBool, (GrBuffer_t src_buffer,
FxU32 src_x, FxU32 src_y,
FxU32 src_width, FxU32 src_height,
@@ -1401,4 +1470,5 @@ GR_ENTRY(grLfbReadRegion, FxBool, (GrBuffer_t src_buffer,
GR_RETURN(rv);
#undef FN_NAME
}/* grLfbReadRegion */
#endif /* if __POWERPC__ */

View File

@@ -613,6 +613,9 @@ grSstWinOpen(
FX_ENTRY FxBool FX_CALL
grSstWinClose( GrContext_t context );
FX_ENTRY void FX_CALL
grSetNumPendingBuffers(FxI32 NumPendingBuffers);
FX_ENTRY FxBool FX_CALL
grSelectContext( GrContext_t context );

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -1,24 +1,37 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
** $Header$
** $Log:
** 44 3dfx 1.34.1.2.1.511/08/00 Drew McMinn Create initialise read and
** use useAppGamma flag, to allow us to disable applications changing gamma
** values.
** 43 3dfx 1.34.1.2.1.410/11/00 Brent Forced check in to enforce
** branching.
** 42 3dfx 1.34.1.2.1.309/26/00 Andy Hanson Add environment variable of
** glide group so they can do wacky things safely.
** 41 3dfx 1.34.1.2.1.208/29/00 Jonny Cochrane Some 8x FSAA code
** 40 3dfx 1.34.1.2.1.108/01/00 Andy Hanson Fixed issue with source
** ignoring setting of GLIDE_SPLASH define.
** Fixed issue with setting of splash state when it wasn't going to be run.
** 39 3dfx 1.34.1.2.1.006/28/00 troy thornton added initialization of
** correct jitter values
** 38 3dfx 1.34.1.2 06/20/00 Joseph Kain Fixed errors introduced in
** merge.
** 37 3dfx 1.34.1.1 06/20/00 Joseph Kain Changes to support the
@@ -1219,13 +1232,21 @@ _GlideInitEnvironment(void)
(((envStr = GETENV(__envVar)) == NULL) ? (__defVal) : atol(envStr))
#define GLIDE_FGETENV(__envVar, __defVal) \
(((envStr = GETENV(__envVar)) == NULL) ? (__defVal) : (float) atof(envStr))
#define GLIDE_34GETENV(__envVar, __defVal) \
(((signed char)(atof(((envStr = GETENV(__envVar)) == NULL) ? (__defVal) : (envStr))*16.0f)+8)&0x7f)
#ifdef GLIDE_TEST_TEXTURE_ALIGNMENT
SST_TEXTURE_ALIGN = GLIDE_GETENV("FX_GLIDE_TEX_ALIGN", 0x10UL);
#endif
_GlideRoot.environment.triBoundsCheck = GETENV("FX_GLIDE_BOUNDS_CHECK") != NULL;
GDBG_INFO(80," triBoundsCheck: %d\n",_GlideRoot.environment.triBoundsCheck);
#ifdef GLIDE_SPLASH
_GlideRoot.environment.noSplash = GETENV("FX_GLIDE_NO_SPLASH") != NULL;
#else
_GlideRoot.environment.noSplash = 1;
#endif
GDBG_INFO(80," noSplash: %d\n",_GlideRoot.environment.noSplash);
_GlideRoot.environment.shamelessPlug = GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL;
GDBG_INFO(80," shamelessPlug: %d\n",_GlideRoot.environment.shamelessPlug);
@@ -1238,38 +1259,159 @@ _GlideInitEnvironment(void)
_GlideRoot.environment.noHW = GETENV("FX_GLIDE_NO_HW") != NULL;
GDBG_INFO(80," noHW: %d\n",_GlideRoot.environment.noHW);
/* This is the "old" way of doing two-sample AA, where each chip does two samples. */
_GlideRoot.environment.aaXOffset[1][0] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[1][1] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[1][2] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[1][3] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF_VAL);
/* set default glide state to not openGL app */
_GlideRoot.environment.is_opengl=FXFALSE;
_GlideRoot.environment.aaYOffset[1][0] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[1][1] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[1][2] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[1][3] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF_VAL);
/* note - glide now uses a string representation for the AA jitter values */
/* This is the "old" way of doing two-sample AA, where each chip does two samples. */
_GlideRoot.environment.aaXOffset[1][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaXOffset[1][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaXOffset[1][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaXOffset[1][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[1][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[1][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[1][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[1][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF);
/* This is a nasty evil hack! This rearranges the sample offsets to deal with the new way of doing two sample AA */
_GlideRoot.environment.aaXOffset[2][0] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[2][1] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[2][2] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[2][3] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF_VAL);
_GlideRoot.environment.aaXOffset[2][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaXOffset[2][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaXOffset[2][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaXOffset[2][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[2][0] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[2][1] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[2][2] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[2][3] = GLIDE_GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF_VAL);
_GlideRoot.environment.aaYOffset[2][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[2][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[2][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF);
_GlideRoot.environment.aaYOffset[2][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_DEF);
/* This is the "normal" layout for 4-sample AA */
_GlideRoot.environment.aaXOffset[3][0] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_X0",PRIBUFVTXOFFX_4SMPL_CHP0_DEF_VAL);
_GlideRoot.environment.aaXOffset[3][1] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_X1",SECBUFVTXOFFX_4SMPL_CHP0_DEF_VAL);
_GlideRoot.environment.aaXOffset[3][2] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_X2",PRIBUFVTXOFFX_4SMPL_CHP1_DEF_VAL);
_GlideRoot.environment.aaXOffset[3][3] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_X3",SECBUFVTXOFFX_4SMPL_CHP1_DEF_VAL);
_GlideRoot.environment.aaXOffset[3][0] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X0",PRIBUFVTXOFFX_4SMPL_CHP0_DEF);
_GlideRoot.environment.aaXOffset[3][1] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X1",SECBUFVTXOFFX_4SMPL_CHP0_DEF);
_GlideRoot.environment.aaXOffset[3][2] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X2",PRIBUFVTXOFFX_4SMPL_CHP1_DEF);
_GlideRoot.environment.aaXOffset[3][3] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X3",SECBUFVTXOFFX_4SMPL_CHP1_DEF);
_GlideRoot.environment.aaYOffset[3][0] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_Y0",PRIBUFVTXOFFY_4SMPL_CHP0_DEF_VAL);
_GlideRoot.environment.aaYOffset[3][1] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_Y1",SECBUFVTXOFFY_4SMPL_CHP0_DEF_VAL);
_GlideRoot.environment.aaYOffset[3][2] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_Y2",PRIBUFVTXOFFY_4SMPL_CHP1_DEF_VAL);
_GlideRoot.environment.aaYOffset[3][3] = GLIDE_GETENV("FX_GLIDE_AA4_OFFSET_Y3",SECBUFVTXOFFY_4SMPL_CHP1_DEF_VAL);
_GlideRoot.environment.aaYOffset[3][0] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y0",PRIBUFVTXOFFY_4SMPL_CHP0_DEF);
_GlideRoot.environment.aaYOffset[3][1] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y1",SECBUFVTXOFFY_4SMPL_CHP0_DEF);
_GlideRoot.environment.aaYOffset[3][2] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y2",PRIBUFVTXOFFY_4SMPL_CHP1_DEF);
_GlideRoot.environment.aaYOffset[3][3] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y3",SECBUFVTXOFFY_4SMPL_CHP1_DEF);
/* these are the correct jitter vaules */
_GlideRoot.environment.aaXOffset[4][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][4] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][5] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][6] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[4][7] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][4] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][5] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][6] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[4][7] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][4] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][5] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X0",PRIBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][6] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[5][7] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_X1",SECBUFVTXOFFX_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][0] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][1] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][2] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][3] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][4] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][5] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y0",PRIBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][6] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[5][7] = GLIDE_34GETENV("FX_GLIDE_AA2_OFFSET_Y1",SECBUFVTXOFFY_2SMPL_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][0] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X0",PRIBUFVTXOFFX_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][1] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X1",SECBUFVTXOFFX_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][2] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X2",PRIBUFVTXOFFX_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][3] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X3",SECBUFVTXOFFX_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][4] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X0",PRIBUFVTXOFFX_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][5] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X1",SECBUFVTXOFFX_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][6] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X2",PRIBUFVTXOFFX_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaXOffset[6][7] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_X3",SECBUFVTXOFFX_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][0] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y0",PRIBUFVTXOFFY_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][1] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y1",SECBUFVTXOFFY_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][2] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y2",PRIBUFVTXOFFY_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][3] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y3",SECBUFVTXOFFY_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][4] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y0",PRIBUFVTXOFFY_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][5] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y1",SECBUFVTXOFFY_4SMPL_CHP0_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][6] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y2",PRIBUFVTXOFFY_4SMPL_CHP1_CORRECT_DEF);
_GlideRoot.environment.aaYOffset[6][7] = GLIDE_34GETENV("FX_GLIDE_AA4_OFFSET_Y3",SECBUFVTXOFFY_4SMPL_CHP1_CORRECT_DEF);
/* jcochrane 4 chip offsets */
/* 4chip 2xaa */
_GlideRoot.environment.aaXOffset[7][0] = 0x04;
_GlideRoot.environment.aaXOffset[7][1] = 0x00;
_GlideRoot.environment.aaXOffset[7][2] = 0x0c;
_GlideRoot.environment.aaXOffset[7][3] = 0x00;
_GlideRoot.environment.aaXOffset[7][4] = 0x04;
_GlideRoot.environment.aaXOffset[7][5] = 0x00;
_GlideRoot.environment.aaXOffset[7][6] = 0x0c;
_GlideRoot.environment.aaXOffset[7][7] = 0x00;
_GlideRoot.environment.aaYOffset[7][0] = 0x04;
_GlideRoot.environment.aaYOffset[7][1] = 0x00;
_GlideRoot.environment.aaYOffset[7][2] = 0x0c;
_GlideRoot.environment.aaYOffset[7][3] = 0x00;
_GlideRoot.environment.aaYOffset[7][4] = 0x04;
_GlideRoot.environment.aaYOffset[7][5] = 0x00;
_GlideRoot.environment.aaYOffset[7][6] = 0x0c;
_GlideRoot.environment.aaYOffset[7][7] = 0x00;
/* 4chip 4xaa */
_GlideRoot.environment.aaXOffset[8][0] = 0x06;
_GlideRoot.environment.aaXOffset[8][1] = 0x00;
_GlideRoot.environment.aaXOffset[8][2] = 0x0e;
_GlideRoot.environment.aaXOffset[8][3] = 0x00;
_GlideRoot.environment.aaXOffset[8][4] = 0x02;
_GlideRoot.environment.aaXOffset[8][5] = 0x00;
_GlideRoot.environment.aaXOffset[8][6] = 0x0a;
_GlideRoot.environment.aaXOffset[8][7] = 0x00;
_GlideRoot.environment.aaYOffset[8][0] = 0x02;
_GlideRoot.environment.aaYOffset[8][1] = 0x00;
_GlideRoot.environment.aaYOffset[8][2] = 0x06;
_GlideRoot.environment.aaYOffset[8][3] = 0x00;
_GlideRoot.environment.aaYOffset[8][4] = 0x0a;
_GlideRoot.environment.aaYOffset[8][5] = 0x00;
_GlideRoot.environment.aaYOffset[8][6] = 0x0e;
_GlideRoot.environment.aaYOffset[8][7] = 0x00;
/* 4chip 8xaa */
_GlideRoot.environment.aaXOffset[9][0] = 0x06;
_GlideRoot.environment.aaXOffset[9][1] = 0x04;
_GlideRoot.environment.aaXOffset[9][2] = 0x0e;
_GlideRoot.environment.aaXOffset[9][3] = 0x0a;
_GlideRoot.environment.aaXOffset[9][4] = 0x02;
_GlideRoot.environment.aaXOffset[9][5] = 0x0c;
_GlideRoot.environment.aaXOffset[9][6] = 0x0a;
_GlideRoot.environment.aaXOffset[9][7] = 0x06;
_GlideRoot.environment.aaYOffset[9][0] = 0x02;
_GlideRoot.environment.aaYOffset[9][1] = 0x06;
_GlideRoot.environment.aaYOffset[9][2] = 0x06;
_GlideRoot.environment.aaYOffset[9][3] = 0x04;
_GlideRoot.environment.aaYOffset[9][4] = 0x0a;
_GlideRoot.environment.aaYOffset[9][5] = 0x0a;
_GlideRoot.environment.aaYOffset[9][6] = 0x0e;
_GlideRoot.environment.aaYOffset[9][7] = 0x0c;
/*
* AJB- Support the slightly silly way the DirectX gang controls
@@ -1279,13 +1421,14 @@ _GlideInitEnvironment(void)
* Here is a breakdown of the bizarre table of magic numbers:
*
* 0 - SLI & AA disable
* 1 - SLI disabled, 2 sample AA enabled
* 2 - 2-way SLI enabled, AA disabled
* 3 - 2-way SLI enabled, 2 sample AA enabled
* 4 - SLI disabled, 4 sample AA enabled
* 5 - 4-way SLI enabled, AA disabled
* 6 - 4-way SLI enabled, 2 sample AA enabled
* 1 - SLI disabled, 2 sample AA enabled
* 2 - 2-way SLI enabled, AA disabled
* 3 - 2-way SLI enabled, 2 sample AA enabled
* 4 - SLI disabled, 4 sample AA enabled
* 5 - 4-way SLI enabled, AA disabled
* 6 - 4-way SLI enabled, 2 sample AA enabled
* 7 - 2-way SLI enabled, 4 sample AA enabled
* 8 - SLI disabled, 8 sample AA enabled
*
* to add to the silliness:
*
@@ -1314,6 +1457,10 @@ _GlideInitEnvironment(void)
case 4:
case 7:
_GlideRoot.environment.aaSample = 4 ;
break;
//8xaa
case 8:
_GlideRoot.environment.aaSample = 8 ;
break ;
default:
@@ -1421,6 +1568,8 @@ _GlideInitEnvironment(void)
_GlideRoot.environment.gammaR = GLIDE_FGETENV("SSTH3_RGAMMA", -1.f);
_GlideRoot.environment.gammaG = GLIDE_FGETENV("SSTH3_GGAMMA", -1.f);
_GlideRoot.environment.gammaB = GLIDE_FGETENV("SSTH3_BGAMMA", -1.f);
_GlideRoot.environment.useAppGamma = GLIDE_GETENV("FX_GLIDE_USE_APP_GAMMA", 1L);
_GlideRoot.CPUType = GLIDE_GETENV("FX_CPU", _cpu_detect_asm() );
GDBG_INFO(0," cpu: 0x%x\n",_GlideRoot.CPUType);

View File

@@ -19,6 +19,8 @@
**
** $Header$
** $Log:
** 20 3dfx 1.17.1.0.1.010/11/00 Brent Forced check in to enforce
** branching.
** 19 3dfx 1.17.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.

View File

@@ -19,6 +19,8 @@
**
** $Header$
** $Log:
** 4 3dfx 1.1.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 3 3dfx 1.1.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.

View File

@@ -19,6 +19,8 @@
**
** $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.

File diff suppressed because it is too large Load Diff

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,13 @@
**
** $Header$
** $Log:
** 39 3dfx 1.34.1.0.1.211/14/00 Jonny Cochrane Implement multisample LOD
** Dithering for 2x and 4x FSAA modes
** 38 3dfx 1.34.1.0.1.110/11/00 Brent Forced check in to enforce
** branching.
** 37 3dfx 1.34.1.0.1.007/11/00 Adam Briggs fixed a state management
** bug where using the constant color extension was inadvertently turning on
** chroma range substitution
** 36 3dfx 1.34.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.
@@ -1028,6 +1035,9 @@ GR_ENTRY(grTexClampMode, void,
} else {
INVALIDATE_TMU(tmu, textureMode);
}
if(MultitextureAndTrilinear()) g3LodBiasPerChip();
GR_END();
#undef FN_NAME
@@ -1797,6 +1807,15 @@ GR_EXT_ENTRY(grTexColorCombineExt, void,
if(gc->state.tac_requires_constant_color[tmu] || gc->state.tcc_requires_constant_color[tmu])
combineMode |= SST_CM_DISABLE_CHROMA_SUBSTITUTION;
/*
* AJB- If we are either turning on or turning off constant color
* combining, validateState will need to swap the values in
* chromaRange & chromaKey.
*/
if ((combineMode & SST_CM_DISABLE_CHROMA_SUBSTITUTION) !=
(gc->state.tmuShadow[tmu].combineMode & SST_CM_DISABLE_CHROMA_SUBSTITUTION))
INVALIDATE_TMU(tmu, texchroma) ;
/* Update shadows */
INVALIDATE_TMU(tmu, textureMode);
gc->state.tmuShadow[tmu].tLOD = tLod;
@@ -2151,6 +2170,15 @@ GR_EXT_ENTRY(grTexAlphaCombineExt, void,
if(gc->state.tac_requires_constant_color[tmu] || gc->state.tcc_requires_constant_color[tmu])
combineMode |= SST_CM_DISABLE_CHROMA_SUBSTITUTION;
/*
* AJB- If we are either turning on or turning off constant color
* combining, validateState will need to swap the values in
* chromaRange & chromaKey.
*/
if ((combineMode & SST_CM_DISABLE_CHROMA_SUBSTITUTION) !=
(gc->state.tmuShadow[tmu].combineMode & SST_CM_DISABLE_CHROMA_SUBSTITUTION))
INVALIDATE_TMU(tmu, texchroma) ;
/* Update shadows */
INVALIDATE_TMU(tmu, textureMode);
gc->state.tmuShadow[tmu].tLOD = tLod;
@@ -2180,6 +2208,12 @@ GR_EXT_ENTRY(grTexAlphaCombineExt, void,
/*---------------------------------------------------------------------------
** grConstantColorValueExt
**
** A sad, sad story:
**
** Whoever designed this api extension overlooked the fact that there are two
** constant color inputs into the color combiner where here we only set one.
** (actually we set them both to the same thing, but in effect we only set one).
*/
GR_EXT_ENTRY(grConstantColorValueExt, void,
(GrChipID_t tmu,
@@ -2260,6 +2294,7 @@ GR_ENTRY(grTexFilterMode, void,
INVALIDATE_TMU(tmu, textureMode);
}
GR_END();
#undef FN_NAME
} /* grTexFilterMode */
@@ -2274,40 +2309,44 @@ GR_ENTRY(grTexLodBiasValue, void,
#define FN_NAME "grTexLodBiasValue"
FxU32 tLod;
FxI32 lodBias;
GR_BEGIN_NOFIFOCHECK("grTexLodBiasValue",88);
GDBG_INFO_MORE(gc->myLevel,"(%d,%g)\n",tmu,fvalue);
GR_CHECK_TMU(FN_NAME, tmu);
tLod = gc->state.tmuShadow[tmu].tLOD;
tLod &= ~(SST_LODBIAS);
lodBias = _grTexFloatLODToFixedLOD(fvalue);
/* Sign extend it. */
lodBias = ((lodBias << (32-6)) >> (32-6));
lodBias += _GlideRoot.environment.lodBias;
if(lodBias > 0x1f) lodBias = 0x1f;
if(lodBias < -0x20) lodBias = -0x20;
/* Mask it back off. */
lodBias &= 0x3f;
tLod |= lodBias << SST_LODBIAS_SHIFT;
gc->state.tmuShadow[tmu].tLOD = tLod;
tLod = gc->state.tmuShadow[tmu].tLOD;
tLod &= ~(SST_LODBIAS);
lodBias = _grTexFloatLODToFixedLOD(fvalue);
/* Sign extend it. */
lodBias = ((lodBias << (32-6)) >> (32-6));
lodBias += _GlideRoot.environment.lodBias;
if(lodBias > 0x1f) lodBias = 0x1f;
if(lodBias < -0x20) lodBias = -0x20;
/* Mask it back off. */
lodBias &= 0x3f;
tLod |= lodBias << SST_LODBIAS_SHIFT;
/* Update real shadows and update hardware immediately if we can. */
if(!gc->state.mode2ppc || (tmu == gc->state.mode2ppcTMU)) {
SstRegs* tmuHw = SST_TMU(hw, tmu);
gc->state.tmuShadow[tmu].tLOD = tLod;
/* Update real shadows and update hardware immediately if we can. */
if(!gc->state.mode2ppc || (tmu == gc->state.mode2ppcTMU)) {
SstRegs* tmuHw = SST_TMU(hw, tmu);
gc->state.shadow.tmuState[tmu].tLOD = tLod;
_grChipMask( SST_CHIP_MASK_ALL_CHIPS );
REG_GROUP_BEGIN((0x02 << tmu), tLOD, 1, 0x1);
{
REG_GROUP_SET(tmuHw, tLOD, gc->state.shadow.tmuState[tmu].tLOD);
}
REG_GROUP_END();
_grChipMask( gc->chipmask );
} else {
INVALIDATE_TMU(tmu, textureMode);
}
gc->state.shadow.tmuState[tmu].tLOD = tLod;
_grChipMask( SST_CHIP_MASK_ALL_CHIPS );
REG_GROUP_BEGIN((0x02 << tmu), tLOD, 1, 0x1);
{
REG_GROUP_SET(tmuHw, tLOD, gc->state.shadow.tmuState[tmu].tLOD);
}
REG_GROUP_END();
_grChipMask( gc->chipmask );
} else {
INVALIDATE_TMU(tmu, textureMode);
}
if(MultitextureAndTrilinear()) g3LodBiasPerChip();
GR_END();
#undef FN_NAME
@@ -2437,6 +2476,7 @@ GR_ENTRY(grTexMipMapMode, void,
gc->state.tmuShadow[tmu].tLOD = tLod;
gc->state.tmuShadow[tmu].textureMode = texMode;
/* Update real shadows and update hardware immediately if we can. */
if(!gc->state.mode2ppc || (tmu == gc->state.mode2ppcTMU)) {
SstRegs* tmuHw = SST_TMU(hw, tmu);
@@ -2459,6 +2499,9 @@ GR_ENTRY(grTexMipMapMode, void,
INVALIDATE_TMU(tmu, textureMode);
}
#if GLIDE_CHECK_TRILINEAR
/* Make sure that the trilinear blending bits are set in a
* consistent manner across the tmu's. This only really matters if
@@ -2473,6 +2516,8 @@ GR_ENTRY(grTexMipMapMode, void,
if (gc->num_tmu > 1) _grTexCheckTriLinear(tmu);
#endif /* GLIDE_CHECK_TRILINEAR */
if(MultitextureAndTrilinear()) g3LodBiasPerChip();
GR_END();
#undef FN_NAME
} /* grTexMipMapMode */
@@ -2841,6 +2886,9 @@ GR_ENTRY(grTexSource, void,
break;
}
if(MultitextureAndTrilinear()) g3LodBiasPerChip();
GR_END();
#undef FN_NAME
} /* grTexSource */
@@ -2896,6 +2944,9 @@ GR_ENTRY(grTexMultibase, void,
INVALIDATE_TMU(tmu, textureMode);
}
if(MultitextureAndTrilinear()) g3LodBiasPerChip();
GR_END();
#undef FN_NAME
} /* grTexMultibase */
@@ -3474,3 +3525,139 @@ _g3LodXlat(const GrLOD_t someLOD, const FxBool tBig)
#undef FN_NAME
} /* _g3LodXlat */
/*-------------------------------------------------------------------
Function: _g3LodBiasPerChip
Date: 14-Nov-2000
Implementor: Jonny Cochrane
Description: Sub sample LOD Dithering. Called if multitexturing and
trilinear filtereing and in NON SLI mode AND No. Units > 1 and
mipmap dithereing NOT requested from tools.
Arguments: None
Return: Yes
-------------------------------------------------------------------*/
void g3LodBiasPerChip(void)
{
#define FN_NAME "g3LodBiasPerChip"
FxI32 lodBias, tLod, tmu;
int idx = 0;
unsigned int i;
int chipLodBias[2][4] = // these values per Gary Tarolli
{
// 4.2 format for tLod register
// 0.00, 0.50, 0.00, 0.00 - 2 chip. last two values are not used
{0x00, 0x02, 0x00, 0x00},
// 0.00, 0.25, 0.50, 0.75 - 4 chip.
{0x00, 0x01, 0x02, 0x03}
};
GR_BEGIN_NOFIFOCHECK("g3LodBiasPerChip", 88);
tmu = 0;
idx = gc->chipCount > 2;
if ((gc->sliCount > 1) || (_GlideRoot.environment.texLodDither)) goto FORGET_IT;
for (i = 0; i < gc->chipCount; i++)
{
tLod = gc->state.tmuShadow[tmu].tLOD;
tLod &= ~(SST_LODBIAS);
lodBias = chipLodBias[idx][i];
if(lodBias > 0x1f) lodBias = 0x1f;
if(lodBias < -0x20) lodBias = -0x20;
/* Mask it back off. */
lodBias &= 0x3f;
tLod |= lodBias << SST_LODBIAS_SHIFT;
if(!gc->state.mode2ppc || (tmu == gc->state.mode2ppcTMU)) {
SstRegs* tmuHw = SST_TMU(hw, tmu);
_grChipMask( 1L << i );
REG_GROUP_BEGIN((0x02 << tmu), tLOD, 1, 0x1);
{
REG_GROUP_SET(tmuHw, tLOD, tLod);
}
REG_GROUP_END();
_grChipMask( gc->chipmask );
} else {
INVALIDATE_TMU(tmu, textureMode);
}
}
tmu = 1;
for (i = 0; i < gc->chipCount; i++)
{
tLod = gc->state.tmuShadow[tmu].tLOD;
tLod &= ~(SST_LODBIAS);
lodBias = chipLodBias[idx][i];
if(lodBias > 0x1f) lodBias = 0x1f;
if(lodBias < -0x20) lodBias = -0x20;
/* Mask it back off. */
lodBias &= 0x3f;
tLod |= lodBias << SST_LODBIAS_SHIFT;
if(!gc->state.mode2ppc || (tmu == gc->state.mode2ppcTMU)) {
SstRegs* tmuHw = SST_TMU(hw, tmu);
_grChipMask( 1L << i );
REG_GROUP_BEGIN((0x02 << tmu), tLOD, 1, 0x1);
{
REG_GROUP_SET(tmuHw, tLOD, tLod);
}
REG_GROUP_END();
_grChipMask( gc->chipmask );
} else {
INVALIDATE_TMU(tmu, textureMode);
}
}
FORGET_IT:
GR_END();
#undef FN_NAME
}
/*-------------------------------------------------------------------
Function: MultitextureAndTrilinear
Date: 14-Nov-2000
Implementor: Jonny Cochrane
Description: Determines if we are multitexturing and trilinear
filtering
Arguments: None
Return: BOOL
-------------------------------------------------------------------*/
FxBool MultitextureAndTrilinear(void)
{
#define FN_NAME "MultitextureAndTrilinear"
GR_DCL_GC;
FxBool retval = FXFALSE;
if( (gc->state.per_tmu[0].evenOdd == 3) && //both even and odd on each tmu
(gc->state.per_tmu[1].evenOdd == 3) &&
(gc->state.tmuShadow[0].textureMode & (SST_TMINFILTER | SST_TMAGFILTER)) && //and bilinear for mag and min filter
(gc->state.tmuShadow[1].textureMode & (SST_TMINFILTER | SST_TMAGFILTER)))
{
retval = FXTRUE;
}
return retval;
}

View File

@@ -19,6 +19,8 @@
**
** $Header$
** $Log:
** 11 3dfx 1.8.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 10 3dfx 1.8.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.
@@ -29,7 +31,7 @@
** 7 3dfx 1.6 01/31/00 Adam Briggs Changed all device ID magic
** numbers to use those defined in fxhal.h & added IS_NAPALM macro to test
** against device ID range
** 6 3dfx 1.5 01/20/00 Kenneth Dyke Fixed texture memory sanity
** 6 3dfx 1.5 01/19/00 Kenneth Dyke Fixed texture memory sanity
** check bug.
** 5 3dfx 1.4 10/27/99 Stephane Huaulme keeping the Mac compiler
** happy...

View File

@@ -1,21 +1,21 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
**
**
**

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -19,6 +19,8 @@
**
** $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.

View File

@@ -5,7 +5,7 @@
# 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
# EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
# FULL TEXT OF THE NON-WARRANTY PROVISIONS.
#
# USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
@@ -276,15 +276,9 @@ ifneq ($(FX_GLIDE_CTRISETUP),1)
gdraw.o: fxinline.h
endif
# $(CPP) from 3dfx.linux.mak runs gcc/egcs which guesses at file types so run
# cpp directly. However, cpp can get confused by $__LINE__ which is needed
# to manipulate the __LINE__ macro as a literal number. So we pass -$
# to disallow $ in identifiers to disambiguate the situation. Note that
# the makefile syntax requires $ to be escaped so we use $$ below.
#
PREPROCESSOR=/lib/cpp -$$
PREPROCESSOR=cpp
%.o: %.s
$(PREPROCESSOR) $(PREPROCESSOR_FLAGS) $< > $*.tmp.s
$(PREPROCESSOR) $< > $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ $*.tmp.s
$(RM) -f $*.tmp.s
@@ -294,35 +288,20 @@ xdraw3.o : xdraw3.s fxgasm.h
# 3DNow!(tm) dependencies
# XXX_def.obj targets are the default targets
ifneq ($(GL_AMD3D),)
# I have to copy the build rule from above, because the _def/_3dnow
# causes the object file names not to match up with the source file names.
# And I need to selectively enable the 3DNow flags.
xdraw2_def.o: xdraw2.s xdraw2.inc.s fxgasm.h
$(PREPROCESSOR) $< > $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ $*.tmp.s
$(RM) -f $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ xdraw2.s
xdraw2_3dnow.o: xdraw2.s xdraw2.inc.s fxgasm.h
$(PREPROCESSOR) -DGL_AMD3D -DUSE_PACKET_FIFO=1 $< > $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ $*.tmp.s
$(RM) -f $*.tmp.s
$(CC) $(AFLAGS) -DGL_AMD3D -DUSE_PACKET_FIFO=1 -c -o $@ xdraw2.s
xdraw3_def.o: xdraw3.s fxgasm.h
$(PREPROCESSOR) $< > $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ $*.tmp.s
$(RM) -f $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ xdraw3.s
xdraw3_3dnow.o: xdraw3.s fxgasm.h
$(PREPROCESSOR) -DGL_AMD3D -DUSE_PACKET_FIFO=1 $< > $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ $*.tmp.s
$(RM) -f $*.tmp.s
$(CC) $(AFLAGS) -DGL_AMD3D -DUSE_PACKET_FIFO=1 -c -o $@ xdraw3.s
xtexdl_3dnow.o: xtexdl.s fxgasm.h
$(PREPROCESSOR) -DGL_AMD3D -DUSE_PACKET_FIFO=1 $< > $*.tmp.s
$(CC) $(AFLAGS) -c -o $@ $*.tmp.s
$(RM) -f $*.tmp.s
$(CC) $(AFLAGS) -DGL_AMD3D -DUSE_PACKET_FIFO=1 -c -o $@ xtexdl.s
endif # GL_AMD3D

View File

@@ -1,23 +1,23 @@
; THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
; PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
; TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
; 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
; FULL TEXT OF THE NON-WARRANTY PROVISIONS.
;
; USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
; RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
; TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
; AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
; SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
; 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
;
; COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
MACRO
MakeFunction &fnName
EXPORT &fnName[DS]

View File

@@ -1,31 +1,31 @@
/*
** 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
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONL
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGH
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DF
** 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
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR
** 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
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT T
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS I
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FA
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS O
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVE
*/
#define MANVERSION 3
#define MANREVISION 10
#ifdef __WIN32__
#define BUILD_NUMBER 0655
#define BUILD_NUMBER 0658
#endif
#define VERSIONSTR "3.10.00.0655"
#define VERSIONSTR "3.10.00.0658"
#if defined(__WIN32__)
#define _TRADEMARK_ "(tm)"

View File

@@ -20,12 +20,14 @@
** $Revision$
** $Date$
** $Log:
** 4 3dfx 1.1.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 3 3dfx 1.1.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.
** 2 3dfx 1.1 09/24/99 Mark McMahon Fixed PRS 7906:
** Incorrect memory size reported by control panel in SLI mode
** 1 3dfx 1.0 09/12/99 StarTeam VTS Administrator
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
** $
//
// 1 17/09/99 15:29 Mmcmahon

View File

@@ -16,13 +16,20 @@
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
*/
*
/* -*-asm-*- */
/* $Header$ *
/* $Revision$ *
/* $Log$
/* Revision 1.4 2000/11/15 23:32:54 joseph
/* Syncing up with 3dfx internal source repository. These changes contain a
/* number of bug fixes.
/*
/* Revision 1.2.2.1 2000/11/14 14:11:19 alanh
/* merge in trunk updates, fixup pci code, and fix texus2 code pointers.
/*
/* Revision 1.3 2000/10/20 19:07:00 billwhite
/* 1.) Added changes for AMD 3DNow instructions in h5/glide3 and
/* h3/glide3.
@@ -153,7 +160,7 @@
push %esi /* save caller's register variable */
push %ebx /* save caller's register variable */
mov _gc-4(%esp) , gc
mov _gc(%esp) , gc
mov _vb-4(%esp) , fb /* get base address of vertex B */
push %ebp /* save frame pointer */

File diff suppressed because it is too large Load Diff

View File

@@ -16,11 +16,15 @@
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
*/
*
/* $Header$ */
/* $Revision$ */
/* $Header$ *
/* $Revision$ *
/* $Log$
/* Revision 1.3 2000/11/15 23:32:54 joseph
/* Syncing up with 3dfx internal source repository. These changes contain a
/* number of bug fixes.
/*
/* Revision 1.1 2000/06/15 00:27:43 joseph
/* Initial checkin into SourceForge.
/*

View File

@@ -3282,12 +3282,13 @@ update_fifo_ptr:
mov DWORD PTR [gc+trisProcessed], ebx; Store trisProcessed
; back to GC
;; Clean up the stack
;; Clean up the stack // FIXED by JHunter (wrong order, trashed edi/esi and ebx)
pop ebp
pop edi
pop esi
pop ebx
pop edi
ret 12 ; 0000000cH

View File

@@ -1,4 +1,4 @@
Microsoft (R) Macro Assembler Version 6.14.8444 06/20/00 17:18:57
Microsoft (R) Macro Assembler Version 6.14.8444 06/30/00 13:01:25
xdraw3.asm Page 1 - 1
@@ -2209,6 +2209,7 @@ xdraw3.asm Page 1 - 1
= 0078 C reg_ptr = 00000078h
= 0080 C lfb_ptr = 00000080h
= 01E0 C cull_mode = 000001e0h
= 96AC C checkPtr = 000096ach
= 0124 C tsuDataList = 00000124h
= 0DD8 C triPacketHdr = 00000dd8h
= 0DDC C cullStripHdr = 00000ddch
@@ -3411,7 +3412,7 @@ xdraw3.asm Page 1 - 1
endif ; !GL_AMD3D
END
Microsoft (R) Macro Assembler Version 6.14.8444 06/20/00 17:18:57
Microsoft (R) Macro Assembler Version 6.14.8444 06/30/00 13:01:25
xdraw3.asm Symbols 2 - 1
@@ -3502,7 +3503,9 @@ Symbols:
CPUType . . . . . . . . . . . . Number 0010h
CoordinateSpace . . . . . . . . Number 0D98h
GDBG_INFO_ON . . . . . . . . . . Text
GLIDE_ALT_TAB . . . . . . . . . Text
GLIDE_DEBUG . . . . . . . . . . Text
GLIDE_INIT_HWC . . . . . . . . . Text
GLIDE_PACKED_RGB . . . . . . . . Text 0
GLIDE_TRI_CULLING . . . . . . . Text 1
@@ -3543,6 +3546,7 @@ _vc . . . . . . . . . . . . . . Number 001Ch
bInfo . . . . . . . . . . . . . Number 011Ch
base_ptr . . . . . . . . . . . . Number 0074h
ccoow . . . . . . . . . . . . . DWord 0004 _DATA
checkPtr . . . . . . . . . . . . Number 96ACh
colorType . . . . . . . . . . . Number 0B74h
cullStripHdr . . . . . . . . . . Number 0DDCh
cull_mode . . . . . . . . . . . Number 01E0h

View File

@@ -1,4 +1,4 @@
Microsoft (R) Macro Assembler Version 6.14.8444 06/20/00 17:18:56
Microsoft (R) Macro Assembler Version 6.14.8444 06/30/00 13:01:25
xtexdl.asm Page 1 - 1
@@ -23,6 +23,10 @@ xtexdl.asm Page 1 - 1
;; $Header$
;; $Revision$
;; $Log$
;; Revision 1.3 2000/11/15 23:32:54 joseph
;; Syncing up with 3dfx internal source repository. These changes contain a
;; number of bug fixes.
;;
;; Revision 1.1 2000/06/15 00:27:43 joseph
;; Initial checkin into SourceForge.
;;
@@ -98,6 +102,7 @@ xtexdl.asm Page 1 - 1
= 0078 C reg_ptr = 00000078h
= 0080 C lfb_ptr = 00000080h
= 01E0 C cull_mode = 000001e0h
= 96AC C checkPtr = 000096ach
= 0124 C tsuDataList = 00000124h
= 0DD8 C triPacketHdr = 00000dd8h
= 0DDC C cullStripHdr = 00000ddch
@@ -238,11 +243,11 @@ ENDM ; GR_FIFO_WRITE
ENDIF
00000014 85 F6 sub curT, eax ; curT = maxT - minT
00000016 0F 84 0000012A mov fifo, [gc + fifoPtr] ; fifoPtr
00000016 0F 84 0000013C mov fifo, [gc + fifoPtr] ; fifoPtr
0000001C 8B 96 000096BC
00000022 8B 0A mov curS, [esp + _maxS$] ; curS = maxS
00000024 F7 C1 00000001 add curT, 1 ; curT = maxT - minT + 1
0000002A 0F 85 00000116
0000002A 0F 85 00000128
femms ; we'll use MMX/3DNow!, make sure FPU register cleared
00000030 2B D8 mov edx, curS ; curS = maxS = scanline width in DWORDs
@@ -282,10 +287,10 @@ ENDM ; GR_FIFO_WRITE
ifdef USE_PACKET_FIFO
push @Line ; Line # inside this function
00000075 F7 C5 00000004 push 0 ; NULL file name
0000007B 0F 84 0000009F
0000007B 0F 84 000000B1
push 4 ; fifo space required (bytes)
00000081 83 FA 04 call __grCommandTransportMakeRoom@12 ; make fifo room
00000084 7D 26 endif
00000084 7D 2A endif
mov fifo, [gc + fifoPtr] ; fifoPtr modified by _grCommandTransportMakeRoom, reload
00000086 68 000000C4
@@ -301,23 +306,23 @@ ENDM ; GR_FIFO_WRITE
000000A0 8B 4C 24 1C sub fRoom, 4 ; fifoRoom -= 4
000000A4 F7 C5 00000004 mov [gc + fifoRoom], fRoom ; store new fifoRoom
000000AA 74 74 add fifo, 4 ; fifoPtr += 4
000000AA 0F 84 00000082 add fifo, 4 ; fifoPtr += 4
000000AC IFDEF GLIDE_DEBUG
000000B0 IFDEF GLIDE_DEBUG
mov [gc + checkPtr], fifo ; checkPtr
000000AC C7 45 00 ENDIF
000000B0 C7 45 00 ENDIF
00000000
000000B3 83 EA 04
000000B7 83 EA 04
mov [gc + fifoPtr], fifo ; store new fifoPtr
000000B6 89 96 00000DEC jmp __startDownload ; fifo aligned, download texture now
000000BC 83 C5 04
000000BA 89 96 00000DEC jmp __startDownload ; fifo aligned, download texture now
000000C0 83 C5 04
align 32
;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo, ecx = maxS = curS
000000C3 89 AE 000096AC ;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo, ecx = maxS = curS
;; edx=fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
000000BF 89 AE 00000DE4 __loopT:
000000C5 EB 59
000000C9 89 AE 00000DE4 __loopT:
000000CF EB 61
IFDEF GLIDE_DEBUG
;; Make sure that we have a QWORD aligned fifoPtr; force GP if not aligned
@@ -330,93 +335,93 @@ ENDM ; GR_FIFO_WRITE
__alignmentOK:
ENDIF ; GLIDE_DEBUG
;; Compute packet header words
;; hdr1: downloadSpace[31:30] numWords[21:3] packetType[2:0]
000000E0 F7 C5 00000004 ;; Compute packet header words
000000E6 74 04 ;; 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)
000000E8 33 C0
000000EA 89 00 movq [fifo], mm1 ; store hdr2 | hdr1
000000EC 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)
000000E0 0F 7F 4D 00 add fifo, 8 ; pre-increment fifoPtr += 2 * sizeof(FxU32)
000000E4 83 C5 08
000000EC 0F 7F 4D 00 add fifo, 8 ; pre-increment fifoPtr += 2 * sizeof(FxU32)
000000F0 83 C5 08
add dataPtr, 8 ; dataPtr += 2 * sizeof(FxU32)
sub curS, 8 ; curS -= 2 * sizeof(FxU32)
000000E7 movq [fifo - 8], mm0 ; *fifoPtr = texelData[64 bits]
000000F3 movq [fifo - 8], mm0 ; *fifoPtr = texelData[64 bits]
jnz __loopS ; loop while curS > 0
000000E7 0F 6F 07
000000EA 83 C5 08 mov ecx, [gc + fifoPtr] ; old fifo ptr
000000F3 0F 6F 07
000000F6 83 C5 08 mov ecx, [gc + fifoPtr] ; old fifo ptr
nop ; filler
000000ED 83 C7 08
000000F0 83 E9 08 mov eax, fifo ; new fifo ptr
000000F9 83 C7 08
000000FC 83 E9 08 mov eax, fifo ; new fifo ptr
mov [gc + fifoPtr], fifo ; save new fifo ptr
000000F3 0F 7F 45 F8
000000F7 75 EE IFDEF GLIDE_DEBUG
000000FF 0F 7F 45 F8
00000103 75 EE IFDEF GLIDE_DEBUG
mov [gc + checkPtr], fifo ; checkPtr
000000F9 8B 8E 00000DE4 ENDIF
000000FF 90
00000105 8B 8E 00000DE4 ENDIF
0000010B 90
sub eax, ecx ; new fifo ptr - old fifo ptr = fifo space used up
00000100 8B C5 mov curS, [esp + _maxS$] ; curS = maxS = width of scanline (bytes)
00000102 89 AE 00000DE4
0000010C 8B C5 mov curS, [esp + _maxS$] ; curS = maxS = width of scanline (bytes)
0000010E 89 AE 00000DE4
sub fRoom, eax ; new fifo space available = old fifo space available - fifo space used up = new fifo space available
sub curT, 1 ; curT--
00000114 89 AE 000096AC
mov [gc + fifoRoom], fRoom ; save new fifo space available
jz __dlDone ; loop while curT > 0
00000108 2B C1
0000010A 8B 4C 24 1C ;; Check for room to write the next texture scanline
0000011A 2B C1
0000011C 8B 4C 24 1C ;; Check for room to write the next texture scanline
0000010E 2B D0 ;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo
00000110 83 EB 01 ;; edx = fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
00000120 2B D0 ;; ebx = curT, edi = dataPtr, esi = gc, ebp = fifo
00000122 83 EB 01 ;; edx = fifoRoom, mm1 = texAddr|packetHdr, mm2 = TEX_ROW_ADDR_INCR(1)|0
00000113 89 96 00000DEC paddd mm1, mm2 ; texAddr+=TEX_ROW_ADDR_INCR(1) | packetHdr
00000119 74 2B mov esp, esp ; filler
00000125 89 96 00000DEC paddd mm1, mm2 ; texAddr+=TEX_ROW_ADDR_INCR(1) | packetHdr
0000012B 74 2B 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
0000011B 0F FE CA ifdef USE_PACKET_FIFO
0000011E 8B E4 push @Line ; Line # inside this function
00000120 push 0h ; NULL file name
00000120 8D 41 08
0000012D 0F FE CA ifdef USE_PACKET_FIFO
00000130 8B E4 push @Line ; Line # inside this function
00000132 push 0h ; NULL file name
00000132 8D 41 08
push eax ; fifo space required
00000123 3B D0 call __grCommandTransportMakeRoom@12 ; make fifo room (if fifoPtr QWORD aligned before
00000125 7D B9 endif
00000135 3B D0 call __grCommandTransportMakeRoom@12 ; make fifo room (if fifoPtr QWORD aligned before
00000137 7D A7 endif
mov fifo, [gc + fifoPtr] ; fifoPtr was modified by _grCommandTransportMakeRoom, reload
00000127 68 0000012A
0000012C 6A 00 mov fRoom, [gc + fifoRoom] ; fifoRoom was modified by _grCommandTransportMakeRoom, reload
00000139 68 0000012A
0000013E 6A 00 mov fRoom, [gc + fifoRoom] ; fifoRoom was modified by _grCommandTransportMakeRoom, reload
mov curS, [esp + _maxS$] ; curS = maxS = width of scanline (bytes)
0000012E 50 jmp __loopT ; we now have enough fifo room, write next scanline
0000012F E8 00000000 E
00000140 50 jmp __loopT ; we now have enough fifo room, write next scanline
00000141 E8 00000000 E
__dlDone:
00000134 8B AE 00000DE4 femms ; exit 3DNow!(tm) state
00000146 8B AE 00000DE4 femms ; exit 3DNow!(tm) state
0000013A 8B 96 00000DEC pop ebp ; restore caller's register variable
00000140 8B 4C 24 1C pop edi ; restore caller's register variable
00000144 EB 9A
0000014C 8B 96 00000DEC pop ebp ; restore caller's register variable
00000152 8B 4C 24 1C pop edi ; restore caller's register variable
00000156 EB 88
pop esi ; restore caller's register variable
00000146 pop ebx ; restore caller's register variable
00000158 pop ebx ; restore caller's register variable
00000146 0F 0E ret 24 ; pop 6 DWORD parameters and return
00000158 0F 0E ret 24 ; pop 6 DWORD parameters and return
00000148 5D __grTexDownload_3DNow_MMX@24 ENDP
00000149 5F
0000015A 5D __grTexDownload_3DNow_MMX@24 ENDP
0000015B 5F
_TEXT ENDS
0000014A 5E
0000014B 5B END
0000014C C2 0018
0000014F
014F
Microsoft (R) Macro Assembler Version 6.14.8444 06/20/00 17:18:56
0000015C 5E
0000015D 5B END
0000015E C2 0018
00000161
0161
Microsoft (R) Macro Assembler Version 6.14.8444 06/30/00 13:01:25
xtexdl.asm Symbols 2 - 1
@@ -434,19 +439,20 @@ Segments and Groups:
N a m e Size Length Align Combine Class
FLAT . . . . . . . . . . . . . . GROUP
_TEXT . . . . . . . . . . . . . 32 Bit 014F Page Public 'CODE'
_TEXT . . . . . . . . . . . . . 32 Bit 0161 Page Public 'CODE'
Procedures, parameters and locals:
N a m e Type Value Attr
__grTexDownload_3DNow_MMX@24 . . P Near 0000 _TEXT Length= 014F Public
__mmxAlignFifo . . . . . . . . L Near 00AC _TEXT
__grTexDownload_3DNow_MMX@24 . . P Near 0000 _TEXT Length= 0161 Public
__mmxAlignFifo . . . . . . . . L Near 00B0 _TEXT
__loopT . . . . . . . . . . . L Near 00E0 _TEXT
__loopS . . . . . . . . . . . L Near 00E7 _TEXT
__startDownload . . . . . . . L Near 0120 _TEXT
__dlDone . . . . . . . . . . . L Near 0146 _TEXT
__alignmentOK . . . . . . . . L Near 00EC _TEXT
__loopS . . . . . . . . . . . L Near 00F3 _TEXT
__startDownload . . . . . . . L Near 0132 _TEXT
__dlDone . . . . . . . . . . . L Near 0158 _TEXT
Symbols:
@@ -455,7 +461,9 @@ Symbols:
CPUType . . . . . . . . . . . . Number 0010h
CoordinateSpace . . . . . . . . Number 0D98h
GDBG_INFO_ON . . . . . . . . . . Text
GLIDE_ALT_TAB . . . . . . . . . Text
GLIDE_DEBUG . . . . . . . . . . Text
GLIDE_INIT_HWC . . . . . . . . . Text
GLIDE_PACKED_RGB . . . . . . . . Text 0
GLIDE_TRI_CULLING . . . . . . . Text 1
@@ -490,6 +498,7 @@ _minT$ . . . . . . . . . . . . . Number 0020h
_texData$ . . . . . . . . . . . Number 0028h
bInfo . . . . . . . . . . . . . Number 011Ch
base_ptr . . . . . . . . . . . . Number 0074h
checkPtr . . . . . . . . . . . . Number 96ACh
colorType . . . . . . . . . . . Number 0B74h
cullStripHdr . . . . . . . . . . Number 0DDCh
cull_mode . . . . . . . . . . . Number 01E0h

View File

@@ -21,6 +21,10 @@
/* $Header$ *
/* $Revision$ *
/* $Log$
/* Revision 1.3 2000/11/15 23:32:54 joseph
/* Syncing up with 3dfx internal source repository. These changes contain a
/* number of bug fixes.
/*
/* Revision 1.1 2000/06/15 00:27:43 josep
/* Initial checkin into SourceForge
/

View File

@@ -19,6 +19,8 @@
**
** $Header$
** $Log:
** 7 3dfx 1.4.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 6 3dfx 1.4.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.
@@ -32,7 +34,7 @@
** PCI_BUMP_N_GRIND on PowerPC.
** 2 3dfx 1.1 09/22/99 Larry warner Created download procedures
** for FXT1 format.
** 1 3dfx 1.0 09/12/99 StarTeam VTS Administrator
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
** $
**
** 9 8/05/99 5:03p Larryw