GLSL: Implement GL_OBJECT_TYPE_ARB query
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 29 Sep 2008 19:30:05 +0000 (12:30 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 29 Sep 2008 19:30:05 +0000 (12:30 -0700)
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.

src/mesa/main/shaders.c

index f0db0d2a81833c886b81c189637646241c68cc37..aeb5d4ca2ab48dd9dde07f04b4d553df320d6c94 100644 (file)
@@ -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");