/** * 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); /* if MESA_VENDOR_OVERRIDE is set, then override GL_VENDOR */ const char *forcedvendor = getenv("MESA_VENDOR_OVERRIDE"); if ((forcedvendor) && (name == GL_VENDOR)) return (const GLubyte *) forcedvendor; /* 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 *) ctx->VersionString; case GL_EXTENSIONS: if (ctx->API == API_OPENGL_CORE) { _mesa_error(ctx, GL_INVALID_ENUM, "glGetString(GL_EXTENSIONS)"); return (const GLubyte *) 0; } return (const GLubyte *) ctx->Extensions.String; case GL_SHADING_LANGUAGE_VERSION: if (ctx->API == API_OPENGLES) break; return shading_language_version(ctx); case GL_PROGRAM_ERROR_STRING_ARB: if (ctx->API == API_OPENGL_COMPAT && (ctx->Extensions.ARB_fragment_program || ctx->Extensions.ARB_vertex_program)) { return (const GLubyte *) ctx->Program.ErrorString; } break; default: break; } _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); return (const GLubyte *) 0; }
/** * 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 *) ctx->VersionString; case GL_EXTENSIONS: return (const GLubyte *) ctx->Extensions.String; #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 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 default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); return (const GLubyte *) 0; } }