r200: Simplify r200SetCliprects like radeonSetCliprects in radeon and r300.
This commit is contained in:
committed by
Michel Dänzer
parent
33ea9dccaf
commit
d0a3400f66
@@ -679,7 +679,7 @@ r200MakeCurrent( __DRIcontextPrivate *driContextPriv,
|
||||
newCtx->lastStamp != driDrawPriv->lastStamp ) {
|
||||
newCtx->dri.drawable = driDrawPriv;
|
||||
|
||||
r200SetCliprects(newCtx, GL_BACK_LEFT);
|
||||
r200SetCliprects(newCtx);
|
||||
r200UpdateWindow( newCtx->glCtx );
|
||||
r200UpdateViewportOffset( newCtx->glCtx );
|
||||
}
|
||||
|
||||
@@ -92,10 +92,7 @@ void r200GetLock( r200ContextPtr rmesa, GLuint flags )
|
||||
|
||||
if ( rmesa->lastStamp != drawable->lastStamp ) {
|
||||
r200UpdatePageFlipping( rmesa );
|
||||
if (rmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT)
|
||||
r200SetCliprects( rmesa, GL_BACK_LEFT );
|
||||
else
|
||||
r200SetCliprects( rmesa, GL_FRONT_LEFT );
|
||||
r200SetCliprects( rmesa );
|
||||
r200UpdateViewportOffset( rmesa->glCtx );
|
||||
driUpdateFramebufferSize(rmesa->glCtx, drawable);
|
||||
}
|
||||
|
||||
@@ -1691,6 +1691,11 @@ static void r200ClearStencil( GLcontext *ctx, GLint s )
|
||||
#define SUBPIXEL_X 0.125
|
||||
#define SUBPIXEL_Y 0.125
|
||||
|
||||
|
||||
/**
|
||||
* Called when window size or position changes or viewport or depth range
|
||||
* state is changed. We update the hardware viewport state here.
|
||||
*/
|
||||
void r200UpdateWindow( GLcontext *ctx )
|
||||
{
|
||||
r200ContextPtr rmesa = R200_CONTEXT(ctx);
|
||||
@@ -1843,19 +1848,18 @@ static void r200LogicOpCode( GLcontext *ctx, GLenum opcode )
|
||||
}
|
||||
|
||||
|
||||
void r200SetCliprects( r200ContextPtr rmesa, GLenum mode )
|
||||
/*
|
||||
* Set up the cliprects for either front or back-buffer drawing.
|
||||
*/
|
||||
void r200SetCliprects( r200ContextPtr rmesa )
|
||||
{
|
||||
__DRIdrawablePrivate *const drawable = rmesa->dri.drawable;
|
||||
__DRIdrawablePrivate *const readable = rmesa->dri.readable;
|
||||
GLframebuffer *const draw_fb = (GLframebuffer*) drawable->driverPrivate;
|
||||
GLframebuffer *const read_fb = (GLframebuffer*) readable->driverPrivate;
|
||||
|
||||
switch ( mode ) {
|
||||
case GL_FRONT_LEFT:
|
||||
rmesa->numClipRects = drawable->numClipRects;
|
||||
rmesa->pClipRects = drawable->pClipRects;
|
||||
break;
|
||||
case GL_BACK_LEFT:
|
||||
if (draw_fb->_ColorDrawBufferMask[0]
|
||||
== BUFFER_BIT_BACK_LEFT) {
|
||||
/* Can't ignore 2d windows if we are page flipping.
|
||||
*/
|
||||
if ( drawable->numBackClipRects == 0 || rmesa->doPageFlip ) {
|
||||
@@ -1866,11 +1870,12 @@ void r200SetCliprects( r200ContextPtr rmesa, GLenum mode )
|
||||
rmesa->numClipRects = drawable->numBackClipRects;
|
||||
rmesa->pClipRects = drawable->pBackClipRects;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "bad mode in r200SetCliprects\n");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
/* front buffer (or none, or multiple buffers) */
|
||||
rmesa->numClipRects = drawable->numClipRects;
|
||||
rmesa->pClipRects = drawable->pClipRects;
|
||||
}
|
||||
|
||||
if ((draw_fb->Width != drawable->w) || (draw_fb->Height != drawable->h)) {
|
||||
_mesa_resize_framebuffer(rmesa->glCtx, draw_fb,
|
||||
@@ -1910,19 +1915,17 @@ static void r200DrawBuffer( GLcontext *ctx, GLenum mode )
|
||||
*/
|
||||
switch ( ctx->DrawBuffer->_ColorDrawBufferMask[0] ) {
|
||||
case BUFFER_BIT_FRONT_LEFT:
|
||||
FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_FALSE );
|
||||
r200SetCliprects( rmesa, GL_FRONT_LEFT );
|
||||
break;
|
||||
case BUFFER_BIT_BACK_LEFT:
|
||||
FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_FALSE );
|
||||
r200SetCliprects( rmesa, GL_BACK_LEFT );
|
||||
break;
|
||||
default:
|
||||
/* GL_NONE or GL_FRONT_AND_BACK or stereo left&right, etc */
|
||||
/* 0 (GL_NONE) buffers or multiple color drawing buffers */
|
||||
FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_TRUE );
|
||||
return;
|
||||
}
|
||||
|
||||
r200SetCliprects( rmesa );
|
||||
|
||||
/* We'll set the drawing engine's offset/pitch parameters later
|
||||
* when we update other state.
|
||||
*/
|
||||
|
||||
@@ -44,7 +44,7 @@ extern void r200InitTnlFuncs( GLcontext *ctx );
|
||||
|
||||
extern void r200UpdateMaterial( GLcontext *ctx );
|
||||
|
||||
extern void r200SetCliprects( r200ContextPtr rmesa, GLenum mode );
|
||||
extern void r200SetCliprects( r200ContextPtr rmesa );
|
||||
extern void r200RecalcScissorRects( r200ContextPtr rmesa );
|
||||
extern void r200UpdateViewportOffset( GLcontext *ctx );
|
||||
extern void r200UpdateWindow( GLcontext *ctx );
|
||||
|
||||
Reference in New Issue
Block a user