summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2004-10-01 18:32:25 +0000
committerIan Romanick <idr@us.ibm.com>2004-10-01 18:32:25 +0000
commitbf4b63f8366c752e665caf96f9250364313a3638 (patch)
tree256dfdf248277fb0b90e9fbf3d5cad02653cafb7
parent5e2e9ef45c4982c7aea33daf46386b57ce614252 (diff)
Replace the numerous switch-statements to derive GL_COMBINE post-scale
state with a function. This function sets the bits correctly. Did some trivial refactoring on some of the GL_COMBINE code. First pass at replacing classic texture environments with GL_COMBINE. This is controlled by the EXPERIMENTAL_COMBINE_MODE define.
-rw-r--r--src/mesa/drivers/dri/unichrome/via_state.c627
1 files changed, 208 insertions, 419 deletions
diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c
index c8a3234c95..bc7b713001 100644
--- a/src/mesa/drivers/dri/unichrome/via_state.c
+++ b/src/mesa/drivers/dri/unichrome/via_state.c
@@ -46,6 +46,8 @@
#include "tnl/t_pipeline.h"
+/*#define EXPERIMENTAL_COMBINE_MODE*/
+
static GLuint ROP[16] = {
HC_HROP_BLACK, /* GL_CLEAR 0 */
HC_HROP_DPa, /* GL_AND s & d */
@@ -544,6 +546,32 @@ get_wrap_mode( GLenum sWrap, GLenum tWrap )
return v;
}
+
+/**
+ * Convert the shift value for the \c GL_COMBINE post-scale to the hardware
+ * bits. It would have been easier if the values used by the hardware matched
+ * the shift counts, but they don't. A simple table look-up does the trick.
+ *
+ * \param c Shift count for RGB (color) post-scale.
+ * \param a Shift count for alpha post-scale.
+ *
+ * \returns Bits for \c HTXnTBLCop to set the scale factor.
+ */
+
+__inline__ unsigned
+get_combine_shift_factor( unsigned c, unsigned a )
+{
+ static const unsigned c_shift_table[3] = {
+ HC_HTXnTBLCshift_No, HC_HTXnTBLCshift_1, HC_HTXnTBLCshift_2
+ };
+ static const unsigned a_shift_table[3] = {
+ HC_HTXnTBLAshift_No, HC_HTXnTBLAshift_1, HC_HTXnTBLAshift_2
+ };
+
+ return c_shift_table[ c ] | a_shift_table[ a ];
+}
+
+
void viaChooseTextureState(GLcontext *ctx)
{
viaContextPtr vmesa = VIA_CONTEXT(ctx);
@@ -562,6 +590,22 @@ void viaChooseTextureState(GLcontext *ctx)
}
#endif
+#ifdef DEBUG
+ if (VIA_DEBUG) {
+ struct gl_texture_object *texObj0 = texUnit0->_Current;
+ struct gl_texture_object *texObj1 = texUnit1->_Current;
+
+ fprintf(stderr, "env mode: 0x%04x / 0x%04x\n", texUnit0->EnvMode, texUnit1->EnvMode);
+
+ if ( (texObj0 != NULL) && (texObj0->Image[0][0] != NULL) )
+ fprintf(stderr, "format 0: 0x%04x\n", texObj0->Image[0][0]->Format);
+
+ if ( (texObj1 != NULL) && (texObj1->Image[0][0] != NULL) )
+ fprintf(stderr, "format 1: 0x%04x\n", texObj1->Image[0][0]->Format);
+ }
+#endif
+
+
if (texUnit0->_ReallyEnabled) {
struct gl_texture_object *texObj = texUnit0->_Current;
struct gl_texture_image *texImage = texObj->Image[0][0];
@@ -625,7 +669,9 @@ void viaChooseTextureState(GLcontext *ctx)
#ifdef DEBUG
if (VIA_DEBUG) fprintf(stderr, "texUnit0->EnvMode %x\n",texUnit0->EnvMode);
#endif
+
switch (texUnit0->EnvMode) {
+#ifndef EXPERIMENTAL_COMBINE_MODE
case GL_MODULATE:
switch (texImage->Format) {
case GL_ALPHA:
@@ -1710,48 +1756,38 @@ void viaChooseTextureState(GLcontext *ctx)
break;
}
break;
+#else
+ default:
+#endif
/*=* John Sheng [2003.7.18] texture combine *=*/
case GL_COMBINE:
- switch (texUnit0->Combine.ModeRGB) {
+ switch (texUnit0->_CurrentCombine->ModeRGB) {
case GL_REPLACE:
- switch (texUnit0->Combine.SourceRGB[0]) {
+ vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
+ HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
+ HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
+ HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
+
+ vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
+
+ switch (texUnit0->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Tex;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_ONE_MINUS_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Tex;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Atex;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_ONE_MINUS_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Atex;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
}
break;
@@ -1760,150 +1796,80 @@ void viaChooseTextureState(GLcontext *ctx)
CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[1], g);
CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[2], b);
CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a);
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_HTXnTBLRC;
-
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b;
break;
case GL_ONE_MINUS_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_HTXnTBLRC;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLRCb_0 = (r << 16) | (g << 8) | b;
break;
- case GL_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
+ case GL_SRC_ALPHA:
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_HTXnTBLRC;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a;
break;
case GL_ONE_MINUS_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_HTXnTBLRC;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLRCb_0 = (a << 16) | (a << 8) | a;
break;
}
break;
case GL_PRIMARY_COLOR :
- switch (texUnit0->Combine.OperandRGB[0]) {
- case GL_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
+ case GL_SRC_COLOR:
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_ONE_MINUS_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Dif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Adif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_ONE_MINUS_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Adif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
}
break;
case GL_PREVIOUS :
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Dif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_ONE_MINUS_SRC_COLOR:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Dif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_Adif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
case GL_ONE_MINUS_SRC_ALPHA:
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
- HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
- HC_HTXnTBLCb_TOPC | HC_HTXnTBLCb_0 |
- HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_InvCbias | HC_HTXnTBLCbias_Adif;
- vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
break;
}
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
- case GL_MODULATE:
+ case GL_MODULATE: {
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
- HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0;
+ HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0;
vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
- vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
- switch (texUnit0->Combine.OperandRGB[0]) {
+ vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
+ HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
+
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC;
AlphaCombine[0]=0;
@@ -1921,7 +1887,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit0->Combine.OperandRGB[1]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
AlphaCombine[1]=0;
@@ -1939,10 +1905,10 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit0->Combine.SourceRGB[0]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
- vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
+ vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
}
else {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Atex;
@@ -1978,7 +1944,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit0->Combine.SourceRGB[1]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[1]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -2017,21 +1983,11 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
+ }
case GL_ADD:
case GL_SUBTRACT :
- if (texUnit0->Combine.ModeRGB==GL_ADD) {
+ if (texUnit0->_CurrentCombine->ModeRGB==GL_ADD) {
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0;
}
@@ -2042,7 +1998,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC;
vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 );
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
AlphaCombine[0]=0;
@@ -2060,7 +2016,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit0->Combine.OperandRGB[1]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_TOPC;
AlphaCombine[1]=0;
@@ -2078,7 +2034,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit0->Combine.SourceRGB[0]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -2110,7 +2066,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit0->Combine.SourceRGB[1]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[1]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex;
@@ -2142,17 +2098,6 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_ADD_SIGNED :
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub;
@@ -2162,7 +2107,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_HTXnTBLRC;
vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 );
vmesa->regHTXnTBLRCc_0 = ( 128<<16 | 128<<8 |128 );
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
AlphaCombine[0]=0;
@@ -2180,7 +2125,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit0->Combine.OperandRGB[1]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias;
AlphaCombine[1]=0;
@@ -2198,7 +2143,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit0->Combine.SourceRGB[0]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -2230,7 +2175,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit0->Combine.SourceRGB[1]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[1]==0) {
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Tex;
@@ -2262,22 +2207,11 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_INTERPOLATE :
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub;
vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_TOPC;
AlphaCombine[0]=0;
@@ -2295,7 +2229,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit0->Combine.OperandRGB[1]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_TOPC;
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias;
@@ -2317,7 +2251,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit0->Combine.OperandRGB[2]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[2]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_TOPC;
AlphaCombine[2]=0;
@@ -2335,7 +2269,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[2]=1;
break;
}
- switch (texUnit0->Combine.SourceRGB[0]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -2367,7 +2301,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit0->Combine.SourceRGB[1]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex;
@@ -2406,7 +2340,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit0->Combine.SourceRGB[2]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[2]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
@@ -2438,24 +2372,13 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
}
- switch (texUnit0->Combine.ModeA) {
+ switch (texUnit0->_CurrentCombine->ModeA) {
case GL_REPLACE:
- switch (texUnit0->Combine.SourceA[0]) {
+ switch (texUnit0->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK |
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA |
@@ -2478,7 +2401,7 @@ void viaChooseTextureState(GLcontext *ctx)
break;
case GL_CONSTANT :
CLAMPED_FLOAT_TO_UBYTE(texUnit0->EnvColor[3], a);
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK |
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA |
@@ -2503,7 +2426,7 @@ void viaChooseTextureState(GLcontext *ctx)
break;
case GL_PRIMARY_COLOR :
case GL_PREVIOUS :
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK |
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA |
@@ -2525,17 +2448,6 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_MODULATE:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add |
@@ -2543,7 +2455,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLRFog_0 = 0x0;
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0= 0x0;
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_TOPA;
break;
@@ -2551,7 +2463,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_InvTOPA;
break;
}
- switch (texUnit0->Combine.OperandA[1]) {
+ switch (texUnit0->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA;
break;
@@ -2559,7 +2471,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit0->Combine.SourceA[0]) {
+ switch (texUnit0->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex;
break;
@@ -2573,7 +2485,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif;
break;
}
- switch (texUnit0->Combine.SourceA[1]) {
+ switch (texUnit0->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -2587,21 +2499,10 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_ADD:
case GL_SUBTRACT :
- if(texUnit0->Combine.ModeA==GL_ADD) {
+ if(texUnit0->_CurrentCombine->ModeA==GL_ADD) {
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | HC_HTXnTBLAbias_HTXnTBLRAbias;
}
else {
@@ -2610,7 +2511,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLRFog_0 = 0;
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = 0x0 | ( 255<<16 );
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA;
break;
@@ -2618,7 +2519,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit0->Combine.OperandA[1]) {
+ switch (texUnit0->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_TOPA;
break;
@@ -2626,7 +2527,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_InvTOPA;
break;
}
- switch (texUnit0->Combine.SourceA[0]) {
+ switch (texUnit0->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -2640,7 +2541,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch (texUnit0->Combine.SourceA[1]) {
+ switch (texUnit0->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex;
break;
@@ -2654,17 +2555,6 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Adif;
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_ADD_SIGNED :
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub;
@@ -2673,7 +2563,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA|
HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = ( 255<<16 | 0<<8 |128 );
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA;
break;
@@ -2681,14 +2571,14 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit0->Combine.OperandA[1]) {
+ switch (texUnit0->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
break;
case GL_ONE_MINUS_SRC_ALPHA:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv;
break;
}
- switch (texUnit0->Combine.SourceA[0]) {
+ switch (texUnit0->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -2702,7 +2592,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch (texUnit0->Combine.SourceA[1]) {
+ switch (texUnit0->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex;
break;
@@ -2716,23 +2606,12 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif;
break;
}
- switch ((GLint)(texUnit0->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_INTERPOLATE :
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub;
vmesa->regHTXnTBLRAa_0 = 0x0;
vmesa->regHTXnTBLRFog_0 = 0x0;
- switch (texUnit0->Combine.OperandA[0]) {
+ switch (texUnit0->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_TOPA;
break;
@@ -2740,7 +2619,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit0->Combine.OperandA[1]) {
+ switch (texUnit0->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAc_TOPA;
break;
@@ -2749,7 +2628,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv;
break;
}
- switch (texUnit0->Combine.OperandA[2]) {
+ switch (texUnit0->_CurrentCombine->OperandA[2]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_TOPA;
break;
@@ -2757,7 +2636,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_InvTOPA;
break;
}
- switch (texUnit0->Combine.SourceA[0]) {
+ switch (texUnit0->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -2771,7 +2650,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch (texUnit0->Combine.SourceA[1]) {
+ switch (texUnit0->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex;
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex;
@@ -2789,7 +2668,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif;
break;
}
- switch (texUnit0->Combine.SourceA[2]) {
+ switch (texUnit0->_CurrentCombine->SourceA[2]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex;
break;
@@ -2803,23 +2682,18 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif;
break;
}
- switch (texUnit0->Combine.ScaleShiftA) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_DOT3_RGB :
case GL_DOT3_RGBA :
break;
- }
+ }
+
+ vmesa->regHTXnTBLCop_0 |=
+ get_combine_shift_factor(texUnit0->_CurrentCombine->ScaleShiftRGB,
+ texUnit0->_CurrentCombine->ScaleShiftA);
+
break;
+#ifndef EXPERIMENTAL_COMBINE_MODE
/*=* John Sheng [2003.7.18] texture add *=*/
case GL_ADD:
switch(texImage->Format) {
@@ -3055,7 +2929,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA |
HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = 0x0;
- switch (texUnit0->Combine.OperandRGB[0]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC;
break;
@@ -3063,7 +2937,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC;
break;
}
- switch (texUnit0->Combine.OperandRGB[1]) {
+ switch (texUnit0->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
break;
@@ -3071,7 +2945,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC;
break;
}
- switch (texUnit0->Combine.SourceRGB[0]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
break;
@@ -3087,7 +2961,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif;
break;
}
- switch (texUnit0->Combine.SourceRGB[1]) {
+ switch (texUnit0->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
break;
@@ -3106,6 +2980,7 @@ void viaChooseTextureState(GLcontext *ctx)
break;
default:
break;
+#endif
}
}
else {
@@ -3171,6 +3046,7 @@ void viaChooseTextureState(GLcontext *ctx)
texObj->WrapT );
switch (texUnit1->EnvMode) {
+#ifndef EXPERIMENTAL_COMBINE_MODE
case GL_MODULATE:
switch (texImage->Format) {
case GL_ALPHA:
@@ -4225,13 +4101,16 @@ void viaChooseTextureState(GLcontext *ctx)
break;
}
break;
+#else
+ default:
+#endif
/*=* John Sheng [2003.7.18] texture combine *=*/
case GL_COMBINE:
- switch (texUnit1->Combine.ModeRGB) {
+ switch (texUnit1->_CurrentCombine->ModeRGB) {
case GL_REPLACE:
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
@@ -4275,7 +4154,7 @@ void viaChooseTextureState(GLcontext *ctx)
CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[1], g);
CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[2], b);
CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a);
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
@@ -4320,7 +4199,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
case GL_PRIMARY_COLOR :
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
@@ -4360,7 +4239,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
case GL_PREVIOUS :
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK |
HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_0 |
@@ -4400,17 +4279,6 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_MODULATE:
@@ -4418,7 +4286,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0;
vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_0;
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC;
AlphaCombine[0]=0;
@@ -4436,7 +4304,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit1->Combine.OperandRGB[1]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
AlphaCombine[1]=0;
@@ -4454,7 +4322,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
@@ -4493,7 +4361,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit1->Combine.SourceRGB[1]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[1]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -4532,21 +4400,10 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_ADD:
case GL_SUBTRACT :
- if (texUnit1->Combine.ModeRGB==GL_ADD) {
+ if (texUnit1->_CurrentCombine->ModeRGB==GL_ADD) {
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Add |
HC_HTXnTBLCbias_Cbias | HC_HTXnTBLCbias_0;
}
@@ -4557,7 +4414,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCsat_MASK | HC_HTXnTBLCa_TOPC | HC_HTXnTBLCa_HTXnTBLRC;
vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 );
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
AlphaCombine[0]=0;
@@ -4575,7 +4432,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit1->Combine.OperandRGB[1]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_TOPC;
AlphaCombine[1]=0;
@@ -4593,7 +4450,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -4625,7 +4482,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit1->Combine.SourceRGB[1]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[1]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex;
@@ -4657,17 +4514,6 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_ADD_SIGNED :
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub;
@@ -4677,7 +4523,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLCc_TOPC | HC_HTXnTBLCc_HTXnTBLRC;
vmesa->regHTXnTBLRCa_0 = ( 255<<16 | 255<<8 |255 );
vmesa->regHTXnTBLRCc_0 = ( 128<<16 | 128<<8 |128 );
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
AlphaCombine[0]=0;
@@ -4695,7 +4541,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit1->Combine.OperandRGB[1]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias;
AlphaCombine[1]=0;
@@ -4713,7 +4559,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -4745,7 +4591,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit1->Combine.SourceRGB[1]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[1]==0) {
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Tex;
@@ -4777,22 +4623,11 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_INTERPOLATE :
vmesa->regHTXnTBLCop_0 = HC_HTXnTBLCop_Sub;
vmesa->regHTXnTBLMPfog_0 = HC_HTXnTBLMPfog_Fog;
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCb_TOPC;
AlphaCombine[0]=0;
@@ -4810,7 +4645,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[0]=1;
break;
}
- switch (texUnit1->Combine.OperandRGB[1]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCc_TOPC;
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCbias_Cbias;
@@ -4832,7 +4667,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[1]=1;
break;
}
- switch (texUnit1->Combine.OperandRGB[2]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[2]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 = HC_HTXnTBLCa_TOPC;
AlphaCombine[2]=0;
@@ -4850,7 +4685,7 @@ void viaChooseTextureState(GLcontext *ctx)
AlphaCombine[2]=1;
break;
}
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
@@ -4882,7 +4717,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit1->Combine.SourceRGB[1]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCc_Tex;
@@ -4921,7 +4756,7 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch (texUnit1->Combine.SourceRGB[2]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[2]) {
case GL_TEXTURE:
if (AlphaCombine[0]==0) {
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
@@ -4953,17 +4788,6 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftRGB)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLCshift_2;
- break;
- }
break;
case GL_DOT3_RGB :
@@ -4981,7 +4805,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA |
HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = 0x0;
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC;
break;
@@ -4989,7 +4813,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC;
break;
}
- switch (texUnit1->Combine.OperandRGB[1]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
break;
@@ -4997,7 +4821,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC;
break;
}
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
break;
@@ -5013,7 +4837,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif;
break;
}
- switch (texUnit1->Combine.SourceRGB[1]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
break;
@@ -5032,11 +4856,11 @@ void viaChooseTextureState(GLcontext *ctx)
break;
}
- switch (texUnit1->Combine.ModeA) {
+ switch (texUnit1->_CurrentCombine->ModeA) {
case GL_REPLACE:
- switch (texUnit1->Combine.SourceA[0]) {
+ switch (texUnit1->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK |
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA |
@@ -5059,7 +4883,7 @@ void viaChooseTextureState(GLcontext *ctx)
break;
case GL_CONSTANT :
CLAMPED_FLOAT_TO_UBYTE(texUnit1->EnvColor[3], a);
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK |
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA |
@@ -5084,7 +4908,7 @@ void viaChooseTextureState(GLcontext *ctx)
break;
case GL_PRIMARY_COLOR :
case GL_PREVIOUS :
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK |
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA |
@@ -5106,17 +4930,6 @@ void viaChooseTextureState(GLcontext *ctx)
}
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_MODULATE:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add |
@@ -5124,7 +4937,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLRFog_0 = 0x0;
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0= 0x0;
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_TOPA;
break;
@@ -5132,7 +4945,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_InvTOPA;
break;
}
- switch (texUnit1->Combine.OperandA[1]) {
+ switch (texUnit1->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA;
break;
@@ -5140,7 +4953,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit1->Combine.SourceA[0]) {
+ switch (texUnit1->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex;
break;
@@ -5154,7 +4967,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif;
break;
}
- switch (texUnit1->Combine.SourceA[1]) {
+ switch (texUnit1->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -5168,21 +4981,10 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_ADD:
case GL_SUBTRACT :
- if(texUnit1->Combine.ModeA==GL_ADD) {
+ if(texUnit1->_CurrentCombine->ModeA==GL_ADD) {
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Add | HC_HTXnTBLAbias_HTXnTBLRAbias;
}
else {
@@ -5191,7 +4993,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLRFog_0 = 0;
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAsat_MASK | HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = 0x0 | ( 255<<16 );
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA;
break;
@@ -5199,7 +5001,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit1->Combine.OperandA[1]) {
+ switch (texUnit1->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_TOPA;
break;
@@ -5207,7 +5009,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_InvTOPA;
break;
}
- switch (texUnit1->Combine.SourceA[0]) {
+ switch (texUnit1->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -5221,7 +5023,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch (texUnit1->Combine.SourceA[1]) {
+ switch (texUnit1->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex;
break;
@@ -5235,17 +5037,6 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Adif;
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_ADD_SIGNED :
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub;
@@ -5254,7 +5045,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLAa_TOPA | HC_HTXnTBLAa_HTXnTBLRA|
HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = ( 255<<16 | 0<<8 |128 );
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_TOPA;
break;
@@ -5262,14 +5053,14 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit1->Combine.OperandA[1]) {
+ switch (texUnit1->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
break;
case GL_ONE_MINUS_SRC_ALPHA:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv;
break;
}
- switch (texUnit1->Combine.SourceA[0]) {
+ switch (texUnit1->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -5283,7 +5074,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch (texUnit1->Combine.SourceA[1]) {
+ switch (texUnit1->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex;
break;
@@ -5297,23 +5088,12 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif;
break;
}
- switch ((GLint)(texUnit1->Combine.ScaleShiftA)) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_INTERPOLATE :
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAop_Sub;
vmesa->regHTXnTBLRAa_0 = 0x0;
vmesa->regHTXnTBLRFog_0 = 0x0;
- switch (texUnit1->Combine.OperandA[0]) {
+ switch (texUnit1->_CurrentCombine->OperandA[0]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_TOPA;
break;
@@ -5321,7 +5101,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAb_InvTOPA;
break;
}
- switch (texUnit1->Combine.OperandA[1]) {
+ switch (texUnit1->_CurrentCombine->OperandA[1]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAc_TOPA;
break;
@@ -5330,7 +5110,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Inv;
break;
}
- switch (texUnit1->Combine.OperandA[2]) {
+ switch (texUnit1->_CurrentCombine->OperandA[2]) {
case GL_SRC_ALPHA:
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_TOPA;
break;
@@ -5338,7 +5118,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 = HC_HTXnTBLAa_InvTOPA;
break;
}
- switch (texUnit1->Combine.SourceA[0]) {
+ switch (texUnit1->_CurrentCombine->SourceA[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Atex;
break;
@@ -5352,7 +5132,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAb_Adif;
break;
}
- switch (texUnit1->Combine.SourceA[1]) {
+ switch (texUnit1->_CurrentCombine->SourceA[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAc_Atex;
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Atex;
@@ -5370,7 +5150,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAbias_Adif;
break;
}
- switch (texUnit1->Combine.SourceA[2]) {
+ switch (texUnit1->_CurrentCombine->SourceA[2]) {
case GL_TEXTURE:
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Atex;
break;
@@ -5384,24 +5164,17 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLAsat_0 |= HC_HTXnTBLAa_Adif;
break;
}
- switch (texUnit1->Combine.ScaleShiftA) {
- case 1:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_No;
- break;
- case 2:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_1;
- break;
- case 4:
- vmesa->regHTXnTBLCop_0 |= HC_HTXnTBLAshift_2;
- break;
- }
break;
case GL_DOT3_RGB :
case GL_DOT3_RGBA :
break;
}
- break;
+ vmesa->regHTXnTBLCop_1 |=
+ get_combine_shift_factor(texUnit1->_CurrentCombine->ScaleShiftRGB,
+ texUnit1->_CurrentCombine->ScaleShiftA);
+ break;
+#ifndef EXPERIMENTAL_COMBINE_MODE
/*=* John Sheng [2003.7.18] texture add *=*/
case GL_ADD:
switch(texImage->Format) {
@@ -5637,7 +5410,7 @@ void viaChooseTextureState(GLcontext *ctx)
HC_HTXnTBLAb_TOPA | HC_HTXnTBLAb_HTXnTBLRA |
HC_HTXnTBLAc_TOPA | HC_HTXnTBLAc_HTXnTBLRA;
vmesa->regHTXnTBLRAa_0 = 0x0;
- switch (texUnit1->Combine.OperandRGB[0]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[0]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_TOPC;
break;
@@ -5645,7 +5418,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_InvTOPC;
break;
}
- switch (texUnit1->Combine.OperandRGB[1]) {
+ switch (texUnit1->_CurrentCombine->OperandRGB[1]) {
case GL_SRC_COLOR:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_TOPC;
break;
@@ -5653,7 +5426,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_InvTOPC;
break;
}
- switch (texUnit1->Combine.SourceRGB[0]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[0]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Tex;
break;
@@ -5669,7 +5442,7 @@ void viaChooseTextureState(GLcontext *ctx)
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCa_Dif;
break;
}
- switch (texUnit1->Combine.SourceRGB[1]) {
+ switch (texUnit1->_CurrentCombine->SourceRGB[1]) {
case GL_TEXTURE:
vmesa->regHTXnTBLCsat_0 |= HC_HTXnTBLCb_Tex;
break;
@@ -5688,9 +5461,25 @@ void viaChooseTextureState(GLcontext *ctx)
break;
default:
break;
+#endif
}
}
vmesa->dirty |= VIA_UPLOAD_TEXTURE;
+
+#ifdef DEBUG
+ if (VIA_DEBUG) {
+ fprintf( stderr, "Csat_0 / Cop_0 = 0x%08x / 0x%08x\n",
+ vmesa->regHTXnTBLCsat_0, vmesa->regHTXnTBLCop_0 );
+ fprintf( stderr, "Asat_0 = 0x%08x\n",
+ vmesa->regHTXnTBLAsat_0 );
+ fprintf( stderr, "RCb_0 / RAa_0 = 0x%08x / 0x%08x\n",
+ vmesa->regHTXnTBLRCb_0, vmesa->regHTXnTBLRAa_0 );
+ fprintf( stderr, "RCa_0 / RCc_0 = 0x%08x / 0x%08x\n",
+ vmesa->regHTXnTBLRCa_0, vmesa->regHTXnTBLRCc_0 );
+ fprintf( stderr, "RCbias_0 = 0x%08x\n",
+ vmesa->regHTXnTBLRCbias_0 );
+ }
+#endif
}
else {
if (ctx->Fog.Enabled)