diff options
author | Luc Verhaegen <libv@skynet.be> | 2009-11-16 03:24:26 +0100 |
---|---|---|
committer | Luc Verhaegen <libv@skynet.be> | 2009-11-18 09:52:34 +0100 |
commit | 27e6fa4c8d0ea55788a97d947606c026756f3ca5 (patch) | |
tree | 68834c53afc46fe6d79dc84c6a29501c69102c70 | |
parent | 70111ce582fe7a7b01e6296b6e2b145fb1dcb0b5 (diff) |
DRI: via_state.c: fix indentation and whitespace.
Just a clean-up phase before a bit of restructuring starts.
-rw-r--r-- | dri/via_context.h | 2 | ||||
-rw-r--r-- | dri/via_state.c | 2104 |
2 files changed, 996 insertions, 1110 deletions
diff --git a/dri/via_context.h b/dri/via_context.h index 6f8c3aa..b22d28f 100644 --- a/dri/via_context.h +++ b/dri/via_context.h @@ -112,8 +112,6 @@ struct via_texture_object { GLint firstLevel, lastLevel; /* upload tObj->Image[first .. lastLevel] */ }; - - struct via_context { GLcontext *glCtx; GLcontext *shareCtx; diff --git a/dri/via_state.c b/dri/via_state.c index b6014d5..27e257a 100644 --- a/dri/via_state.c +++ b/dri/via_state.c @@ -43,523 +43,503 @@ #include "../drm/via_halcyon.h" static GLuint ROP[16] = { - HC_HROP_BLACK, /* GL_CLEAR 0 */ - HC_HROP_DPa, /* GL_AND s & d */ - HC_HROP_PDna, /* GL_AND_REVERSE s & ~d */ - HC_HROP_P, /* GL_COPY s */ - HC_HROP_DPna, /* GL_AND_INVERTED ~s & d */ - HC_HROP_D, /* GL_NOOP d */ - HC_HROP_DPx, /* GL_XOR s ^ d */ - HC_HROP_DPo, /* GL_OR s | d */ - HC_HROP_DPon, /* GL_NOR ~(s | d) */ - HC_HROP_DPxn, /* GL_EQUIV ~(s ^ d) */ - HC_HROP_Dn, /* GL_INVERT ~d */ - HC_HROP_PDno, /* GL_OR_REVERSE s | ~d */ - HC_HROP_Pn, /* GL_COPY_INVERTED ~s */ - HC_HROP_DPno, /* GL_OR_INVERTED ~s | d */ - HC_HROP_DPan, /* GL_NAND ~(s & d) */ - HC_HROP_WHITE /* GL_SET 1 */ + HC_HROP_BLACK, /* GL_CLEAR 0 */ + HC_HROP_DPa, /* GL_AND s & d */ + HC_HROP_PDna, /* GL_AND_REVERSE s & ~d */ + HC_HROP_P, /* GL_COPY s */ + HC_HROP_DPna, /* GL_AND_INVERTED ~s & d */ + HC_HROP_D, /* GL_NOOP d */ + HC_HROP_DPx, /* GL_XOR s ^ d */ + HC_HROP_DPo, /* GL_OR s | d */ + HC_HROP_DPon, /* GL_NOR ~(s | d) */ + HC_HROP_DPxn, /* GL_EQUIV ~(s ^ d) */ + HC_HROP_Dn, /* GL_INVERT ~d */ + HC_HROP_PDno, /* GL_OR_REVERSE s | ~d */ + HC_HROP_Pn, /* GL_COPY_INVERTED ~s */ + HC_HROP_DPno, /* GL_OR_INVERTED ~s | d */ + HC_HROP_DPan, /* GL_NAND ~(s & d) */ + HC_HROP_WHITE /* GL_SET 1 */ }; /* * Compute the 'S5.5' lod bias factor from the floating point OpenGL bias. */ -static GLuint viaComputeLodBias(GLfloat bias) +static GLuint +viaComputeLodBias(GLfloat bias) { - int b = (int) (bias * 32.0); - if (b > 511) - b = 511; - else if (b < -512) - b = -512; - return (GLuint) b; + int b = (int) (bias * 32.0); + if (b > 511) + b = 511; + else if (b < -512) + b = -512; + return (GLuint) b; } -void viaEmitState(struct via_context *vmesa) +void +viaEmitState(struct via_context *vmesa) { - GLcontext *ctx = vmesa->glCtx; - GLuint i = 0; - GLuint j = 0; - RING_VARS; - - viaCheckDma(vmesa, 0x110); - - BEGIN_RING(5); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_NotTex << 16) ); - OUT_RING( ((HC_SubA_HEnable << 24) | vmesa->regEnable) ); - OUT_RING( ((HC_SubA_HFBBMSKL << 24) | vmesa->regHFBBMSKL) ); - OUT_RING( ((HC_SubA_HROP << 24) | vmesa->regHROP) ); - ADVANCE_RING(); - - if (vmesa->have_hw_stencil) { - GLuint pitch, format, offset; - - format = HC_HZWBFM_24; - offset = vmesa->depth.offset; - pitch = vmesa->depth.pitch; - - BEGIN_RING(6); - OUT_RING( (HC_SubA_HZWBBasL << 24) | (offset & 0xFFFFFF) ); - OUT_RING( (HC_SubA_HZWBBasH << 24) | ((offset & 0xFF000000) >> 24) ); - OUT_RING( (HC_SubA_HZWBType << 24) | HC_HDBLoc_Local | HC_HZONEasFF_MASK | - format | pitch ); - OUT_RING( (HC_SubA_HZWTMD << 24) | vmesa->regHZWTMD ); - OUT_RING( (HC_SubA_HSTREF << 24) | vmesa->regHSTREF ); - OUT_RING( (HC_SubA_HSTMD << 24) | vmesa->regHSTMD ); - ADVANCE_RING(); - } - else if (vmesa->hasDepth) { - GLuint pitch, format, offset; - - if (vmesa->depthBits == 16) { - format = HC_HZWBFM_16; - } - else { - format = HC_HZWBFM_32; - } - - - offset = vmesa->depth.offset; - pitch = vmesa->depth.pitch; - - BEGIN_RING(4); - OUT_RING( (HC_SubA_HZWBBasL << 24) | (offset & 0xFFFFFF) ); - OUT_RING( (HC_SubA_HZWBBasH << 24) | ((offset & 0xFF000000) >> 24) ); - OUT_RING( (HC_SubA_HZWBType << 24) | HC_HDBLoc_Local | HC_HZONEasFF_MASK | - format | pitch ); - OUT_RING( (HC_SubA_HZWTMD << 24) | vmesa->regHZWTMD ); - ADVANCE_RING(); - } - - if (ctx->Color.AlphaEnabled) { - BEGIN_RING(1); - OUT_RING( (HC_SubA_HATMD << 24) | vmesa->regHATMD ); - ADVANCE_RING(); - i++; - } - - if (ctx->Color.BlendEnabled) { - BEGIN_RING(11); - OUT_RING( (HC_SubA_HABLCsat << 24) | vmesa->regHABLCsat ); - OUT_RING( (HC_SubA_HABLCop << 24) | vmesa->regHABLCop ); - OUT_RING( (HC_SubA_HABLAsat << 24) | vmesa->regHABLAsat ); - OUT_RING( (HC_SubA_HABLAop << 24) | vmesa->regHABLAop ); - OUT_RING( (HC_SubA_HABLRCa << 24) | vmesa->regHABLRCa ); - OUT_RING( (HC_SubA_HABLRFCa << 24) | vmesa->regHABLRFCa ); - OUT_RING( (HC_SubA_HABLRCbias << 24) | vmesa->regHABLRCbias ); - OUT_RING( (HC_SubA_HABLRCb << 24) | vmesa->regHABLRCb ); - OUT_RING( (HC_SubA_HABLRFCb << 24) | vmesa->regHABLRFCb ); - OUT_RING( (HC_SubA_HABLRAa << 24) | vmesa->regHABLRAa ); - OUT_RING( (HC_SubA_HABLRAb << 24) | vmesa->regHABLRAb ); - ADVANCE_RING(); - } - - if (ctx->Fog.Enabled) { - BEGIN_RING(3); - OUT_RING( (HC_SubA_HFogLF << 24) | vmesa->regHFogLF ); - OUT_RING( (HC_SubA_HFogCL << 24) | vmesa->regHFogCL ); - OUT_RING( (HC_SubA_HFogCH << 24) | vmesa->regHFogCH ); - ADVANCE_RING(); - } - - if (ctx->Line.StippleFlag) { - BEGIN_RING(2); - OUT_RING( (HC_SubA_HLP << 24) | ctx->Line.StipplePattern ); - OUT_RING( (HC_SubA_HLPRF << 24) | ctx->Line.StippleFactor ); - ADVANCE_RING(); - } - - BEGIN_RING(1); - OUT_RING( (HC_SubA_HPixGC << 24) | 0x0 ); - ADVANCE_RING(); - - QWORD_PAD_RING(); - - - if (ctx->Texture._EnabledUnits) { - - struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0]; - struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1]; - - { - GLuint nDummyValue = 0; - - BEGIN_RING( 8 ); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (HC_SubType_TexGeneral << 24) ); - - if (texUnit0->Enabled && texUnit1->Enabled) { - nDummyValue = (HC_SubA_HTXSMD << 24) | (1 << 3); - } - else { - nDummyValue = (HC_SubA_HTXSMD << 24) | 0; - } - - if (vmesa->clearTexCache) { - vmesa->clearTexCache = 0; - OUT_RING( nDummyValue | HC_HTXCHCLR_MASK ); - OUT_RING( nDummyValue ); - } - else { - OUT_RING( nDummyValue ); - OUT_RING( nDummyValue ); - } - - OUT_RING( HC_HEADER2 ); - OUT_RING( HC_ParaType_NotTex << 16 ); - OUT_RING( (HC_SubA_HEnable << 24) | vmesa->regEnable ); - OUT_RING( (HC_SubA_HEnable << 24) | vmesa->regEnable ); - ADVANCE_RING(); - } - - if (texUnit0->Enabled) { - struct gl_texture_object *texObj = texUnit0->_Current; - struct via_texture_object *t = (struct via_texture_object *)texObj; - GLuint numLevels = t->lastLevel - t->firstLevel + 1; - if (VIA_DEBUG & DEBUG_STATE) { - fprintf(stderr, "texture0 enabled\n"); - } - if (numLevels == 8) { - BEGIN_RING(27); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (0 << 24) ); - OUT_RING( t->regTexFM ); - OUT_RING( (HC_SubA_HTXnL0OS << 24) | - ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel ); - OUT_RING( t->regTexWidthLog2[0] ); - OUT_RING( t->regTexWidthLog2[1] ); - OUT_RING( t->regTexHeightLog2[0] ); - OUT_RING( t->regTexHeightLog2[1] ); - OUT_RING( t->regTexBaseH[0] ); - OUT_RING( t->regTexBaseH[1] ); - OUT_RING( t->regTexBaseH[2] ); - OUT_RING( t->regTexBaseAndPitch[0].baseL ); - OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[1].baseL ); - OUT_RING( t->regTexBaseAndPitch[1].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[2].baseL ); - OUT_RING( t->regTexBaseAndPitch[2].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[3].baseL ); - OUT_RING( t->regTexBaseAndPitch[3].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[4].baseL ); - OUT_RING( t->regTexBaseAndPitch[4].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[5].baseL ); - OUT_RING( t->regTexBaseAndPitch[5].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[6].baseL ); - OUT_RING( t->regTexBaseAndPitch[6].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[7].baseL ); - OUT_RING( t->regTexBaseAndPitch[7].pitchLog2 ); - ADVANCE_RING(); - } - else if (numLevels > 1) { - - BEGIN_RING(12 + numLevels * 2); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (0 << 24) ); - OUT_RING( t->regTexFM ); - OUT_RING( (HC_SubA_HTXnL0OS << 24) | - ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel ); - OUT_RING( t->regTexWidthLog2[0] ); - OUT_RING( t->regTexHeightLog2[0] ); - - if (numLevels > 6) { - OUT_RING( t->regTexWidthLog2[1] ); - OUT_RING( t->regTexHeightLog2[1] ); - } - - OUT_RING( t->regTexBaseH[0] ); - - if (numLevels > 3) { - OUT_RING( t->regTexBaseH[1] ); - } - if (numLevels > 6) { - OUT_RING( t->regTexBaseH[2] ); - } - if (numLevels > 9) { - OUT_RING( t->regTexBaseH[3] ); - } + GLcontext *ctx = vmesa->glCtx; + GLuint i = 0; + GLuint j = 0; + RING_VARS; + + viaCheckDma(vmesa, 0x110); + + BEGIN_RING(5); + OUT_RING(HC_HEADER2); + OUT_RING(HC_ParaType_NotTex << 16); + OUT_RING((HC_SubA_HEnable << 24) | vmesa->regEnable); + OUT_RING((HC_SubA_HFBBMSKL << 24) | vmesa->regHFBBMSKL); + OUT_RING((HC_SubA_HROP << 24) | vmesa->regHROP); + ADVANCE_RING(); + + if (vmesa->have_hw_stencil) { + GLuint pitch, format, offset; + + format = HC_HZWBFM_24; + offset = vmesa->depth.offset; + pitch = vmesa->depth.pitch; + + BEGIN_RING(6); + OUT_RING((HC_SubA_HZWBBasL << 24) | (offset & 0xFFFFFF)); + OUT_RING((HC_SubA_HZWBBasH << 24) | ((offset & 0xFF000000) >> 24)); + OUT_RING((HC_SubA_HZWBType << 24) | + HC_HDBLoc_Local | HC_HZONEasFF_MASK | format | pitch); + OUT_RING((HC_SubA_HZWTMD << 24) | vmesa->regHZWTMD); + OUT_RING((HC_SubA_HSTREF << 24) | vmesa->regHSTREF); + OUT_RING((HC_SubA_HSTMD << 24) | vmesa->regHSTMD); + ADVANCE_RING(); + } else if (vmesa->hasDepth) { + GLuint pitch, format, offset; + + if (vmesa->depthBits == 16) + format = HC_HZWBFM_16; + else + format = HC_HZWBFM_32; + + offset = vmesa->depth.offset; + pitch = vmesa->depth.pitch; + + BEGIN_RING(4); + OUT_RING((HC_SubA_HZWBBasL << 24) | (offset & 0xFFFFFF)); + OUT_RING((HC_SubA_HZWBBasH << 24) | ((offset & 0xFF000000) >> 24)); + OUT_RING((HC_SubA_HZWBType << 24) | + HC_HDBLoc_Local | HC_HZONEasFF_MASK | format | pitch); + OUT_RING((HC_SubA_HZWTMD << 24) | vmesa->regHZWTMD); + ADVANCE_RING(); + } + + if (ctx->Color.AlphaEnabled) { + BEGIN_RING(1); + OUT_RING((HC_SubA_HATMD << 24) | vmesa->regHATMD); + ADVANCE_RING(); + i++; + } + + if (ctx->Color.BlendEnabled) { + BEGIN_RING(11); + OUT_RING((HC_SubA_HABLCsat << 24) | vmesa->regHABLCsat); + OUT_RING((HC_SubA_HABLCop << 24) | vmesa->regHABLCop); + OUT_RING((HC_SubA_HABLAsat << 24) | vmesa->regHABLAsat); + OUT_RING((HC_SubA_HABLAop << 24) | vmesa->regHABLAop); + OUT_RING((HC_SubA_HABLRCa << 24) | vmesa->regHABLRCa); + OUT_RING((HC_SubA_HABLRFCa << 24) | vmesa->regHABLRFCa); + OUT_RING((HC_SubA_HABLRCbias << 24) | vmesa->regHABLRCbias); + OUT_RING((HC_SubA_HABLRCb << 24) | vmesa->regHABLRCb); + OUT_RING((HC_SubA_HABLRFCb << 24) | vmesa->regHABLRFCb); + OUT_RING((HC_SubA_HABLRAa << 24) | vmesa->regHABLRAa); + OUT_RING((HC_SubA_HABLRAb << 24) | vmesa->regHABLRAb); + ADVANCE_RING(); + } + + if (ctx->Fog.Enabled) { + BEGIN_RING(3); + OUT_RING((HC_SubA_HFogLF << 24) | vmesa->regHFogLF); + OUT_RING((HC_SubA_HFogCL << 24) | vmesa->regHFogCL); + OUT_RING((HC_SubA_HFogCH << 24) | vmesa->regHFogCH); + ADVANCE_RING(); + } + + if (ctx->Line.StippleFlag) { + BEGIN_RING(2); + OUT_RING((HC_SubA_HLP << 24) | ctx->Line.StipplePattern); + OUT_RING((HC_SubA_HLPRF << 24) | ctx->Line.StippleFactor); + ADVANCE_RING(); + } - for (j = 0; j < numLevels; j++) { - OUT_RING( t->regTexBaseAndPitch[j].baseL ); - OUT_RING( t->regTexBaseAndPitch[j].pitchLog2 ); + BEGIN_RING(1); + OUT_RING((HC_SubA_HPixGC << 24) | 0x0); + ADVANCE_RING(); + + QWORD_PAD_RING(); + + if (ctx->Texture._EnabledUnits) { + struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0]; + struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1]; + + { + GLuint nDummyValue = 0; + + BEGIN_RING(8); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (HC_SubType_TexGeneral << 24)); + + if (texUnit0->Enabled && texUnit1->Enabled) + nDummyValue = (HC_SubA_HTXSMD << 24) | (1 << 3); + else + nDummyValue = (HC_SubA_HTXSMD << 24) | 0; + + if (vmesa->clearTexCache) { + vmesa->clearTexCache = 0; + OUT_RING(nDummyValue | HC_HTXCHCLR_MASK); + OUT_RING(nDummyValue); + } else { + OUT_RING(nDummyValue); + OUT_RING(nDummyValue); } - ADVANCE_RING_VARIABLE(); - } - else { - - BEGIN_RING(9); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (0 << 24) ); - OUT_RING( t->regTexFM ); - OUT_RING( (HC_SubA_HTXnL0OS << 24) | - ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel ); - OUT_RING( t->regTexWidthLog2[0] ); - OUT_RING( t->regTexHeightLog2[0] ); - OUT_RING( t->regTexBaseH[0] ); - OUT_RING( t->regTexBaseAndPitch[0].baseL ); - OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 ); - ADVANCE_RING(); - } - - BEGIN_RING(14); - OUT_RING( (HC_SubA_HTXnTB << 24) | vmesa->regHTXnTB[0] ); - OUT_RING( (HC_SubA_HTXnMPMD << 24) | vmesa->regHTXnMPMD[0] ); - OUT_RING( (HC_SubA_HTXnTBLCsat << 24) | vmesa->regHTXnTBLCsat[0] ); - OUT_RING( (HC_SubA_HTXnTBLCop << 24) | vmesa->regHTXnTBLCop[0] ); - OUT_RING( (HC_SubA_HTXnTBLMPfog << 24) | vmesa->regHTXnTBLMPfog[0] ); - OUT_RING( (HC_SubA_HTXnTBLAsat << 24) | vmesa->regHTXnTBLAsat[0] ); - OUT_RING( (HC_SubA_HTXnTBLRCb << 24) | vmesa->regHTXnTBLRCb[0] ); - OUT_RING( (HC_SubA_HTXnTBLRAa << 24) | vmesa->regHTXnTBLRAa[0] ); - OUT_RING( (HC_SubA_HTXnTBLRFog << 24) | vmesa->regHTXnTBLRFog[0] ); - OUT_RING( (HC_SubA_HTXnTBLRCa << 24) | vmesa->regHTXnTBLRCa[0] ); - OUT_RING( (HC_SubA_HTXnTBLRCc << 24) | vmesa->regHTXnTBLRCc[0] ); - OUT_RING( (HC_SubA_HTXnTBLRCbias << 24) | vmesa->regHTXnTBLRCbias[0] ); - OUT_RING( (HC_SubA_HTXnTBC << 24) | vmesa->regHTXnTBC[0] ); - OUT_RING( (HC_SubA_HTXnTRAH << 24) | vmesa->regHTXnTRAH[0] ); -/* OUT_RING( (HC_SubA_HTXnCLODu << 24) | vmesa->regHTXnCLOD[0] ); */ - ADVANCE_RING(); - - /* KW: This test never succeeds: - */ - if (t->regTexFM == HC_HTXnFM_Index8) { - const struct gl_color_table *table = &texObj->Palette; - const GLfloat *tableF = table->TableF; - - BEGIN_RING(2 + table->Size); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Palette << 16) | (0 << 24) ); - for (j = 0; j < table->Size; j++) - OUT_RING( tableF[j] ); + OUT_RING(HC_HEADER2); + OUT_RING(HC_ParaType_NotTex << 16); + OUT_RING((HC_SubA_HEnable << 24) | vmesa->regEnable); + OUT_RING((HC_SubA_HEnable << 24) | vmesa->regEnable); ADVANCE_RING(); - - } - - QWORD_PAD_RING(); - } - - if (texUnit1->Enabled) { - struct gl_texture_object *texObj = texUnit1->_Current; - struct via_texture_object *t = (struct via_texture_object *)texObj; - GLuint numLevels = t->lastLevel - t->firstLevel + 1; - int texunit = (texUnit0->Enabled ? 1 : 0); - if (VIA_DEBUG & DEBUG_STATE) { - fprintf(stderr, "texture1 enabled\n"); - } - if (numLevels == 8) { - BEGIN_RING(27); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (texunit << 24) ); - OUT_RING( t->regTexFM ); - OUT_RING( (HC_SubA_HTXnL0OS << 24) | - ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel ); - OUT_RING( t->regTexWidthLog2[0] ); - OUT_RING( t->regTexWidthLog2[1] ); - OUT_RING( t->regTexHeightLog2[0] ); - OUT_RING( t->regTexHeightLog2[1] ); - OUT_RING( t->regTexBaseH[0] ); - OUT_RING( t->regTexBaseH[1] ); - OUT_RING( t->regTexBaseH[2] ); - OUT_RING( t->regTexBaseAndPitch[0].baseL ); - OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[1].baseL ); - OUT_RING( t->regTexBaseAndPitch[1].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[2].baseL ); - OUT_RING( t->regTexBaseAndPitch[2].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[3].baseL ); - OUT_RING( t->regTexBaseAndPitch[3].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[4].baseL ); - OUT_RING( t->regTexBaseAndPitch[4].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[5].baseL ); - OUT_RING( t->regTexBaseAndPitch[5].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[6].baseL ); - OUT_RING( t->regTexBaseAndPitch[6].pitchLog2 ); - OUT_RING( t->regTexBaseAndPitch[7].baseL ); - OUT_RING( t->regTexBaseAndPitch[7].pitchLog2 ); - ADVANCE_RING(); - } - else if (numLevels > 1) { - BEGIN_RING(12 + numLevels * 2); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (texunit << 24) ); - OUT_RING( t->regTexFM ); - OUT_RING( (HC_SubA_HTXnL0OS << 24) | - ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel ); - OUT_RING( t->regTexWidthLog2[0] ); - OUT_RING( t->regTexHeightLog2[0] ); - - if (numLevels > 6) { - OUT_RING( t->regTexWidthLog2[1] ); - OUT_RING( t->regTexHeightLog2[1] ); - i += 2; - } - - OUT_RING( t->regTexBaseH[0] ); - - if (numLevels > 3) { - OUT_RING( t->regTexBaseH[1] ); + } + + if (texUnit0->Enabled) { + struct gl_texture_object *texObj = texUnit0->_Current; + struct via_texture_object *t = (struct via_texture_object *) texObj; + GLuint numLevels = t->lastLevel - t->firstLevel + 1; + + if (VIA_DEBUG & DEBUG_STATE) + fprintf(stderr, "texture0 enabled\n"); + + if (numLevels == 8) { + BEGIN_RING(27); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (0 << 24)); + OUT_RING(t->regTexFM); + OUT_RING((HC_SubA_HTXnL0OS << 24) | + ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel); + OUT_RING(t->regTexWidthLog2[0]); + OUT_RING(t->regTexWidthLog2[1]); + OUT_RING(t->regTexHeightLog2[0]); + OUT_RING(t->regTexHeightLog2[1]); + OUT_RING(t->regTexBaseH[0]); + OUT_RING(t->regTexBaseH[1]); + OUT_RING(t->regTexBaseH[2]); + OUT_RING(t->regTexBaseAndPitch[0].baseL); + OUT_RING(t->regTexBaseAndPitch[0].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[1].baseL); + OUT_RING(t->regTexBaseAndPitch[1].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[2].baseL); + OUT_RING(t->regTexBaseAndPitch[2].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[3].baseL); + OUT_RING(t->regTexBaseAndPitch[3].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[4].baseL); + OUT_RING(t->regTexBaseAndPitch[4].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[5].baseL); + OUT_RING(t->regTexBaseAndPitch[5].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[6].baseL); + OUT_RING(t->regTexBaseAndPitch[6].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[7].baseL); + OUT_RING(t->regTexBaseAndPitch[7].pitchLog2); + ADVANCE_RING(); + } else if (numLevels > 1) { + BEGIN_RING(12 + numLevels * 2); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (0 << 24)); + OUT_RING(t->regTexFM); + OUT_RING((HC_SubA_HTXnL0OS << 24) | + ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel); + OUT_RING(t->regTexWidthLog2[0]); + OUT_RING(t->regTexHeightLog2[0]); + + if (numLevels > 6) { + OUT_RING(t->regTexWidthLog2[1]); + OUT_RING(t->regTexHeightLog2[1]); + } + + OUT_RING(t->regTexBaseH[0]); + + if (numLevels > 3) + OUT_RING(t->regTexBaseH[1]); + + if (numLevels > 6) + OUT_RING(t->regTexBaseH[2]); + + if (numLevels > 9) + OUT_RING(t->regTexBaseH[3]); + + for (j = 0; j < numLevels; j++) { + OUT_RING(t->regTexBaseAndPitch[j].baseL); + OUT_RING(t->regTexBaseAndPitch[j].pitchLog2); + } + + ADVANCE_RING_VARIABLE(); + } else { + BEGIN_RING(9); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (0 << 24)); + OUT_RING(t->regTexFM); + OUT_RING((HC_SubA_HTXnL0OS << 24) | + ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel); + OUT_RING(t->regTexWidthLog2[0]); + OUT_RING(t->regTexHeightLog2[0]); + OUT_RING(t->regTexBaseH[0]); + OUT_RING(t->regTexBaseAndPitch[0].baseL); + OUT_RING(t->regTexBaseAndPitch[0].pitchLog2); + ADVANCE_RING(); } - if (numLevels > 6) { - OUT_RING( t->regTexBaseH[2] ); - } - if (numLevels > 9) { - OUT_RING( t->regTexBaseH[3] ); + + BEGIN_RING(14); + OUT_RING((HC_SubA_HTXnTB << 24) | vmesa->regHTXnTB[0]); + OUT_RING((HC_SubA_HTXnMPMD << 24) | vmesa->regHTXnMPMD[0]); + OUT_RING((HC_SubA_HTXnTBLCsat << 24) | vmesa->regHTXnTBLCsat[0]); + OUT_RING((HC_SubA_HTXnTBLCop << 24) | vmesa->regHTXnTBLCop[0]); + OUT_RING((HC_SubA_HTXnTBLMPfog << 24) | vmesa->regHTXnTBLMPfog[0]); + OUT_RING((HC_SubA_HTXnTBLAsat << 24) | vmesa->regHTXnTBLAsat[0]); + OUT_RING((HC_SubA_HTXnTBLRCb << 24) | vmesa->regHTXnTBLRCb[0]); + OUT_RING((HC_SubA_HTXnTBLRAa << 24) | vmesa->regHTXnTBLRAa[0]); + OUT_RING((HC_SubA_HTXnTBLRFog << 24) | vmesa->regHTXnTBLRFog[0]); + OUT_RING((HC_SubA_HTXnTBLRCa << 24) | vmesa->regHTXnTBLRCa[0]); + OUT_RING((HC_SubA_HTXnTBLRCc << 24) | vmesa->regHTXnTBLRCc[0]); + OUT_RING((HC_SubA_HTXnTBLRCbias << 24) | vmesa->regHTXnTBLRCbias[0]); + OUT_RING((HC_SubA_HTXnTBC << 24) | vmesa->regHTXnTBC[0]); + OUT_RING((HC_SubA_HTXnTRAH << 24) | vmesa->regHTXnTRAH[0]); + /* OUT_RING((HC_SubA_HTXnCLODu << 24) | vmesa->regHTXnCLOD[0]); */ + ADVANCE_RING(); + + /* KW: This test never succeeds: */ + if (t->regTexFM == HC_HTXnFM_Index8) { + const struct gl_color_table *table = &texObj->Palette; + const GLfloat *tableF = table->TableF; + + BEGIN_RING(2 + table->Size); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Palette << 16) | (0 << 24)); + for (j = 0; j < table->Size; j++) + OUT_RING(tableF[j]); + ADVANCE_RING(); } - - for (j = 0; j < numLevels; j++) { - OUT_RING( t->regTexBaseAndPitch[j].baseL ); - OUT_RING( t->regTexBaseAndPitch[j].pitchLog2 ); + + QWORD_PAD_RING(); + } + + if (texUnit1->Enabled) { + struct gl_texture_object *texObj = texUnit1->_Current; + struct via_texture_object *t = (struct via_texture_object *)texObj; + GLuint numLevels = t->lastLevel - t->firstLevel + 1; + int texunit = (texUnit0->Enabled ? 1 : 0); + + if (VIA_DEBUG & DEBUG_STATE) + fprintf(stderr, "texture1 enabled\n"); + + if (numLevels == 8) { + BEGIN_RING(27); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (texunit << 24)); + OUT_RING(t->regTexFM); + OUT_RING((HC_SubA_HTXnL0OS << 24) | + ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel); + OUT_RING(t->regTexWidthLog2[0]); + OUT_RING(t->regTexWidthLog2[1]); + OUT_RING(t->regTexHeightLog2[0]); + OUT_RING(t->regTexHeightLog2[1]); + OUT_RING(t->regTexBaseH[0]); + OUT_RING(t->regTexBaseH[1]); + OUT_RING(t->regTexBaseH[2]); + OUT_RING(t->regTexBaseAndPitch[0].baseL); + OUT_RING(t->regTexBaseAndPitch[0].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[1].baseL); + OUT_RING(t->regTexBaseAndPitch[1].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[2].baseL); + OUT_RING(t->regTexBaseAndPitch[2].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[3].baseL); + OUT_RING(t->regTexBaseAndPitch[3].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[4].baseL); + OUT_RING(t->regTexBaseAndPitch[4].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[5].baseL); + OUT_RING(t->regTexBaseAndPitch[5].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[6].baseL); + OUT_RING(t->regTexBaseAndPitch[6].pitchLog2); + OUT_RING(t->regTexBaseAndPitch[7].baseL); + OUT_RING(t->regTexBaseAndPitch[7].pitchLog2); + ADVANCE_RING(); + } else if (numLevels > 1) { + BEGIN_RING(12 + numLevels * 2); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (texunit << 24)); + OUT_RING(t->regTexFM); + OUT_RING((HC_SubA_HTXnL0OS << 24) | + ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel); + OUT_RING(t->regTexWidthLog2[0]); + OUT_RING(t->regTexHeightLog2[0]); + + if (numLevels > 6) { + OUT_RING(t->regTexWidthLog2[1]); + OUT_RING(t->regTexHeightLog2[1]); + i += 2; + } + + OUT_RING(t->regTexBaseH[0]); + + if (numLevels > 3) + OUT_RING(t->regTexBaseH[1]); + + if (numLevels > 6) + OUT_RING(t->regTexBaseH[2]); + + if (numLevels > 9) + OUT_RING(t->regTexBaseH[3]); + + for (j = 0; j < numLevels; j++) { + OUT_RING(t->regTexBaseAndPitch[j].baseL); + OUT_RING(t->regTexBaseAndPitch[j].pitchLog2); + } + ADVANCE_RING_VARIABLE(); + } else { + BEGIN_RING(9); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Tex << 16) | (texunit << 24)); + OUT_RING(t->regTexFM); + OUT_RING((HC_SubA_HTXnL0OS << 24) | + ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel); + OUT_RING(t->regTexWidthLog2[0]); + OUT_RING(t->regTexHeightLog2[0]); + OUT_RING(t->regTexBaseH[0]); + OUT_RING(t->regTexBaseAndPitch[0].baseL); + OUT_RING(t->regTexBaseAndPitch[0].pitchLog2); + ADVANCE_RING(); } - ADVANCE_RING_VARIABLE(); - } - else { - BEGIN_RING(9); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Tex << 16) | (texunit << 24) ); - OUT_RING( t->regTexFM ); - OUT_RING( (HC_SubA_HTXnL0OS << 24) | - ((t->lastLevel) << HC_HTXnLVmax_SHIFT) | t->firstLevel ); - OUT_RING( t->regTexWidthLog2[0] ); - OUT_RING( t->regTexHeightLog2[0] ); - OUT_RING( t->regTexBaseH[0] ); - OUT_RING( t->regTexBaseAndPitch[0].baseL ); - OUT_RING( t->regTexBaseAndPitch[0].pitchLog2 ); + + BEGIN_RING(14); + OUT_RING((HC_SubA_HTXnTB << 24) | vmesa->regHTXnTB[1]); + OUT_RING((HC_SubA_HTXnMPMD << 24) | vmesa->regHTXnMPMD[1]); + OUT_RING((HC_SubA_HTXnTBLCsat << 24) | vmesa->regHTXnTBLCsat[1]); + OUT_RING((HC_SubA_HTXnTBLCop << 24) | vmesa->regHTXnTBLCop[1]); + OUT_RING((HC_SubA_HTXnTBLMPfog << 24) | vmesa->regHTXnTBLMPfog[1]); + OUT_RING((HC_SubA_HTXnTBLAsat << 24) | vmesa->regHTXnTBLAsat[1]); + OUT_RING((HC_SubA_HTXnTBLRCb << 24) | vmesa->regHTXnTBLRCb[1]); + OUT_RING((HC_SubA_HTXnTBLRAa << 24) | vmesa->regHTXnTBLRAa[1]); + OUT_RING((HC_SubA_HTXnTBLRFog << 24) | vmesa->regHTXnTBLRFog[1]); + OUT_RING((HC_SubA_HTXnTBLRCa << 24) | vmesa->regHTXnTBLRCa[1]); + OUT_RING((HC_SubA_HTXnTBLRCc << 24) | vmesa->regHTXnTBLRCc[1]); + OUT_RING((HC_SubA_HTXnTBLRCbias << 24) | vmesa->regHTXnTBLRCbias[1]); + OUT_RING((HC_SubA_HTXnTBC << 24) | vmesa->regHTXnTBC[1]); + OUT_RING((HC_SubA_HTXnTRAH << 24) | vmesa->regHTXnTRAH[1]); + /* OUT_RING((HC_SubA_HTXnCLODu << 24) | vmesa->regHTXnCLOD[1]); */ ADVANCE_RING(); - } - - BEGIN_RING(14); - OUT_RING( (HC_SubA_HTXnTB << 24) | vmesa->regHTXnTB[1] ); - OUT_RING( (HC_SubA_HTXnMPMD << 24) | vmesa->regHTXnMPMD[1] ); - OUT_RING( (HC_SubA_HTXnTBLCsat << 24) | vmesa->regHTXnTBLCsat[1] ); - OUT_RING( (HC_SubA_HTXnTBLCop << 24) | vmesa->regHTXnTBLCop[1] ); - OUT_RING( (HC_SubA_HTXnTBLMPfog << 24) | vmesa->regHTXnTBLMPfog[1] ); - OUT_RING( (HC_SubA_HTXnTBLAsat << 24) | vmesa->regHTXnTBLAsat[1] ); - OUT_RING( (HC_SubA_HTXnTBLRCb << 24) | vmesa->regHTXnTBLRCb[1] ); - OUT_RING( (HC_SubA_HTXnTBLRAa << 24) | vmesa->regHTXnTBLRAa[1] ); - OUT_RING( (HC_SubA_HTXnTBLRFog << 24) | vmesa->regHTXnTBLRFog[1] ); - OUT_RING( (HC_SubA_HTXnTBLRCa << 24) | vmesa->regHTXnTBLRCa[1] ); - OUT_RING( (HC_SubA_HTXnTBLRCc << 24) | vmesa->regHTXnTBLRCc[1] ); - OUT_RING( (HC_SubA_HTXnTBLRCbias << 24) | vmesa->regHTXnTBLRCbias[1] ); - OUT_RING( (HC_SubA_HTXnTBC << 24) | vmesa->regHTXnTBC[1] ); - OUT_RING( (HC_SubA_HTXnTRAH << 24) | vmesa->regHTXnTRAH[1] ); -/* OUT_RING( (HC_SubA_HTXnCLODu << 24) | vmesa->regHTXnCLOD[1] ); */ - ADVANCE_RING(); - - /* KW: This test never succeeds: - */ - if (t->regTexFM == HC_HTXnFM_Index8) { - const struct gl_color_table *table = &texObj->Palette; - const GLfloat *tableF = table->TableF; - - BEGIN_RING(2 + table->Size); - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_Palette << 16) | (texunit << 24) ); - for (j = 0; j < table->Size; j++) { - OUT_RING( tableF[j] ); + + /* KW: This test never succeeds: */ + if (t->regTexFM == HC_HTXnFM_Index8) { + const struct gl_color_table *table = &texObj->Palette; + const GLfloat *tableF = table->TableF; + + BEGIN_RING(2 + table->Size); + OUT_RING(HC_HEADER2); + OUT_RING((HC_ParaType_Palette << 16) | (texunit << 24)); + for (j = 0; j < table->Size; j++) + OUT_RING(tableF[j]); + + ADVANCE_RING(); } - ADVANCE_RING(); - } - QWORD_PAD_RING(); - } - } - + QWORD_PAD_RING(); + } + } + #if 0 - /* Polygon stipple is broken - for certain stipple values, - * eg. 0xf0f0f0f0, the hardware will refuse to accept the stipple. - * Coincidentally, conform generates just such a stipple. - */ - if (ctx->Polygon.StippleFlag) { - GLuint *stipple = &ctx->PolygonStipple[0]; - __DRIdrawablePrivate *dPriv = vmesa->driDrawable; - struct via_renderbuffer *const vrb = - (struct via_renderbuffer *) dPriv->driverPrivate; - GLint i; - - BEGIN_RING(38); - OUT_RING( HC_HEADER2 ); - - OUT_RING( ((HC_ParaType_Palette << 16) | (HC_SubType_Stipple << 24)) ); - for (i = 31; i >= 0; i--) { - GLint j; - GLuint k = 0; - - /* Need to flip bits left to right: - */ - for (j = 0 ; j < 32; j++) - if (stipple[i] & (1<<j)) - k |= 1 << (31-j); - - OUT_RING( k ); - } - - OUT_RING( HC_HEADER2 ); - OUT_RING( (HC_ParaType_NotTex << 16) ); - OUT_RING( (HC_SubA_HSPXYOS << 24) ); - OUT_RING( (HC_SubA_HSPXYOS << 24) ); - - ADVANCE_RING(); - } + /* Polygon stipple is broken - for certain stipple values, + * eg. 0xf0f0f0f0, the hardware will refuse to accept the stipple. + * Coincidentally, conform generates just such a stipple. + */ + if (ctx->Polygon.StippleFlag) { + GLuint *stipple = &ctx->PolygonStipple[0]; + __DRIdrawablePrivate *dPriv = vmesa->driDrawable; + struct via_renderbuffer *const vrb = + (struct via_renderbuffer *) dPriv->driverPrivate; + GLint i; + + BEGIN_RING(38); + OUT_RING(HC_HEADER2); + + OUT_RING(((HC_ParaType_Palette << 16) | (HC_SubType_Stipple << 24))); + for (i = 31; i >= 0; i--) { + GLint j; + GLuint k = 0; + + /* Need to flip bits left to right: */ + for (j = 0 ; j < 32; j++) + if (stipple[i] & (1 << j)) + k |= 1 << (31 - j); + + OUT_RING(k); + } + + OUT_RING(HC_HEADER2); + OUT_RING(HC_ParaType_NotTex << 16); + OUT_RING(HC_SubA_HSPXYOS << 24); + OUT_RING(HC_SubA_HSPXYOS << 24); + + ADVANCE_RING(); + } #endif - - vmesa->newEmitState = 0; -} + vmesa->newEmitState = 0; +} -static INLINE GLuint viaPackColor(GLuint bpp, - GLubyte r, GLubyte g, - GLubyte b, GLubyte a) +static INLINE GLuint +viaPackColor(GLuint bpp, GLubyte r, GLubyte g, GLubyte b, GLubyte a) { switch (bpp) { case 16: - return PACK_COLOR_565(r, g, b); + return PACK_COLOR_565(r, g, b); case 32: - return PACK_COLOR_8888(a, r, g, b); + return PACK_COLOR_8888(a, r, g, b); default: - assert(0); - return 0; - } + assert(0); + return 0; + } } -static void viaBlendEquationSeparate(GLcontext *ctx, - GLenum rgbMode, - GLenum aMode) +static void +viaBlendEquationSeparate(GLcontext *ctx, GLenum rgbMode, GLenum aMode) { - if (VIA_DEBUG & DEBUG_STATE) - fprintf(stderr, "%s in\n", __FUNCTION__); + if (VIA_DEBUG & DEBUG_STATE) + fprintf(stderr, "%s in\n", __FUNCTION__); /* GL_EXT_blend_equation_separate not supported */ ASSERT(rgbMode == aMode); /* Can only do GL_ADD equation in hardware */ - FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_BLEND_EQ, + FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_BLEND_EQ, rgbMode != GL_FUNC_ADD_EXT); - /* BlendEquation sets ColorLogicOpEnabled in an unexpected - * manner. - */ + /* BlendEquation sets ColorLogicOpEnabled in an unexpected manner. */ FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_LOGICOP, - (ctx->Color.ColorLogicOpEnabled && - ctx->Color.LogicOp != GL_COPY)); + (ctx->Color.ColorLogicOpEnabled && + ctx->Color.LogicOp != GL_COPY)); } -static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor) +static void +viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor) { struct via_context *vmesa = VIA_CONTEXT(ctx); GLboolean fallback = GL_FALSE; - if (VIA_DEBUG & DEBUG_STATE) + + if (VIA_DEBUG & DEBUG_STATE) fprintf(stderr, "%s in\n", __FUNCTION__); switch (ctx->Color.BlendSrcRGB) { - case GL_SRC_ALPHA_SATURATE: + case GL_SRC_ALPHA_SATURATE: case GL_CONSTANT_COLOR: case GL_ONE_MINUS_CONSTANT_COLOR: case GL_CONSTANT_ALPHA: case GL_ONE_MINUS_CONSTANT_ALPHA: - fallback = GL_TRUE; - break; + fallback = GL_TRUE; + break; default: - break; + break; } switch (ctx->Color.BlendDstRGB) { @@ -567,49 +547,45 @@ static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor) case GL_ONE_MINUS_CONSTANT_COLOR: case GL_CONSTANT_ALPHA: case GL_ONE_MINUS_CONSTANT_ALPHA: - fallback = GL_TRUE; - break; + fallback = GL_TRUE; + break; default: - break; + break; } FALLBACK(vmesa, VIA_FALLBACK_BLEND_FUNC, fallback); } -/* Shouldn't be called as the extension is disabled. +/* + * Shouldn't be called as the extension is disabled. */ -static void viaBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, - GLenum dfactorRGB, GLenum sfactorA, - GLenum dfactorA) +static void +viaBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorA, GLenum dfactorA) { - if (dfactorRGB != dfactorA || sfactorRGB != sfactorA) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glBlendEquation (disabled)"); - } + if (dfactorRGB != dfactorA || sfactorRGB != sfactorA) + _mesa_error(ctx, GL_INVALID_OPERATION, "glBlendEquation (disabled)"); viaBlendFunc(ctx, sfactorRGB, dfactorRGB); } - - - -/* ============================================================= +/* * Hardware clipping */ -static void viaScissor(GLcontext *ctx, GLint x, GLint y, - GLsizei w, GLsizei h) +static void +viaScissor(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h) { struct via_context *vmesa = VIA_CONTEXT(ctx); if (!vmesa->driDrawable) - return; + return; if (VIA_DEBUG & DEBUG_STATE) - fprintf(stderr, "%s %d,%d %dx%d, drawH %d\n", __FUNCTION__, + fprintf(stderr, "%s %d,%d %dx%d, drawH %d\n", __FUNCTION__, x,y,w,h, vmesa->driDrawable->h); - if (vmesa->scissor) { - VIA_FLUSH_DMA(vmesa); /* don't pipeline cliprect changes */ - } + if (vmesa->scissor) + VIA_FLUSH_DMA(vmesa); /* don't pipeline cliprect changes */ vmesa->scissorRect.x1 = x; vmesa->scissorRect.y1 = vmesa->driDrawable->h - y - h; @@ -617,66 +593,67 @@ static void viaScissor(GLcontext *ctx, GLint x, GLint y, vmesa->scissorRect.y2 = vmesa->driDrawable->h - y; } -static void viaEnable(GLcontext *ctx, GLenum cap, GLboolean state) +static void +viaEnable(GLcontext *ctx, GLenum cap, GLboolean state) { - struct via_context *vmesa = VIA_CONTEXT(ctx); - - switch (cap) { - case GL_SCISSOR_TEST: - VIA_FLUSH_DMA(vmesa); - vmesa->scissor = state; - break; - default: - break; - } -} - + struct via_context *vmesa = VIA_CONTEXT(ctx); + switch (cap) { + case GL_SCISSOR_TEST: + VIA_FLUSH_DMA(vmesa); + vmesa->scissor = state; + break; + default: + break; + } +} -/* Fallback to swrast for select and feedback. +/* + * Fallback to swrast for select and feedback. */ -static void viaRenderMode(GLcontext *ctx, GLenum mode) +static void +viaRenderMode(GLcontext *ctx, GLenum mode) { FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_RENDERMODE, (mode != GL_RENDER)); } - -static void viaDrawBuffer(GLcontext *ctx, GLenum mode) +static void +viaDrawBuffer(GLcontext *ctx, GLenum mode) { - struct via_context *vmesa = VIA_CONTEXT(ctx); - - if (VIA_DEBUG & (DEBUG_DRI|DEBUG_STATE)) - fprintf(stderr, "%s in\n", __FUNCTION__); - - if (!ctx->DrawBuffer) - return; - - if (ctx->DrawBuffer->_NumColorDrawBuffers != 1) { - FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_TRUE); - return; - } - - switch ( ctx->DrawBuffer->_ColorDrawBufferIndexes[0] ) { - case BUFFER_FRONT_LEFT: - VIA_FLUSH_DMA(vmesa); - vmesa->drawBuffer = &vmesa->front; - FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE); - break; - case BUFFER_BACK_LEFT: - VIA_FLUSH_DMA(vmesa); - vmesa->drawBuffer = &vmesa->back; - FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE); - break; - default: - FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_TRUE); - return; - } - - - viaXMesaWindowMoved(vmesa); + struct via_context *vmesa = VIA_CONTEXT(ctx); + + if (VIA_DEBUG & (DEBUG_DRI|DEBUG_STATE)) + fprintf(stderr, "%s in\n", __FUNCTION__); + + if (!ctx->DrawBuffer) + return; + + if (ctx->DrawBuffer->_NumColorDrawBuffers != 1) { + FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_TRUE); + return; + } + + switch (ctx->DrawBuffer->_ColorDrawBufferIndexes[0]) { + case BUFFER_FRONT_LEFT: + VIA_FLUSH_DMA(vmesa); + vmesa->drawBuffer = &vmesa->front; + FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE); + break; + case BUFFER_BACK_LEFT: + VIA_FLUSH_DMA(vmesa); + vmesa->drawBuffer = &vmesa->back; + FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_FALSE); + break; + default: + FALLBACK(vmesa, VIA_FALLBACK_DRAW_BUFFER, GL_TRUE); + return; + } + + viaXMesaWindowMoved(vmesa); } -static void viaClearColor(GLcontext *ctx, const GLfloat color[4]) +static void +viaClearColor(GLcontext *ctx, const GLfloat color[4]) { struct via_context *vmesa = VIA_CONTEXT(ctx); GLubyte pcolor[4]; @@ -685,44 +662,46 @@ static void viaClearColor(GLcontext *ctx, const GLfloat color[4]) CLAMPED_FLOAT_TO_UBYTE(pcolor[2], color[2]); CLAMPED_FLOAT_TO_UBYTE(pcolor[3], color[3]); vmesa->ClearColor = viaPackColor(vmesa->viaScreen->bitsPerPixel, - pcolor[0], pcolor[1], - pcolor[2], pcolor[3]); + pcolor[0], pcolor[1], + pcolor[2], pcolor[3]); } #define WRITEMASK_ALPHA_SHIFT 31 #define WRITEMASK_RED_SHIFT 30 #define WRITEMASK_GREEN_SHIFT 29 #define WRITEMASK_BLUE_SHIFT 28 - -static void viaColorMask(GLcontext *ctx, - GLboolean r, GLboolean g, - GLboolean b, GLboolean a) +static void +viaColorMask(GLcontext *ctx, + GLboolean r, GLboolean g, GLboolean b, GLboolean a) { - struct via_context *vmesa = VIA_CONTEXT( ctx ); + struct via_context *vmesa = VIA_CONTEXT(ctx); - if (VIA_DEBUG & DEBUG_STATE) - fprintf(stderr, "%s r(%d) g(%d) b(%d) a(%d)\n", __FUNCTION__, r, g, b, a); + if (VIA_DEBUG & DEBUG_STATE) + fprintf(stderr, "%s r(%d) g(%d) b(%d) a(%d)\n", + __FUNCTION__, r, g, b, a); - vmesa->ClearMask = (((!r) << WRITEMASK_RED_SHIFT) | - ((!g) << WRITEMASK_GREEN_SHIFT) | - ((!b) << WRITEMASK_BLUE_SHIFT) | - ((!a) << WRITEMASK_ALPHA_SHIFT)); + vmesa->ClearMask = ((!r) << WRITEMASK_RED_SHIFT) | + ((!g) << WRITEMASK_GREEN_SHIFT) | + ((!b) << WRITEMASK_BLUE_SHIFT) | + ((!a) << WRITEMASK_ALPHA_SHIFT); } -/* This hardware just isn't capable of private back buffers without +/* + * This hardware just isn't capable of private back buffers without * glitches and/or a hefty locking scheme. */ -void viaCalcViewport(GLcontext *ctx) +void +viaCalcViewport(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); __DRIdrawablePrivate *dPriv = vmesa->driDrawable; - struct via_renderbuffer *const vrb = - (struct via_renderbuffer *) dPriv->driverPrivate; + struct via_renderbuffer *const vrb = + (struct via_renderbuffer *) dPriv->driverPrivate; const GLfloat *v = ctx->Viewport._WindowMap.m; GLfloat *m = vmesa->ViewportMatrix.m; - + m[MAT_SX] = v[MAT_SX]; m[MAT_TX] = v[MAT_TX] + vrb->drawX + SUBPIXEL_X; m[MAT_SY] = - v[MAT_SY]; @@ -731,55 +710,49 @@ void viaCalcViewport(GLcontext *ctx) m[MAT_TZ] = v[MAT_TZ] * (1.0 / vmesa->depth_max); } -static void viaViewport(GLcontext *ctx, - GLint x, GLint y, - GLsizei width, GLsizei height) +static void +viaViewport(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { viaCalcViewport(ctx); } -static void viaDepthRange(GLcontext *ctx, - GLclampd nearval, GLclampd farval) +static void +viaDepthRange(GLcontext *ctx, GLclampd nearval, GLclampd farval) { viaCalcViewport(ctx); } -void viaInitState(GLcontext *ctx) +void +viaInitState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); vmesa->regCmdB = HC_ACMD_HCmdB; vmesa->regEnable = HC_HenCW_MASK; - /* Mesa should do this for us: - */ - - ctx->Driver.BlendEquationSeparate( ctx, - ctx->Color.BlendEquationRGB, + /* Mesa should do this for us: */ + ctx->Driver.BlendEquationSeparate(ctx, ctx->Color.BlendEquationRGB, ctx->Color.BlendEquationA); - ctx->Driver.BlendFuncSeparate( ctx, - ctx->Color.BlendSrcRGB, - ctx->Color.BlendDstRGB, - ctx->Color.BlendSrcA, + ctx->Driver.BlendFuncSeparate(ctx, ctx->Color.BlendSrcRGB, + ctx->Color.BlendDstRGB, ctx->Color.BlendSrcA, ctx->Color.BlendDstA); - ctx->Driver.Scissor( ctx, ctx->Scissor.X, ctx->Scissor.Y, - ctx->Scissor.Width, ctx->Scissor.Height ); + ctx->Driver.Scissor(ctx, ctx->Scissor.X, ctx->Scissor.Y, + ctx->Scissor.Width, ctx->Scissor.Height); - ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] ); + ctx->Driver.DrawBuffer(ctx, ctx->Color.DrawBuffer[0]); } /** * Convert S and T texture coordinate wrap modes to hardware bits. */ static uint32_t -get_wrap_mode( GLenum sWrap, GLenum tWrap ) +get_wrap_mode(GLenum sWrap, GLenum tWrap) { uint32_t v = 0; - - switch( sWrap ) { + switch(sWrap) { case GL_REPEAT: v |= HC_HTXnMPMD_Srepeat; break; @@ -792,7 +765,7 @@ get_wrap_mode( GLenum sWrap, GLenum tWrap ) break; } - switch( tWrap ) { + switch(tWrap) { case GL_REPEAT: v |= HC_HTXnMPMD_Trepeat; break; @@ -804,151 +777,137 @@ get_wrap_mode( GLenum sWrap, GLenum tWrap ) v |= HC_HTXnMPMD_Tmirror; break; } - + return v; } static uint32_t -get_minmag_filter( GLenum min, GLenum mag ) +get_minmag_filter(GLenum min, GLenum mag) { uint32_t v = 0; switch (min) { case GL_NEAREST: - v = HC_HTXnFLSs_Nearest | - HC_HTXnFLTs_Nearest; - break; + v = HC_HTXnFLSs_Nearest | HC_HTXnFLTs_Nearest; + break; case GL_LINEAR: - v = HC_HTXnFLSs_Linear | - HC_HTXnFLTs_Linear; - break; + v = HC_HTXnFLSs_Linear | HC_HTXnFLTs_Linear; + break; case GL_NEAREST_MIPMAP_NEAREST: - v = HC_HTXnFLSs_Nearest | - HC_HTXnFLTs_Nearest; - v |= HC_HTXnFLDs_Nearest; - break; + v = HC_HTXnFLSs_Nearest | HC_HTXnFLTs_Nearest | HC_HTXnFLDs_Nearest; + break; case GL_LINEAR_MIPMAP_NEAREST: - v = HC_HTXnFLSs_Linear | - HC_HTXnFLTs_Linear; - v |= HC_HTXnFLDs_Nearest; - break; + v = HC_HTXnFLSs_Linear | HC_HTXnFLTs_Linear | HC_HTXnFLDs_Nearest; + break; case GL_NEAREST_MIPMAP_LINEAR: - v = HC_HTXnFLSs_Nearest | - HC_HTXnFLTs_Nearest; - v |= HC_HTXnFLDs_Linear; - break; + v = HC_HTXnFLSs_Nearest | HC_HTXnFLTs_Nearest | HC_HTXnFLDs_Linear; + break; case GL_LINEAR_MIPMAP_LINEAR: - v = HC_HTXnFLSs_Linear | - HC_HTXnFLTs_Linear; - v |= HC_HTXnFLDs_Linear; - break; + v = HC_HTXnFLSs_Linear | HC_HTXnFLTs_Linear | HC_HTXnFLDs_Linear; + break; default: - break; + break; } switch (mag) { case GL_LINEAR: - v |= HC_HTXnFLSe_Linear | - HC_HTXnFLTe_Linear; + v |= HC_HTXnFLSe_Linear | HC_HTXnFLTe_Linear; break; case GL_NEAREST: - v |= HC_HTXnFLSe_Nearest | - HC_HTXnFLTe_Nearest; + v |= HC_HTXnFLSe_Nearest | HC_HTXnFLTe_Nearest; break; default: - break; + break; } return v; } - -static GLboolean viaChooseTextureState(GLcontext *ctx) +static GLboolean +viaChooseTextureState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0]; struct gl_texture_unit *texUnit1 = &ctx->Texture.Unit[1]; if (texUnit0->_ReallyEnabled || texUnit1->_ReallyEnabled) { - vmesa->regEnable |= HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK; + vmesa->regEnable |= HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK; - if (texUnit0->_ReallyEnabled) { - struct gl_texture_object *texObj = texUnit0->_Current; - - vmesa->regHTXnTB[0] = get_minmag_filter( texObj->MinFilter, - texObj->MagFilter ); + if (texUnit0->_ReallyEnabled) { + struct gl_texture_object *texObj = texUnit0->_Current; + + vmesa->regHTXnTB[0] = + get_minmag_filter(texObj->MinFilter, texObj->MagFilter); vmesa->regHTXnMPMD[0] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); - vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->WrapS, - texObj->WrapT ); + vmesa->regHTXnMPMD[0] |= + get_wrap_mode(texObj->WrapS, texObj->WrapT); vmesa->regHTXnTB[0] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); - if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { - vmesa->regHTXnTB[0] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); - vmesa->regHTXnTBC[0] = - PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor[0]), - FLOAT_TO_UBYTE(texObj->BorderColor[1]), - FLOAT_TO_UBYTE(texObj->BorderColor[2])); - vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->BorderColor[3]); - } + if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { + vmesa->regHTXnTB[0] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); + vmesa->regHTXnTBC[0] = + PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor[0]), + FLOAT_TO_UBYTE(texObj->BorderColor[1]), + FLOAT_TO_UBYTE(texObj->BorderColor[2])); + vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->BorderColor[3]); + } if (texUnit0->LodBias != 0.0f) { - GLuint b = viaComputeLodBias(texUnit0->LodBias); - vmesa->regHTXnTB[0] &= ~HC_HTXnFLDs_MASK; - vmesa->regHTXnTB[0] |= HC_HTXnFLDs_ConstLOD; - vmesa->regHTXnCLOD[0] = (b&0x1f) | (((~b)&0x1f)<<10); /* FIXME */ + GLuint b = viaComputeLodBias(texUnit0->LodBias); + vmesa->regHTXnTB[0] &= ~HC_HTXnFLDs_MASK; + vmesa->regHTXnTB[0] |= HC_HTXnFLDs_ConstLOD; + vmesa->regHTXnCLOD[0] = (b & 0x1f) | (((~b) & 0x1f) << 10); /* FIXME */ } - if (!viaTexCombineState( vmesa, texUnit0->_CurrentCombine, 0 )) { - if (VIA_DEBUG & DEBUG_TEXTURE) - fprintf(stderr, "viaTexCombineState failed for unit 0\n"); - return GL_FALSE; + if (!viaTexCombineState(vmesa, texUnit0->_CurrentCombine, 0)) { + if (VIA_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "viaTexCombineState failed for unit 0\n"); + return GL_FALSE; } - } + } - if (texUnit1->_ReallyEnabled) { - struct gl_texture_object *texObj = texUnit1->_Current; + if (texUnit1->_ReallyEnabled) { + struct gl_texture_object *texObj = texUnit1->_Current; - vmesa->regHTXnTB[1] = get_minmag_filter( texObj->MinFilter, - texObj->MagFilter ); + vmesa->regHTXnTB[1] = + get_minmag_filter(texObj->MinFilter, texObj->MagFilter); vmesa->regHTXnMPMD[1] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); - vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->WrapS, - texObj->WrapT ); + vmesa->regHTXnMPMD[1] |= + get_wrap_mode(texObj->WrapS, texObj->WrapT); vmesa->regHTXnTB[1] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); - if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { - vmesa->regHTXnTB[1] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); - vmesa->regHTXnTBC[1] = - PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor[0]), - FLOAT_TO_UBYTE(texObj->BorderColor[1]), - FLOAT_TO_UBYTE(texObj->BorderColor[2])); - vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->BorderColor[3]); - } - + if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { + vmesa->regHTXnTB[1] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); + vmesa->regHTXnTBC[1] = + PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor[0]), + FLOAT_TO_UBYTE(texObj->BorderColor[1]), + FLOAT_TO_UBYTE(texObj->BorderColor[2])); + vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->BorderColor[3]); + } if (texUnit1->LodBias != 0.0f) { - GLuint b = viaComputeLodBias(texUnit1->LodBias); - vmesa->regHTXnTB[1] &= ~HC_HTXnFLDs_MASK; - vmesa->regHTXnTB[1] |= HC_HTXnFLDs_ConstLOD; - vmesa->regHTXnCLOD[1] = (b&0x1f) | (((~b)&0x1f)<<10); /* FIXME */ + GLuint b = viaComputeLodBias(texUnit1->LodBias); + vmesa->regHTXnTB[1] &= ~HC_HTXnFLDs_MASK; + vmesa->regHTXnTB[1] |= HC_HTXnFLDs_ConstLOD; + vmesa->regHTXnCLOD[1] = (b & 0x1f) | (((~b) & 0x1f) << 10); /* FIXME */ } - if (!viaTexCombineState( vmesa, texUnit1->_CurrentCombine, 1 )) { - if (VIA_DEBUG & DEBUG_TEXTURE) - fprintf(stderr, "viaTexCombineState failed for unit 1\n"); - return GL_FALSE; + if (!viaTexCombineState(vmesa, texUnit1->_CurrentCombine, 1)) { + if (VIA_DEBUG & DEBUG_TEXTURE) + fprintf(stderr, "viaTexCombineState failed for unit 1\n"); + return GL_FALSE; } - } - } - else { - vmesa->regEnable &= ~(HC_HenTXMP_MASK | HC_HenTXCH_MASK | - HC_HenTXPP_MASK); - } - + } + } else + vmesa->regEnable &= + ~(HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK); + return GL_TRUE; } -static void viaChooseColorState(GLcontext *ctx) +static void +viaChooseColorState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); GLenum s = ctx->Color.BlendSrcRGB; @@ -959,279 +918,219 @@ static void viaChooseColorState(GLcontext *ctx) */ if (ctx->Color.BlendEnabled) { - vmesa->regEnable |= HC_HenABL_MASK; - /* Ca -- always from source color. - */ - vmesa->regHABLCsat = HC_HABLCsat_MASK | HC_HABLCa_OPC | HC_HABLCa_Csrc; - /* Aa -- always from source alpha. - */ - vmesa->regHABLAsat = HC_HABLAsat_MASK | HC_HABLAa_OPA | HC_HABLAa_Asrc; - /* FCa -- depend on following condition. - * FAa -- depend on following condition. - */ - switch (s) { - case GL_ZERO: - /* (0, 0, 0, 0) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa; - vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_HABLFRA; - vmesa->regHABLRFCa = 0x0; - vmesa->regHABLRAa = 0x0; - break; - case GL_ONE: - /* (1, 1, 1, 1) - */ - vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_HABLRCa; - vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_HABLFRA; - vmesa->regHABLRFCa = 0x0; - vmesa->regHABLRAa = 0x0; - break; - case GL_SRC_COLOR: - /* (Rs, Gs, Bs, As) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Csrc; - vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Asrc; - break; - case GL_ONE_MINUS_SRC_COLOR: - /* (1, 1, 1, 1) - (Rs, Gs, Bs, As) - */ - vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Csrc; - vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Asrc; - break; - case GL_DST_COLOR: - /* (Rd, Gd, Bd, Ad) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Cdst; - vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Adst; - break; - case GL_ONE_MINUS_DST_COLOR: - /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad) - */ - vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Cdst; - vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Adst; - break; - case GL_SRC_ALPHA: - /* (As, As, As, As) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Asrc; - vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Asrc; - break; - case GL_ONE_MINUS_SRC_ALPHA: - /* (1, 1, 1, 1) - (As, As, As, As) - */ - vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Asrc; - vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Asrc; - break; - case GL_DST_ALPHA: - { - if (vmesa->viaScreen->bitsPerPixel == 16) { - /* (1, 1, 1, 1) - */ - vmesa->regHABLCsat |= (HC_HABLFCa_InvOPC | - HC_HABLFCa_HABLRCa); - vmesa->regHABLAsat |= (HC_HABLFAa_InvOPA | - HC_HABLFAa_HABLFRA); - vmesa->regHABLRFCa = 0x0; - vmesa->regHABLRAa = 0x0; - } - else { - /* (Ad, Ad, Ad, Ad) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Adst; - vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Adst; - } - } - break; - case GL_ONE_MINUS_DST_ALPHA: - { - if (vmesa->viaScreen->bitsPerPixel == 16) { - /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa; - vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_HABLFRA; - vmesa->regHABLRFCa = 0x0; - vmesa->regHABLRAa = 0x0; - } - else { - /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad) - */ - vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Adst; - vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Adst; - } - } - break; - case GL_SRC_ALPHA_SATURATE: - { - if (vmesa->viaScreen->bitsPerPixel == 16) { - /* (f, f, f, 1), f = min(As, 1 - Ad) = min(As, 1 - 1) = 0 - * So (f, f, f, 1) = (0, 0, 0, 1) - */ - vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa; - vmesa->regHABLAsat |= (HC_HABLFAa_InvOPA | - HC_HABLFAa_HABLFRA); - vmesa->regHABLRFCa = 0x0; - vmesa->regHABLRAa = 0x0; - } - else { - /* (f, f, f, 1), f = min(As, 1 - Ad) - */ - vmesa->regHABLCsat |= (HC_HABLFCa_OPC | - HC_HABLFCa_mimAsrcInvAdst); - vmesa->regHABLAsat |= (HC_HABLFAa_InvOPA | - HC_HABLFAa_HABLFRA); - vmesa->regHABLRFCa = 0x0; - vmesa->regHABLRAa = 0x0; - } - } - break; - } - - /* Op is add. - */ - - /* bias is 0. - */ - vmesa->regHABLCsat |= HC_HABLCbias_HABLRCbias; - vmesa->regHABLAsat |= HC_HABLAbias_HABLRAbias; - - /* Cb -- always from destination color. - */ - vmesa->regHABLCop = HC_HABLCb_OPC | HC_HABLCb_Cdst; - /* Ab -- always from destination alpha. - */ - vmesa->regHABLAop = HC_HABLAb_OPA | HC_HABLAb_Adst; - /* FCb -- depend on following condition. - */ - switch (d) { - case GL_ZERO: - /* (0, 0, 0, 0) - */ - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA; - vmesa->regHABLRFCb = 0x0; - vmesa->regHABLRAb = 0x0; - break; - case GL_ONE: - /* (1, 1, 1, 1) - */ - vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_HABLRCb; - vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_HABLFRA; - vmesa->regHABLRFCb = 0x0; - vmesa->regHABLRAb = 0x0; - break; - case GL_SRC_COLOR: - /* (Rs, Gs, Bs, As) - */ - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Csrc; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Asrc; - break; - case GL_ONE_MINUS_SRC_COLOR: - /* (1, 1, 1, 1) - (Rs, Gs, Bs, As) - */ - vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Csrc; - vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Asrc; - break; - case GL_DST_COLOR: - /* (Rd, Gd, Bd, Ad) - */ - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Cdst; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Adst; - break; - case GL_ONE_MINUS_DST_COLOR: - /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad) - */ - vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Cdst; - vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Adst; - break; - case GL_SRC_ALPHA: - /* (As, As, As, As) - */ - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Asrc; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Asrc; - break; - case GL_ONE_MINUS_SRC_ALPHA: - /* (1, 1, 1, 1) - (As, As, As, As) - */ - vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Asrc; - vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Asrc; - break; - case GL_DST_ALPHA: - { - if (vmesa->viaScreen->bitsPerPixel == 16) { - /* (1, 1, 1, 1) - */ - vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_HABLRCb; - vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_HABLFRA; - vmesa->regHABLRFCb = 0x0; - vmesa->regHABLRAb = 0x0; - } - else { - /* (Ad, Ad, Ad, Ad) - */ - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Adst; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Adst; - } - } - break; - case GL_ONE_MINUS_DST_ALPHA: - { - if (vmesa->viaScreen->bitsPerPixel == 16) { - /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0) - */ - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA; - vmesa->regHABLRFCb = 0x0; - vmesa->regHABLRAb = 0x0; - } - else { - /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad) - */ - vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Adst; - vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Adst; - } - } - break; - default: - vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb; - vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA; - vmesa->regHABLRFCb = 0x0; - vmesa->regHABLRAb = 0x0; - break; - } - - if (vmesa->viaScreen->bitsPerPixel <= 16) - vmesa->regEnable &= ~HC_HenDT_MASK; - - } - else { - vmesa->regEnable &= (~HC_HenABL_MASK); - } + vmesa->regEnable |= HC_HenABL_MASK; + /* Ca -- always from source color. */ + vmesa->regHABLCsat = HC_HABLCsat_MASK | HC_HABLCa_OPC | HC_HABLCa_Csrc; + /* Aa -- always from source alpha. */ + vmesa->regHABLAsat = HC_HABLAsat_MASK | HC_HABLAa_OPA | HC_HABLAa_Asrc; + /* FCa -- depend on following condition. + * FAa -- depend on following condition. + */ + switch (s) { + case GL_ZERO: + /* (0, 0, 0, 0) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa; + vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_HABLFRA; + vmesa->regHABLRFCa = 0x0; + vmesa->regHABLRAa = 0x0; + break; + case GL_ONE: + /* (1, 1, 1, 1) */ + vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_HABLRCa; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_HABLFRA; + vmesa->regHABLRFCa = 0x0; + vmesa->regHABLRAa = 0x0; + break; + case GL_SRC_COLOR: + /* (Rs, Gs, Bs, As) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Csrc; + vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Asrc; + break; + case GL_ONE_MINUS_SRC_COLOR: + /* (1, 1, 1, 1) - (Rs, Gs, Bs, As) */ + vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Csrc; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Asrc; + break; + case GL_DST_COLOR: + /* (Rd, Gd, Bd, Ad) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Cdst; + vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Adst; + break; + case GL_ONE_MINUS_DST_COLOR: + /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad) */ + vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Cdst; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Adst; + break; + case GL_SRC_ALPHA: + /* (As, As, As, As) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Asrc; + vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Asrc; + break; + case GL_ONE_MINUS_SRC_ALPHA: + /* (1, 1, 1, 1) - (As, As, As, As) */ + vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Asrc; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Asrc; + break; + case GL_DST_ALPHA: + if (vmesa->viaScreen->bitsPerPixel == 16) { + /* (1, 1, 1, 1) */ + vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_HABLRCa; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_HABLFRA; + vmesa->regHABLRFCa = 0x0; + vmesa->regHABLRAa = 0x0; + } else { + /* (Ad, Ad, Ad, Ad) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_Adst; + vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_Adst; + } + break; + case GL_ONE_MINUS_DST_ALPHA: + if (vmesa->viaScreen->bitsPerPixel == 16) { + /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa; + vmesa->regHABLAsat |= HC_HABLFAa_OPA | HC_HABLFAa_HABLFRA; + vmesa->regHABLRFCa = 0x0; + vmesa->regHABLRAa = 0x0; + } else { + /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad) */ + vmesa->regHABLCsat |= HC_HABLFCa_InvOPC | HC_HABLFCa_Adst; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_Adst; + } + break; + case GL_SRC_ALPHA_SATURATE: + if (vmesa->viaScreen->bitsPerPixel == 16) { + /* (f, f, f, 1), f = min(As, 1 - Ad) = min(As, 1 - 1) = 0 + * So (f, f, f, 1) = (0, 0, 0, 1) */ + vmesa->regHABLCsat |= HC_HABLFCa_OPC | HC_HABLFCa_HABLRCa; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_HABLFRA; + vmesa->regHABLRFCa = 0x0; + vmesa->regHABLRAa = 0x0; + } else { + /* (f, f, f, 1), f = min(As, 1 - Ad) */ + vmesa->regHABLCsat |= + HC_HABLFCa_OPC | HC_HABLFCa_mimAsrcInvAdst; + vmesa->regHABLAsat |= HC_HABLFAa_InvOPA | HC_HABLFAa_HABLFRA; + vmesa->regHABLRFCa = 0x0; + vmesa->regHABLRAa = 0x0; + } + break; + } + + /* Op is add. */ + + /* bias is 0. */ + vmesa->regHABLCsat |= HC_HABLCbias_HABLRCbias; + vmesa->regHABLAsat |= HC_HABLAbias_HABLRAbias; + + /* Cb -- always from destination color. */ + vmesa->regHABLCop = HC_HABLCb_OPC | HC_HABLCb_Cdst; + /* Ab -- always from destination alpha. */ + vmesa->regHABLAop = HC_HABLAb_OPA | HC_HABLAb_Adst; + /* FCb -- depend on following condition. */ + switch (d) { + case GL_ZERO: + /* (0, 0, 0, 0) */ + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA; + vmesa->regHABLRFCb = 0x0; + vmesa->regHABLRAb = 0x0; + break; + case GL_ONE: + /* (1, 1, 1, 1) */ + vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_HABLRCb; + vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_HABLFRA; + vmesa->regHABLRFCb = 0x0; + vmesa->regHABLRAb = 0x0; + break; + case GL_SRC_COLOR: + /* (Rs, Gs, Bs, As) */ + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Csrc; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Asrc; + break; + case GL_ONE_MINUS_SRC_COLOR: + /* (1, 1, 1, 1) - (Rs, Gs, Bs, As) */ + vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Csrc; + vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Asrc; + break; + case GL_DST_COLOR: + /* (Rd, Gd, Bd, Ad) */ + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Cdst; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Adst; + break; + case GL_ONE_MINUS_DST_COLOR: + /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad) */ + vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Cdst; + vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Adst; + break; + case GL_SRC_ALPHA: + /* (As, As, As, As) */ + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Asrc; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Asrc; + break; + case GL_ONE_MINUS_SRC_ALPHA: + /* (1, 1, 1, 1) - (As, As, As, As) */ + vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Asrc; + vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Asrc; + break; + case GL_DST_ALPHA: + if (vmesa->viaScreen->bitsPerPixel == 16) { + /* (1, 1, 1, 1) */ + vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_HABLRCb; + vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_HABLFRA; + vmesa->regHABLRFCb = 0x0; + vmesa->regHABLRAb = 0x0; + } else { + /* (Ad, Ad, Ad, Ad) */ + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_Adst; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_Adst; + } + break; + case GL_ONE_MINUS_DST_ALPHA: + if (vmesa->viaScreen->bitsPerPixel == 16) { + /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0) */ + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA; + vmesa->regHABLRFCb = 0x0; + vmesa->regHABLRAb = 0x0; + } else { + /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad) */ + vmesa->regHABLCop |= HC_HABLFCb_InvOPC | HC_HABLFCb_Adst; + vmesa->regHABLAop |= HC_HABLFAb_InvOPA | HC_HABLFAb_Adst; + } + break; + default: + vmesa->regHABLCop |= HC_HABLFCb_OPC | HC_HABLFCb_HABLRCb; + vmesa->regHABLAop |= HC_HABLFAb_OPA | HC_HABLFAb_HABLFRA; + vmesa->regHABLRFCb = 0x0; + vmesa->regHABLRAb = 0x0; + break; + } + + if (vmesa->viaScreen->bitsPerPixel <= 16) + vmesa->regEnable &= ~HC_HenDT_MASK; + } else + vmesa->regEnable &= (~HC_HenABL_MASK); if (ctx->Color.AlphaEnabled) { - vmesa->regEnable |= HC_HenAT_MASK; - vmesa->regHATMD = FLOAT_TO_UBYTE(ctx->Color.AlphaRef) | - ((ctx->Color.AlphaFunc - GL_NEVER) << 8); - } - else { - vmesa->regEnable &= (~HC_HenAT_MASK); - } + vmesa->regEnable |= HC_HenAT_MASK; + vmesa->regHATMD = FLOAT_TO_UBYTE(ctx->Color.AlphaRef) | + ((ctx->Color.AlphaFunc - GL_NEVER) << 8); + } else + vmesa->regEnable &= (~HC_HenAT_MASK); if (ctx->Color.DitherFlag && (vmesa->viaScreen->bitsPerPixel < 32)) { - if (ctx->Color.BlendEnabled) { - vmesa->regEnable &= ~HC_HenDT_MASK; - } - else { - vmesa->regEnable |= HC_HenDT_MASK; - } + if (ctx->Color.BlendEnabled) + vmesa->regEnable &= ~HC_HenDT_MASK; + else + vmesa->regEnable |= HC_HenDT_MASK; } - vmesa->regEnable &= ~HC_HenDT_MASK; - if (ctx->Color.ColorLogicOpEnabled) - vmesa->regHROP = ROP[ctx->Color.LogicOp & 0xF]; + if (ctx->Color.ColorLogicOpEnabled) + vmesa->regHROP = ROP[ctx->Color.LogicOp & 0xF]; else - vmesa->regHROP = HC_HROP_P; + vmesa->regHROP = HC_HROP_P; vmesa->regHFBBMSKL = PACK_COLOR_888(ctx->Color.ColorMask[0], ctx->Color.ColorMask[1], @@ -1239,101 +1138,93 @@ static void viaChooseColorState(GLcontext *ctx) vmesa->regHROP |= ctx->Color.ColorMask[3]; if (ctx->Color.ColorMask[3]) - vmesa->regEnable |= HC_HenAW_MASK; + vmesa->regEnable |= HC_HenAW_MASK; else - vmesa->regEnable &= ~HC_HenAW_MASK; + vmesa->regEnable &= ~HC_HenAW_MASK; } -static void viaChooseFogState(GLcontext *ctx) +static void +viaChooseFogState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); if (ctx->Fog.Enabled) { - GLubyte r, g, b, a; + GLubyte r, g, b, a; - vmesa->regEnable |= HC_HenFOG_MASK; + vmesa->regEnable |= HC_HenFOG_MASK; - /* Use fog equation 0 (OpenGL's default) & local fog. - */ - vmesa->regHFogLF = 0x0; + /* Use fog equation 0 (OpenGL's default) & local fog. */ + vmesa->regHFogLF = 0x0; - r = (GLubyte)(ctx->Fog.Color[0] * 255.0F); - g = (GLubyte)(ctx->Fog.Color[1] * 255.0F); - b = (GLubyte)(ctx->Fog.Color[2] * 255.0F); - a = (GLubyte)(ctx->Fog.Color[3] * 255.0F); - vmesa->regHFogCL = (r << 16) | (g << 8) | b; - vmesa->regHFogCH = a; - } - else { - vmesa->regEnable &= ~HC_HenFOG_MASK; - } + r = (GLubyte)(ctx->Fog.Color[0] * 255.0F); + g = (GLubyte)(ctx->Fog.Color[1] * 255.0F); + b = (GLubyte)(ctx->Fog.Color[2] * 255.0F); + a = (GLubyte)(ctx->Fog.Color[3] * 255.0F); + vmesa->regHFogCL = (r << 16) | (g << 8) | b; + vmesa->regHFogCH = a; + } else + vmesa->regEnable &= ~HC_HenFOG_MASK; } -static void viaChooseDepthState(GLcontext *ctx) +static void +viaChooseDepthState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); if (ctx->Depth.Test) { - vmesa->regEnable |= HC_HenZT_MASK; - if (ctx->Depth.Mask) - vmesa->regEnable |= HC_HenZW_MASK; - else - vmesa->regEnable &= (~HC_HenZW_MASK); + vmesa->regEnable |= HC_HenZT_MASK; + if (ctx->Depth.Mask) + vmesa->regEnable |= HC_HenZW_MASK; + else + vmesa->regEnable &= (~HC_HenZW_MASK); vmesa->regHZWTMD = (ctx->Depth.Func - GL_NEVER) << 16; - - } - else { - vmesa->regEnable &= ~HC_HenZT_MASK; - - /*=* [DBG] racer : can't display cars in car selection menu *=*/ + } else { + vmesa->regEnable &= ~HC_HenZT_MASK; + + /*=* [DBG] racer : can't display cars in car selection menu *=*/ /*if (ctx->Depth.Mask) - vmesa->regEnable |= HC_HenZW_MASK; - else - vmesa->regEnable &= (~HC_HenZW_MASK);*/ + vmesa->regEnable |= HC_HenZW_MASK; + else + vmesa->regEnable &= (~HC_HenZW_MASK);*/ vmesa->regEnable &= (~HC_HenZW_MASK); } } -static void viaChooseLineState(GLcontext *ctx) +static void +viaChooseLineState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); if (ctx->Line.StippleFlag) { - vmesa->regEnable |= HC_HenLP_MASK; - vmesa->regHLP = ctx->Line.StipplePattern; - vmesa->regHLPRF = ctx->Line.StippleFactor; - } - else { - vmesa->regEnable &= ~HC_HenLP_MASK; - } + vmesa->regEnable |= HC_HenLP_MASK; + vmesa->regHLP = ctx->Line.StipplePattern; + vmesa->regHLPRF = ctx->Line.StippleFactor; + } else + vmesa->regEnable &= ~HC_HenLP_MASK; } -static void viaChoosePolygonState(GLcontext *ctx) +static void +viaChoosePolygonState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); #if 0 - /* Polygon stipple is broken - see via_state.c - */ - if (ctx->Polygon.StippleFlag) { - vmesa->regEnable |= HC_HenSP_MASK; - } - else { - vmesa->regEnable &= ~HC_HenSP_MASK; - } + /* Polygon stipple is broken - see via_state.c */ + if (ctx->Polygon.StippleFlag) + vmesa->regEnable |= HC_HenSP_MASK; + else + vmesa->regEnable &= ~HC_HenSP_MASK; #else - FALLBACK(vmesa, VIA_FALLBACK_POLY_STIPPLE, - ctx->Polygon.StippleFlag); + FALLBACK(vmesa, VIA_FALLBACK_POLY_STIPPLE, ctx->Polygon.StippleFlag); #endif - if (ctx->Polygon.CullFlag) { - vmesa->regEnable |= HC_HenFBCull_MASK; - } - else { - vmesa->regEnable &= ~HC_HenFBCull_MASK; - } + if (ctx->Polygon.CullFlag) + vmesa->regEnable |= HC_HenFBCull_MASK; + else + vmesa->regEnable &= ~HC_HenFBCull_MASK; } -static void viaChooseStencilState(GLcontext *ctx) +static void +viaChooseStencilState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); @@ -1344,163 +1235,161 @@ static void viaChooseStencilState(GLcontext *ctx) (ctx->Stencil.Enabled) #endif { - GLuint temp; - - vmesa->regEnable |= HC_HenST_MASK; - temp = (ctx->Stencil.Ref[0] & 0xFF) << HC_HSTREF_SHIFT; - temp |= 0xFF << HC_HSTOPMSK_SHIFT; - temp |= (ctx->Stencil.ValueMask[0] & 0xFF); - vmesa->regHSTREF = temp; - - temp = (ctx->Stencil.Function[0] - GL_NEVER) << 16; - - switch (ctx->Stencil.FailFunc[0]) { - case GL_KEEP: - temp |= HC_HSTOPSF_KEEP; - break; - case GL_ZERO: - temp |= HC_HSTOPSF_ZERO; - break; - case GL_REPLACE: - temp |= HC_HSTOPSF_REPLACE; - break; - case GL_INVERT: - temp |= HC_HSTOPSF_INVERT; - break; - case GL_INCR: - temp |= HC_HSTOPSF_INCR; - break; - case GL_DECR: - temp |= HC_HSTOPSF_DECR; - break; - } - - switch (ctx->Stencil.ZFailFunc[0]) { - case GL_KEEP: - temp |= HC_HSTOPSPZF_KEEP; - break; - case GL_ZERO: - temp |= HC_HSTOPSPZF_ZERO; - break; - case GL_REPLACE: - temp |= HC_HSTOPSPZF_REPLACE; - break; - case GL_INVERT: - temp |= HC_HSTOPSPZF_INVERT; - break; - case GL_INCR: - temp |= HC_HSTOPSPZF_INCR; - break; - case GL_DECR: - temp |= HC_HSTOPSPZF_DECR; - break; - } - - switch (ctx->Stencil.ZPassFunc[0]) { - case GL_KEEP: - temp |= HC_HSTOPSPZP_KEEP; - break; - case GL_ZERO: - temp |= HC_HSTOPSPZP_ZERO; - break; - case GL_REPLACE: - temp |= HC_HSTOPSPZP_REPLACE; - break; - case GL_INVERT: - temp |= HC_HSTOPSPZP_INVERT; - break; - case GL_INCR: - temp |= HC_HSTOPSPZP_INCR; - break; - case GL_DECR: - temp |= HC_HSTOPSPZP_DECR; - break; - } - vmesa->regHSTMD = temp; - } - else { - vmesa->regEnable &= ~HC_HenST_MASK; - } + GLuint temp; + + vmesa->regEnable |= HC_HenST_MASK; + temp = (ctx->Stencil.Ref[0] & 0xFF) << HC_HSTREF_SHIFT; + temp |= 0xFF << HC_HSTOPMSK_SHIFT; + temp |= (ctx->Stencil.ValueMask[0] & 0xFF); + vmesa->regHSTREF = temp; + + temp = (ctx->Stencil.Function[0] - GL_NEVER) << 16; + + switch (ctx->Stencil.FailFunc[0]) { + case GL_KEEP: + temp |= HC_HSTOPSF_KEEP; + break; + case GL_ZERO: + temp |= HC_HSTOPSF_ZERO; + break; + case GL_REPLACE: + temp |= HC_HSTOPSF_REPLACE; + break; + case GL_INVERT: + temp |= HC_HSTOPSF_INVERT; + break; + case GL_INCR: + temp |= HC_HSTOPSF_INCR; + break; + case GL_DECR: + temp |= HC_HSTOPSF_DECR; + break; + } + + switch (ctx->Stencil.ZFailFunc[0]) { + case GL_KEEP: + temp |= HC_HSTOPSPZF_KEEP; + break; + case GL_ZERO: + temp |= HC_HSTOPSPZF_ZERO; + break; + case GL_REPLACE: + temp |= HC_HSTOPSPZF_REPLACE; + break; + case GL_INVERT: + temp |= HC_HSTOPSPZF_INVERT; + break; + case GL_INCR: + temp |= HC_HSTOPSPZF_INCR; + break; + case GL_DECR: + temp |= HC_HSTOPSPZF_DECR; + break; + } + + switch (ctx->Stencil.ZPassFunc[0]) { + case GL_KEEP: + temp |= HC_HSTOPSPZP_KEEP; + break; + case GL_ZERO: + temp |= HC_HSTOPSPZP_ZERO; + break; + case GL_REPLACE: + temp |= HC_HSTOPSPZP_REPLACE; + break; + case GL_INVERT: + temp |= HC_HSTOPSPZP_INVERT; + break; + case GL_INCR: + temp |= HC_HSTOPSPZP_INCR; + break; + case GL_DECR: + temp |= HC_HSTOPSPZP_DECR; + break; + } + vmesa->regHSTMD = temp; + } else + vmesa->regEnable &= ~HC_HenST_MASK; } - - -static void viaChooseTriangle(GLcontext *ctx) -{ +static void +viaChooseTriangle(GLcontext *ctx) +{ struct via_context *vmesa = VIA_CONTEXT(ctx); if (ctx->Polygon.CullFlag == GL_TRUE) { - switch (ctx->Polygon.CullFaceMode) { - case GL_FRONT: - if (ctx->Polygon.FrontFace == GL_CCW) - vmesa->regCmdB |= HC_HBFace_MASK; - else - vmesa->regCmdB &= ~HC_HBFace_MASK; - break; - case GL_BACK: - if (ctx->Polygon.FrontFace == GL_CW) - vmesa->regCmdB |= HC_HBFace_MASK; - else - vmesa->regCmdB &= ~HC_HBFace_MASK; - break; - case GL_FRONT_AND_BACK: - return; - } + switch (ctx->Polygon.CullFaceMode) { + case GL_FRONT: + if (ctx->Polygon.FrontFace == GL_CCW) + vmesa->regCmdB |= HC_HBFace_MASK; + else + vmesa->regCmdB &= ~HC_HBFace_MASK; + break; + case GL_BACK: + if (ctx->Polygon.FrontFace == GL_CW) + vmesa->regCmdB |= HC_HBFace_MASK; + else + vmesa->regCmdB &= ~HC_HBFace_MASK; + break; + case GL_FRONT_AND_BACK: + return; + } } } -void viaValidateState( GLcontext *ctx ) +void +viaValidateState(GLcontext *ctx) { struct via_context *vmesa = VIA_CONTEXT(ctx); if (vmesa->newState & _NEW_TEXTURE) { - GLboolean ok = (viaChooseTextureState(ctx) && - viaUpdateTextureState(ctx)); + GLboolean ok = + viaChooseTextureState(ctx) && viaUpdateTextureState(ctx); - FALLBACK(vmesa, VIA_FALLBACK_TEXTURE, !ok); + FALLBACK(vmesa, VIA_FALLBACK_TEXTURE, !ok); } if (vmesa->newState & _NEW_COLOR) - viaChooseColorState(ctx); + viaChooseColorState(ctx); if (vmesa->newState & _NEW_DEPTH) - viaChooseDepthState(ctx); + viaChooseDepthState(ctx); if (vmesa->newState & _NEW_FOG) - viaChooseFogState(ctx); + viaChooseFogState(ctx); if (vmesa->newState & _NEW_LINE) - viaChooseLineState(ctx); + viaChooseLineState(ctx); if (vmesa->newState & (_NEW_POLYGON | _NEW_POLYGONSTIPPLE)) { - viaChoosePolygonState(ctx); + viaChoosePolygonState(ctx); viaChooseTriangle(ctx); } if ((vmesa->newState & _NEW_STENCIL) && vmesa->have_hw_stencil) - viaChooseStencilState(ctx); - + viaChooseStencilState(ctx); + if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) - vmesa->regEnable |= HC_HenCS_MASK; + vmesa->regEnable |= HC_HenCS_MASK; else - vmesa->regEnable &= ~HC_HenCS_MASK; + vmesa->regEnable &= ~HC_HenCS_MASK; - if (ctx->Point.SmoothFlag || - ctx->Line.SmoothFlag || + if (ctx->Point.SmoothFlag || ctx->Line.SmoothFlag || ctx->Polygon.SmoothFlag) - vmesa->regEnable |= HC_HenAA_MASK; - else - vmesa->regEnable &= ~HC_HenAA_MASK; + vmesa->regEnable |= HC_HenAA_MASK; + else + vmesa->regEnable &= ~HC_HenAA_MASK; vmesa->newEmitState |= vmesa->newState; vmesa->newState = 0; } -static void viaInvalidateState(GLcontext *ctx, GLuint newState) +static void +viaInvalidateState(GLcontext *ctx, GLuint newState) { struct via_context *vmesa = VIA_CONTEXT(ctx); - VIA_FINISH_PRIM( vmesa ); + VIA_FINISH_PRIM(vmesa); vmesa->newState |= newState; _swrast_InvalidateState(ctx, newState); @@ -1509,14 +1398,13 @@ static void viaInvalidateState(GLcontext *ctx, GLuint newState) _tnl_InvalidateState(ctx, newState); } -void viaInitStateFuncs(GLcontext *ctx) +void +viaInitStateFuncs(GLcontext *ctx) { - /* Callbacks for internal Mesa events. - */ + /* Callbacks for internal Mesa events. */ ctx->Driver.UpdateState = viaInvalidateState; - /* API callbacks - */ + /* API callbacks */ ctx->Driver.BlendEquationSeparate = viaBlendEquationSeparate; ctx->Driver.BlendFuncSeparate = viaBlendFuncSeparate; ctx->Driver.ClearColor = viaClearColor; |