1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Mesa 3-D graphics library 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Version: 7.5 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 2009 VMware, Inc. All Rights Reserved. 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the "Software"), 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * to deal in the Software without restriction, including without limitation 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * and/or sell copies of the Software, and to permit persons to whom the 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Software is furnished to do so, subject to the following conditions: 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice shall be included 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * in all copies or substantial portions of the Software. 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \file texgen.c 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * glTexGen-related functions 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/glheader.h" 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/context.h" 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/enums.h" 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/macros.h" 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/mfeatures.h" 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/texgen.h" 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/texstate.h" 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "math/m_matrix.h" 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/dispatch.h" 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_texgen 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Return texgen state for given coordinate 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic struct gl_texgen * 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgget_texgen(struct gl_context *ctx, struct gl_texture_unit *texUnit, 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum coord) 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API == API_OPENGLES) { 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return (coord == GL_TEXTURE_GEN_STR_OES) 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ? &texUnit->GenS : NULL; 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (coord) { 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_S: 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return &texUnit->GenS; 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_T: 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return &texUnit->GenT; 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_R: 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return &texUnit->GenR; 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_Q: 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return &texUnit->GenQ; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return NULL; 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texture_unit *texUnit; 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texgen *texgen; 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (MESA_VERBOSE&(VERBOSE_API|VERBOSE_TEXTURE)) 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_debug(ctx, "glTexGen %s %s %.1f(%s)...\n", 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(coord), 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr(pname), 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org *params, 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_lookup_enum_by_nr((GLenum) (GLint) *params)); 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_OPERATION, "glTexGen(current unit)"); 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texUnit = _mesa_get_current_tex_unit(ctx); 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texgen = get_texgen(ctx, texUnit, coord); 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!texgen) { 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glTexGen(coord)"); 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_GEN_MODE: 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum mode = (GLenum) (GLint) params[0]; 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLbitfield bit = 0x0; 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (texgen->Mode == mode) 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (mode) { 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_OBJECT_LINEAR: 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bit = TEXGEN_OBJ_LINEAR; 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_EYE_LINEAR: 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bit = TEXGEN_EYE_LINEAR; 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_SPHERE_MAP: 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (coord == GL_S || coord == GL_T) 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bit = TEXGEN_SPHERE_MAP; 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_REFLECTION_MAP_NV: 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (coord != GL_Q) 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bit = TEXGEN_REFLECTION_MAP_NV; 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_NORMAL_MAP_NV: 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (coord != GL_Q) 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bit = TEXGEN_NORMAL_MAP_NV; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ; /* nop */ 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!bit) { 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org && (bit & (TEXGEN_REFLECTION_MAP_NV | TEXGEN_NORMAL_MAP_NV)) == 0) { 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLUSH_VERTICES(ctx, _NEW_TEXTURE); 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texgen->Mode = mode; 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texgen->_ModeBit = bit; 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_OBJECT_PLANE: 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL) { 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (TEST_EQ_4V(texgen->ObjectPlane, params)) 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLUSH_VERTICES(ctx, _NEW_TEXTURE); 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4FV(texgen->ObjectPlane, params); 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_EYE_PLANE: 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat tmp[4]; 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL) { 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" ); 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Transform plane equation by the inverse modelview matrix */ 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (_math_matrix_is_dirty(ctx->ModelviewMatrixStack.Top)) { 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _math_matrix_analyse(ctx->ModelviewMatrixStack.Top); 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_transform_vector(tmp, params, 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ctx->ModelviewMatrixStack.Top->inv); 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (TEST_EQ_4V(texgen->EyePlane, tmp)) 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FLUSH_VERTICES(ctx, _NEW_TEXTURE); 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4FV(texgen->EyePlane, tmp); 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" ); 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Driver.TexGen) 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ctx->Driver.TexGen( ctx, coord, pname, params ); 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_TexGeniv(GLenum coord, GLenum pname, const GLint *params ) 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat p[4]; 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[0] = (GLfloat) params[0]; 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (pname == GL_TEXTURE_GEN_MODE) { 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = p[2] = p[3] = 0.0F; 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else { 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = (GLfloat) params[1]; 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[2] = (GLfloat) params[2]; 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[3] = (GLfloat) params[3]; 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv(coord, pname, p); 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_TexGend(GLenum coord, GLenum pname, GLdouble param ) 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat p[4]; 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[0] = (GLfloat) param; 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = p[2] = p[3] = 0.0F; 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv( coord, pname, p ); 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_ES1 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_GetTexGenfv(GL_S, pname, params); 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_es_TexGenf(GLenum coord, GLenum pname, GLfloat param) 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (coord != GL_TEXTURE_GEN_STR_OES) { 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGen[fx](pname)" ); 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* set S, T, and R at the same time */ 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenf(GL_S, pname, param); 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenf(GL_T, pname, param); 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenf(GL_R, pname, param); 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params) 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (coord != GL_TEXTURE_GEN_STR_OES) { 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glTexGen[fx]v(pname)" ); 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* set S, T, and R at the same time */ 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv(GL_S, pname, params); 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv(GL_T, pname, params); 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv(GL_R, pname, params); 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_TexGendv(GLenum coord, GLenum pname, const GLdouble *params ) 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat p[4]; 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[0] = (GLfloat) params[0]; 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (pname == GL_TEXTURE_GEN_MODE) { 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = p[2] = p[3] = 0.0F; 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else { 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = (GLfloat) params[1]; 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[2] = (GLfloat) params[2]; 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[3] = (GLfloat) params[3]; 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv( coord, pname, p ); 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param ) 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLfloat p[4]; 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[0] = param; 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = p[2] = p[3] = 0.0F; 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGenfv(coord, pname, p); 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_TexGeni( GLenum coord, GLenum pname, GLint param ) 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint p[4]; 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[0] = param; 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org p[1] = p[2] = p[3] = 0; 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_TexGeniv( coord, pname, p ); 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic void GLAPIENTRY 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texture_unit *texUnit; 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texgen *texgen; 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGendv(current unit)"); 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texUnit = _mesa_get_current_tex_unit(ctx); 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texgen = get_texgen(ctx, texUnit, coord); 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!texgen) { 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGendv(coord)"); 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_GEN_MODE: 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = ENUM_TO_DOUBLE(texgen->Mode); 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_OBJECT_PLANE: 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4V(params, texgen->ObjectPlane); 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_EYE_PLANE: 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4V(params, texgen->EyePlane); 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ) 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texture_unit *texUnit; 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texgen *texgen; 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGenfv(current unit)"); 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texUnit = _mesa_get_current_tex_unit(ctx); 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texgen = get_texgen(ctx, texUnit, coord); 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!texgen) { 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGenfv(coord)"); 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_GEN_MODE: 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = ENUM_TO_FLOAT(texgen->Mode); 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_OBJECT_PLANE: 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL) { 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(param)" ); 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4V(params, texgen->ObjectPlane); 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_EYE_PLANE: 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL) { 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(param)" ); 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4V(params, texgen->EyePlane); 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" ); 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid GLAPIENTRY 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params ) 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texture_unit *texUnit; 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct gl_texgen *texgen; 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ASSERT_OUTSIDE_BEGIN_END(ctx); 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGeniv(current unit)"); 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texUnit = _mesa_get_current_tex_unit(ctx); 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org texgen = get_texgen(ctx, texUnit, coord); 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (!texgen) { 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGeniv(coord)"); 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (pname) { 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_TEXTURE_GEN_MODE: 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = texgen->Mode; 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_OBJECT_PLANE: 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL) { 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(param)" ); 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = (GLint) texgen->ObjectPlane[0]; 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[1] = (GLint) texgen->ObjectPlane[1]; 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[2] = (GLint) texgen->ObjectPlane[2]; 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[3] = (GLint) texgen->ObjectPlane[3]; 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_EYE_PLANE: 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (ctx->API != API_OPENGL) { 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(param)" ); 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return; 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[0] = (GLint) texgen->EyePlane[0]; 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[1] = (GLint) texgen->EyePlane[1]; 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[2] = (GLint) texgen->EyePlane[2]; 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org params[3] = (GLint) texgen->EyePlane[3]; 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" ); 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org_mesa_init_texgen_dispatch(struct _glapi_table *disp) 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetTexGendv(disp, _mesa_GetTexGendv); 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetTexGenfv(disp, _mesa_GetTexGenfv); 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_GetTexGeniv(disp, _mesa_GetTexGeniv); 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_TexGend(disp, _mesa_TexGend); 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_TexGendv(disp, _mesa_TexGendv); 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_TexGenf(disp, _mesa_TexGenf); 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_TexGenfv(disp, _mesa_TexGenfv); 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_TexGeni(disp, _mesa_TexGeni); 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SET_TexGeniv(disp, _mesa_TexGeniv); 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif /* FEATURE_texgen */ 447