[Mesa-dev] [PATCH 5/5] mesa: add KHR_no_error support for glScissor*()

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Jun 6 19:58:29 UTC 2017


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/mapi/glapi/gen/ARB_viewport_array.xml |  6 +++---
 src/mapi/glapi/gen/gl_API.xml             |  2 +-
 src/mesa/main/scissor.c                   | 31 +++++++++++++++++++++++++++++++
 src/mesa/main/scissor.h                   | 13 +++++++++++++
 4 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/src/mapi/glapi/gen/ARB_viewport_array.xml b/src/mapi/glapi/gen/ARB_viewport_array.xml
index be67912884..3e9c65549e 100644
--- a/src/mapi/glapi/gen/ARB_viewport_array.xml
+++ b/src/mapi/glapi/gen/ARB_viewport_array.xml
@@ -45,19 +45,19 @@
         <param name="index" type="GLuint"/>
         <param name="v" type="const GLfloat *" count="4"/>
     </function>
-    <function name="ScissorArrayv">
+    <function name="ScissorArrayv" no_error="true">
         <param name="first" type="GLuint"/>
         <param name="count" type="GLsizei"/>
         <param name="v" type="const int *" count="count" count_scale="4"/>
     </function>
-    <function name="ScissorIndexed">
+    <function name="ScissorIndexed" no_error="true">
         <param name="index" type="GLuint"/>
         <param name="left" type="GLint"/>
         <param name="bottom" type="GLint"/>
         <param name="width" type="GLsizei"/>
         <param name="height" type="GLsizei"/>
     </function>
-    <function name="ScissorIndexedv">
+    <function name="ScissorIndexedv" no_error="true">
         <param name="index" type="GLuint"/>
         <param name="v" type="const GLint *" count="4"/>
     </function>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 8f93318b95..df999248c8 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -2108,7 +2108,7 @@
         <glx rop="102"/>
     </function>
 
-    <function name="Scissor" es1="1.0" es2="2.0">
+    <function name="Scissor" es1="1.0" es2="2.0" no_error="true">
         <param name="x" type="GLint"/>
         <param name="y" type="GLint"/>
         <param name="width" type="GLsizei"/>
diff --git a/src/mesa/main/scissor.c b/src/mesa/main/scissor.c
index d94663c6e4..808cb4d5fe 100644
--- a/src/mesa/main/scissor.c
+++ b/src/mesa/main/scissor.c
@@ -83,6 +83,13 @@ scissor(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height)
  * Called via glScissor
  */
 void GLAPIENTRY
+_mesa_Scissor_no_error(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   scissor(ctx, x, y, width, height);
+}
+
+void GLAPIENTRY
 _mesa_Scissor(GLint x, GLint y, GLsizei width, GLsizei height)
 {
    GET_CURRENT_CONTEXT(ctx);
@@ -149,6 +156,15 @@ scissor_array(struct gl_context *ctx, GLuint first, GLsizei count,
  * Verifies the parameters and call set_scissor_no_notify to do the work.
  */
 void GLAPIENTRY
+_mesa_ScissorArrayv_no_error(GLuint first, GLsizei count, const GLint *v)
+{
+   GET_CURRENT_CONTEXT(ctx);
+
+   struct gl_scissor_rect *p = (struct gl_scissor_rect *)v;
+   scissor_array(ctx, first, count, p);
+}
+
+void GLAPIENTRY
 _mesa_ScissorArrayv(GLuint first, GLsizei count, const GLint *v)
 {
    int i;
@@ -212,6 +228,14 @@ scissor_indexed_err(struct gl_context *ctx, GLuint index, GLint left,
 }
 
 void GLAPIENTRY
+_mesa_ScissorIndexed_no_error(GLuint index, GLint left, GLint bottom,
+                              GLsizei width, GLsizei height)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   _mesa_set_scissor(ctx, index, left, bottom, width, height);
+}
+
+void GLAPIENTRY
 _mesa_ScissorIndexed(GLuint index, GLint left, GLint bottom,
                      GLsizei width, GLsizei height)
 {
@@ -221,6 +245,13 @@ _mesa_ScissorIndexed(GLuint index, GLint left, GLint bottom,
 }
 
 void GLAPIENTRY
+_mesa_ScissorIndexedv_no_error(GLuint index, const GLint *v)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   _mesa_set_scissor(ctx, index, v[0], v[1], v[2], v[3]);
+}
+
+void GLAPIENTRY
 _mesa_ScissorIndexedv(GLuint index, const GLint *v)
 {
    GET_CURRENT_CONTEXT(ctx);
diff --git a/src/mesa/main/scissor.h b/src/mesa/main/scissor.h
index 1d0fac877b..264873eaf1 100644
--- a/src/mesa/main/scissor.h
+++ b/src/mesa/main/scissor.h
@@ -31,15 +31,28 @@
 
 struct gl_context;
 
+void GLAPIENTRY
+_mesa_Scissor_no_error(GLint x, GLint y, GLsizei width, GLsizei height);
+
 extern void GLAPIENTRY
 _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height );
 
+void GLAPIENTRY
+_mesa_ScissorArrayv_no_error(GLuint first, GLsizei count, const GLint * v);
+
 extern void GLAPIENTRY
 _mesa_ScissorArrayv(GLuint first, GLsizei count, const GLint * v);
 
+void GLAPIENTRY
+_mesa_ScissorIndexed_no_error(GLuint index, GLint left, GLint bottom,
+                              GLsizei width, GLsizei height);
+
 extern void GLAPIENTRY
 _mesa_ScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
 
+void GLAPIENTRY
+_mesa_ScissorIndexedv_no_error(GLuint index, const GLint * v);
+
 extern void GLAPIENTRY
 _mesa_ScissorIndexedv(GLuint index, const GLint * v);
 
-- 
2.13.0



More information about the mesa-dev mailing list