properly notify driver on scissor change in MakeCurrent
This commit is contained in:
@@ -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 */
|
||||||
|
@@ -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
|
||||||
|
@@ -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 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user