Mesa (intel-2008-q3): GLSL: Implement GL_OBJECT_TYPE_ARB query

Ian Romanick idr at kemper.freedesktop.org
Mon Sep 29 19:39:41 UTC 2008


Module: Mesa
Branch: intel-2008-q3
Commit: a1688dc4a297d4afe1bd62b5f4ec6e1aa41a93ff
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a1688dc4a297d4afe1bd62b5f4ec6e1aa41a93ff

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Mon Sep 29 12:30:05 2008 -0700

GLSL: Implement GL_OBJECT_TYPE_ARB query

The GL_OBJECT_TYPE_ARB query is handled directly in
_mesa_GetObjectParamterivARB because it is only supported in the
extension version of the shanding language API.  glGetProgramiv and
glGetShaderiv should not accept this enum.
(cherry picked from commit 3ab4b2066fd0b1493af38510e26e5a6ba83b5cf4)

---

 src/mesa/main/shaders.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c
index f0db0d2..aeb5d4c 100644
--- a/src/mesa/main/shaders.c
+++ b/src/mesa/main/shaders.c
@@ -233,10 +233,18 @@ _mesa_GetObjectParameterivARB(GLhandleARB object, GLenum pname, GLint *params)
    GET_CURRENT_CONTEXT(ctx);
    /* Implement in terms of GetProgramiv, GetShaderiv */
    if (ctx->Driver.IsProgram(ctx, object)) {
-      ctx->Driver.GetProgramiv(ctx, object, pname, params);
+      if (pname == GL_OBJECT_TYPE_ARB) {
+	 *params = GL_PROGRAM_OBJECT_ARB;
+      } else {
+	 ctx->Driver.GetProgramiv(ctx, object, pname, params);
+      }
    }
    else if (ctx->Driver.IsShader(ctx, object)) {
-      ctx->Driver.GetShaderiv(ctx, object, pname, params);
+      if (pname == GL_OBJECT_TYPE_ARB) {
+	 *params = GL_SHADER_OBJECT_ARB;
+      } else {
+	 ctx->Driver.GetShaderiv(ctx, object, pname, params);
+      }
    }
    else {
       _mesa_error(ctx, GL_INVALID_OPERATION, "glGetObjectParameterivARB");




More information about the mesa-commit mailing list