e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* Copyright (c) 2001, Stanford University
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * All rights reserved
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * See the file LICENSE.txt for information on redistributing this software.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_error.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_version.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "state.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "state/cr_statetypes.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_extstring.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_mem.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_string.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncconst GLubyte * STATE_APIENTRY crStateGetString( GLenum name )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync CRContext *g = GetCurrentContext();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (!g)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return NULL;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync switch( name )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync case GL_VENDOR:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return (const GLubyte *) CR_VENDOR;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync case GL_RENDERER:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return (const GLubyte *) CR_RENDERER;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync case GL_VERSION:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return (const GLubyte *) CR_OPENGL_VERSION_STRING " Chromium " CR_VERSION_STRING;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync case GL_EXTENSIONS:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync /* This shouldn't normally be queried - the relevant SPU should
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * catch this query and do all the extension string merging/mucking.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync static char *extensions = NULL;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (!extensions) {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync extensions = crAlloc(crStrlen(crExtensions) + crStrlen(crChromiumExtensions) + 2);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync crStrcpy(extensions, crExtensions);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync crStrcpy(extensions, " ");
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync crStrcat(extensions, crChromiumExtensions);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return (const GLubyte *) extensions;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if defined(CR_ARB_vertex_program) || defined(CR_ARB_fragment_program)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync case GL_PROGRAM_ERROR_STRING_ARB:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return g->program.errorString;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync default:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync crStateError( __LINE__, __FILE__, GL_INVALID_ENUM,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync "calling glGetString() with invalid name" );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return NULL;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync (void) crAppOnlyExtensions; /* silence warnings */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}