summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@tungstengraphics.com>2005-01-25 15:39:20 +0000
committerAlan Hourihane <alanh@tungstengraphics.com>2005-01-25 15:39:20 +0000
commit7fd0f59de6be9d40a7c4ae9628eda29d41a0f19a (patch)
tree6ed0bb9c5b3d45841f2d2661242653699468c1b2
parent9cc4c40ecf801a26bbe0f35720ab111df9359ad2 (diff)
downloadmesa-7fd0f59de6be9d40a7c4ae9628eda29d41a0f19a.tar.gz
consolidate min/mag filter setup
and remove emitting of stale line stipple registers
-rw-r--r--src/mesa/drivers/dri/unichrome/via_state.c160
1 files changed, 59 insertions, 101 deletions
diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c
index 606c861b5cb..9d4803aabf2 100644
--- a/src/mesa/drivers/dri/unichrome/via_state.c
+++ b/src/mesa/drivers/dri/unichrome/via_state.c
@@ -168,12 +168,6 @@ void viaEmitState(viaContextPtr vmesa)
OUT_RING( ((HC_SubA_HLPRF << 24) | ctx->Line.StippleFactor) );
ADVANCE_RING();
}
- else {
- BEGIN_RING(2);
- OUT_RING( ((HC_SubA_HLP << 24) | 0xFFFF) );
- OUT_RING( ((HC_SubA_HLPRF << 24) | 0xFFFF) );
- ADVANCE_RING();
- }
BEGIN_RING(1);
OUT_RING( ((HC_SubA_HPixGC << 24) | 0x0) );
@@ -840,6 +834,60 @@ get_wrap_mode( GLenum sWrap, GLenum tWrap )
return v;
}
+static u_int32_t
+get_minmag_filter( GLenum min, GLenum mag )
+{
+ u_int32_t v = 0;
+
+ switch (min) {
+ case GL_NEAREST:
+ v = HC_HTXnFLSs_Nearest |
+ HC_HTXnFLTs_Nearest;
+ break;
+ case GL_LINEAR:
+ 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;
+ case GL_LINEAR_MIPMAP_NEAREST:
+ v = HC_HTXnFLSs_Linear |
+ HC_HTXnFLTs_Linear;
+ v |= HC_HTXnFLDs_Nearest;
+ break;
+ case GL_NEAREST_MIPMAP_LINEAR:
+ v = HC_HTXnFLSs_Nearest |
+ HC_HTXnFLTs_Nearest;
+ v |= HC_HTXnFLDs_Linear;
+ break;
+ case GL_LINEAR_MIPMAP_LINEAR:
+ v = HC_HTXnFLSs_Linear |
+ HC_HTXnFLTs_Linear;
+ v |= HC_HTXnFLDs_Linear;
+ break;
+ default:
+ break;
+ }
+
+ switch (mag) {
+ case GL_LINEAR:
+ v |= HC_HTXnFLSe_Linear |
+ HC_HTXnFLTe_Linear;
+ break;
+ case GL_NEAREST:
+ v |= HC_HTXnFLSe_Nearest |
+ HC_HTXnFLTe_Nearest;
+ break;
+ default:
+ break;
+ }
+
+ return v;
+}
+
static GLboolean viaChooseTextureState(GLcontext *ctx)
{
@@ -868,59 +916,15 @@ static GLboolean viaChooseTextureState(GLcontext *ctx)
fprintf(stderr, "format 1: 0x%04x\n", texObj1->Image[0][0]->Format);
}
+ vmesa->regEnable |= HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK;
if (texUnit0->_ReallyEnabled) {
struct gl_texture_object *texObj = texUnit0->_Current;
if (VIA_DEBUG) fprintf(stderr, "texUnit0->_ReallyEnabled\n");
-
- vmesa->regEnable |= HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK;
- switch (texObj->MinFilter) {
- case GL_NEAREST:
- vmesa->regHTXnTB_0 = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- break;
- case GL_LINEAR:
- vmesa->regHTXnTB_0 = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- break;
- case GL_NEAREST_MIPMAP_NEAREST:
- vmesa->regHTXnTB_0 = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- vmesa->regHTXnTB_0 |= HC_HTXnFLDs_Nearest;
- break;
- case GL_LINEAR_MIPMAP_NEAREST:
- vmesa->regHTXnTB_0 = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- vmesa->regHTXnTB_0 |= HC_HTXnFLDs_Nearest;
- break;
- case GL_NEAREST_MIPMAP_LINEAR:
- vmesa->regHTXnTB_0 = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- vmesa->regHTXnTB_0 |= HC_HTXnFLDs_Linear;
- break;
- case GL_LINEAR_MIPMAP_LINEAR:
- vmesa->regHTXnTB_0 = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- vmesa->regHTXnTB_0 |= HC_HTXnFLDs_Linear;
- break;
- default:
- break;
- }
-
- switch (texObj->MagFilter) {
- case GL_LINEAR:
- vmesa->regHTXnTB_0 |= HC_HTXnFLSe_Linear |
- HC_HTXnFLTe_Linear;
- break;
- case GL_NEAREST:
- vmesa->regHTXnTB_0 |= HC_HTXnFLSe_Nearest |
- HC_HTXnFLTe_Nearest;
- break;
- default:
- break;
- }
+ 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,
@@ -935,54 +939,8 @@ static GLboolean viaChooseTextureState(GLcontext *ctx)
if (texUnit1->_ReallyEnabled) {
struct gl_texture_object *texObj = texUnit1->_Current;
- vmesa->regEnable |= HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK;
-
- switch (texObj->MinFilter) {
- case GL_NEAREST:
- vmesa->regHTXnTB_1 = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- break;
- case GL_LINEAR:
- vmesa->regHTXnTB_1 = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- break;
- case GL_NEAREST_MIPMAP_NEAREST:
- vmesa->regHTXnTB_1 = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- vmesa->regHTXnTB_1 |= HC_HTXnFLDs_Nearest;
- break ;
- case GL_LINEAR_MIPMAP_NEAREST:
- vmesa->regHTXnTB_1 = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- vmesa->regHTXnTB_1 |= HC_HTXnFLDs_Nearest;
- break ;
- case GL_NEAREST_MIPMAP_LINEAR:
- vmesa->regHTXnTB_1 = HC_HTXnFLSs_Nearest |
- HC_HTXnFLTs_Nearest;
- vmesa->regHTXnTB_1 |= HC_HTXnFLDs_Linear;
- break ;
- case GL_LINEAR_MIPMAP_LINEAR:
- vmesa->regHTXnTB_1 = HC_HTXnFLSs_Linear |
- HC_HTXnFLTs_Linear;
- vmesa->regHTXnTB_1 |= HC_HTXnFLDs_Linear;
- break ;
- default:
- break;
- }
-
- switch(texObj->MagFilter) {
- case GL_LINEAR:
- vmesa->regHTXnTB_1 |= HC_HTXnFLSe_Linear |
- HC_HTXnFLTe_Linear;
- break;
- case GL_NEAREST:
- vmesa->regHTXnTB_1 |= HC_HTXnFLSe_Nearest |
- HC_HTXnFLTe_Nearest;
- break;
- default:
- break;
- }
-
+ 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 );