diff options
| author | Michel Dänzer <daenzer@vmware.com> | 2009-07-14 08:00:49 +0200 | 
|---|---|---|
| committer | Michel Dänzer <daenzer@vmware.com> | 2009-07-14 08:00:49 +0200 | 
| commit | 60e60bb3026a269fefe1cfd3312fdf3a7e4c595f (patch) | |
| tree | 53fb2f6617b7a4e839eade0124a38f323e3ba46e /src/mesa | |
| parent | 59155f70e701bc0b4fb816da991d6921f53b3bc7 (diff) | |
radeon: Invert front face winding when rendering to FBO.
Fixes fgl_glxgears and progs/demos/fbotexture after pressing 'c'.
Tested with r300, radeon and r200 compile tested only.
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/drivers/dri/r200/r200_state.c | 4 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/r300/r300_state.c | 4 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_state.c | 4 | 
3 files changed, 12 insertions, 0 deletions
| diff --git a/src/mesa/drivers/dri/r200/r200_state.c b/src/mesa/drivers/dri/r200/r200_state.c index c7c1a39316..5a6fd20d8c 100644 --- a/src/mesa/drivers/dri/r200/r200_state.c +++ b/src/mesa/drivers/dri/r200/r200_state.c @@ -574,6 +574,10 @@ static void r200FrontFace( GLcontext *ctx, GLenum mode )     R200_STATECHANGE( rmesa, tcl );     rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] &= ~R200_CULL_FRONT_IS_CCW; +   /* Winding is inverted when rendering to FBO */ +   if (ctx->DrawBuffer && ctx->DrawBuffer->Name) +      mode = (mode == GL_CW) ? GL_CCW : GL_CW; +     switch ( mode ) {     case GL_CW:        rmesa->hw.set.cmd[SET_SE_CNTL] |= R200_FFACE_CULL_CW; diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 4d504d14e3..12fbf281d9 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -434,6 +434,10 @@ static void r300UpdateCulling(GLcontext * ctx)  		break;  	} +	/* Winding is inverted when rendering to FBO */ +	if (ctx->DrawBuffer && ctx->DrawBuffer->Name) +		val ^= R300_FRONT_FACE_CW; +  	R300_STATECHANGE(r300, cul);  	r300->hw.cul.cmd[R300_CUL_CULL] = val;  } diff --git a/src/mesa/drivers/dri/radeon/radeon_state.c b/src/mesa/drivers/dri/radeon/radeon_state.c index 78f7e9d633..0d1728b747 100644 --- a/src/mesa/drivers/dri/radeon/radeon_state.c +++ b/src/mesa/drivers/dri/radeon/radeon_state.c @@ -458,6 +458,10 @@ static void radeonFrontFace( GLcontext *ctx, GLenum mode )     RADEON_STATECHANGE( rmesa, tcl );     rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] &= ~RADEON_CULL_FRONT_IS_CCW; +   /* Winding is inverted when rendering to FBO */ +   if (ctx->DrawBuffer && ctx->DrawBuffer->Name) +      mode = (mode == GL_CW) ? GL_CCW : GL_CW; +     switch ( mode ) {     case GL_CW:        rmesa->hw.set.cmd[SET_SE_CNTL] |= RADEON_FFACE_CULL_CW; | 
