/** * Set the context's Version and VersionString fields. * This should only be called once as part of context initialization * or to perform version check for GLX_ARB_create_context_profile. */ void _mesa_compute_version(struct gl_context *ctx) { if (ctx->Version) return; switch (ctx->API) { case API_OPENGL_COMPAT: /* Disable GLSL 1.40 and later for legacy contexts. * This disallows creation of the GL 3.1 compatibility context. */ if (ctx->Const.GLSLVersion > 130) { ctx->Const.GLSLVersion = 130; } /* fall through */ case API_OPENGL_CORE: compute_version(ctx); break; case API_OPENGLES: compute_version_es1(ctx); break; case API_OPENGLES2: compute_version_es2(ctx); break; case API_VK: break; } }
/** * Query string-valued state. The return value should _not_ be freed by * the caller. * * \param name the state variable to query. * * \sa glGetString(). * * Tries to get the string from dd_function_table::GetString, otherwise returns * the hardcoded strings. */ const GLubyte * GLAPIENTRY _mesa_GetString( GLenum name ) { GET_CURRENT_CONTEXT(ctx); static const char *vendor = "Brian Paul"; static const char *renderer = "Mesa"; if (!ctx) return NULL; ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL); /* this is a required driver function */ assert(ctx->Driver.GetString); { /* Give the driver the chance to handle this query */ const GLubyte *str = (*ctx->Driver.GetString)(ctx, name); if (str) return str; } switch (name) { case GL_VENDOR: return (const GLubyte *) vendor; case GL_RENDERER: return (const GLubyte *) renderer; case GL_VERSION: return (const GLubyte *) compute_version(ctx); 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; #endif #if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program || \ FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program case GL_PROGRAM_ERROR_STRING_NV: if (ctx->Extensions.NV_fragment_program || ctx->Extensions.ARB_fragment_program || ctx->Extensions.NV_vertex_program || ctx->Extensions.ARB_vertex_program) { 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" ); return (const GLubyte *) 0; } }
/** * Set the context's VersionMajor, VersionMinor, VersionString fields. * This should only be called once as part of context initialization * or to perform version check for GLX_ARB_create_context_profile. */ void _mesa_compute_version(struct gl_context *ctx) { if (ctx->VersionMajor) return; switch (ctx->API) { case API_OPENGL: compute_version(ctx); break; case API_OPENGLES: compute_version_es1(ctx); break; case API_OPENGLES2: compute_version_es2(ctx); break; } }