[Mesa-dev] [PATCH 03/42] mesa: add KHR_no_error support for glAttachShader() and glAttachObjectARB()

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Jun 27 11:20:06 UTC 2017


Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 src/mapi/glapi/gen/gl_API.xml |  4 ++--
 src/mesa/main/shaderapi.c     | 28 ++++++++++++++++++++++++++++
 src/mesa/main/shaderapi.h     |  7 ++++++-
 3 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index d878a04ea09..94589464c5c 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -5295,7 +5295,7 @@
         <glx ignore="true"/>
     </function>
 
-    <function name="AttachShader" es2="2.0">
+    <function name="AttachShader" es2="2.0" no_error="true">
         <param name="program" type="GLuint"/>
         <param name="shader" type="GLuint"/>
         <glx ignore="true"/>
@@ -7709,7 +7709,7 @@
         <glx ignore="true"/>
     </function>
 
-    <function name="AttachObjectARB">
+    <function name="AttachObjectARB" no_error="true">
         <param name="containerObj" type="GLhandleARB"/>
         <param name="obj" type="GLhandleARB"/>
         <glx ignore="true"/>
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
index 457a18e4175..7318833e9b8 100644
--- a/src/mesa/main/shaderapi.c
+++ b/src/mesa/main/shaderapi.c
@@ -311,6 +311,19 @@ attach_shader_err(struct gl_context *ctx, GLuint program, GLuint shader,
 }
 
 
+static void
+attach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
+{
+   struct gl_shader_program *shProg;
+   struct gl_shader *sh;
+
+   shProg = _mesa_lookup_shader_program(ctx, program);
+   sh = _mesa_lookup_shader(ctx, shader);
+
+   add_shader(ctx, shProg, sh);
+}
+
+
 static GLuint
 create_shader(struct gl_context *ctx, GLenum type)
 {
@@ -1334,6 +1347,13 @@ validate_program(struct gl_context *ctx, GLuint program)
 }
 
 
+void GLAPIENTRY
+_mesa_AttachObjectARB_no_error(GLhandleARB program, GLhandleARB shader)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   attach_shader(ctx, program, shader);
+}
+
 
 void GLAPIENTRY
 _mesa_AttachObjectARB(GLhandleARB program, GLhandleARB shader)
@@ -1344,6 +1364,14 @@ _mesa_AttachObjectARB(GLhandleARB program, GLhandleARB shader)
 
 
 void GLAPIENTRY
+_mesa_AttachShader_no_error(GLuint program, GLuint shader)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   attach_shader(ctx, program, shader);
+}
+
+
+void GLAPIENTRY
 _mesa_AttachShader(GLuint program, GLuint shader)
 {
    GET_CURRENT_CONTEXT(ctx);
diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h
index 0a28185177d..3f6c0ff0cba 100644
--- a/src/mesa/main/shaderapi.h
+++ b/src/mesa/main/shaderapi.h
@@ -73,6 +73,10 @@ _mesa_longest_attribute_name_length(struct gl_shader_program *shProg);
 extern void
 _mesa_shader_write_subroutine_indices(struct gl_context *ctx,
                                       gl_shader_stage stage);
+
+void GLAPIENTRY
+_mesa_AttachObjectARB_no_error(GLhandleARB, GLhandleARB);
+
 extern void GLAPIENTRY
 _mesa_AttachObjectARB(GLhandleARB, GLhandleARB);
 
@@ -154,7 +158,8 @@ _mesa_GetActiveAttrib(GLuint, GLuint, GLsizei, GLsizei *, GLint *,
 extern GLint GLAPIENTRY
 _mesa_GetAttribLocation(GLuint, const GLchar *);
 
-
+void GLAPIENTRY
+_mesa_AttachShader_no_error(GLuint program, GLuint shader);
 
 extern void GLAPIENTRY
 _mesa_AttachShader(GLuint program, GLuint shader);
-- 
2.13.2



More information about the mesa-dev mailing list