Add new grStippleMode and grStipplePattern functions for Voodoo3 and Voodoo5.

This commit is contained in:
alanh
2000-11-24 18:38:46 +00:00
parent 77a9dd13d3
commit 6eb73cf6c1
8 changed files with 295 additions and 0 deletions

View File

@@ -19,6 +19,9 @@
**
** $Header$
** $Log$
** Revision 1.1.1.1 1999/11/24 21:44:54 joseph
** Initial checkin for SourceForge
**
**
** 5 4/06/99 3:54p Dow
** Alt tab again.
@@ -536,6 +539,55 @@ GR_DIENTRY(grDepthBufferMode, void , (GrDepthBufferMode_t mode) )
#undef FN_NAME
} /* grDepthBufferMode */
/*-------------------------------------------------------------------
Function: grStipplePattern
Date: 23-Nov-2000
Implementor(s): alanh
Description:
Arguments:
Return:
-------------------------------------------------------------------*/
#ifdef __linux__
GR_EXT_ENTRY(grStipplePattern, void , (GrStipplePattern_t stipple))
{
#define FN_NAME "grStipplePattern"
GR_BEGIN_NOFIFOCHECK("grStippleMode\n", 85);
INVALIDATE(stipple);
STOREARG(grStipplePattern, stipple);
#undef FN_NAME
} /* grStipplePattern */
#endif /* __linux__ */
/*-------------------------------------------------------------------
Function: grStippleMode
Date: 23-Nov-2000
Implementor(s): alanh
Description:
Arguments:
Return:
-------------------------------------------------------------------*/
#ifdef __linux__
GR_DIENTRY(grStippleMode, void , (GrStippleMode_t mode) )
{
#define FN_NAME "grStippleMode"
GR_BEGIN_NOFIFOCHECK("grStippleMode\n", 85);
INVALIDATE(fbzMode);
STOREARG(grStippleMode, mode);
#undef FN_NAME
} /* grStippleMode */
#endif /* __linux__ */
/*-------------------------------------------------------------------
Function: grDitherMode
@@ -896,6 +948,9 @@ _grValidateState()
_grDepthBufferFunction(LOADARG(grDepthBufferFunction, fnc));
_grDepthBufferMode(LOADARG(grDepthBufferMode, mode));
_grDitherMode(LOADARG(grDitherMode, mode));
#ifdef __linux__
_grStippleMode(LOADARG(grStippleMode, mode));
#endif /* __linux__ */
_grSstOrigin(LOADARG(grSstOrigin, origin));
_grRenderBuffer(LOADARG(grRenderBuffer, buffer));
@@ -954,6 +1009,17 @@ _grValidateState()
reg_cnt++;
}
#ifdef __linux__
if (NOTVALID(stipple)) {
gc->state.shadow.stipple = LOADARG(grStipplePattern, stipple);
REG_GROUP_BEGIN(BROADCAST_ID, stipple, 1, 0x01);
{
REG_GROUP_SET(hw, stipple, gc->state.shadow.stipple);
}
REG_GROUP_END();
}
#endif /* __linux__ */
if (NOTVALID(lfbMode)) {
FxU32
lfbMode = gc->state.shadow.lfbMode;

View File

@@ -19,6 +19,9 @@
**
** $Header$
** $Log$
** Revision 1.1.1.1.2.2 2000/10/03 08:18:09 alanh
** merge trunk into Glide3-64bit branch.
**
** Revision 1.1.1.1.2.1 2000/08/30 08:47:03 alanh
** Changes for Voodoo3 for 64bit architectures
**
@@ -276,6 +279,7 @@
/* local */
#define GR_CDECL
#include "g3ext.h"
#include "fxcmd.h"
#include "gsfc.h"
@@ -470,6 +474,7 @@ typedef struct {
#define lfbModeBIT FXBIT(8)
#define c0c1BIT FXBIT(9)
#define chromaRangeBIT FXBIT(10)
#define stippleBIT FXBIT(11)
/*
** lazy evaluate vertexlayout.
** it is not part of the registers so we add the bit in MSB
@@ -770,6 +775,14 @@ typedef struct {
struct {
GrDitherMode_t mode;
} grDitherModeArgs;
#ifdef __linux__
struct {
GrStippleMode_t mode;
} grStippleModeArgs;
struct {
GrStipplePattern_t stipple;
} grStipplePatternArgs;
#endif /* __linux__ */
struct {
GrBuffer_t buffer;
} grRenderBufferArgs;
@@ -1657,6 +1670,13 @@ _grColorCombine(
GrCombineLocal_t local, GrCombineOther_t other,
FxBool invert );
#ifdef __linux__
void FX_CALL
grStipplePattern(
GrStipplePattern_t stipple);
#endif /* __linux__ */
void FX_CALL
grChromaRangeMode(GrChromaRangeMode_t mode);
@@ -1699,6 +1719,11 @@ _grDepthBufferMode( GrDepthBufferMode_t mode );
void
_grDitherMode( GrDitherMode_t mode );
#ifdef __linux__
void
_grStippleMode( GrStippleMode_t mode );
#endif /* __linux__ */
void
_grRenderBuffer( GrBuffer_t buffer );

View File

@@ -19,6 +19,9 @@
**
** $Header$
** $Log$
** Revision 1.1.1.1.2.4 2000/11/16 20:25:59 alanh
** fix a typo
**
** Revision 1.1.1.1.2.3 2000/11/16 18:56:48 alanh
** add a linux specific grRenderBuffer to fix switching between FRONT and
** BACK buffers.
@@ -1913,6 +1916,46 @@ GR_ENTRY(grDisableAllEffects, void, (void))
grFogMode(GR_FOG_DISABLE);
} /* grDisableAllEffects */
/*---------------------------------------------------------------------------
** grStippleMode
*/
#ifdef __linux__
GR_STATE_ENTRY(grStippleMode, void, (GrStippleMode_t mode))
{
#define FN_NAME "_grStippleMode"
FxU32 fbzMode;
GR_BEGIN_NOFIFOCHECK("_grStippleMode", 85);
GDBG_INFO_MORE(gc->myLevel, "(%d)\n", mode);
fbzMode = gc->state.shadow.fbzMode;
fbzMode &= ~(SST_ENSTIPPLE | SST_ENSTIPPLEPATTERN);
switch (mode) {
case GR_STIPPLE_DISABLE:
break;
case GR_STIPPLE_PATTERN:
fbzMode |= (SST_ENSTIPPLE | SST_ENSTIPPLEPATTERN);
break;
case GR_STIPPLE_ROTATE:
fbzMode |= SST_ENSTIPPLE;
break;
}
gc->state.shadow.fbzMode = fbzMode;
#if !GLIDE3
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
GR_SET(BROADCAST_ID, hw, fbzMode, fbzMode);
GR_CHECK_SIZE();
#endif /* !GLIDE3 */
#undef FN_NAME
} /* grStippleMode */
#endif /* __linux__ */
/*---------------------------------------------------------------------------
** grDitherMode
*/

View File

@@ -52,6 +52,9 @@ extern "C" {
typedef FxU32 GrColor_t;
typedef FxU8 GrAlpha_t;
typedef FxU32 GrMipMapId_t;
#ifdef __linux__
typedef FxU32 GrStipplePattern_t;
#endif /* __linux__ */
typedef FxU8 GrFog_t;
typedef AnyPtr GrContext_t;
typedef int (FX_CALL *GrProc)();
@@ -250,6 +253,13 @@ typedef FxI32 GrDitherMode_t;
#define GR_DITHER_2x2 0x1
#define GR_DITHER_4x4 0x2
#ifdef __linux__
typedef FxI32 GrStippleMode_t;
#define GR_STIPPLE_DISABLE 0x0
#define GR_STIPPLE_PATTERN 0x1
#define GR_STIPPLE_ROTATE 0x2
#endif /* __linux__ */
typedef FxI32 GrFogMode_t;
#define GR_FOG_DISABLE 0x0
#define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1
@@ -699,6 +709,14 @@ grDisableAllEffects( void );
FX_ENTRY void FX_CALL
grDitherMode( GrDitherMode_t mode );
#ifdef __linux__
FX_ENTRY void FX_CALL
grStippleMode( GrStippleMode_t mode );
FX_ENTRY void FX_CALL
grStipplePattern( GrStipplePattern_t mode );
#endif /* __linux__ */
FX_ENTRY void FX_CALL
grFogColorValue( GrColor_t fogcolor );

View File

@@ -830,6 +830,32 @@ GR_EXT_ENTRY(grLfbConstantStencil, void , (GrStencil_t value) )
#undef FN_NAME
} /* grLfbConstantStencil */
/*-------------------------------------------------------------------
Function: grStipplePattern
Date: 23-Nov-2000
Implementor(s): alanh
Description:
Arguments:
Return:
-------------------------------------------------------------------*/
#ifdef __linux__
GR_EXT_ENTRY(grStipplePattern, void , (GrStipplePattern_t stipple))
{
#define FN_NAME "grStipplePattern"
GR_BEGIN_NOFIFOCHECK("grStippleMode\n", 85);
INVALIDATE(stipple);
STOREARG(grStipplePattern, stipple);
#undef FN_NAME
} /* grStipplePattern */
#endif /* __linux__ */
/*-------------------------------------------------------------------
Function: grStencilOp
Date: 03-June-99
@@ -980,6 +1006,31 @@ GR_EXT_ENTRY(grAlphaCombineExt, void , (GrACUColor_t a,
#endif
/*-------------------------------------------------------------------
Function: grStippleMode
Date: 23-Nov-2000
Implementor(s): alanh
Description:
Arguments:
Return:
-------------------------------------------------------------------*/
#ifdef __linux__
GR_DIENTRY(grStippleMode, void , (GrStippleMode_t mode) )
{
#define FN_NAME "grStippleMode"
GR_BEGIN_NOFIFOCHECK("grStippleMode\n", 85);
INVALIDATE(fbzMode);
STOREARG(grStippleMode, mode);
#undef FN_NAME
} /* grStippleMode */
#endif /* __linux__ */
/*-------------------------------------------------------------------
Function: grDitherMode
Date: 07-Oct-97
@@ -2020,6 +2071,9 @@ _grValidateState()
_grDepthBufferFunction(LOADARG(grDepthBufferFunction, fnc));
_grDepthBufferMode(LOADARG(grDepthBufferMode, mode));
_grDitherMode(LOADARG(grDitherMode, mode));
#ifdef __linux__
_grStippleMode(LOADARG(grStippleMode, mode));
#endif /* __linux__ */
_grSstOrigin(LOADARG(grSstOrigin, origin));
_grRenderBuffer(LOADARG(grRenderBuffer, buffer));
/* tbext */
@@ -2232,6 +2286,17 @@ _grValidateState()
REG_GROUP_END();
}
#ifdef __linux__
if (NOTVALID(stipple)) {
gc->state.shadow.stipple = LOADARG(grStipplePattern, stipple);
REG_GROUP_BEGIN(BROADCAST_ID, stipple, 1, 0x01);
{
REG_GROUP_SET(hw, stipple, gc->state.shadow.stipple);
}
REG_GROUP_END();
}
#endif /* __linux__ */
if (NOTVALID(stencilOp)) {
FxU32 stencilOp = gc->state.shadow.stencilOp;
stencilOp &= ~(SST_STENCIL_SFAIL_OP | SST_STENCIL_ZFAIL_OP | SST_STENCIL_ZPASS_OP);

View File

@@ -743,6 +743,7 @@ typedef struct {
#define combineModeBIT FXBIT(13)
#define renderModeBIT FXBIT(14)
#define tmuConfigBIT FXBIT(15)
#define stippleBIT FXBIT(16)
/* Similar bits for TMU registers */
#define textureModeBIT FXBIT(0)
@@ -1135,6 +1136,14 @@ typedef struct {
struct {
GrDitherMode_t mode;
} grDitherModeArgs;
#ifdef __linux__
struct {
GrStippleMode_t mode;
} grStippleModeArgs;
struct {
GrStipplePattern_t stipple;
} grStipplePatternArgs;
#endif /* __linux__ */
struct {
GrBuffer_t buffer;
} grRenderBufferArgs;
@@ -2328,6 +2337,12 @@ grStencilFunc(GrCmpFnc_t fnc, GrStencil_t ref, GrStencil_t mask);
void FX_CALL
grStencilMask(GrStencil_t write_mask);
#ifdef __linux__
void FX_CALL
grStipplePattern(
GrStipplePattern_t stipple);
#endif /* __linux__ */
void FX_CALL
grStencilOp(
GrStencilOp_t stencil_fail,
@@ -2502,6 +2517,11 @@ _grDepthBufferMode( GrDepthBufferMode_t mode );
void
_grDitherMode( GrDitherMode_t mode );
#ifdef __linux__
void
_grStippleMode( GrStippleMode_t mode );
#endif /* __linux__ */
void
_grRenderBuffer( GrBuffer_t buffer );

View File

@@ -3598,6 +3598,46 @@ GR_ENTRY(grDisableAllEffects, void, (void))
grFogMode(GR_FOG_DISABLE);
} /* grDisableAllEffects */
/*---------------------------------------------------------------------------
** grStippleMode
*/
#ifdef __linux__
GR_STATE_ENTRY(grStippleMode, void, (GrStippleMode_t mode))
{
#define FN_NAME "_grStippleMode"
FxU32 fbzMode;
GR_BEGIN_NOFIFOCHECK("_grStippleMode", 85);
GDBG_INFO_MORE(gc->myLevel, "(%d)\n", mode);
fbzMode = gc->state.shadow.fbzMode;
fbzMode &= ~(SST_ENSTIPPLE | SST_ENSTIPPLEPATTERN);
switch (mode) {
case GR_STIPPLE_DISABLE:
break;
case GR_STIPPLE_PATTERN:
fbzMode |= (SST_ENSTIPPLE | SST_ENSTIPPLEPATTERN);
break;
case GR_STIPPLE_ROTATE:
fbzMode |= SST_ENSTIPPLE;
break;
}
gc->state.shadow.fbzMode = fbzMode;
#if !GLIDE3
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
GR_SET(BROADCAST_ID, hw, fbzMode, fbzMode);
GR_CHECK_SIZE();
#endif /* !GLIDE3 */
#undef FN_NAME
} /* grStippleMode */
#endif /* __linux__ */
/*---------------------------------------------------------------------------
** grDitherMode
*/

View File

@@ -52,6 +52,9 @@ extern "C" {
typedef FxU32 GrColor_t;
typedef FxU8 GrAlpha_t;
typedef FxU32 GrMipMapId_t;
#ifdef __linux__
typedef FxU32 GrStipplePattern_t;
#endif /* __linux__ */
typedef FxU8 GrFog_t;
typedef AnyPtr GrContext_t;
typedef int (FX_CALL *GrProc)();
@@ -240,6 +243,13 @@ typedef FxI32 GrDitherMode_t;
#define GR_DITHER_2x2 0x1
#define GR_DITHER_4x4 0x2
#ifdef __linux__
typedef FxI32 GrStippleMode_t;
#define GR_STIPPLE_DISABLE 0x0
#define GR_STIPPLE_PATTERN 0x1
#define GR_STIPPLE_ROTATE 0x2
#endif /* __linux__ */
typedef FxI32 GrFogMode_t;
#define GR_FOG_DISABLE 0x0
#define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1
@@ -734,6 +744,14 @@ grCoordinateSpace( GrCoordinateSpaceMode_t mode );
FX_ENTRY void FX_CALL
grDepthRange( FxFloat n, FxFloat f );
#ifdef __linux__
FX_ENTRY void FX_CALL
grStippleMode( GrStippleMode_t mode );
FX_ENTRY void FX_CALL
grStipplePattern( GrStipplePattern_t mode );
#endif /* __linux__ */
FX_ENTRY void FX_CALL
grViewport( FxI32 x, FxI32 y, FxI32 width, FxI32 height );