mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
mesa: Refactor scissor rectangle setting even more
Create an internal function that just writes data into the scissor rectangle. In future patches this will see more use because we only want to call dd_function_table::Scissor once after setting all of the scissor rectangles instead of once per scissor rectangle. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
799265aadc
commit
5232a7ded0
1 changed files with 27 additions and 15 deletions
|
|
@ -29,6 +29,31 @@
|
|||
#include "main/scissor.h"
|
||||
|
||||
|
||||
/**
|
||||
* Set scissor rectangle data directly in ScissorArray
|
||||
*
|
||||
* This is an internal function that performs no error checking on the
|
||||
* supplied data. It also does \b not call \c dd_function_table::Scissor.
|
||||
*
|
||||
* \sa _mesa_set_scissor
|
||||
*/
|
||||
static void
|
||||
set_scissor_no_notify(struct gl_context *ctx, unsigned idx,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
if (x == ctx->Scissor.ScissorArray[idx].X &&
|
||||
y == ctx->Scissor.ScissorArray[idx].Y &&
|
||||
width == ctx->Scissor.ScissorArray[idx].Width &&
|
||||
height == ctx->Scissor.ScissorArray[idx].Height)
|
||||
return;
|
||||
|
||||
FLUSH_VERTICES(ctx, _NEW_SCISSOR);
|
||||
ctx->Scissor.ScissorArray[idx].X = x;
|
||||
ctx->Scissor.ScissorArray[idx].Y = y;
|
||||
ctx->Scissor.ScissorArray[idx].Width = width;
|
||||
ctx->Scissor.ScissorArray[idx].Height = height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called via glScissor
|
||||
*/
|
||||
|
|
@ -66,17 +91,7 @@ void
|
|||
_mesa_set_scissor(struct gl_context *ctx,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height)
|
||||
{
|
||||
if (x == ctx->Scissor.ScissorArray[0].X &&
|
||||
y == ctx->Scissor.ScissorArray[0].Y &&
|
||||
width == ctx->Scissor.ScissorArray[0].Width &&
|
||||
height == ctx->Scissor.ScissorArray[0].Height)
|
||||
return;
|
||||
|
||||
FLUSH_VERTICES(ctx, _NEW_SCISSOR);
|
||||
ctx->Scissor.ScissorArray[0].X = x;
|
||||
ctx->Scissor.ScissorArray[0].Y = y;
|
||||
ctx->Scissor.ScissorArray[0].Width = width;
|
||||
ctx->Scissor.ScissorArray[0].Height = height;
|
||||
set_scissor_no_notify(ctx, 0, x, y, width, height);
|
||||
|
||||
if (ctx->Driver.Scissor)
|
||||
ctx->Driver.Scissor(ctx);
|
||||
|
|
@ -92,8 +107,5 @@ _mesa_init_scissor(struct gl_context *ctx)
|
|||
{
|
||||
/* Scissor group */
|
||||
ctx->Scissor.EnableFlags = GL_FALSE;
|
||||
ctx->Scissor.ScissorArray[0].X = 0;
|
||||
ctx->Scissor.ScissorArray[0].Y = 0;
|
||||
ctx->Scissor.ScissorArray[0].Width = 0;
|
||||
ctx->Scissor.ScissorArray[0].Height = 0;
|
||||
set_scissor_no_notify(ctx, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue