Commit some of Dave Mosberger's code:
If mode is not zero, initialize "stride" to the number of floats that corresponds to the size of a pointer (1 on a 32-bit platform, 2 on a 64-bit platform). This code works properly as long as sizeof(void*)==N*sizeof(float) for some integer constant N.
This commit is contained in:
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1.2.1 2000/08/30 08:47:03 alanh
|
||||
** Changes for Voodoo3 for 64bit architectures
|
||||
**
|
||||
** Revision 1.1.1.1 1999/11/24 21:44:56 joseph
|
||||
** Initial checkin for SourceForge
|
||||
**
|
||||
@@ -577,7 +580,7 @@ _grAADrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
FxU32 ia;
|
||||
FxU32 i;
|
||||
FxU32 vsize;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxU32 tmp_cullStripHdr;
|
||||
|
||||
GDBG_INFO(94,"_grAADrawPoints(0x%x)\n",e);
|
||||
@@ -585,8 +588,10 @@ _grAADrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
GDBG_INFO_MORE(gc->myLevel, "(count = %d, pointers = 0x%x)\n",
|
||||
count, pointers);
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
@@ -801,7 +806,7 @@ _grAADrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
FxU32 ia, vNum = 0;
|
||||
FxU32 vsize;
|
||||
FxU32 sCount;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxU32 tmp_cullStripHdr;
|
||||
|
||||
GDBG_INFO(95,"_grAADrawLineStrip(count = %d, pointers = 0x%x)\n",
|
||||
@@ -817,8 +822,11 @@ _grAADrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
if (ltype == GR_LINES)
|
||||
sCount = count >> 1; /* line list */
|
||||
else
|
||||
@@ -1332,7 +1340,7 @@ _grAADrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
float **lPtr = (float **)pointers;
|
||||
FxI32 tCount = 3;
|
||||
FxU32 fbzModeOld; /* Squirrel away current fbzMode */
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxI32 xindex = (gc->state.vData.vertexInfo.offset >> 2);
|
||||
FxI32 yindex = xindex + 1;
|
||||
|
||||
@@ -1349,8 +1357,10 @@ _grAADrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
/* gc->state.invalid |= fbzModeBIT; */
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
/* backfaced or zero area */
|
||||
while (tCount <= count) {
|
||||
@@ -1505,7 +1515,7 @@ _grAAVpDrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
float **lPtr = (float **)pointers;
|
||||
FxI32 tCount = 3;
|
||||
FxU32 fbzModeOld; /* Squirrel away current fbzMode */
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxI32 xindex = (gc->state.vData.vertexInfo.offset >> 2);
|
||||
FxI32 yindex = xindex + 1;
|
||||
|
||||
@@ -1522,8 +1532,10 @@ _grAAVpDrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
/* gc->state.invalid |= fbzModeBIT; */
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
/* backfaced or zero area */
|
||||
while (tCount <= count) {
|
||||
@@ -1687,7 +1699,7 @@ _grAADrawVertexList(FxU32 type, FxI32 mode, FxI32 count, void *pointers)
|
||||
float *v[3];
|
||||
FxBool flip = FXFALSE;
|
||||
FxU32 fbzModeOld; /* Squirrel away current fbzMode */
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
if (sCount <= 2) return;
|
||||
|
||||
@@ -1698,8 +1710,10 @@ _grAADrawVertexList(FxU32 type, FxI32 mode, FxI32 count, void *pointers)
|
||||
gc->state.shadow.fbzMode &= ~(SST_ZAWRMASK);
|
||||
/* gc->state.invalid |= fbzModeBIT; */
|
||||
GR_FLUSH_STATE();
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
sCount-=2;
|
||||
if (type == kSetupFan) {
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.2.2.1 2000/08/30 08:47:03 alanh
|
||||
** Changes for Voodoo3 for 64bit architectures
|
||||
**
|
||||
** Revision 1.2 2000/02/15 22:35:58 joseph
|
||||
** Changes to support FreeBSD (patch submitted by Doug Rabson)
|
||||
**
|
||||
@@ -349,7 +352,7 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
* except the data set up is from the pointer array and
|
||||
* its data layout
|
||||
*/
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
/* we snap to an integer by adding a large enough number that it
|
||||
* shoves all fraction bits off the right side of the mantissa.
|
||||
@@ -383,8 +386,10 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
*/
|
||||
#define POINTS_BUFFER 100
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
if (gc->state.grCoordinateSpaceArgs.coordinate_space_mode == GR_WINDOW_COORDS) {
|
||||
while (count > 0) {
|
||||
@@ -397,14 +402,10 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
DA_BEGIN;
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode) vPtr = *(float **)vPtr;
|
||||
|
||||
(float *)pointers += stride;
|
||||
|
||||
GDBG_INFO_MORE(gc->myLevel, "(%f %f)\n",
|
||||
FARRAY(vPtr,gc->state.vData.vertexInfo.offset),
|
||||
@@ -489,15 +490,11 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode)
|
||||
vPtr = *(float **)vPtr;
|
||||
oow = 1.0f / FARRAY(vPtr, gc->state.vData.wInfo.offset);
|
||||
(float *)pointers += stride;
|
||||
|
||||
{
|
||||
FxU32 x, y;
|
||||
@@ -582,7 +579,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
int j;
|
||||
FxI32 sCount;
|
||||
FxU32 vertexParamOffset;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
#define DX gc->pool.ftemp1
|
||||
#define ADY gc->pool.ftemp2
|
||||
@@ -598,8 +595,11 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
|
||||
#define LINES_BUFFER 100
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
if (ltype == GR_LINES)
|
||||
sCount = count >> 1; /* line list */
|
||||
else
|
||||
@@ -611,40 +611,32 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
FxI32 vcount = sCount >= LINES_BUFFER ? LINES_BUFFER : sCount;
|
||||
|
||||
GR_SET_EXPECTED_SIZE((gc->state.vData.vSize << 2) * vcount, vcount);
|
||||
|
||||
DA_BEGIN;
|
||||
for (k = 0; k < vcount; k++) {
|
||||
float *a;
|
||||
float *b;
|
||||
float *a = (float *)pointers;
|
||||
float *b = (float *)pointers + stride;
|
||||
if (mode) {
|
||||
a = *(float **)pointers;
|
||||
b = *((float **)pointers + stride);
|
||||
(float **)pointers += stride;
|
||||
if (ltype == GR_LINES)
|
||||
(float **)pointers += stride;
|
||||
a = *(float **)a;
|
||||
b = *(float **)b;
|
||||
}
|
||||
else {
|
||||
a = (float *)pointers;
|
||||
b = ((float *)pointers + stride);
|
||||
(float *)pointers += stride;
|
||||
if (ltype == GR_LINES)
|
||||
(float *)pointers += stride;
|
||||
if (ltype == GR_LINES)
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** compute absolute deltas and draw from low Y to high Y
|
||||
*/
|
||||
ADY = FARRAY(b, gc->state.vData.vertexInfo.offset+4) - FARRAY(a, gc->state.vData.vertexInfo.offset+4);
|
||||
i = *(int *)&ADY;
|
||||
i = *(long *)&ADY;
|
||||
if (i < 0) {
|
||||
float *tv;
|
||||
tv = a; a = b; b = tv;
|
||||
i ^= 0x80000000; /* ady = -ady; */
|
||||
(*(int *)&ADY) = i;
|
||||
(*(long *)&ADY) = i;
|
||||
}
|
||||
|
||||
DX = FARRAY(b, gc->state.vData.vertexInfo.offset) - FARRAY(a, gc->state.vData.vertexInfo.offset);
|
||||
j = *(int *)&DX;
|
||||
j = *(long *)&DX;
|
||||
if (j < 0) {
|
||||
j ^= 0x80000000; /* adx = -adx; */
|
||||
}
|
||||
@@ -773,7 +765,6 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
FxI32 vcount = sCount >= LINES_BUFFER ? LINES_BUFFER : sCount;
|
||||
float *a,*b;
|
||||
GR_SET_EXPECTED_SIZE((gc->state.vData.vSize << 2) * vcount, vcount);
|
||||
|
||||
DA_BEGIN;
|
||||
if (ltype == GR_LINE_STRIP) {
|
||||
a = (float *)pointers;
|
||||
@@ -784,36 +775,26 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
}
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (ltype == GR_LINES) {
|
||||
a = (float *)pointers;
|
||||
b = (float *)pointers + stride;
|
||||
if (mode) {
|
||||
a = *(float **)pointers;
|
||||
b = *((float **)pointers + stride);
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
a = (float *)pointers;
|
||||
b = ((float *)pointers + stride);
|
||||
(float *)pointers += stride;
|
||||
a = *(float **)a;
|
||||
b = *(float **)b;
|
||||
}
|
||||
(float *)pointers += stride;
|
||||
owa = oowa = 1.0f / FARRAY(a, gc->state.vData.wInfo.offset);
|
||||
owb = oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
|
||||
if( mode )
|
||||
(float **)pointers += stride;
|
||||
else
|
||||
(float *)pointers += stride;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
else {
|
||||
owa = oowa = oowb;
|
||||
|
||||
a = (float *)pointers;
|
||||
b = (float *)pointers + stride;
|
||||
if (mode) {
|
||||
a = *(float **)pointers;
|
||||
b = *((float **)pointers + stride);
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
a = (float *)pointers;
|
||||
b = (float *)pointers + stride;
|
||||
(float *)pointers += stride;
|
||||
a = *(float **)a;
|
||||
b = *(float **)b;
|
||||
}
|
||||
(float *)pointers += stride;
|
||||
owb = oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
|
||||
}
|
||||
fay = tmp1 = FARRAY(a, gc->state.vData.vertexInfo.offset+4)
|
||||
@@ -825,7 +806,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
** compute absolute deltas and draw from low Y to high Y
|
||||
*/
|
||||
ADY = tmp2 - tmp1;
|
||||
i = *(int *)&ADY;
|
||||
i = *(long *)&ADY;
|
||||
if (i < 0) {
|
||||
float *tv;
|
||||
owa = oowb; owb = oowa;
|
||||
@@ -833,7 +814,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
fby = tmp1;
|
||||
tv = a; a = b; b = tv;
|
||||
i ^= 0x80000000; /* ady = -ady; */
|
||||
(*(int *)&ADY) = i;
|
||||
(*(long *)&ADY) = i;
|
||||
}
|
||||
fax = FARRAY(a, gc->state.vData.vertexInfo.offset)
|
||||
*owa*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
|
||||
@@ -841,14 +822,14 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
*owb*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
|
||||
|
||||
DX = fbx - fax;
|
||||
j = *(int *)&DX;
|
||||
j = *(long *)&DX;
|
||||
if (j < 0) {
|
||||
j ^= 0x80000000; /* adx = -adx; */
|
||||
}
|
||||
|
||||
/* check for zero-length lines */
|
||||
if ((j >= i) && (j == 0)) goto all_done_vp;
|
||||
|
||||
|
||||
DA_CONT(kSetupCullDisable | kSetupStrip, gc->cmdTransportInfo.paramMask,
|
||||
0x04UL, vertexParamOffset, SSTCP_PKT3_BDDDDD);
|
||||
{
|
||||
@@ -929,7 +910,7 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
vSize,
|
||||
#endif
|
||||
k;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
float *vPtr;
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
|
||||
@@ -945,8 +926,10 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
GDBG_INFO(110, "%s: paramMask = 0x%x\n", FN_NAME, gc->cmdTransportInfo.paramMask);
|
||||
#endif
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
|
||||
gc->stats.trisProcessed+=(count/3);
|
||||
@@ -961,14 +944,10 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
FxI32 i;
|
||||
FxU32 dataElem = 0;
|
||||
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode)
|
||||
vPtr = *(float **)vPtr;
|
||||
(float *)pointers += stride;
|
||||
|
||||
i = gc->tsuDataList[dataElem];
|
||||
|
||||
@@ -998,12 +977,9 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
TRI_STRIP_BEGIN(kSetupStrip, vcount, gc->state.vData.vSize, SSTCP_PKT3_BDDBDD);
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (mode) {
|
||||
vPtr = pointers;
|
||||
if (mode)
|
||||
vPtr = *(float **)pointers;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
}
|
||||
oow = 1.0f / FARRAY(vPtr, gc->state.vData.wInfo.offset);
|
||||
|
||||
/* x, y */
|
||||
@@ -1011,10 +987,7 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
*oow*gc->state.Viewport.hwidth + gc->state.Viewport.ox);
|
||||
TRI_SETF(FARRAY(vPtr, 4)
|
||||
*oow*gc->state.Viewport.hheight + gc->state.Viewport.oy);
|
||||
if( mode )
|
||||
(float **)pointers += stride;
|
||||
else
|
||||
(float *)pointers += stride;
|
||||
(float *)pointers += stride;
|
||||
|
||||
TRI_VP_SETFS(vPtr,oow);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
**
|
||||
** $Header$
|
||||
** $Log$
|
||||
** Revision 1.1.1.1 1999/11/24 21:44:57 joseph
|
||||
** Initial checkin for SourceForge
|
||||
**
|
||||
**
|
||||
** 4 4/06/99 3:54p Dow
|
||||
** Alt tab again.
|
||||
@@ -146,7 +149,7 @@ _grDrawVertexList(FxU32 pktype, FxU32 type, FxI32 mode, FxI32 count, void *point
|
||||
** simplified code
|
||||
*/
|
||||
FxU32 vSize;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
|
||||
|
||||
@@ -156,8 +159,10 @@ _grDrawVertexList(FxU32 pktype, FxU32 type, FxI32 mode, FxI32 count, void *point
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
vSize = gc->state.vData.vSize;
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof (float *) / sizeof (float);
|
||||
|
||||
/* Draw the first (or possibly only) set. This is necessary because
|
||||
the packet is 3_BDDDDDD, and in the next set, the packet is
|
||||
|
||||
@@ -587,7 +587,7 @@ _grAADrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
FxU32 ia;
|
||||
FxU32 i;
|
||||
FxU32 vsize;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxU32 tmp_cullStripHdr;
|
||||
|
||||
GDBG_INFO(94,"_grAADrawPoints(0x%x, %d, 0x%x)\n", mode, count, pointers);
|
||||
@@ -595,8 +595,10 @@ _grAADrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
GDBG_INFO_MORE(gc->myLevel, "(count = %d, pointers = 0x%x)\n",
|
||||
count, pointers);
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof (float *)/sizeof (float);
|
||||
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
@@ -813,7 +815,7 @@ _grAADrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
FxU32 ia, vNum = 0;
|
||||
FxU32 vsize;
|
||||
FxU32 sCount;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxU32 tmp_cullStripHdr;
|
||||
|
||||
GDBG_INFO(95,"_grAADrawLineStrip(count = %d, pointers = 0x%x)\n",
|
||||
@@ -829,8 +831,11 @@ _grAADrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof (float *) / sizeof(float);
|
||||
|
||||
if (ltype == GR_LINES)
|
||||
sCount = count >> 1; /* line list */
|
||||
else
|
||||
@@ -1348,7 +1353,7 @@ _grAADrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
float **lPtr = (float **)pointers;
|
||||
FxI32 tCount = 3;
|
||||
FxU32 fbzModeOld; /* Squirrel away current fbzMode */
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxI32 xindex = (gc->state.vData.vertexInfo.offset >> 2);
|
||||
FxI32 yindex = xindex + 1;
|
||||
|
||||
@@ -1365,8 +1370,10 @@ _grAADrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
/* gc->state.invalid |= fbzModeBIT; */
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof (float *) / sizeof(float);
|
||||
|
||||
/* backfaced or zero area */
|
||||
while (tCount <= count) {
|
||||
@@ -1521,7 +1528,7 @@ _grAAVpDrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
float **lPtr = (float **)pointers;
|
||||
FxI32 tCount = 3;
|
||||
FxU32 fbzModeOld; /* Squirrel away current fbzMode */
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
FxI32 xindex = (gc->state.vData.vertexInfo.offset >> 2);
|
||||
FxI32 yindex = xindex + 1;
|
||||
|
||||
@@ -1538,8 +1545,10 @@ _grAAVpDrawTriangles(FxI32 mode, FxI32 ttype, FxI32 count, void *pointers)
|
||||
/* gc->state.invalid |= fbzModeBIT; */
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float *) / sizeof(float);
|
||||
|
||||
/* backfaced or zero area */
|
||||
while (tCount <= count) {
|
||||
@@ -1703,7 +1712,7 @@ _grAADrawVertexList(FxU32 type, FxI32 mode, FxI32 count, void *pointers)
|
||||
float *v[3];
|
||||
FxBool flip = FXFALSE;
|
||||
FxU32 fbzModeOld; /* Squirrel away current fbzMode */
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
if (sCount <= 2) return;
|
||||
|
||||
@@ -1714,8 +1723,10 @@ _grAADrawVertexList(FxU32 type, FxI32 mode, FxI32 count, void *pointers)
|
||||
gc->state.shadow.fbzMode &= ~(SST_ZAWRMASK);
|
||||
/* gc->state.invalid |= fbzModeBIT; */
|
||||
GR_FLUSH_STATE();
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof (float *) / sizeof(float);
|
||||
|
||||
sCount-=2;
|
||||
if (type == kSetupFan) {
|
||||
|
||||
@@ -413,7 +413,7 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
* except the data set up is from the pointer array and
|
||||
* its data layout
|
||||
*/
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
/* we snap to an integer by adding a large enough number that it
|
||||
* shoves all fraction bits off the right side of the mantissa.
|
||||
@@ -447,8 +447,10 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
*/
|
||||
#define POINTS_BUFFER 100
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float *) / sizeof(float);
|
||||
|
||||
if (gc->state.grCoordinateSpaceArgs.coordinate_space_mode == GR_WINDOW_COORDS) {
|
||||
#ifndef FX_GLIDE_H5_CSIM
|
||||
@@ -462,14 +464,10 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
DA_BEGIN;
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode) vPtr = *(float **)vPtr;
|
||||
|
||||
(float *)pointers += stride;
|
||||
|
||||
GDBG_INFO_MORE(gc->myLevel, "(%f %f)\n",
|
||||
FARRAY(vPtr,gc->state.vData.vertexInfo.offset),
|
||||
@@ -548,14 +546,10 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
DA_BEGIN;
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode) vPtr = *(float **)vPtr;
|
||||
|
||||
(float *)pointers += stride;
|
||||
|
||||
GDBG_INFO_MORE(gc->myLevel, "(%f %f)\n",
|
||||
FARRAY(vPtr,gc->state.vData.vertexInfo.offset),
|
||||
@@ -647,15 +641,11 @@ _grDrawPoints(FxI32 mode, FxI32 count, void *pointers)
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode)
|
||||
vPtr = *(float **)vPtr;
|
||||
oow = 1.0f / FARRAY(vPtr, gc->state.vData.wInfo.offset);
|
||||
(float *)pointers += stride;
|
||||
|
||||
{
|
||||
FxU32 x, y;
|
||||
@@ -741,7 +731,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
int j;
|
||||
FxI32 sCount;
|
||||
FxU32 vertexParamOffset;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
#define DX gc->pool.ftemp1
|
||||
#define ADY gc->pool.ftemp2
|
||||
@@ -757,8 +747,11 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
|
||||
#define LINES_BUFFER 100
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float *) / sizeof(float);
|
||||
|
||||
if (ltype == GR_LINES)
|
||||
sCount = count >> 1; /* line list */
|
||||
else
|
||||
@@ -770,40 +763,32 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
FxI32 vcount = sCount >= LINES_BUFFER ? LINES_BUFFER : sCount;
|
||||
|
||||
GR_SET_EXPECTED_SIZE((gc->state.vData.vSize << 2) * vcount, vcount);
|
||||
|
||||
DA_BEGIN;
|
||||
for (k = 0; k < vcount; k++) {
|
||||
float *a;
|
||||
float *b;
|
||||
float *a = (float *)pointers;
|
||||
float *b = (float *)pointers + stride;
|
||||
if (mode) {
|
||||
a = *(float **)pointers;
|
||||
b = *((float **)pointers + stride);
|
||||
(float **)pointers += stride;
|
||||
if (ltype == GR_LINES)
|
||||
(float **)pointers += stride;
|
||||
a = *(float **)a;
|
||||
b = *(float **)b;
|
||||
}
|
||||
else {
|
||||
a = (float *)pointers;
|
||||
b = ((float *)pointers + stride);
|
||||
(float *)pointers += stride;
|
||||
if (ltype == GR_LINES)
|
||||
(float *)pointers += stride;
|
||||
if (ltype == GR_LINES)
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
|
||||
/*
|
||||
** compute absolute deltas and draw from low Y to high Y
|
||||
*/
|
||||
ADY = FARRAY(b, gc->state.vData.vertexInfo.offset+4) - FARRAY(a, gc->state.vData.vertexInfo.offset+4);
|
||||
i = *(int *)&ADY;
|
||||
i = *(long *)&ADY;
|
||||
if (i < 0) {
|
||||
float *tv;
|
||||
tv = a; a = b; b = tv;
|
||||
i ^= 0x80000000; /* ady = -ady; */
|
||||
(*(int *)&ADY) = i;
|
||||
(*(long *)&ADY) = i;
|
||||
}
|
||||
|
||||
DX = FARRAY(b, gc->state.vData.vertexInfo.offset) - FARRAY(a, gc->state.vData.vertexInfo.offset);
|
||||
j = *(int *)&DX;
|
||||
j = *(long *)&DX;
|
||||
if (j < 0) {
|
||||
j ^= 0x80000000; /* adx = -adx; */
|
||||
}
|
||||
@@ -942,35 +927,26 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
}
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (ltype == GR_LINES) {
|
||||
a = (float *)pointers;
|
||||
b = (float *)pointers + stride;
|
||||
if (mode) {
|
||||
a = *(float **)pointers;
|
||||
b = *((float **)pointers + stride);
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
a = (float *)pointers;
|
||||
b = ((float *)pointers + stride);
|
||||
(float *)pointers += stride;
|
||||
a = *(float **)a;
|
||||
b = *(float **)b;
|
||||
}
|
||||
(float *)pointers += stride;
|
||||
owa = oowa = 1.0f / FARRAY(a, gc->state.vData.wInfo.offset);
|
||||
owb = oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
|
||||
if (mode)
|
||||
(float **)pointers += stride;
|
||||
else
|
||||
(float *)pointers += stride;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
else {
|
||||
owa = oowa = oowb;
|
||||
a = (float *)pointers;
|
||||
b = (float *)pointers + stride;
|
||||
if (mode) {
|
||||
a = *(float **)pointers;
|
||||
b = *((float **)pointers + stride);
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
a = (float *)pointers;
|
||||
b = (float *)pointers + stride;
|
||||
(float *)pointers += stride;
|
||||
a = *(float **)a;
|
||||
b = *(float **)b;
|
||||
}
|
||||
(float *)pointers += stride;
|
||||
owb = oowb = 1.0f / FARRAY(b, gc->state.vData.wInfo.offset);
|
||||
}
|
||||
fay = tmp1 = FARRAY(a, gc->state.vData.vertexInfo.offset+4)
|
||||
@@ -982,7 +958,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
** compute absolute deltas and draw from low Y to high Y
|
||||
*/
|
||||
ADY = tmp2 - tmp1;
|
||||
i = *(int *)&ADY;
|
||||
i = *(long *)&ADY;
|
||||
if (i < 0) {
|
||||
float *tv;
|
||||
owa = oowb; owb = oowa;
|
||||
@@ -990,7 +966,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
fby = tmp1;
|
||||
tv = a; a = b; b = tv;
|
||||
i ^= 0x80000000; /* ady = -ady; */
|
||||
(*(int *)&ADY) = i;
|
||||
(*(long *)&ADY) = i;
|
||||
}
|
||||
fax = FARRAY(a, gc->state.vData.vertexInfo.offset)
|
||||
*owa*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
|
||||
@@ -998,7 +974,7 @@ _grDrawLineStrip(FxI32 mode, FxI32 ltype, FxI32 count, void *pointers)
|
||||
*owb*gc->state.Viewport.hwidth+gc->state.Viewport.ox;
|
||||
|
||||
DX = fbx - fax;
|
||||
j = *(int *)&DX;
|
||||
j = *(long *)&DX;
|
||||
if (j < 0) {
|
||||
j ^= 0x80000000; /* adx = -adx; */
|
||||
}
|
||||
@@ -1084,7 +1060,7 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
||||
FxI32
|
||||
k;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
float *vPtr;
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
|
||||
@@ -1098,9 +1074,10 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
GDBG_INFO(110, "%s: paramMask = 0x%x\n", FN_NAME, gc->cmdTransportInfo.paramMask);
|
||||
#endif
|
||||
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
|
||||
else
|
||||
stride = sizeof (float *) / sizeof (float);
|
||||
|
||||
gc->stats.trisProcessed+=(count/3);
|
||||
|
||||
@@ -1114,14 +1091,10 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
FxI32 i;
|
||||
FxU32 dataElem = 0;
|
||||
|
||||
if (mode) {
|
||||
vPtr = *(float **)pointers;
|
||||
(float **)pointers += stride;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
(float *)pointers += stride;
|
||||
}
|
||||
vPtr = pointers;
|
||||
if (mode)
|
||||
vPtr = *(float **)vPtr;
|
||||
(float *)pointers += stride;
|
||||
|
||||
i = gc->tsuDataList[dataElem];
|
||||
|
||||
@@ -1151,12 +1124,9 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
TRI_STRIP_BEGIN(kSetupStrip, vcount, gc->state.vData.vSize, SSTCP_PKT3_BDDBDD);
|
||||
|
||||
for (k = 0; k < vcount; k++) {
|
||||
if (mode) {
|
||||
vPtr = pointers;
|
||||
if (mode)
|
||||
vPtr = *(float **)pointers;
|
||||
}
|
||||
else {
|
||||
vPtr = (float *)pointers;
|
||||
}
|
||||
oow = 1.0f / FARRAY(vPtr, gc->state.vData.wInfo.offset);
|
||||
|
||||
/* x, y */
|
||||
@@ -1164,10 +1134,7 @@ _grDrawTriangles_Default(FxI32 mode, FxI32 count, void *pointers)
|
||||
*oow*gc->state.Viewport.hwidth + gc->state.Viewport.ox);
|
||||
TRI_SETF(FARRAY(vPtr, 4)
|
||||
*oow*gc->state.Viewport.hheight + gc->state.Viewport.oy);
|
||||
if (mode)
|
||||
(float **)pointers += stride;
|
||||
else
|
||||
(float *)pointers += stride;
|
||||
(float *)pointers += stride;
|
||||
|
||||
TRI_VP_SETFS(vPtr,oow);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ _grDrawVertexList(FxU32 pktype, FxU32 type, FxI32 mode, FxI32 count, void *point
|
||||
** simplified code
|
||||
*/
|
||||
FxU32 vSize;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
|
||||
|
||||
@@ -181,8 +181,10 @@ _grDrawVertexList(FxU32 pktype, FxU32 type, FxI32 mode, FxI32 count, void *point
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
vSize = gc->state.vData.vSize;
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
/* Draw the first (or possibly only) set. This is necessary because
|
||||
the packet is 3_BDDDDDD, and in the next set, the packet is
|
||||
|
||||
@@ -175,7 +175,7 @@ _grDrawVertexList(FxU32 pktype, FxU32 type, FxI32 mode, FxI32 count, void *point
|
||||
** simplified code
|
||||
*/
|
||||
FxU32 vSize;
|
||||
FxI32 stride = mode;
|
||||
FxI32 stride;
|
||||
|
||||
GR_BEGIN_NOFIFOCHECK(FN_NAME, 90);
|
||||
|
||||
@@ -185,8 +185,10 @@ _grDrawVertexList(FxU32 pktype, FxU32 type, FxI32 mode, FxI32 count, void *point
|
||||
GR_FLUSH_STATE();
|
||||
|
||||
vSize = gc->state.vData.vSize;
|
||||
if (stride == 0)
|
||||
if (mode == 0)
|
||||
stride = gc->state.vData.vStride;
|
||||
else
|
||||
stride = sizeof(float*)/sizeof(float);
|
||||
|
||||
/* Draw the first (or possibly only) set. This is necessary because
|
||||
the packet is 3_BDDDDDD, and in the next set, the packet is
|
||||
|
||||
Reference in New Issue
Block a user