start to fill in ShadeModel()
authorAlex Deucher <alexdeucher@gmail.com>
Wed, 3 Jun 2009 19:14:44 +0000 (15:14 -0400)
committerAlex Deucher <alexdeucher@gmail.com>
Wed, 3 Jun 2009 19:14:44 +0000 (15:14 -0400)
src/mesa/drivers/dri/r600/r700_chip.c
src/mesa/drivers/dri/r600/r700_chip.h
src/mesa/drivers/dri/r600/r700_state.c

index 5ae70c99c743cc01963af6efe437c603bdef1838..daf14bee75c4300833b04a5cf2680bfd6084847a 100644 (file)
@@ -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);
index 918cb222d4074b78412e9e7726204615a56017b6..c3a33010f34c936c0db2f892ea3bf83fdf302f6f 100644 (file)
@@ -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 */
index ca1c84f5dc8889ad482ac308ef05aff705788170..88b789f5c8f7c52bce87256cb876dc539bb2af82 100644 (file)
@@ -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) //---------------