cleanup
This commit is contained in:
@@ -271,6 +271,17 @@ internal_trisetup(const char* FN_NAME,
|
|||||||
const FxBool cullP, const FxBool validStateP,
|
const FxBool cullP, const FxBool validStateP,
|
||||||
const void* a, const void* b, const void* c)
|
const void* a, const void* b, const void* c)
|
||||||
{
|
{
|
||||||
|
#ifdef FAST_C_CLIP
|
||||||
|
AMG_GR_BEGIN_NOFIFOCHECK();
|
||||||
|
|
||||||
|
if (!validStateP) GR_FLUSH_STATE();
|
||||||
|
|
||||||
|
if (cullP) {
|
||||||
|
cullVal=_grTriCull(a,b,c);
|
||||||
|
|
||||||
|
if(cullVal <= 0) return cullVal;
|
||||||
|
}
|
||||||
|
#else /* !FAST_C_CLIP */
|
||||||
GR_BEGIN_NOFIFOCHECK_RET(FN_NAME, 85);
|
GR_BEGIN_NOFIFOCHECK_RET(FN_NAME, 85);
|
||||||
GDBG_INFO_MORE(gc->myLevel,
|
GDBG_INFO_MORE(gc->myLevel,
|
||||||
"(0x%X, 0x%X, 0x%X)\n",
|
"(0x%X, 0x%X, 0x%X)\n",
|
||||||
@@ -286,6 +297,7 @@ internal_trisetup(const char* FN_NAME,
|
|||||||
|
|
||||||
if (cullVal <= 0) return cullVal;
|
if (cullVal <= 0) return cullVal;
|
||||||
}
|
}
|
||||||
|
#endif /* !FAST_C_CLIP */
|
||||||
|
|
||||||
/* Validate parameter coordinates */
|
/* Validate parameter coordinates */
|
||||||
#if defined(GLIDE_SANITY_ASSERT)
|
#if defined(GLIDE_SANITY_ASSERT)
|
||||||
@@ -318,6 +330,45 @@ internal_trisetup(const char* FN_NAME,
|
|||||||
/* Send triangle parameters */
|
/* Send triangle parameters */
|
||||||
|
|
||||||
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
||||||
|
#ifdef FAST_C_CLIP
|
||||||
|
{
|
||||||
|
FxU32 dataElem,i,i2,nextfifo;
|
||||||
|
unsigned long *casta,*castb,*castc,lenght,Loop;
|
||||||
|
|
||||||
|
FxU32* tPackPtr;
|
||||||
|
FxU32 packetVal;
|
||||||
|
AMG_GR_SET_EXPECTED_SIZE(gc->curTriSize, 1);
|
||||||
|
AMG_TRI_STRIP_BEGIN(tPackPtr,packetVal);
|
||||||
|
|
||||||
|
i=gc->curVertexParam;
|
||||||
|
Loop=i-2;
|
||||||
|
i2=i+i;
|
||||||
|
lenght=i-2;
|
||||||
|
nextfifo=6+lenght+lenght; // lenght of vertex params *2
|
||||||
|
|
||||||
|
AMG_TRISETXYNOADD(((unsigned long*)a),0);
|
||||||
|
AMG_TRISETXYNOADD(((unsigned long*)b),i);
|
||||||
|
AMG_TRISETXYNOADD(((unsigned long*)c),i2);
|
||||||
|
|
||||||
|
dataElem=0;
|
||||||
|
i+=2;
|
||||||
|
i2+=2;
|
||||||
|
casta=(unsigned long*)a;
|
||||||
|
castb=(unsigned long*)b;
|
||||||
|
castc=(unsigned long*)c;
|
||||||
|
|
||||||
|
while(Loop!=0) {
|
||||||
|
AMG_TRISETPARAMNOADD(casta[gc->tsuDataListByte[dataElem]],2);
|
||||||
|
AMG_TRISETPARAMNOADD(castb[gc->tsuDataListByte[dataElem]],i);
|
||||||
|
AMG_TRISETPARAMNOADD(castc[gc->tsuDataListByte[dataElem]],i2);
|
||||||
|
AMG_TRIFIFOADD
|
||||||
|
dataElem++;
|
||||||
|
Loop--;
|
||||||
|
}
|
||||||
|
AMG_TRIFIFOADDVALUE(nextfifo)
|
||||||
|
AMG_TRI_END(tPackPtr)
|
||||||
|
}
|
||||||
|
#else /* !FAST_C_CLIP */
|
||||||
{
|
{
|
||||||
FxU32
|
FxU32
|
||||||
dataElem,
|
dataElem,
|
||||||
@@ -359,6 +410,7 @@ internal_trisetup(const char* FN_NAME,
|
|||||||
GR_CHECK_SIZE();
|
GR_CHECK_SIZE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* !FAST_C_CLIP */
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
GR_DCL_HW;
|
GR_DCL_HW;
|
||||||
@@ -532,227 +584,9 @@ _trisetup_Default_win_cull_invalid(const void* a, const void* b, const void* c)
|
|||||||
{
|
{
|
||||||
#define FN_NAME "_trisetup_Default_win_cull_invalid"
|
#define FN_NAME "_trisetup_Default_win_cull_invalid"
|
||||||
|
|
||||||
#ifdef FAST_C_CLIP
|
|
||||||
AMG_GR_BEGIN_NOFIFOCHECK();
|
|
||||||
|
|
||||||
GR_FLUSH_STATE();
|
|
||||||
|
|
||||||
cullVal=_grTriCull(a,b,c);
|
|
||||||
|
|
||||||
if(cullVal <= 0) return cullVal;
|
|
||||||
|
|
||||||
/* Send triangle parameters */
|
|
||||||
|
|
||||||
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
|
||||||
{
|
|
||||||
FxU32 dataElem,i,i2,nextfifo;
|
|
||||||
unsigned long *casta,*castb,*castc,lenght,Loop;
|
|
||||||
|
|
||||||
FxU32* tPackPtr;
|
|
||||||
FxU32 packetVal;
|
|
||||||
AMG_GR_SET_EXPECTED_SIZE(gc->curTriSize, 1);
|
|
||||||
AMG_TRI_STRIP_BEGIN(tPackPtr,packetVal);
|
|
||||||
|
|
||||||
i=gc->curVertexParam;
|
|
||||||
Loop=i-2;
|
|
||||||
i2=i+i;
|
|
||||||
lenght=i-2;
|
|
||||||
nextfifo=6+lenght+lenght; // lenght of vertex params *2
|
|
||||||
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)a),0);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)b),i);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)c),i2);
|
|
||||||
|
|
||||||
dataElem=0;
|
|
||||||
i+=2;
|
|
||||||
i2+=2;
|
|
||||||
casta=(unsigned long*)a;
|
|
||||||
castb=(unsigned long*)b;
|
|
||||||
castc=(unsigned long*)c;
|
|
||||||
|
|
||||||
while(Loop!=0)
|
|
||||||
{
|
|
||||||
AMG_TRISETPARAMNOADD(casta[gc->tsuDataListByte[dataElem]],2);
|
|
||||||
AMG_TRISETPARAMNOADD(castb[gc->tsuDataListByte[dataElem]],i);
|
|
||||||
AMG_TRISETPARAMNOADD(castc[gc->tsuDataListByte[dataElem]],i2);
|
|
||||||
AMG_TRIFIFOADD
|
|
||||||
dataElem++;
|
|
||||||
Loop--;
|
|
||||||
}
|
|
||||||
AMG_TRIFIFOADDVALUE(nextfifo)
|
|
||||||
AMG_TRI_END(tPackPtr)
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
GR_DCL_HW;
|
|
||||||
int vectorIndex;
|
|
||||||
FxU32 sMode = (gc->cmdTransportInfo.paramMask >> SSTCP_PKT3_PMASK_SHIFT);
|
|
||||||
FxU32 paramMask = (sMode & 0xFF);
|
|
||||||
FxU32 paramCount;
|
|
||||||
const float* vectorArray[3];
|
|
||||||
|
|
||||||
vectorArray[0] = (const float *)a;
|
|
||||||
vectorArray[1] = (const float *)b;
|
|
||||||
vectorArray[2] = (const float *)c;
|
|
||||||
|
|
||||||
/* Convert packet 3 paramMask into sMode format */
|
|
||||||
sMode = (paramMask | ((sMode & 0xF000) << 4));
|
|
||||||
|
|
||||||
{
|
|
||||||
const FxBool hasColor = ((sMode & 0x01) != 0);
|
|
||||||
const FxBool hasAlpha = ((sMode & 0x02) != 0);
|
|
||||||
const FxBool hasZ = ((sMode & 0x04) != 0);
|
|
||||||
const FxBool hasWb = ((sMode & 0x08) != 0);
|
|
||||||
const FxBool hasW0 = ((sMode & 0x10) != 0);
|
|
||||||
const FxBool hasST0 = ((sMode & 0x20) != 0);
|
|
||||||
const FxBool hasW1 = ((sMode & 0x40) != 0);
|
|
||||||
const FxBool hasST1 = ((sMode & 0x80) != 0);
|
|
||||||
|
|
||||||
/* We always send vertex XY */
|
|
||||||
paramCount = 2;
|
|
||||||
paramMask = 0x03;
|
|
||||||
|
|
||||||
/* Build parameter data for reg group packet */
|
|
||||||
#if GLIDE_PACKED_RGB
|
|
||||||
if (hasColor || hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x04;
|
|
||||||
}
|
|
||||||
#else /* !GLIDE_PACKED_RGB */
|
|
||||||
if (hasColor) {
|
|
||||||
paramCount += 3;
|
|
||||||
paramMask |= 0x38;
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x40;
|
|
||||||
}
|
|
||||||
#endif /* !GLIDE_PACKED_RGB */
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x80;
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x100;
|
|
||||||
}
|
|
||||||
if (hasW0) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x200;
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0xC00;
|
|
||||||
}
|
|
||||||
if (hasW1) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x1000;
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0x6000;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set mode once for teh whole triangle */
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
GR_SET(BROADCAST_ID, hw, sSetupMode, sMode);
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
|
|
||||||
for(vectorIndex = 0; vectorIndex < sizeof(vectorArray) / sizeof(float*); vectorIndex++) {
|
|
||||||
FxU32
|
|
||||||
dataElem,
|
|
||||||
i;
|
|
||||||
const float* a = (const float *)vectorArray[vectorIndex];
|
|
||||||
|
|
||||||
REG_GROUP_BEGIN(BROADCAST_ID, sVx, paramCount, paramMask);
|
|
||||||
{
|
|
||||||
REG_GROUP_SETF(hw, sVx, FARRAY(a, 0));
|
|
||||||
REG_GROUP_SETF(hw, sVy, FARRAY(a, sizeof(float)));
|
|
||||||
|
|
||||||
dataElem = 0;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
|
|
||||||
if (hasColor) {
|
|
||||||
REG_GROUP_SETF(hw, sRed, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sGreen, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sBlue, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
REG_GROUP_SETF(hw, sAlpha, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
REG_GROUP_SETF(hw, sVz, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
REG_GROUP_SETF(hw, sOowfbi, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU0 */
|
|
||||||
if (hasW0) {
|
|
||||||
REG_GROUP_SETF(hw, sOow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
REG_GROUP_SETF(hw, sSow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU1 */
|
|
||||||
if (hasW1) {
|
|
||||||
REG_GROUP_SETF(hw, sOow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
REG_GROUP_SETF(hw, sSow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
REG_GROUP_END();
|
|
||||||
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
if (vectorIndex == 0) {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sBeginTriCMD, 0);
|
|
||||||
} else {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sDrawTriCMD, 0);
|
|
||||||
}
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GR_END();
|
|
||||||
|
|
||||||
return FXTRUE;
|
|
||||||
#else /* !FAST_C_CLIP */
|
|
||||||
return internal_trisetup(FN_NAME,
|
return internal_trisetup(FN_NAME,
|
||||||
FXTRUE, FXFALSE,
|
FXTRUE, FXFALSE,
|
||||||
a, b, c);
|
a, b, c);
|
||||||
#endif /* !FAST_C_CLIP */
|
|
||||||
|
|
||||||
#undef FN_NAME
|
#undef FN_NAME
|
||||||
}
|
}
|
||||||
@@ -762,224 +596,9 @@ _trisetup_Default_win_cull_valid(const void* a, const void* b, const void* c)
|
|||||||
{
|
{
|
||||||
#define FN_NAME "_trisetup_Default_win_cull_valid"
|
#define FN_NAME "_trisetup_Default_win_cull_valid"
|
||||||
|
|
||||||
#ifdef FAST_C_CLIP
|
|
||||||
AMG_GR_BEGIN_NOFIFOCHECK();
|
|
||||||
|
|
||||||
cullVal=_grTriCull(a,b,c);
|
|
||||||
|
|
||||||
if(cullVal <= 0) return cullVal;
|
|
||||||
|
|
||||||
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
|
||||||
{
|
|
||||||
FxU32 dataElem,i,i2,nextfifo;
|
|
||||||
|
|
||||||
unsigned long *casta,*castb,*castc,lenght,Loop;
|
|
||||||
|
|
||||||
FxU32* tPackPtr;
|
|
||||||
FxU32 packetVal;
|
|
||||||
AMG_GR_SET_EXPECTED_SIZE(gc->curTriSize, 1);
|
|
||||||
AMG_TRI_STRIP_BEGIN(tPackPtr,packetVal);
|
|
||||||
|
|
||||||
i=gc->curVertexParam;
|
|
||||||
Loop=i-2;
|
|
||||||
i2=i+i;
|
|
||||||
lenght=i-2;
|
|
||||||
nextfifo=6+lenght+lenght; // lenght of vertex params *2
|
|
||||||
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)a),0);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)b),i);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)c),i2);
|
|
||||||
|
|
||||||
dataElem=0;
|
|
||||||
i+=2;
|
|
||||||
i2+=2;
|
|
||||||
casta=(unsigned long*)a;
|
|
||||||
castb=(unsigned long*)b;
|
|
||||||
castc=(unsigned long*)c;
|
|
||||||
|
|
||||||
while(Loop!=0)
|
|
||||||
{
|
|
||||||
AMG_TRISETPARAMNOADD(casta[gc->tsuDataListByte[dataElem]],2);
|
|
||||||
AMG_TRISETPARAMNOADD(castb[gc->tsuDataListByte[dataElem]],i);
|
|
||||||
AMG_TRISETPARAMNOADD(castc[gc->tsuDataListByte[dataElem]],i2);
|
|
||||||
AMG_TRIFIFOADD
|
|
||||||
dataElem++;
|
|
||||||
Loop--;
|
|
||||||
}
|
|
||||||
AMG_TRIFIFOADDVALUE(nextfifo)
|
|
||||||
AMG_TRI_END(tPackPtr)
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
GR_DCL_HW;
|
|
||||||
int vectorIndex;
|
|
||||||
FxU32 sMode = (gc->cmdTransportInfo.paramMask >> SSTCP_PKT3_PMASK_SHIFT);
|
|
||||||
FxU32 paramMask = (sMode & 0xFF);
|
|
||||||
FxU32 paramCount;
|
|
||||||
const float* vectorArray[3];
|
|
||||||
|
|
||||||
vectorArray[0] = (const float *)a;
|
|
||||||
vectorArray[1] = (const float *)b;
|
|
||||||
vectorArray[2] = (const float *)c;
|
|
||||||
|
|
||||||
/* Convert packet 3 paramMask into sMode format */
|
|
||||||
sMode = (paramMask | ((sMode & 0xF000) << 4));
|
|
||||||
|
|
||||||
{
|
|
||||||
const FxBool hasColor = ((sMode & 0x01) != 0);
|
|
||||||
const FxBool hasAlpha = ((sMode & 0x02) != 0);
|
|
||||||
const FxBool hasZ = ((sMode & 0x04) != 0);
|
|
||||||
const FxBool hasWb = ((sMode & 0x08) != 0);
|
|
||||||
const FxBool hasW0 = ((sMode & 0x10) != 0);
|
|
||||||
const FxBool hasST0 = ((sMode & 0x20) != 0);
|
|
||||||
const FxBool hasW1 = ((sMode & 0x40) != 0);
|
|
||||||
const FxBool hasST1 = ((sMode & 0x80) != 0);
|
|
||||||
|
|
||||||
/* We always send vertex XY */
|
|
||||||
paramCount = 2;
|
|
||||||
paramMask = 0x03;
|
|
||||||
|
|
||||||
/* Build parameter data for reg group packet */
|
|
||||||
#if GLIDE_PACKED_RGB
|
|
||||||
if (hasColor || hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x04;
|
|
||||||
}
|
|
||||||
#else /* !GLIDE_PACKED_RGB */
|
|
||||||
if (hasColor) {
|
|
||||||
paramCount += 3;
|
|
||||||
paramMask |= 0x38;
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x40;
|
|
||||||
}
|
|
||||||
#endif /* !GLIDE_PACKED_RGB */
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x80;
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x100;
|
|
||||||
}
|
|
||||||
if (hasW0) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x200;
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0xC00;
|
|
||||||
}
|
|
||||||
if (hasW1) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x1000;
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0x6000;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set mode once for teh whole triangle */
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
GR_SET(BROADCAST_ID, hw, sSetupMode, sMode);
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
|
|
||||||
for(vectorIndex = 0; vectorIndex < sizeof(vectorArray) / sizeof(float*); vectorIndex++) {
|
|
||||||
FxU32
|
|
||||||
dataElem,
|
|
||||||
i;
|
|
||||||
const float* a = (const float *)vectorArray[vectorIndex];
|
|
||||||
|
|
||||||
REG_GROUP_BEGIN(BROADCAST_ID, sVx, paramCount, paramMask);
|
|
||||||
{
|
|
||||||
REG_GROUP_SETF(hw, sVx, FARRAY(a, 0));
|
|
||||||
REG_GROUP_SETF(hw, sVy, FARRAY(a, sizeof(float)));
|
|
||||||
|
|
||||||
dataElem = 0;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
|
|
||||||
if (hasColor) {
|
|
||||||
REG_GROUP_SETF(hw, sRed, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sGreen, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sBlue, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
REG_GROUP_SETF(hw, sAlpha, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
REG_GROUP_SETF(hw, sVz, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
REG_GROUP_SETF(hw, sOowfbi, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU0 */
|
|
||||||
if (hasW0) {
|
|
||||||
REG_GROUP_SETF(hw, sOow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
REG_GROUP_SETF(hw, sSow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU1 */
|
|
||||||
if (hasW1) {
|
|
||||||
REG_GROUP_SETF(hw, sOow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
REG_GROUP_SETF(hw, sSow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
REG_GROUP_END();
|
|
||||||
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
if (vectorIndex == 0) {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sBeginTriCMD, 0);
|
|
||||||
} else {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sDrawTriCMD, 0);
|
|
||||||
}
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GR_END();
|
|
||||||
|
|
||||||
return FXTRUE;
|
|
||||||
#else /* !FAST_C_CLIP */
|
|
||||||
return internal_trisetup(FN_NAME,
|
return internal_trisetup(FN_NAME,
|
||||||
FXTRUE, FXTRUE,
|
FXTRUE, FXTRUE,
|
||||||
a, b, c);
|
a, b, c);
|
||||||
#endif /* !FAST_C_CLIP */
|
|
||||||
|
|
||||||
#undef FN_NAME
|
#undef FN_NAME
|
||||||
}
|
}
|
||||||
@@ -989,225 +608,9 @@ _trisetup_Default_win_nocull_invalid(const void* a, const void* b, const void* c
|
|||||||
{
|
{
|
||||||
#define FN_NAME "_trisetup_Default_win_nocull_invalid"
|
#define FN_NAME "_trisetup_Default_win_nocull_invalid"
|
||||||
|
|
||||||
#ifdef FAST_C_CLIP
|
|
||||||
AMG_GR_BEGIN_NOFIFOCHECK();
|
|
||||||
|
|
||||||
/* Pass the current culling mode? */
|
|
||||||
|
|
||||||
GR_FLUSH_STATE();
|
|
||||||
|
|
||||||
/* Send triangle parameters */
|
|
||||||
|
|
||||||
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
|
||||||
{
|
|
||||||
FxU32 dataElem,i,i2,nextfifo;
|
|
||||||
unsigned long *casta,*castb,*castc,lenght,Loop;
|
|
||||||
|
|
||||||
FxU32* tPackPtr;
|
|
||||||
FxU32 packetVal;
|
|
||||||
AMG_GR_SET_EXPECTED_SIZE(gc->curTriSize, 1);
|
|
||||||
AMG_TRI_STRIP_BEGIN(tPackPtr,packetVal);
|
|
||||||
|
|
||||||
i=gc->curVertexParam;
|
|
||||||
Loop=i-2;
|
|
||||||
i2=i+i;
|
|
||||||
lenght=i-2;
|
|
||||||
nextfifo=6+lenght+lenght; // lenght of vertex params *2
|
|
||||||
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)a),0);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)b),i);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)c),i2);
|
|
||||||
|
|
||||||
dataElem=0;
|
|
||||||
i+=2;
|
|
||||||
i2+=2;
|
|
||||||
casta=(unsigned long*)a;
|
|
||||||
castb=(unsigned long*)b;
|
|
||||||
castc=(unsigned long*)c;
|
|
||||||
|
|
||||||
while(Loop!=0)
|
|
||||||
{
|
|
||||||
AMG_TRISETPARAMNOADD(casta[gc->tsuDataListByte[dataElem]],2);
|
|
||||||
AMG_TRISETPARAMNOADD(castb[gc->tsuDataListByte[dataElem]],i);
|
|
||||||
AMG_TRISETPARAMNOADD(castc[gc->tsuDataListByte[dataElem]],i2);
|
|
||||||
AMG_TRIFIFOADD
|
|
||||||
dataElem++;
|
|
||||||
Loop--;
|
|
||||||
}
|
|
||||||
AMG_TRIFIFOADDVALUE(nextfifo)
|
|
||||||
AMG_TRI_END(tPackPtr)
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
GR_DCL_HW;
|
|
||||||
int vectorIndex;
|
|
||||||
FxU32 sMode = (gc->cmdTransportInfo.paramMask >> SSTCP_PKT3_PMASK_SHIFT);
|
|
||||||
FxU32 paramMask = (sMode & 0xFF);
|
|
||||||
FxU32 paramCount;
|
|
||||||
const float* vectorArray[3];
|
|
||||||
|
|
||||||
vectorArray[0] = (const float *)a;
|
|
||||||
vectorArray[1] = (const float *)b;
|
|
||||||
vectorArray[2] = (const float *)c;
|
|
||||||
|
|
||||||
/* Convert packet 3 paramMask into sMode format */
|
|
||||||
sMode = (paramMask | ((sMode & 0xF000) << 4));
|
|
||||||
|
|
||||||
{
|
|
||||||
const FxBool hasColor = ((sMode & 0x01) != 0);
|
|
||||||
const FxBool hasAlpha = ((sMode & 0x02) != 0);
|
|
||||||
const FxBool hasZ = ((sMode & 0x04) != 0);
|
|
||||||
const FxBool hasWb = ((sMode & 0x08) != 0);
|
|
||||||
const FxBool hasW0 = ((sMode & 0x10) != 0);
|
|
||||||
const FxBool hasST0 = ((sMode & 0x20) != 0);
|
|
||||||
const FxBool hasW1 = ((sMode & 0x40) != 0);
|
|
||||||
const FxBool hasST1 = ((sMode & 0x80) != 0);
|
|
||||||
|
|
||||||
/* We always send vertex XY */
|
|
||||||
paramCount = 2;
|
|
||||||
paramMask = 0x03;
|
|
||||||
|
|
||||||
/* Build parameter data for reg group packet */
|
|
||||||
#if GLIDE_PACKED_RGB
|
|
||||||
if (hasColor || hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x04;
|
|
||||||
}
|
|
||||||
#else /* !GLIDE_PACKED_RGB */
|
|
||||||
if (hasColor) {
|
|
||||||
paramCount += 3;
|
|
||||||
paramMask |= 0x38;
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x40;
|
|
||||||
}
|
|
||||||
#endif /* !GLIDE_PACKED_RGB */
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x80;
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x100;
|
|
||||||
}
|
|
||||||
if (hasW0) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x200;
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0xC00;
|
|
||||||
}
|
|
||||||
if (hasW1) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x1000;
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0x6000;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set mode once for teh whole triangle */
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
GR_SET(BROADCAST_ID, hw, sSetupMode, sMode);
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
|
|
||||||
for(vectorIndex = 0; vectorIndex < sizeof(vectorArray) / sizeof(float*); vectorIndex++) {
|
|
||||||
FxU32
|
|
||||||
dataElem,
|
|
||||||
i;
|
|
||||||
const float* a = (const float *)vectorArray[vectorIndex];
|
|
||||||
|
|
||||||
REG_GROUP_BEGIN(BROADCAST_ID, sVx, paramCount, paramMask);
|
|
||||||
{
|
|
||||||
REG_GROUP_SETF(hw, sVx, FARRAY(a, 0));
|
|
||||||
REG_GROUP_SETF(hw, sVy, FARRAY(a, sizeof(float)));
|
|
||||||
|
|
||||||
dataElem = 0;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
|
|
||||||
if (hasColor) {
|
|
||||||
REG_GROUP_SETF(hw, sRed, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sGreen, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sBlue, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
REG_GROUP_SETF(hw, sAlpha, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
REG_GROUP_SETF(hw, sVz, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
REG_GROUP_SETF(hw, sOowfbi, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU0 */
|
|
||||||
if (hasW0) {
|
|
||||||
REG_GROUP_SETF(hw, sOow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
REG_GROUP_SETF(hw, sSow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU1 */
|
|
||||||
if (hasW1) {
|
|
||||||
REG_GROUP_SETF(hw, sOow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
REG_GROUP_SETF(hw, sSow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
REG_GROUP_END();
|
|
||||||
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
if (vectorIndex == 0) {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sBeginTriCMD, 0);
|
|
||||||
} else {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sDrawTriCMD, 0);
|
|
||||||
}
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GR_END();
|
|
||||||
|
|
||||||
return FXTRUE;
|
|
||||||
#else /* !FAST_C_CLIP */
|
|
||||||
return internal_trisetup(FN_NAME,
|
return internal_trisetup(FN_NAME,
|
||||||
FXFALSE, FXFALSE,
|
FXFALSE, FXFALSE,
|
||||||
a, b, c);
|
a, b, c);
|
||||||
#endif /* !FAST_C_CLIP */
|
|
||||||
|
|
||||||
#undef FN_NAME
|
#undef FN_NAME
|
||||||
}
|
}
|
||||||
@@ -1217,227 +620,14 @@ _trisetup_Default_win_nocull_valid(const void* a, const void* b, const void* c)
|
|||||||
{
|
{
|
||||||
#define FN_NAME "_trisetup_Default_win_nocull_valid"
|
#define FN_NAME "_trisetup_Default_win_nocull_valid"
|
||||||
|
|
||||||
#ifdef FAST_C_CLIP
|
|
||||||
AMG_GR_BEGIN_NOFIFOCHECK();
|
|
||||||
|
|
||||||
/* Send triangle parameters */
|
|
||||||
|
|
||||||
#if GLIDE_HW_TRI_SETUP && GLIDE_PACKET3_TRI_SETUP
|
|
||||||
{
|
|
||||||
FxU32 dataElem,i,i2,nextfifo;
|
|
||||||
|
|
||||||
unsigned long *casta,*castb,*castc,lenght,Loop;
|
|
||||||
|
|
||||||
FxU32* tPackPtr;
|
|
||||||
FxU32 packetVal;
|
|
||||||
AMG_GR_SET_EXPECTED_SIZE(gc->curTriSize, 1);
|
|
||||||
AMG_TRI_STRIP_BEGIN(tPackPtr,packetVal);
|
|
||||||
|
|
||||||
i=gc->curVertexParam;
|
|
||||||
Loop=i-2;
|
|
||||||
i2=i+i;
|
|
||||||
lenght=i-2;
|
|
||||||
nextfifo=6+lenght+lenght; // lenght of vertex params *2
|
|
||||||
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)a),0);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)b),i);
|
|
||||||
AMG_TRISETXYNOADD(((unsigned long*)c),i2);
|
|
||||||
|
|
||||||
dataElem=0;
|
|
||||||
i+=2;
|
|
||||||
i2+=2;
|
|
||||||
casta=(unsigned long*)a;
|
|
||||||
castb=(unsigned long*)b;
|
|
||||||
castc=(unsigned long*)c;
|
|
||||||
|
|
||||||
while(Loop!=0)
|
|
||||||
{
|
|
||||||
AMG_TRISETPARAMNOADD(casta[gc->tsuDataListByte[dataElem]],2);
|
|
||||||
AMG_TRISETPARAMNOADD(castb[gc->tsuDataListByte[dataElem]],i);
|
|
||||||
AMG_TRISETPARAMNOADD(castc[gc->tsuDataListByte[dataElem]],i2);
|
|
||||||
AMG_TRIFIFOADD
|
|
||||||
dataElem++;
|
|
||||||
Loop--;
|
|
||||||
}
|
|
||||||
AMG_TRIFIFOADDVALUE(nextfifo)
|
|
||||||
AMG_TRI_END(tPackPtr)
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
GR_DCL_HW;
|
|
||||||
int vectorIndex;
|
|
||||||
FxU32 sMode = (gc->cmdTransportInfo.paramMask >> SSTCP_PKT3_PMASK_SHIFT);
|
|
||||||
FxU32 paramMask = (sMode & 0xFF);
|
|
||||||
FxU32 paramCount;
|
|
||||||
const float* vectorArray[3];
|
|
||||||
|
|
||||||
vectorArray[0] = (const float *)a;
|
|
||||||
vectorArray[1] = (const float *)b;
|
|
||||||
vectorArray[2] = (const float *)c;
|
|
||||||
|
|
||||||
/* Convert packet 3 paramMask into sMode format */
|
|
||||||
sMode = (paramMask | ((sMode & 0xF000) << 4));
|
|
||||||
|
|
||||||
{
|
|
||||||
const FxBool hasColor = ((sMode & 0x01) != 0);
|
|
||||||
const FxBool hasAlpha = ((sMode & 0x02) != 0);
|
|
||||||
const FxBool hasZ = ((sMode & 0x04) != 0);
|
|
||||||
const FxBool hasWb = ((sMode & 0x08) != 0);
|
|
||||||
const FxBool hasW0 = ((sMode & 0x10) != 0);
|
|
||||||
const FxBool hasST0 = ((sMode & 0x20) != 0);
|
|
||||||
const FxBool hasW1 = ((sMode & 0x40) != 0);
|
|
||||||
const FxBool hasST1 = ((sMode & 0x80) != 0);
|
|
||||||
|
|
||||||
/* We always send vertex XY */
|
|
||||||
paramCount = 2;
|
|
||||||
paramMask = 0x03;
|
|
||||||
|
|
||||||
/* Build parameter data for reg group packet */
|
|
||||||
#if GLIDE_PACKED_RGB
|
|
||||||
if (hasColor || hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x04;
|
|
||||||
}
|
|
||||||
#else /* !GLIDE_PACKED_RGB */
|
|
||||||
if (hasColor) {
|
|
||||||
paramCount += 3;
|
|
||||||
paramMask |= 0x38;
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x40;
|
|
||||||
}
|
|
||||||
#endif /* !GLIDE_PACKED_RGB */
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x80;
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x100;
|
|
||||||
}
|
|
||||||
if (hasW0) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x200;
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0xC00;
|
|
||||||
}
|
|
||||||
if (hasW1) {
|
|
||||||
paramCount += 1;
|
|
||||||
paramMask |= 0x1000;
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
paramCount += 2;
|
|
||||||
paramMask |= 0x6000;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set mode once for teh whole triangle */
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
GR_SET(BROADCAST_ID, hw, sSetupMode, sMode);
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
|
|
||||||
for(vectorIndex = 0; vectorIndex < sizeof(vectorArray) / sizeof(float*); vectorIndex++) {
|
|
||||||
FxU32
|
|
||||||
dataElem,
|
|
||||||
i;
|
|
||||||
const float* a = (const float *)vectorArray[vectorIndex];
|
|
||||||
|
|
||||||
REG_GROUP_BEGIN(BROADCAST_ID, sVx, paramCount, paramMask);
|
|
||||||
{
|
|
||||||
REG_GROUP_SETF(hw, sVx, FARRAY(a, 0));
|
|
||||||
REG_GROUP_SETF(hw, sVy, FARRAY(a, sizeof(float)));
|
|
||||||
|
|
||||||
dataElem = 0;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
|
|
||||||
if (hasColor) {
|
|
||||||
REG_GROUP_SETF(hw, sRed, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sGreen, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sBlue, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasAlpha) {
|
|
||||||
REG_GROUP_SETF(hw, sAlpha, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasZ) {
|
|
||||||
REG_GROUP_SETF(hw, sVz, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasWb) {
|
|
||||||
REG_GROUP_SETF(hw, sOowfbi, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU0 */
|
|
||||||
if (hasW0) {
|
|
||||||
REG_GROUP_SETF(hw, sOow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST0) {
|
|
||||||
REG_GROUP_SETF(hw, sSow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow0, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TMU1 */
|
|
||||||
if (hasW1) {
|
|
||||||
REG_GROUP_SETF(hw, sOow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
if (hasST1) {
|
|
||||||
REG_GROUP_SETF(hw, sSow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
REG_GROUP_SETF(hw, sTow1, FARRAY(a, i));
|
|
||||||
dataElem++;
|
|
||||||
i = gc->tsuDataList[dataElem];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
REG_GROUP_END();
|
|
||||||
|
|
||||||
GR_SET_EXPECTED_SIZE(sizeof(FxU32), 1);
|
|
||||||
if (vectorIndex == 0) {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sBeginTriCMD, 0);
|
|
||||||
} else {
|
|
||||||
GR_SET(BROADCAST_ID, hw, sDrawTriCMD, 0);
|
|
||||||
}
|
|
||||||
GR_CHECK_SIZE();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GR_END();
|
|
||||||
|
|
||||||
return FXTRUE;
|
|
||||||
#else /* !FAST_C_CLIP */
|
|
||||||
return internal_trisetup(FN_NAME,
|
return internal_trisetup(FN_NAME,
|
||||||
FXFALSE, FXTRUE,
|
FXFALSE, FXTRUE,
|
||||||
a, b, c);
|
a, b, c);
|
||||||
#endif /* !FAST_C_CLIP */
|
|
||||||
|
|
||||||
#undef FN_NAME
|
#undef FN_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif /* GLIDE_USE_C_TRISETUP */
|
||||||
|
|
||||||
FxI32 FX_CALL
|
FxI32 FX_CALL
|
||||||
_vptrisetup_cull(const void* a, const void* b, const void* c)
|
_vptrisetup_cull(const void* a, const void* b, const void* c)
|
||||||
|
|||||||
Reference in New Issue
Block a user