Merge branch 'llvm-cliptest-viewport'
[mesa.git] / src / mesa / main / getstring.c
index e76a790d0a0d4b73e691f5f9b7e33558a7250596..bfa283f6a30354a9357dbe8e072b5eaf6deeefce 100644 (file)
 #include "glheader.h"
 #include "context.h"
 #include "get.h"
-#include "version.h"
 #include "enums.h"
 #include "extensions.h"
 
 
+/**
+ * Return the string for a glGetString(GL_SHADING_LANGUAGE_VERSION) query.
+ */
+static const GLubyte *
+shading_language_version(struct gl_context *ctx)
+{
+   switch (ctx->API) {
+   case API_OPENGL:
+      if (!ctx->Extensions.ARB_shader_objects) {
+         _mesa_error(ctx, GL_INVALID_ENUM, "glGetString");
+         return (const GLubyte *) 0;
+      }
+
+      switch (ctx->Const.GLSLVersion) {
+      case 110:
+         return (const GLubyte *) "1.10";
+      case 120:
+         return (const GLubyte *) "1.20";
+      case 130:
+         return (const GLubyte *) "1.30";
+      default:
+         _mesa_problem(ctx,
+                       "Invalid GLSL version in shading_language_version()");
+         return (const GLubyte *) 0;
+      }
+      break;
+
+   case API_OPENGLES2:
+      return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16";
+
+   case API_OPENGLES:
+      /* fall-through */
+
+   default:
+      _mesa_problem(ctx, "Unexpected API value in shading_language_version()");
+      return (const GLubyte *) 0;
+   }
+}
+
+
 /**
  * Query string-valued state.  The return value should _not_ be freed by
  * the caller.
@@ -72,16 +111,10 @@ _mesa_GetString( GLenum name )
       case GL_VERSION:
          return (const GLubyte *) ctx->VersionString;
       case GL_EXTENSIONS:
-         if (!ctx->Extensions.String)
-            ctx->Extensions.String = _mesa_make_extension_string(ctx);
          return (const GLubyte *) ctx->Extensions.String;
-#if FEATURE_ARB_shading_language_100
-      case GL_SHADING_LANGUAGE_VERSION_ARB:
-         if (ctx->Extensions.ARB_shading_language_120)
-            return (const GLubyte *) "1.20";
-         else if (ctx->Extensions.ARB_shading_language_100)
-            return (const GLubyte *) "1.10";
-         goto error;
+#if FEATURE_ARB_shading_language_100 || FEATURE_ES2
+      case GL_SHADING_LANGUAGE_VERSION:
+        return shading_language_version(ctx);
 #endif
 #if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program || \
     FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program
@@ -93,9 +126,6 @@ _mesa_GetString( GLenum name )
             return (const GLubyte *) ctx->Program.ErrorString;
          }
          /* FALL-THROUGH */
-#endif
-#if FEATURE_ARB_shading_language_100
-      error:
 #endif
       default:
          _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" );
@@ -156,10 +186,6 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
    if (MESA_VERBOSE & VERBOSE_API)
       _mesa_debug(ctx, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname));
 
-   if (ctx->Driver.GetPointerv
-       && (*ctx->Driver.GetPointerv)(ctx, pname, params))
-      return;
-
    switch (pname) {
       case GL_VERTEX_ARRAY_POINTER:
          *params = (GLvoid *) ctx->Array.ArrayObj->Vertex.Ptr;
@@ -191,6 +217,11 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
       case GL_SELECTION_BUFFER_POINTER:
          *params = ctx->Select.Buffer;
          break;
+#if FEATURE_point_size_array
+      case GL_POINT_SIZE_ARRAY_POINTER_OES:
+         *params = (GLvoid *) ctx->Array.ArrayObj->PointSize.Ptr;
+         break;
+#endif
       default:
          _mesa_error( ctx, GL_INVALID_ENUM, "glGetPointerv" );
          return;
@@ -202,7 +233,7 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
  * Returns the current GL error code, or GL_NO_ERROR.
  * \return current error code
  *
- * Returns __GLcontextRec::ErrorValue.
+ * Returns __struct gl_contextRec::ErrorValue.
  */
 GLenum GLAPIENTRY
 _mesa_GetError( void )