Mesa (r6xx-rewrite): start to fill in ShadeModel()

Alex Deucher agd5f at kemper.freedesktop.org
Thu Jun 4 20:59:00 UTC 2009


Module: Mesa
Branch: r6xx-rewrite
Commit: ac274b68d724bac8c31bc62163a4b0ba59a6fe4d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac274b68d724bac8c31bc62163a4b0ba59a6fe4d

Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Wed Jun  3 15:14:44 2009 -0400

start to fill in ShadeModel()

---

 src/mesa/drivers/dri/r600/r700_chip.c  |    1 +
 src/mesa/drivers/dri/r600/r700_chip.h  |    1 +
 src/mesa/drivers/dri/r600/r700_state.c |   14 ++++++++++++++
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c
index 5ae70c9..daf14be 100644
--- a/src/mesa/drivers/dri/r600/r700_chip.c
+++ b/src/mesa/drivers/dri/r600/r700_chip.c
@@ -219,6 +219,7 @@ GLboolean r700InitChipObject(context_t *context)
     LINK_STATES(SPI_THREAD_GROUPING);
     LINK_STATES(SPI_PS_IN_CONTROL_0); 
     LINK_STATES(SPI_PS_IN_CONTROL_1);
+    LINK_STATES(SPI_INTERP_CONTROL_0);
 
     LINK_STATES(SPI_INPUT_Z); 
     LINK_STATES(SPI_FOG_CNTL);
diff --git a/src/mesa/drivers/dri/r600/r700_chip.h b/src/mesa/drivers/dri/r600/r700_chip.h
index 918cb22..c3a3301 100644
--- a/src/mesa/drivers/dri/r600/r700_chip.h
+++ b/src/mesa/drivers/dri/r600/r700_chip.h
@@ -341,6 +341,7 @@ typedef struct _R700_CHIP_CONTEXT
     union UINT_FLOAT       	SPI_THREAD_GROUPING       ;  /* 0xA1B2 */
 	union UINT_FLOAT       	SPI_PS_IN_CONTROL_0       ;  /* 0xA1B3 */
 	union UINT_FLOAT       	SPI_PS_IN_CONTROL_1       ;  /* 0xA1B4 */
+	union UINT_FLOAT       	SPI_INTERP_CONTROL_0      ;  /* 0xA1B5 */
 
 	union UINT_FLOAT               	SPI_INPUT_Z               ;  /* 0xA1B6 */
     union UINT_FLOAT              	SPI_FOG_CNTL              ;  /* 0xA1B7 */
diff --git a/src/mesa/drivers/dri/r600/r700_state.c b/src/mesa/drivers/dri/r600/r700_state.c
index ca1c84f..88b789f 100644
--- a/src/mesa/drivers/dri/r600/r700_state.c
+++ b/src/mesa/drivers/dri/r600/r700_state.c
@@ -463,6 +463,20 @@ static void r700FrontFace(GLcontext * ctx, GLenum mode) //------------------
 
 static void r700ShadeModel(GLcontext * ctx, GLenum mode) //--------------------
 {
+	context_t *context = R700_CONTEXT(ctx);
+	R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
+
+	/* also need to set/clear FLAT_SHADE bit per param in SPI_PS_INPUT_CNTL_[0-31] */
+	switch (mode) {
+	case GL_FLAT:
+		SETbit(r700->SPI_INTERP_CONTROL_0.u32All, FLAT_SHADE_ENA_bit);
+		break;
+	case GL_SMOOTH:
+		CLEARbit(r700->SPI_INTERP_CONTROL_0.u32All, FLAT_SHADE_ENA_bit);
+		break;
+	default:
+		return;
+	}
 }
 
 static void r700PointParameter(GLcontext * ctx, GLenum pname, const GLfloat * param) //---------------




More information about the mesa-commit mailing list