+#include "mtypes.h"
+#include "macros.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_COMPAT:
+ case API_OPENGL_CORE:
+ switch (ctx->Const.GLSLVersion) {
+ case 120:
+ return (const GLubyte *) "1.20";
+ case 130:
+ return (const GLubyte *) "1.30";
+ case 140:
+ return (const GLubyte *) "1.40";
+ case 150:
+ return (const GLubyte *) "1.50";
+ case 330:
+ return (const GLubyte *) "3.30";
+ case 400:
+ return (const GLubyte *) "4.00";
+ case 410:
+ return (const GLubyte *) "4.10";
+ case 420:
+ return (const GLubyte *) "4.20";
+ case 430:
+ return (const GLubyte *) "4.30";
+ case 440:
+ return (const GLubyte *) "4.40";
+ case 450:
+ return (const GLubyte *) "4.50";
+ default:
+ _mesa_problem(ctx,
+ "Invalid GLSL version in shading_language_version()");
+ return (const GLubyte *) 0;
+ }
+ break;
+
+ case API_OPENGLES2:
+ switch (ctx->Version) {
+ case 20:
+ return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16";
+ case 30:
+ return (const GLubyte *) "OpenGL ES GLSL ES 3.00";
+ case 31:
+ return (const GLubyte *) "OpenGL ES GLSL ES 3.10";
+ case 32:
+ return (const GLubyte *) "OpenGL ES GLSL ES 3.20";
+ default:
+ _mesa_problem(ctx,
+ "Invalid OpenGL ES version in shading_language_version()");
+ return (const GLubyte *) 0;
+ }
+ case API_OPENGLES:
+ /* fall-through */
+
+ default:
+ _mesa_problem(ctx, "Unexpected API value in shading_language_version()");
+ return (const GLubyte *) 0;
+ }
+}