[Mesa-dev] [PATCH 4/5] mesa: add scissor() and scissor_array() helpers
Samuel Pitoiset
samuel.pitoiset at gmail.com
Tue Jun 6 19:58:28 UTC 2017
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
src/mesa/main/scissor.c | 57 ++++++++++++++++++++++++++++++++-----------------
1 file changed, 37 insertions(+), 20 deletions(-)
diff --git a/src/mesa/main/scissor.c b/src/mesa/main/scissor.c
index 5cf02168bd..d94663c6e4 100644
--- a/src/mesa/main/scissor.c
+++ b/src/mesa/main/scissor.c
@@ -55,22 +55,10 @@ set_scissor_no_notify(struct gl_context *ctx, unsigned idx,
ctx->Scissor.ScissorArray[idx].Height = height;
}
-/**
- * Called via glScissor
- */
-void GLAPIENTRY
-_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
+static void
+scissor(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height)
{
unsigned i;
- GET_CURRENT_CONTEXT(ctx);
-
- if (MESA_VERBOSE & VERBOSE_API)
- _mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height);
-
- if (width < 0 || height < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
- return;
- }
/* The GL_ARB_viewport_array spec says:
*
@@ -91,6 +79,25 @@ _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
ctx->Driver.Scissor(ctx);
}
+/**
+ * Called via glScissor
+ */
+void GLAPIENTRY
+_mesa_Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (MESA_VERBOSE & VERBOSE_API)
+ _mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height);
+
+ if (width < 0 || height < 0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
+ return;
+ }
+
+ scissor(ctx, x, y, width, height);
+}
+
/**
* Define the scissor box.
@@ -115,6 +122,21 @@ _mesa_set_scissor(struct gl_context *ctx, unsigned idx,
ctx->Driver.Scissor(ctx);
}
+static void
+scissor_array(struct gl_context *ctx, GLuint first, GLsizei count,
+ struct gl_scissor_rect *rect)
+{
+ GLsizei i;
+
+ for (i = 0; i < count; i++) {
+ set_scissor_no_notify(ctx, i + first, rect[i].X, rect[i].Y,
+ rect[i].Width, rect[i].Height);
+ }
+
+ if (ctx->Driver.Scissor)
+ ctx->Driver.Scissor(ctx);
+}
+
/**
* Define count scissor boxes starting at index.
*
@@ -150,12 +172,7 @@ _mesa_ScissorArrayv(GLuint first, GLsizei count, const GLint *v)
}
}
- for (i = 0; i < count; i++)
- set_scissor_no_notify(ctx, i + first,
- p[i].X, p[i].Y, p[i].Width, p[i].Height);
-
- if (ctx->Driver.Scissor)
- ctx->Driver.Scissor(ctx);
+ scissor_array(ctx, first, count, p);
}
/**
--
2.13.0
More information about the mesa-dev
mailing list