eval.c revision 94a6ec8f0c8a25aeeb5880e2285ae6042cfb99db
194a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz/* $Id: eval.c,v 1.21 2001/09/18 16:16:21 kschultz Exp $ */
2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
3afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Mesa 3-D graphics library
5c893a015d8a50a38cd3f727d99835e7e7e2ccea9Brian Paul * Version:  3.5
65e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
722144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
85e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Permission is hereby granted, free of charge, to any person obtaining a
10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * copy of this software and associated documentation files (the "Software"),
11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * to deal in the Software without restriction, including without limitation
12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * and/or sell copies of the Software, and to permit persons to whom the
14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Software is furnished to do so, subject to the following conditions:
155e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * The above copyright notice and this permission notice shall be included
17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * in all copies or substantial portions of the Software.
185e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
26afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
27afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
28afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
29afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * eval.c was written by
30afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Bernd Barsuhn (bdbarsuh@cip.informatik.uni-erlangen.de) and
31afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Volker Weiss (vrweiss@cip.informatik.uni-erlangen.de).
32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach *
33afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * My original implementation of evaluators was simplistic and didn't
34afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * compute surface normal vectors properly.  Bernd and Volker applied
35afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * used more sophisticated methods to get better results.
36afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach *
37afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Thanks guys!
38afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
39afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
40afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
41afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#ifdef PC_HEADER
42afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#include "all.h"
43afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#else
44fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#include "glheader.h"
45c893a015d8a50a38cd3f727d99835e7e7e2ccea9Brian Paul#include "colormac.h"
46afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#include "context.h"
47afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#include "eval.h"
48afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#include "macros.h"
49fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#include "mem.h"
50afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#include "mmath.h"
515e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen#include "mtypes.h"
52afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach#endif
53afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
54afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
55afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
56afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Return the number of components per control point for any type of
57afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * evaluator.  Return 0 if bad target.
58fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * See table 5.1 in the OpenGL 1.2 spec.
59afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
60fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian PaulGLuint _mesa_evaluator_components( GLenum target )
61afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
62afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   switch (target) {
63afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_VERTEX_3:		return 3;
64afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_VERTEX_4:		return 4;
65afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_INDEX:		return 1;
66afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_COLOR_4:		return 4;
67afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_NORMAL:		return 3;
68afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_1:	return 1;
69afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_2:	return 2;
70afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_3:	return 3;
71afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_4:	return 4;
72afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_VERTEX_3:		return 3;
73afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_VERTEX_4:		return 4;
74afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_INDEX:		return 1;
75afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_COLOR_4:		return 4;
76afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_NORMAL:		return 3;
77afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_1:	return 1;
78afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_2:	return 2;
79afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_3:	return 3;
80afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_4:	return 4;
81afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      default:				return 0;
82afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
83afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
84afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
85afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
86afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/**********************************************************************/
87afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/***            Copy and deallocate control points                  ***/
88afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/**********************************************************************/
89afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
90afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
91afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
925e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * Copy 1-parametric evaluator control points from user-specified
93afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * memory space to a buffer of contiguous control points.
94afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Input:  see glMap1f for details
95afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Return:  pointer to buffer of contiguous control points or NULL if out
96afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach *          of memory.
97afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
9808836341788a9f9d638d9dc8328510ccd18ddeb5Brian PaulGLfloat *_mesa_copy_map_points1f( GLenum target, GLint ustride, GLint uorder,
99afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                               const GLfloat *points )
100afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
101afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *buffer, *p;
102fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GLint i, k, size = _mesa_evaluator_components(target);
103afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
104afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (!points || size==0) {
105afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return NULL;
106afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
107afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
108bd5cdaf4442872d3cd2ff94eeafadd481d27fcfbBrian Paul   buffer = (GLfloat *) MALLOC(uorder * size * sizeof(GLfloat));
109afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1105e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen   if(buffer)
111afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      for(i=0, p=buffer; i<uorder; i++, points+=ustride)
112afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	for(k=0; k<size; k++)
113afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	  *p++ = points[k];
114afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
115afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   return buffer;
116afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
117afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
118afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
119afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
120afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
121afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Same as above but convert doubles to floats.
122afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
12308836341788a9f9d638d9dc8328510ccd18ddeb5Brian PaulGLfloat *_mesa_copy_map_points1d( GLenum target, GLint ustride, GLint uorder,
124fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul                               const GLdouble *points )
125afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
126afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *buffer, *p;
127fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GLint i, k, size = _mesa_evaluator_components(target);
128afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
129afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (!points || size==0) {
130afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return NULL;
131afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
132afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
133bd5cdaf4442872d3cd2ff94eeafadd481d27fcfbBrian Paul   buffer = (GLfloat *) MALLOC(uorder * size * sizeof(GLfloat));
134afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
135afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if(buffer)
136afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      for(i=0, p=buffer; i<uorder; i++, points+=ustride)
137afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	for(k=0; k<size; k++)
138afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	  *p++ = (GLfloat) points[k];
139afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
140afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   return buffer;
141afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
142afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
143afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
144afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
145afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
1465e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen * Copy 2-parametric evaluator control points from user-specified
147afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * memory space to a buffer of contiguous control points.
148afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Additional memory is allocated to be used by the horner and
149afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * de Casteljau evaluation schemes.
150afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach *
151afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Input:  see glMap2f for details
152afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Return:  pointer to buffer of contiguous control points or NULL if out
153afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach *          of memory.
154afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
15508836341788a9f9d638d9dc8328510ccd18ddeb5Brian PaulGLfloat *_mesa_copy_map_points2f( GLenum target,
156fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul                               GLint ustride, GLint uorder,
157fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul                               GLint vstride, GLint vorder,
158fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul                               const GLfloat *points )
159afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
160afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *buffer, *p;
161afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint i, j, k, size, dsize, hsize;
162afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint uinc;
163afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
164fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   size = _mesa_evaluator_components(target);
165afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
166afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (!points || size==0) {
167afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return NULL;
168afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
169afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
170afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* max(uorder, vorder) additional points are used in      */
171afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* horner evaluation and uorder*vorder additional */
172afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* values are needed for de Casteljau                     */
173afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   dsize = (uorder == 2 && vorder == 2)? 0 : uorder*vorder;
174afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   hsize = (uorder > vorder ? uorder : vorder)*size;
175afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
176afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if(hsize>dsize)
177bd5cdaf4442872d3cd2ff94eeafadd481d27fcfbBrian Paul     buffer = (GLfloat *) MALLOC((uorder*vorder*size+hsize)*sizeof(GLfloat));
178afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   else
179bd5cdaf4442872d3cd2ff94eeafadd481d27fcfbBrian Paul     buffer = (GLfloat *) MALLOC((uorder*vorder*size+dsize)*sizeof(GLfloat));
180afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
181afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* compute the increment value for the u-loop */
182afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   uinc = ustride - vorder*vstride;
183afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1845e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen   if (buffer)
185afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      for (i=0, p=buffer; i<uorder; i++, points += uinc)
186afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 for (j=0; j<vorder; j++, points += vstride)
187afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    for (k=0; k<size; k++)
188afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *p++ = points[k];
189afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
190afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   return buffer;
191afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
192afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
193afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
194afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
195afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
196afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach * Same as above but convert doubles to floats.
197afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
19808836341788a9f9d638d9dc8328510ccd18ddeb5Brian PaulGLfloat *_mesa_copy_map_points2d(GLenum target,
199afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                              GLint ustride, GLint uorder,
200afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                              GLint vstride, GLint vorder,
201afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                              const GLdouble *points )
202afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
203afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *buffer, *p;
204afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint i, j, k, size, hsize, dsize;
205afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint uinc;
206afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
207fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   size = _mesa_evaluator_components(target);
208afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
209afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (!points || size==0) {
210afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return NULL;
211afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
212afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
213afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* max(uorder, vorder) additional points are used in      */
214afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* horner evaluation and uorder*vorder additional */
215afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* values are needed for de Casteljau                     */
216afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   dsize = (uorder == 2 && vorder == 2)? 0 : uorder*vorder;
217afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   hsize = (uorder > vorder ? uorder : vorder)*size;
218afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
219afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if(hsize>dsize)
220bd5cdaf4442872d3cd2ff94eeafadd481d27fcfbBrian Paul     buffer = (GLfloat *) MALLOC((uorder*vorder*size+hsize)*sizeof(GLfloat));
221afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   else
222bd5cdaf4442872d3cd2ff94eeafadd481d27fcfbBrian Paul     buffer = (GLfloat *) MALLOC((uorder*vorder*size+dsize)*sizeof(GLfloat));
223afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
224afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   /* compute the increment value for the u-loop */
225afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   uinc = ustride - vorder*vstride;
226afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
2275e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen   if (buffer)
228afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      for (i=0, p=buffer; i<uorder; i++, points += uinc)
229afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 for (j=0; j<vorder; j++, points += vstride)
230afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    for (k=0; k<size; k++)
231afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *p++ = (GLfloat) points[k];
232afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
233afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   return buffer;
234afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
235afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
236afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
237afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
238afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
239afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/**********************************************************************/
240afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/***                      API entry points                          ***/
241afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/**********************************************************************/
242afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
243afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
244afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach/*
245fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul * This does the work of glMap1[fd].
246afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach */
247fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulstatic void
248fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulmap1(GLenum target, GLfloat u1, GLfloat u2, GLint ustride,
249fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul     GLint uorder, const GLvoid *points, GLenum type )
250afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
251fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
252afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint k;
253fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GLfloat *pnts;
254cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   struct gl_1d_map *map = 0;
25522144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes   ASSERT_OUTSIDE_BEGIN_END(ctx);
256afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
257fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   assert(type == GL_FLOAT || type == GL_DOUBLE);
258fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
259fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   if (u1 == u2) {
26008836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap1(u1,u2)" );
261afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
262afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
263fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   if (uorder < 1 || uorder > MAX_EVAL_ORDER) {
26408836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap1(order)" );
265afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
266afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
267fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   if (!points) {
26808836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap1(points)" );
269fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      return;
270fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   }
271afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
272fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   k = _mesa_evaluator_components( target );
273fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   if (k == 0) {
27408836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_ENUM, "glMap1(target)" );
275afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
276afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
277fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   if (ustride < k) {
27808836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap1(stride)" );
279afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
280afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
281afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
282441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul   if (ctx->Texture.CurrentUnit != 0) {
283441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul      /* See OpenGL 1.2.1 spec, section F.2.13 */
284441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul      _mesa_error( ctx, GL_INVALID_OPERATION, "glMap2(ACTIVE_TEXTURE != 0)" );
285441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul      return;
286441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul   }
287441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul
288afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   switch (target) {
289afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_VERTEX_3:
290cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Vertex3;
291afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
292afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_VERTEX_4:
293cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Vertex4;
294afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
295afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_INDEX:
296cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Index;
297afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
298afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_COLOR_4:
299cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Color4;
300afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
301afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_NORMAL:
302cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Normal;
303afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
304afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_1:
305cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Texture1;
306afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
307afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_2:
308cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Texture2;
309afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
310afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_3:
311cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Texture3;
312afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
313afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP1_TEXTURE_COORD_4:
314cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map1Texture4;
315afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
316afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      default:
31708836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul         _mesa_error( ctx, GL_INVALID_ENUM, "glMap1(target)" );
318cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell	 return;
319afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
320a96308c37db0bc0086a017d318bc3504aa5f0b1aKeith Whitwell
321cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   /* make copy of the control points */
322cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   if (type == GL_FLOAT)
32308836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      pnts = _mesa_copy_map_points1f(target, ustride, uorder, (GLfloat*) points);
324cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   else
32508836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      pnts = _mesa_copy_map_points1d(target, ustride, uorder, (GLdouble*) points);
326cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
327cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
328cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   FLUSH_VERTICES(ctx, _NEW_EVAL);
329cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->Order = uorder;
330cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->u1 = u1;
331cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->u2 = u2;
33294a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   map->du = 1.0F / (u2 - u1);
333cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   if (map->Points)
334cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      FREE( map->Points );
335cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->Points = pnts;
336afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
337afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
338afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
339afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
340fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
341fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_Map1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride,
342fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             GLint order, const GLfloat *points )
343fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{
344fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   map1(target, u1, u2, stride, order, points, GL_FLOAT);
345fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}
346afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
347fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
348fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
349fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_Map1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride,
350fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             GLint order, const GLdouble *points )
351afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
35294a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   map1(target, (GLfloat) u1, (GLfloat) u2, stride, order, points, GL_DOUBLE);
353fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}
354fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
355fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
356fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulstatic void
357fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulmap2( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
358fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
359fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const GLvoid *points, GLenum type )
360fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{
361fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
362afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint k;
363fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GLfloat *pnts;
364cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   struct gl_2d_map *map = 0;
365cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   ASSERT_OUTSIDE_BEGIN_END(ctx);
366afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
367afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (u1==u2) {
36808836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap2(u1,u2)" );
369afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
370afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
371afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
372afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (v1==v2) {
37308836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap2(v1,v2)" );
374afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
375afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
376afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
377afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (uorder<1 || uorder>MAX_EVAL_ORDER) {
37808836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap2(uorder)" );
379afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
380afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
381afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
382afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (vorder<1 || vorder>MAX_EVAL_ORDER) {
38308836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap2(vorder)" );
384afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
385afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
386afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
387fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   k = _mesa_evaluator_components( target );
388afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (k==0) {
38908836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_ENUM, "glMap2(target)" );
390afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
391afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
392afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (ustride < k) {
39308836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap2(ustride)" );
394afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
395afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
396afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (vstride < k) {
39708836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMap2(vstride)" );
398afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
399afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
400afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
401441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul   if (ctx->Texture.CurrentUnit != 0) {
402441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul      /* See OpenGL 1.2.1 spec, section F.2.13 */
403441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul      _mesa_error( ctx, GL_INVALID_OPERATION, "glMap2(ACTIVE_TEXTURE != 0)" );
404441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul      return;
405441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul   }
406441a4af435b46e1b475318fbaf4e80b774390cb0Brian Paul
407afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   switch (target) {
408afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_VERTEX_3:
409cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Vertex3;
410afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
411afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_VERTEX_4:
412cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Vertex4;
413afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
414afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_INDEX:
415cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Index;
416afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
417afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_COLOR_4:
418cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Color4;
419afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
420afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_NORMAL:
421cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Normal;
422afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
423afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_1:
424cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Texture1;
425afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
426afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_2:
427cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Texture2;
428afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
429afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_3:
430cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Texture3;
431afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
432afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_MAP2_TEXTURE_COORD_4:
433cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell         map = &ctx->EvalMap.Map2Texture4;
434afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 break;
435afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      default:
43608836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul         _mesa_error( ctx, GL_INVALID_ENUM, "glMap2(target)" );
437cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell	 return;
438afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
439a96308c37db0bc0086a017d318bc3504aa5f0b1aKeith Whitwell
440cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   /* make copy of the control points */
441cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   if (type == GL_FLOAT)
44208836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      pnts = _mesa_copy_map_points2f(target, ustride, uorder,
443cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell                                  vstride, vorder, (GLfloat*) points);
444cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   else
44508836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      pnts = _mesa_copy_map_points2d(target, ustride, uorder,
446cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell                                  vstride, vorder, (GLdouble*) points);
44722144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes
44822144ab7552f0799bcfca506bf4ffa7f70a06649Gareth Hughes
449cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   FLUSH_VERTICES(ctx, _NEW_EVAL);
450cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->Uorder = uorder;
451cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->u1 = u1;
452cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->u2 = u2;
45394a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   map->du = 1.0F / (u2 - u1);
454cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->Vorder = vorder;
455cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->v1 = v1;
456cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->v2 = v2;
45794a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   map->dv = 1.0F / (v2 - v1);
458cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   if (map->Points)
459cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell      FREE( map->Points );
460cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   map->Points = pnts;
461afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
462afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
463afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
464fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
465fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_Map2f( GLenum target,
466fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
467fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
468fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             const GLfloat *points)
469fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{
470fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   map2(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder,
471fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul        points, GL_FLOAT);
472fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}
473afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
474afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
475fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
476fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_Map2d( GLenum target,
477fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
478fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
479fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul             const GLdouble *points )
480afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
48194a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   map2(target, (GLfloat) u1, (GLfloat) u2, ustride, uorder,
48294a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	(GLfloat) v1, (GLfloat) v2, vstride, vorder, points, GL_DOUBLE);
483fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}
484fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
485fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
4865e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen
487fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
488fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v )
489fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{
490fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
491afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint i, n;
492afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *data;
493cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   ASSERT_OUTSIDE_BEGIN_END(ctx);
494afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
495afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   switch (query) {
496afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_COEFF:
497afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
498afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
499afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Color4.Points;
500afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Color4.Order * 4;
501afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
502afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
503afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Index.Points;
504afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Index.Order;
505afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
506afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
507afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Normal.Points;
508afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Normal.Order * 3;
509afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
510afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
511afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture1.Points;
512afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture1.Order * 1;
513afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
514afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
515afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture2.Points;
516afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture2.Order * 2;
517afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
518afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
519afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture3.Points;
520afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture3.Order * 3;
521afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
522afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
523afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture4.Points;
524afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture4.Order * 4;
525afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
526afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
527afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Vertex3.Points;
528afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Vertex3.Order * 3;
529afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
530afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
531afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Vertex4.Points;
532afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Vertex4.Order * 4;
533afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
534afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
535afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Color4.Points;
536afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Color4.Uorder
537afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Color4.Vorder * 4;
538afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
539afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
540afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Index.Points;
541afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Index.Uorder
542afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Index.Vorder;
543afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
544afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
545afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Normal.Points;
546afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Normal.Uorder
547afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Normal.Vorder * 3;
548afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
549afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
550afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture1.Points;
551afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture1.Uorder
552afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture1.Vorder * 1;
553afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
554afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
555afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture2.Points;
556afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture2.Uorder
557afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture2.Vorder * 2;
558afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
559afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
560afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture3.Points;
561afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture3.Uorder
562afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture3.Vorder * 3;
563afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
564afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
565afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture4.Points;
566afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture4.Uorder
567afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture4.Vorder * 4;
568afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
569afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
570afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Vertex3.Points;
571afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Vertex3.Uorder
572afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Vertex3.Vorder * 3;
573afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
574afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
575afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Vertex4.Points;
576afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Vertex4.Uorder
577afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Vertex4.Vorder * 4;
578afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
579afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
58008836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(target)" );
581afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       return;
582afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
583afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 if (data) {
584afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    for (i=0;i<n;i++) {
585afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[i] = data[i];
586afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    }
587afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
588afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
589afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_ORDER:
590afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
591afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
592afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Color4.Order;
593afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
594afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
595afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Index.Order;
596afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
597afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
598afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Normal.Order;
599afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
600afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
601afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture1.Order;
602afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
603afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
604afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture2.Order;
605afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
606afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
607afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture3.Order;
608afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
609afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
610afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture4.Order;
611afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
612afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
613afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Vertex3.Order;
614afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
615afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
616afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Vertex4.Order;
617afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
618afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
619afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Color4.Uorder;
620afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Color4.Vorder;
621afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
622afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
623afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Index.Uorder;
624afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Index.Vorder;
625afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
626afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
627afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Normal.Uorder;
628afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Normal.Vorder;
629afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
630afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
631afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture1.Uorder;
632afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture1.Vorder;
633afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
634afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
635afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture2.Uorder;
636afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture2.Vorder;
637afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
638afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
639afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture3.Uorder;
640afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture3.Vorder;
641afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
642afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
643afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture4.Uorder;
644afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture4.Vorder;
645afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
646afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
647afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex3.Uorder;
648afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex3.Vorder;
649afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
650afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
651afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex4.Uorder;
652afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex4.Vorder;
653afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
654afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
65508836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(target)" );
656afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       return;
657afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
658afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
659afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_DOMAIN:
660afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
661afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
662afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Color4.u1;
663afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Color4.u2;
664afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
665afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
666afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Index.u1;
667afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Index.u2;
668afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
669afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
670afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Normal.u1;
671afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Normal.u2;
672afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
673afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
674afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture1.u1;
675afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture1.u2;
676afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
677afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
678afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture2.u1;
679afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture2.u2;
680afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
681afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
682afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture3.u1;
683afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture3.u2;
684afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
685afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
686afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture4.u1;
687afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture4.u2;
688afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
689afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
690afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Vertex3.u1;
691afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Vertex3.u2;
692afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
693afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
694afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Vertex4.u1;
695afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Vertex4.u2;
696afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
697afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
698afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Color4.u1;
699afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Color4.u2;
700afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Color4.v1;
701afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Color4.v2;
702afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
703afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
704afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Index.u1;
705afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Index.u2;
706afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Index.v1;
707afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Index.v2;
708afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
709afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
710afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Normal.u1;
711afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Normal.u2;
712afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Normal.v1;
713afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Normal.v2;
714afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
715afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
716afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture1.u1;
717afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture1.u2;
718afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture1.v1;
719afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture1.v2;
720afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
721afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
722afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture2.u1;
723afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture2.u2;
724afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture2.v1;
725afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture2.v2;
726afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
727afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
728afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture3.u1;
729afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture3.u2;
730afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture3.v1;
731afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture3.v2;
732afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
733afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
734afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture4.u1;
735afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture4.u2;
736afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture4.v1;
737afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture4.v2;
738afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
739afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
740afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex3.u1;
741afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex3.u2;
742afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Vertex3.v1;
743afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Vertex3.v2;
744afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
745afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
746afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex4.u1;
747afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex4.u2;
748afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Vertex4.v1;
749afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Vertex4.v2;
750afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
751afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
75208836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(target)" );
753afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
754afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
755afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      default:
75608836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul         _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(query)" );
757afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
758afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
759afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
760afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
761fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
762fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v )
763afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
764fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
765afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLint i, n;
766afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *data;
767cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   ASSERT_OUTSIDE_BEGIN_END(ctx);
768afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
769afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   switch (query) {
770afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_COEFF:
771afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
772afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
773afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Color4.Points;
774afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Color4.Order * 4;
775afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
776afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
777afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Index.Points;
778afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Index.Order;
779afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
780afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
781afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Normal.Points;
782afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Normal.Order * 3;
783afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
784afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
785afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture1.Points;
786afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture1.Order * 1;
787afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
788afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
789afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture2.Points;
790afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture2.Order * 2;
791afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
792afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
793afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture3.Points;
794afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture3.Order * 3;
795afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
796afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
797afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture4.Points;
798afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture4.Order * 4;
799afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
800afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
801afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Vertex3.Points;
802afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Vertex3.Order * 3;
803afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
804afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
805afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Vertex4.Points;
806afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Vertex4.Order * 4;
807afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
808afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
809afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Color4.Points;
810afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Color4.Uorder
811afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Color4.Vorder * 4;
812afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
813afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
814afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Index.Points;
815afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Index.Uorder
816afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Index.Vorder;
817afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
818afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
819afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Normal.Points;
820afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Normal.Uorder
821afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Normal.Vorder * 3;
822afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
823afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
824afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture1.Points;
825afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture1.Uorder
826afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture1.Vorder * 1;
827afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
828afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
829afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture2.Points;
830afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture2.Uorder
831afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture2.Vorder * 2;
832afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
833afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
834afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture3.Points;
835afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture3.Uorder
836afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture3.Vorder * 3;
837afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
838afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
839afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture4.Points;
840afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture4.Uorder
841afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture4.Vorder * 4;
842afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
843afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
844afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Vertex3.Points;
845afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Vertex3.Uorder
846afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Vertex3.Vorder * 3;
847afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
848afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
849afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Vertex4.Points;
850afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Vertex4.Uorder
851afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Vertex4.Vorder * 4;
852afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
853afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
85408836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(target)" );
855afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       return;
856afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
857afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 if (data) {
858afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    for (i=0;i<n;i++) {
859afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[i] = data[i];
860afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    }
861afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
862afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
863afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_ORDER:
864afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
865afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
86694a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Color4.Order;
867afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
868afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
86994a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Index.Order;
870afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
871afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
87294a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Normal.Order;
873afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
874afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
87594a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Texture1.Order;
876afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
877afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
87894a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Texture2.Order;
879afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
880afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
88194a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Texture3.Order;
882afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
883afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
88494a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Texture4.Order;
885afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
886afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
88794a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Vertex3.Order;
888afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
889afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
89094a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       *v = (GLfloat) ctx->EvalMap.Map1Vertex4.Order;
891afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
892afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
89394a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Color4.Uorder;
89494a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Color4.Vorder;
895afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
896afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
89794a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Index.Uorder;
89894a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Index.Vorder;
899afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
900afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
90194a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Normal.Uorder;
90294a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Normal.Vorder;
903afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
904afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
90594a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Texture1.Uorder;
90694a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Texture1.Vorder;
907afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
908afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
90994a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Texture2.Uorder;
91094a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Texture2.Vorder;
911afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
912afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
91394a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Texture3.Uorder;
91494a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Texture3.Vorder;
915afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
916afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
91794a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Texture4.Uorder;
91894a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Texture4.Vorder;
919afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
920afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
92194a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Vertex3.Uorder;
92294a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Vertex3.Vorder;
923afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
924afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
92594a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[0] = (GLfloat) ctx->EvalMap.Map2Vertex4.Uorder;
92694a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz	       v[1] = (GLfloat) ctx->EvalMap.Map2Vertex4.Vorder;
927afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
928afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
92908836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(target)" );
930afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       return;
931afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
932afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
933afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_DOMAIN:
934afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
935afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
936afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Color4.u1;
937afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Color4.u2;
938afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
939afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
940afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Index.u1;
941afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Index.u2;
942afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
943afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
944afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Normal.u1;
945afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Normal.u2;
946afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
947afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
948afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture1.u1;
949afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture1.u2;
950afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
951afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
952afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture2.u1;
953afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture2.u2;
954afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
955afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
956afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture3.u1;
957afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture3.u2;
958afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
959afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
960afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Texture4.u1;
961afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Texture4.u2;
962afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
963afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
964afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Vertex3.u1;
965afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Vertex3.u2;
966afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
967afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
968afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map1Vertex4.u1;
969afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map1Vertex4.u2;
970afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
971afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
972afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Color4.u1;
973afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Color4.u2;
974afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Color4.v1;
975afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Color4.v2;
976afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
977afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
978afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Index.u1;
979afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Index.u2;
980afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Index.v1;
981afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Index.v2;
982afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
983afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
984afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Normal.u1;
985afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Normal.u2;
986afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Normal.v1;
987afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Normal.v2;
988afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
989afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
990afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture1.u1;
991afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture1.u2;
992afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture1.v1;
993afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture1.v2;
994afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
995afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
996afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture2.u1;
997afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture2.u2;
998afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture2.v1;
999afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture2.v2;
1000afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1001afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
1002afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture3.u1;
1003afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture3.u2;
1004afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture3.v1;
1005afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture3.v2;
1006afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1007afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
1008afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture4.u1;
1009afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture4.u2;
1010afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Texture4.v1;
1011afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Texture4.v2;
1012afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1013afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
1014afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex3.u1;
1015afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex3.u2;
1016afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Vertex3.v1;
1017afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Vertex3.v2;
1018afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1019afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
1020afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex4.u1;
1021afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex4.u2;
1022afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ctx->EvalMap.Map2Vertex4.v1;
1023afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ctx->EvalMap.Map2Vertex4.v2;
1024afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1025afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
102608836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(target)" );
1027afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
1028afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
1029afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      default:
103008836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul         _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(query)" );
1031afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
1032afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
1033afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1034afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1035fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
1036fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_GetMapiv( GLenum target, GLenum query, GLint *v )
1037afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
1038fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
1039afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLuint i, n;
1040afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   GLfloat *data;
1041cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   ASSERT_OUTSIDE_BEGIN_END(ctx);
1042afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1043afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   switch (query) {
1044afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_COEFF:
1045afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
1046afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
1047afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Color4.Points;
1048afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Color4.Order * 4;
1049afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1050afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
1051afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Index.Points;
1052afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Index.Order;
1053afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1054afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
1055afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Normal.Points;
1056afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Normal.Order * 3;
1057afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1058afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
1059afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture1.Points;
1060afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture1.Order * 1;
1061afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1062afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
1063afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture2.Points;
1064afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture2.Order * 2;
1065afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1066afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
1067afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture3.Points;
1068afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture3.Order * 3;
1069afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1070afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
1071afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Texture4.Points;
1072afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Texture4.Order * 4;
1073afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1074afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
1075afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Vertex3.Points;
1076afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Vertex3.Order * 3;
1077afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1078afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
1079afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map1Vertex4.Points;
1080afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map1Vertex4.Order * 4;
1081afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1082afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
1083afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Color4.Points;
1084afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Color4.Uorder
1085afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Color4.Vorder * 4;
1086afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1087afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
1088afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Index.Points;
1089afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Index.Uorder
1090afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Index.Vorder;
1091afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1092afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
1093afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Normal.Points;
1094afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Normal.Uorder
1095afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Normal.Vorder * 3;
1096afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1097afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
1098afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture1.Points;
1099afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture1.Uorder
1100afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture1.Vorder * 1;
1101afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1102afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
1103afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture2.Points;
1104afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture2.Uorder
1105afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture2.Vorder * 2;
1106afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1107afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
1108afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture3.Points;
1109afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture3.Uorder
1110afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture3.Vorder * 3;
1111afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1112afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
1113afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Texture4.Points;
1114afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Texture4.Uorder
1115afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Texture4.Vorder * 4;
1116afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1117afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
1118afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Vertex3.Points;
1119afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Vertex3.Uorder
1120afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Vertex3.Vorder * 3;
1121afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1122afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
1123afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       data = ctx->EvalMap.Map2Vertex4.Points;
1124afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       n = ctx->EvalMap.Map2Vertex4.Uorder
1125afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach                 * ctx->EvalMap.Map2Vertex4.Vorder * 4;
1126afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1127afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
112808836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(target)" );
1129afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       return;
1130afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
1131afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 if (data) {
1132afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    for (i=0;i<n;i++) {
1133afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[i] = ROUNDF(data[i]);
1134afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    }
1135afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
1136afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
1137afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_ORDER:
1138afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
1139afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
1140afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Color4.Order;
1141afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1142afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
1143afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Index.Order;
1144afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1145afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
1146afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Normal.Order;
1147afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1148afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
1149afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture1.Order;
1150afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1151afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
1152afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture2.Order;
1153afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1154afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
1155afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture3.Order;
1156afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1157afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
1158afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Texture4.Order;
1159afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1160afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
1161afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Vertex3.Order;
1162afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1163afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
1164afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       *v = ctx->EvalMap.Map1Vertex4.Order;
1165afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1166afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
1167afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Color4.Uorder;
1168afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Color4.Vorder;
1169afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1170afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
1171afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Index.Uorder;
1172afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Index.Vorder;
1173afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1174afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
1175afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Normal.Uorder;
1176afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Normal.Vorder;
1177afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1178afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
1179afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture1.Uorder;
1180afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture1.Vorder;
1181afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1182afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
1183afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture2.Uorder;
1184afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture2.Vorder;
1185afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1186afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
1187afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture3.Uorder;
1188afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture3.Vorder;
1189afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1190afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
1191afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Texture4.Uorder;
1192afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Texture4.Vorder;
1193afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1194afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
1195afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex3.Uorder;
1196afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex3.Vorder;
1197afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1198afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
1199afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ctx->EvalMap.Map2Vertex4.Uorder;
1200afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ctx->EvalMap.Map2Vertex4.Vorder;
1201afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1202afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
120308836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(target)" );
1204afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       return;
1205afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
1206afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
1207afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      case GL_DOMAIN:
1208afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 switch (target) {
1209afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_COLOR_4:
1210afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Color4.u1);
1211afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Color4.u2);
1212afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1213afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_INDEX:
1214afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Index.u1);
1215afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Index.u2);
1216afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1217afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_NORMAL:
1218afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Normal.u1);
1219afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Normal.u2);
1220afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1221afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_1:
1222afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Texture1.u1);
1223afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Texture1.u2);
1224afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1225afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_2:
1226afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Texture2.u1);
1227afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Texture2.u2);
1228afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1229afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_3:
1230afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Texture3.u1);
1231afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Texture3.u2);
1232afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1233afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_TEXTURE_COORD_4:
1234afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Texture4.u1);
1235afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Texture4.u2);
1236afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1237afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_3:
1238afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Vertex3.u1);
1239afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Vertex3.u2);
1240afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1241afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP1_VERTEX_4:
1242afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map1Vertex4.u1);
1243afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map1Vertex4.u2);
1244afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1245afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_COLOR_4:
1246afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Color4.u1);
1247afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Color4.u2);
1248afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Color4.v1);
1249afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Color4.v2);
1250afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1251afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_INDEX:
1252afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Index.u1);
1253afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Index.u2);
1254afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Index.v1);
1255afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Index.v2);
1256afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1257afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_NORMAL:
1258afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Normal.u1);
1259afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Normal.u2);
1260afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Normal.v1);
1261afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Normal.v2);
1262afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1263afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_1:
1264afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Texture1.u1);
1265afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Texture1.u2);
1266afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Texture1.v1);
1267afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Texture1.v2);
1268afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1269afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_2:
1270afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Texture2.u1);
1271afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Texture2.u2);
1272afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Texture2.v1);
1273afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Texture2.v2);
1274afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1275afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_3:
1276afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Texture3.u1);
1277afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Texture3.u2);
1278afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Texture3.v1);
1279afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Texture3.v2);
1280afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1281afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_TEXTURE_COORD_4:
1282afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Texture4.u1);
1283afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Texture4.u2);
1284afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Texture4.v1);
1285afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Texture4.v2);
1286afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1287afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_3:
1288afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Vertex3.u1);
1289afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Vertex3.u2);
1290afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Vertex3.v1);
1291afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Vertex3.v2);
1292afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1293afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    case GL_MAP2_VERTEX_4:
1294afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[0] = ROUNDF(ctx->EvalMap.Map2Vertex4.u1);
1295afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[1] = ROUNDF(ctx->EvalMap.Map2Vertex4.u2);
1296afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[2] = ROUNDF(ctx->EvalMap.Map2Vertex4.v1);
1297afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       v[3] = ROUNDF(ctx->EvalMap.Map2Vertex4.v2);
1298afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	       break;
1299afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	    default:
130008836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul	       _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(target)" );
1301afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach	 }
1302afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach         break;
1303afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      default:
130408836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul         _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(query)" );
1305afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
1306afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
1307afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1308afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1309afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1310fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
1311fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_MapGrid1f( GLint un, GLfloat u1, GLfloat u2 )
1312afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
1313fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
1314cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   ASSERT_OUTSIDE_BEGIN_END(ctx);
1315afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1316afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (un<1) {
131708836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMapGrid1f" );
1318afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
1319afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
1320cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   FLUSH_VERTICES(ctx, _NEW_EVAL);
1321afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid1un = un;
1322afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid1u1 = u1;
1323afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid1u2 = u2;
1324afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid1du = (u2 - u1) / (GLfloat) un;
1325afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
1326afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1327afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1328fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
1329fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_MapGrid1d( GLint un, GLdouble u1, GLdouble u2 )
1330fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{
133194a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   _mesa_MapGrid1f( un, (GLfloat) u1, (GLfloat) u2 );
1332fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}
1333fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
1334fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
1335fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
1336fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_MapGrid2f( GLint un, GLfloat u1, GLfloat u2,
1337fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul                 GLint vn, GLfloat v1, GLfloat v2 )
1338afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach{
1339fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul   GET_CURRENT_CONTEXT(ctx);
1340cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   ASSERT_OUTSIDE_BEGIN_END(ctx);
1341cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
1342afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (un<1) {
134308836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMapGrid2f(un)" );
1344afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
1345afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
1346afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   if (vn<1) {
134708836341788a9f9d638d9dc8328510ccd18ddeb5Brian Paul      _mesa_error( ctx, GL_INVALID_VALUE, "glMapGrid2f(vn)" );
1348afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach      return;
1349afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   }
1350cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell
1351cab974cf6c2dbfbf5dd5d291e1aae0f8eeb34290Keith Whitwell   FLUSH_VERTICES(ctx, _NEW_EVAL);
1352afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2un = un;
1353afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2u1 = u1;
1354afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2u2 = u2;
1355afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2du = (u2 - u1) / (GLfloat) un;
1356afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2vn = vn;
1357afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2v1 = v1;
1358afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2v2 = v2;
1359afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach   ctx->Eval.MapGrid2dv = (v2 - v1) / (GLfloat) vn;
1360afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach}
1361afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1362afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cJochen Gerlach
1363fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paulvoid
1364fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul_mesa_MapGrid2d( GLint un, GLdouble u1, GLdouble u2,
1365fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul                 GLint vn, GLdouble v1, GLdouble v2 )
1366fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul{
136794a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz   _mesa_MapGrid2f( un, (GLfloat) u1, (GLfloat) u2,
136894a6ec8f0c8a25aeeb5880e2285ae6042cfb99dbKarl Schultz		    vn, (GLfloat) v1, (GLfloat) v2 );
1369fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}
1370