getstring.c revision 04bf868ad9f0034ce7b726eadd2ffac346441a68
1169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul/* 2169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Mesa 3-D graphics library 33f4e80c06b5b6efcd540ca5daf734100fad19ff0Brian Paul * Version: 7.1 4169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 53f4e80c06b5b6efcd540ca5daf734100fad19ff0Brian Paul * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 7169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 8169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * copy of this software and associated documentation files (the "Software"), 9169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * to deal in the Software without restriction, including without limitation 10169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 12169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Software is furnished to do so, subject to the following conditions: 13169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 14169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * The above copyright notice and this permission notice shall be included 15169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * in all copies or substantial portions of the Software. 16169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 17169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 21169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul */ 24169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 25169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 26169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 27169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul#include "glheader.h" 28169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul#include "context.h" 29169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul#include "get.h" 30169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul#include "enums.h" 31169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul#include "extensions.h" 32169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 3304bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsbergstatic const GLubyte * 3404bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsbergshading_laguage_version(GLcontext *ctx) 3504bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg{ 3604bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg switch (ctx->API) { 3704bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg#if FEATURE_ARB_shading_language_100 3804bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg case API_OPENGL: 3904bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg if (ctx->Extensions.ARB_shading_language_120) 4004bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg return (const GLubyte *) "1.20"; 4104bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg else if (ctx->Extensions.ARB_shading_language_100) 4204bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg return (const GLubyte *) "1.10"; 4304bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg goto error; 4404bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg#endif 4504bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg 4604bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg case API_OPENGLES2: 4704bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16"; 4804bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg 4904bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg case API_OPENGLES: 5004bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg default: 5104bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg error: 5204bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); 5304bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg return (const GLubyte *) 0; 5404bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg } 5504bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg} 5604bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg 57169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 58169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul/** 59169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Query string-valued state. The return value should _not_ be freed by 60169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * the caller. 61169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 62169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * \param name the state variable to query. 63169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 64169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * \sa glGetString(). 65169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 66169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Tries to get the string from dd_function_table::GetString, otherwise returns 67169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * the hardcoded strings. 68169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul */ 69169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paulconst GLubyte * GLAPIENTRY 70169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul_mesa_GetString( GLenum name ) 71169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul{ 72169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul GET_CURRENT_CONTEXT(ctx); 73169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul static const char *vendor = "Brian Paul"; 74169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul static const char *renderer = "Mesa"; 75365582dd6f632aafbc1c817aa57926d679bb2efcMichal Krol 76346a239f0144b5ba7ebad39b70ee7e125264cd6eBrian Paul if (!ctx) 77346a239f0144b5ba7ebad39b70ee7e125264cd6eBrian Paul return NULL; 78346a239f0144b5ba7ebad39b70ee7e125264cd6eBrian Paul 79a0c85249244e1af8dac88076d5f384cf4bd01236Keith Whitwell ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL); 80169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 81169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul /* this is a required driver function */ 82169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul assert(ctx->Driver.GetString); 83169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul { 84169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul /* Give the driver the chance to handle this query */ 85169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul const GLubyte *str = (*ctx->Driver.GetString)(ctx, name); 86169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (str) 87169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return str; 88169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul } 89169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 90169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul switch (name) { 91169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_VENDOR: 92169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return (const GLubyte *) vendor; 93169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_RENDERER: 94948f6e302ca3b6e0aa4d74eaef2e17dfb31bdfd5Brian Paul return (const GLubyte *) renderer; 95169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_VERSION: 963510a1b0c5398b4fce4157d5b578344d2a0bd7d3Brian Paul return (const GLubyte *) ctx->VersionString; 97169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_EXTENSIONS: 98169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (!ctx->Extensions.String) 99169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ctx->Extensions.String = _mesa_make_extension_string(ctx); 1006acf1e93a291511cfb20b0e2aeda6e71ceb62a62Michal Krol return (const GLubyte *) ctx->Extensions.String; 10104bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg#if FEATURE_ARB_shading_language_100 || FEATURE_ES2 10204bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg case GL_SHADING_LANGUAGE_VERSION: 10304bf868ad9f0034ce7b726eadd2ffac346441a68Kristian Høgsberg return shading_laguage_version(ctx); 1041a5fecb4d6975418da055891f6899a9f4aaa0b31Michal Krol#endif 105169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul#if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program || \ 106169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program 107169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_PROGRAM_ERROR_STRING_NV: 108169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (ctx->Extensions.NV_fragment_program || 109169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ctx->Extensions.ARB_fragment_program || 110169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ctx->Extensions.NV_vertex_program || 111169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ctx->Extensions.ARB_vertex_program) { 112169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return (const GLubyte *) ctx->Program.ErrorString; 113169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul } 114169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul /* FALL-THROUGH */ 1156acf1e93a291511cfb20b0e2aeda6e71ceb62a62Michal Krol#endif 116169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul default: 117169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); 118169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return (const GLubyte *) 0; 119169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul } 120169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul} 121169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 122169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 123169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul/** 12416e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul * GL3 12516e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul */ 12616e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paulconst GLubyte * GLAPIENTRY 12716e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul_mesa_GetStringi(GLenum name, GLuint index) 12816e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul{ 12916e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul GET_CURRENT_CONTEXT(ctx); 13016e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul 13116e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul if (!ctx) 13216e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul return NULL; 13316e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul 13416e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL); 13516e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul 13616e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul switch (name) { 13716e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul case GL_EXTENSIONS: 13816e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul if (index >= _mesa_get_extension_count(ctx)) { 13916e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul _mesa_error(ctx, GL_INVALID_VALUE, "glGetStringi(index=%u)", index); 14016e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul return (const GLubyte *) 0; 14116e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul } 14216e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul return _mesa_get_enabled_extension(ctx, index); 14316e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul default: 14416e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); 14516e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul return (const GLubyte *) 0; 14616e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul } 14716e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul} 14816e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul 14916e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul 15016e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul 15116e91d4c0e1088f5c4098b01b4b7bf670cd66c4aBrian Paul/** 152169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Return pointer-valued state, such as a vertex array pointer. 153169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 154169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * \param pname names state to be queried 155169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * \param params returns the pointer value 156169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 157169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * \sa glGetPointerv(). 158169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 159169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Tries to get the specified pointer via dd_function_table::GetPointerv, 160169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * otherwise gets the specified pointer from the current context. 161169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul */ 162169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paulvoid GLAPIENTRY 163169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul_mesa_GetPointerv( GLenum pname, GLvoid **params ) 164169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul{ 165169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul GET_CURRENT_CONTEXT(ctx); 166169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul const GLuint clientUnit = ctx->Array.ActiveTexture; 167169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ASSERT_OUTSIDE_BEGIN_END(ctx); 168169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 169169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (!params) 170169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return; 171169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 172169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (MESA_VERBOSE & VERBOSE_API) 173169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul _mesa_debug(ctx, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname)); 174169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 175169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (ctx->Driver.GetPointerv 176169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul && (*ctx->Driver.GetPointerv)(ctx, pname, params)) 177169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return; 178169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 179169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul switch (pname) { 180169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_VERTEX_ARRAY_POINTER: 181ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->Vertex.Ptr; 182169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 183169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_NORMAL_ARRAY_POINTER: 184ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->Normal.Ptr; 185169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 186169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_COLOR_ARRAY_POINTER: 187ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->Color.Ptr; 188169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 189169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT: 190ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->SecondaryColor.Ptr; 191169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 192169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_FOG_COORDINATE_ARRAY_POINTER_EXT: 193ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->FogCoord.Ptr; 194169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 195169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_INDEX_ARRAY_POINTER: 196ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->Index.Ptr; 197169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 198169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_TEXTURE_COORD_ARRAY_POINTER: 199ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->TexCoord[clientUnit].Ptr; 200169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 201169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_EDGE_FLAG_ARRAY_POINTER: 202ee34e6ef716bb630440299ac1efbc2055ef09ffdIan Romanick *params = (GLvoid *) ctx->Array.ArrayObj->EdgeFlag.Ptr; 203169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 204169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_FEEDBACK_BUFFER_POINTER: 205169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul *params = ctx->Feedback.Buffer; 206169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 207169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul case GL_SELECTION_BUFFER_POINTER: 208169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul *params = ctx->Select.Buffer; 209169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul break; 210c3d61d378574878deedb44d84f506ca23e66c6caChia-I Wu#if FEATURE_point_size_array 211c3d61d378574878deedb44d84f506ca23e66c6caChia-I Wu case GL_POINT_SIZE_ARRAY_POINTER_OES: 212c3d61d378574878deedb44d84f506ca23e66c6caChia-I Wu *params = (GLvoid *) ctx->Array.ArrayObj->PointSize.Ptr; 213c3d61d378574878deedb44d84f506ca23e66c6caChia-I Wu break; 214c3d61d378574878deedb44d84f506ca23e66c6caChia-I Wu#endif 215169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul default: 216169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul _mesa_error( ctx, GL_INVALID_ENUM, "glGetPointerv" ); 217169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return; 218169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul } 219169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul} 220169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 221169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 222169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul/** 223169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Returns the current GL error code, or GL_NO_ERROR. 224169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * \return current error code 225169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * 226169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul * Returns __GLcontextRec::ErrorValue. 227169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul */ 228169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian PaulGLenum GLAPIENTRY 229169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul_mesa_GetError( void ) 230169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul{ 231169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul GET_CURRENT_CONTEXT(ctx); 232169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul GLenum e = ctx->ErrorValue; 233169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0); 234169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 235169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul if (MESA_VERBOSE & VERBOSE_API) 236169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul _mesa_debug(ctx, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e)); 237169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul 238169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul ctx->ErrorValue = (GLenum) GL_NO_ERROR; 239def77160d69dbb0a333ea3f9263e661f8557a7ecBrian Paul ctx->ErrorDebugCount = 0; 240169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul return e; 241169a723d2ba90f91e3c16f7e186d0ed238da9a65Brian Paul} 242