properly notify driver on scissor change in MakeCurrent

This commit is contained in:
Keith Whitwell
2005-12-30 13:02:27 +00:00
parent 8c137e2f94
commit 1d43e729ec
3 changed files with 27 additions and 15 deletions

View File

@@ -669,20 +669,9 @@ _mesa_SampleCoverageARB(GLclampf value, GLboolean invert)
* change flushes the vertices and notifies the driver via * change flushes the vertices and notifies the driver via
* the dd_function_table::Scissor callback. * the dd_function_table::Scissor callback.
*/ */
void GLAPIENTRY void _mesa_set_scissor( GLcontext *ctx,
_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ) GLint x, GLint y, GLsizei width, GLsizei height )
{ {
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
if (width < 0 || height < 0) {
_mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
return;
}
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height);
if (x == ctx->Scissor.X && if (x == ctx->Scissor.X &&
y == ctx->Scissor.Y && y == ctx->Scissor.Y &&
width == ctx->Scissor.Width && width == ctx->Scissor.Width &&
@@ -700,6 +689,24 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
} }
void GLAPIENTRY
_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
if (width < 0 || height < 0) {
_mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
return;
}
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height);
_mesa_set_scissor(ctx, x, y, width, height);
}
/**********************************************************************/ /**********************************************************************/
/** \name Initialization */ /** \name Initialization */

View File

@@ -74,5 +74,8 @@ _mesa_init_scissor(GLcontext *ctx);
extern void extern void
_mesa_init_multisample(GLcontext *ctx); _mesa_init_multisample(GLcontext *ctx);
extern void _mesa_set_scissor( GLcontext *ctx,
GLint x, GLint y, GLsizei width, GLsizei height );
#endif #endif

View File

@@ -1611,8 +1611,10 @@ _mesa_make_current( GLcontext *newCtx, GLframebuffer *drawBuffer,
/* set initial viewport and scissor size now */ /* set initial viewport and scissor size now */
_mesa_set_viewport(newCtx, 0, 0, _mesa_set_viewport(newCtx, 0, 0,
drawBuffer->Width, drawBuffer->Height); drawBuffer->Width, drawBuffer->Height);
newCtx->Scissor.Width = drawBuffer->Width;
newCtx->Scissor.Height = drawBuffer->Height; _mesa_set_scissor(newCtx, 0, 0,
drawBuffer->Width,
drawBuffer->Height );
} }
} }