Rev 55 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
55 | pj | 1 | /* $Id: get.c,v 1.1 2003-02-28 11:42:00 pj Exp $ */ |
2 | |||
3 | /* |
||
4 | * Mesa 3-D graphics library |
||
5 | * Version: 5.0 |
||
6 | * |
||
7 | * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. |
||
8 | * |
||
9 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
10 | * copy of this software and associated documentation files (the "Software"), |
||
11 | * to deal in the Software without restriction, including without limitation |
||
12 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||
13 | * and/or sell copies of the Software, and to permit persons to whom the |
||
14 | * Software is furnished to do so, subject to the following conditions: |
||
15 | * |
||
16 | * The above copyright notice and this permission notice shall be included |
||
17 | * in all copies or substantial portions of the Software. |
||
18 | * |
||
19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
||
20 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
21 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||
22 | * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
||
23 | * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||
24 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||
25 | */ |
||
26 | |||
27 | |||
28 | #include "glheader.h" |
||
29 | #include "colormac.h" |
||
30 | #include "context.h" |
||
31 | #include "enable.h" |
||
32 | #include "enums.h" |
||
33 | #include "extensions.h" |
||
34 | #include "get.h" |
||
35 | #include "macros.h" |
||
36 | #include "mmath.h" |
||
37 | #include "mtypes.h" |
||
38 | #include "texcompress.h" |
||
39 | #include "math/m_matrix.h" |
||
40 | |||
41 | |||
42 | |||
43 | #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE ) |
||
44 | #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE ) |
||
45 | #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE ) |
||
46 | |||
47 | #ifdef SPECIALCAST |
||
48 | /* Needed for an Amiga compiler */ |
||
49 | #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X)) |
||
50 | #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X)) |
||
51 | #else |
||
52 | /* all other compilers */ |
||
53 | #define ENUM_TO_FLOAT(X) ((GLfloat)(X)) |
||
54 | #define ENUM_TO_DOUBLE(X) ((GLdouble)(X)) |
||
55 | #endif |
||
56 | |||
57 | |||
58 | /* Check if named extension is enabled, if not generate error and return */ |
||
59 | |||
60 | #define CHECK_EXTENSION_B(EXTNAME, PNAME) \ |
||
61 | if (!ctx->Extensions.EXTNAME) { \ |
||
62 | _mesa_error(ctx, GL_INVALID_VALUE, \ |
||
63 | "glGetBooleanv(0x%x)", (int) PNAME); \ |
||
64 | return; \ |
||
65 | } |
||
66 | |||
67 | #define CHECK_EXTENSION_I(EXTNAME, PNAME) \ |
||
68 | if (!ctx->Extensions.EXTNAME) { \ |
||
69 | _mesa_error(ctx, GL_INVALID_VALUE, \ |
||
70 | "glGetIntegerv(0x%x)", (int) PNAME); \ |
||
71 | return; \ |
||
72 | } |
||
73 | |||
74 | #define CHECK_EXTENSION_F(EXTNAME, PNAME) \ |
||
75 | if (!ctx->Extensions.EXTNAME) { \ |
||
76 | _mesa_error(ctx, GL_INVALID_VALUE, \ |
||
77 | "glGetFloatv(0x%x)", (int) PNAME); \ |
||
78 | return; \ |
||
79 | } |
||
80 | |||
81 | #define CHECK_EXTENSION_D(EXTNAME, PNAME) \ |
||
82 | if (!ctx->Extensions.EXTNAME) { \ |
||
83 | _mesa_error(ctx, GL_INVALID_VALUE, \ |
||
84 | "glGetDoublev(0x%x)", (int) PNAME); \ |
||
85 | return; \ |
||
86 | } |
||
87 | |||
88 | |||
89 | |||
90 | |||
91 | static GLenum |
||
92 | pixel_texgen_mode(const GLcontext *ctx) |
||
93 | { |
||
94 | if (ctx->Pixel.FragmentRgbSource == GL_CURRENT_RASTER_POSITION) { |
||
95 | if (ctx->Pixel.FragmentAlphaSource == GL_CURRENT_RASTER_POSITION) { |
||
96 | return GL_RGBA; |
||
97 | } |
||
98 | else { |
||
99 | return GL_RGB; |
||
100 | } |
||
101 | } |
||
102 | else { |
||
103 | if (ctx->Pixel.FragmentAlphaSource == GL_CURRENT_RASTER_POSITION) { |
||
104 | return GL_ALPHA; |
||
105 | } |
||
106 | else { |
||
107 | return GL_NONE; |
||
108 | } |
||
109 | } |
||
110 | } |
||
111 | |||
112 | |||
113 | void |
||
114 | _mesa_GetBooleanv( GLenum pname, GLboolean *params ) |
||
115 | { |
||
116 | GET_CURRENT_CONTEXT(ctx); |
||
117 | GLuint i; |
||
118 | GLuint texUnit = ctx->Texture.CurrentUnit; |
||
119 | const struct gl_texture_unit *textureUnit = &ctx->Texture.Unit[texUnit]; |
||
120 | ASSERT_OUTSIDE_BEGIN_END(ctx); |
||
121 | |||
122 | if (!params) |
||
123 | return; |
||
124 | |||
125 | /* We need this in order to get correct results for |
||
126 | * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases. |
||
127 | */ |
||
128 | FLUSH_VERTICES(ctx, 0); |
||
129 | |||
130 | if (MESA_VERBOSE & VERBOSE_API) |
||
131 | _mesa_debug(ctx, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname)); |
||
132 | |||
133 | if (ctx->Driver.GetBooleanv |
||
134 | && (*ctx->Driver.GetBooleanv)(ctx, pname, params)) |
||
135 | return; |
||
136 | |||
137 | switch (pname) { |
||
138 | case GL_ACCUM_RED_BITS: |
||
139 | *params = INT_TO_BOOL(ctx->Visual.accumRedBits); |
||
140 | break; |
||
141 | case GL_ACCUM_GREEN_BITS: |
||
142 | *params = INT_TO_BOOL(ctx->Visual.accumGreenBits); |
||
143 | break; |
||
144 | case GL_ACCUM_BLUE_BITS: |
||
145 | *params = INT_TO_BOOL(ctx->Visual.accumBlueBits); |
||
146 | break; |
||
147 | case GL_ACCUM_ALPHA_BITS: |
||
148 | *params = INT_TO_BOOL(ctx->Visual.accumAlphaBits); |
||
149 | break; |
||
150 | case GL_ACCUM_CLEAR_VALUE: |
||
151 | params[0] = FLOAT_TO_BOOL(ctx->Accum.ClearColor[0]); |
||
152 | params[1] = FLOAT_TO_BOOL(ctx->Accum.ClearColor[1]); |
||
153 | params[2] = FLOAT_TO_BOOL(ctx->Accum.ClearColor[2]); |
||
154 | params[3] = FLOAT_TO_BOOL(ctx->Accum.ClearColor[3]); |
||
155 | break; |
||
156 | case GL_ALPHA_BIAS: |
||
157 | *params = FLOAT_TO_BOOL(ctx->Pixel.AlphaBias); |
||
158 | break; |
||
159 | case GL_ALPHA_BITS: |
||
160 | *params = INT_TO_BOOL(ctx->Visual.alphaBits); |
||
161 | break; |
||
162 | case GL_ALPHA_SCALE: |
||
163 | *params = FLOAT_TO_BOOL(ctx->Pixel.AlphaScale); |
||
164 | break; |
||
165 | case GL_ALPHA_TEST: |
||
166 | *params = ctx->Color.AlphaEnabled; |
||
167 | break; |
||
168 | case GL_ALPHA_TEST_FUNC: |
||
169 | *params = ENUM_TO_BOOL(ctx->Color.AlphaFunc); |
||
170 | break; |
||
171 | case GL_ALPHA_TEST_REF: |
||
172 | *params = ctx->Color.AlphaRef ? GL_TRUE : GL_FALSE; |
||
173 | break; |
||
174 | case GL_ATTRIB_STACK_DEPTH: |
||
175 | *params = INT_TO_BOOL(ctx->AttribStackDepth); |
||
176 | break; |
||
177 | case GL_AUTO_NORMAL: |
||
178 | *params = ctx->Eval.AutoNormal; |
||
179 | break; |
||
180 | case GL_AUX_BUFFERS: |
||
181 | *params = (ctx->Const.NumAuxBuffers) ? GL_TRUE : GL_FALSE; |
||
182 | break; |
||
183 | case GL_BLEND: |
||
184 | *params = ctx->Color.BlendEnabled; |
||
185 | break; |
||
186 | case GL_BLEND_DST: |
||
187 | *params = ENUM_TO_BOOL(ctx->Color.BlendDstRGB); |
||
188 | break; |
||
189 | case GL_BLEND_SRC: |
||
190 | *params = ENUM_TO_BOOL(ctx->Color.BlendSrcRGB); |
||
191 | break; |
||
192 | case GL_BLEND_SRC_RGB_EXT: |
||
193 | *params = ENUM_TO_BOOL(ctx->Color.BlendSrcRGB); |
||
194 | break; |
||
195 | case GL_BLEND_DST_RGB_EXT: |
||
196 | *params = ENUM_TO_BOOL(ctx->Color.BlendDstRGB); |
||
197 | break; |
||
198 | case GL_BLEND_SRC_ALPHA_EXT: |
||
199 | *params = ENUM_TO_BOOL(ctx->Color.BlendSrcA); |
||
200 | break; |
||
201 | case GL_BLEND_DST_ALPHA_EXT: |
||
202 | *params = ENUM_TO_BOOL(ctx->Color.BlendDstA); |
||
203 | break; |
||
204 | case GL_BLEND_EQUATION_EXT: |
||
205 | *params = ENUM_TO_BOOL( ctx->Color.BlendEquation ); |
||
206 | break; |
||
207 | case GL_BLEND_COLOR_EXT: |
||
208 | params[0] = FLOAT_TO_BOOL( ctx->Color.BlendColor[0] ); |
||
209 | params[1] = FLOAT_TO_BOOL( ctx->Color.BlendColor[1] ); |
||
210 | params[2] = FLOAT_TO_BOOL( ctx->Color.BlendColor[2] ); |
||
211 | params[3] = FLOAT_TO_BOOL( ctx->Color.BlendColor[3] ); |
||
212 | break; |
||
213 | case GL_BLUE_BIAS: |
||
214 | *params = FLOAT_TO_BOOL(ctx->Pixel.BlueBias); |
||
215 | break; |
||
216 | case GL_BLUE_BITS: |
||
217 | *params = INT_TO_BOOL( ctx->Visual.blueBits ); |
||
218 | break; |
||
219 | case GL_BLUE_SCALE: |
||
220 | *params = FLOAT_TO_BOOL(ctx->Pixel.BlueScale); |
||
221 | break; |
||
222 | case GL_CLIENT_ATTRIB_STACK_DEPTH: |
||
223 | *params = INT_TO_BOOL(ctx->ClientAttribStackDepth); |
||
224 | break; |
||
225 | case GL_CLIP_PLANE0: |
||
226 | case GL_CLIP_PLANE1: |
||
227 | case GL_CLIP_PLANE2: |
||
228 | case GL_CLIP_PLANE3: |
||
229 | case GL_CLIP_PLANE4: |
||
230 | case GL_CLIP_PLANE5: |
||
231 | if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0))) |
||
232 | *params = GL_TRUE; |
||
233 | else |
||
234 | *params = GL_FALSE; |
||
235 | break; |
||
236 | case GL_COLOR_CLEAR_VALUE: |
||
237 | params[0] = ctx->Color.ClearColor[0] ? GL_TRUE : GL_FALSE; |
||
238 | params[1] = ctx->Color.ClearColor[1] ? GL_TRUE : GL_FALSE; |
||
239 | params[2] = ctx->Color.ClearColor[2] ? GL_TRUE : GL_FALSE; |
||
240 | params[3] = ctx->Color.ClearColor[3] ? GL_TRUE : GL_FALSE; |
||
241 | break; |
||
242 | case GL_COLOR_MATERIAL: |
||
243 | *params = ctx->Light.ColorMaterialEnabled; |
||
244 | break; |
||
245 | case GL_COLOR_MATERIAL_FACE: |
||
246 | *params = ENUM_TO_BOOL(ctx->Light.ColorMaterialFace); |
||
247 | break; |
||
248 | case GL_COLOR_MATERIAL_PARAMETER: |
||
249 | *params = ENUM_TO_BOOL(ctx->Light.ColorMaterialMode); |
||
250 | break; |
||
251 | case GL_COLOR_WRITEMASK: |
||
252 | params[0] = ctx->Color.ColorMask[RCOMP] ? GL_TRUE : GL_FALSE; |
||
253 | params[1] = ctx->Color.ColorMask[GCOMP] ? GL_TRUE : GL_FALSE; |
||
254 | params[2] = ctx->Color.ColorMask[BCOMP] ? GL_TRUE : GL_FALSE; |
||
255 | params[3] = ctx->Color.ColorMask[ACOMP] ? GL_TRUE : GL_FALSE; |
||
256 | break; |
||
257 | case GL_CULL_FACE: |
||
258 | *params = ctx->Polygon.CullFlag; |
||
259 | break; |
||
260 | case GL_CULL_FACE_MODE: |
||
261 | *params = ENUM_TO_BOOL(ctx->Polygon.CullFaceMode); |
||
262 | break; |
||
263 | case GL_CURRENT_COLOR: |
||
264 | FLUSH_CURRENT(ctx, 0); |
||
265 | params[0] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); |
||
266 | params[1] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); |
||
267 | params[2] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); |
||
268 | params[3] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); |
||
269 | break; |
||
270 | case GL_CURRENT_INDEX: |
||
271 | FLUSH_CURRENT(ctx, 0); |
||
272 | *params = INT_TO_BOOL(ctx->Current.Index); |
||
273 | break; |
||
274 | case GL_CURRENT_NORMAL: |
||
275 | FLUSH_CURRENT(ctx, 0); |
||
276 | params[0] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); |
||
277 | params[1] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); |
||
278 | params[2] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); |
||
279 | break; |
||
280 | case GL_CURRENT_RASTER_COLOR: |
||
281 | params[0] = FLOAT_TO_BOOL(ctx->Current.RasterColor[0]); |
||
282 | params[1] = FLOAT_TO_BOOL(ctx->Current.RasterColor[1]); |
||
283 | params[2] = FLOAT_TO_BOOL(ctx->Current.RasterColor[2]); |
||
284 | params[3] = FLOAT_TO_BOOL(ctx->Current.RasterColor[3]); |
||
285 | break; |
||
286 | case GL_CURRENT_RASTER_DISTANCE: |
||
287 | *params = FLOAT_TO_BOOL(ctx->Current.RasterDistance); |
||
288 | break; |
||
289 | case GL_CURRENT_RASTER_INDEX: |
||
290 | *params = FLOAT_TO_BOOL(ctx->Current.RasterIndex); |
||
291 | break; |
||
292 | case GL_CURRENT_RASTER_POSITION: |
||
293 | params[0] = FLOAT_TO_BOOL(ctx->Current.RasterPos[0]); |
||
294 | params[1] = FLOAT_TO_BOOL(ctx->Current.RasterPos[1]); |
||
295 | params[2] = FLOAT_TO_BOOL(ctx->Current.RasterPos[2]); |
||
296 | params[3] = FLOAT_TO_BOOL(ctx->Current.RasterPos[3]); |
||
297 | break; |
||
298 | case GL_CURRENT_RASTER_TEXTURE_COORDS: |
||
299 | params[0] = FLOAT_TO_BOOL(ctx->Current.RasterTexCoords[texUnit][0]); |
||
300 | params[1] = FLOAT_TO_BOOL(ctx->Current.RasterTexCoords[texUnit][1]); |
||
301 | params[2] = FLOAT_TO_BOOL(ctx->Current.RasterTexCoords[texUnit][2]); |
||
302 | params[3] = FLOAT_TO_BOOL(ctx->Current.RasterTexCoords[texUnit][3]); |
||
303 | break; |
||
304 | case GL_CURRENT_RASTER_POSITION_VALID: |
||
305 | *params = ctx->Current.RasterPosValid; |
||
306 | break; |
||
307 | case GL_CURRENT_TEXTURE_COORDS: |
||
308 | FLUSH_CURRENT(ctx, 0); |
||
309 | params[0] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]); |
||
310 | params[1] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]); |
||
311 | params[2] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]); |
||
312 | params[3] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]); |
||
313 | break; |
||
314 | case GL_DEPTH_BIAS: |
||
315 | *params = FLOAT_TO_BOOL(ctx->Pixel.DepthBias); |
||
316 | break; |
||
317 | case GL_DEPTH_BITS: |
||
318 | *params = INT_TO_BOOL(ctx->Visual.depthBits); |
||
319 | break; |
||
320 | case GL_DEPTH_CLEAR_VALUE: |
||
321 | *params = FLOAT_TO_BOOL(ctx->Depth.Clear); |
||
322 | break; |
||
323 | case GL_DEPTH_FUNC: |
||
324 | *params = ENUM_TO_BOOL(ctx->Depth.Func); |
||
325 | break; |
||
326 | case GL_DEPTH_RANGE: |
||
327 | params[0] = FLOAT_TO_BOOL(ctx->Viewport.Near); |
||
328 | params[1] = FLOAT_TO_BOOL(ctx->Viewport.Far); |
||
329 | break; |
||
330 | case GL_DEPTH_SCALE: |
||
331 | *params = FLOAT_TO_BOOL(ctx->Pixel.DepthScale); |
||
332 | break; |
||
333 | case GL_DEPTH_TEST: |
||
334 | *params = ctx->Depth.Test; |
||
335 | break; |
||
336 | case GL_DEPTH_WRITEMASK: |
||
337 | *params = ctx->Depth.Mask; |
||
338 | break; |
||
339 | case GL_DITHER: |
||
340 | *params = ctx->Color.DitherFlag; |
||
341 | break; |
||
342 | case GL_DOUBLEBUFFER: |
||
343 | *params = ctx->Visual.doubleBufferMode; |
||
344 | break; |
||
345 | case GL_DRAW_BUFFER: |
||
346 | *params = ENUM_TO_BOOL(ctx->Color.DrawBuffer); |
||
347 | break; |
||
348 | case GL_EDGE_FLAG: |
||
349 | FLUSH_CURRENT(ctx, 0); |
||
350 | *params = ctx->Current.EdgeFlag; |
||
351 | break; |
||
352 | case GL_FEEDBACK_BUFFER_SIZE: |
||
353 | *params = INT_TO_BOOL(ctx->Feedback.BufferSize); |
||
354 | break; |
||
355 | case GL_FEEDBACK_BUFFER_TYPE: |
||
356 | *params = INT_TO_BOOL(ctx->Feedback.Type); |
||
357 | break; |
||
358 | case GL_FOG: |
||
359 | *params = ctx->Fog.Enabled; |
||
360 | break; |
||
361 | case GL_FOG_COLOR: |
||
362 | params[0] = FLOAT_TO_BOOL(ctx->Fog.Color[0]); |
||
363 | params[1] = FLOAT_TO_BOOL(ctx->Fog.Color[1]); |
||
364 | params[2] = FLOAT_TO_BOOL(ctx->Fog.Color[2]); |
||
365 | params[3] = FLOAT_TO_BOOL(ctx->Fog.Color[3]); |
||
366 | break; |
||
367 | case GL_FOG_DENSITY: |
||
368 | *params = FLOAT_TO_BOOL(ctx->Fog.Density); |
||
369 | break; |
||
370 | case GL_FOG_END: |
||
371 | *params = FLOAT_TO_BOOL(ctx->Fog.End); |
||
372 | break; |
||
373 | case GL_FOG_HINT: |
||
374 | *params = ENUM_TO_BOOL(ctx->Hint.Fog); |
||
375 | break; |
||
376 | case GL_FOG_INDEX: |
||
377 | *params = FLOAT_TO_BOOL(ctx->Fog.Index); |
||
378 | break; |
||
379 | case GL_FOG_MODE: |
||
380 | *params = ENUM_TO_BOOL(ctx->Fog.Mode); |
||
381 | break; |
||
382 | case GL_FOG_START: |
||
383 | *params = FLOAT_TO_BOOL(ctx->Fog.End); |
||
384 | break; |
||
385 | case GL_FRONT_FACE: |
||
386 | *params = ENUM_TO_BOOL(ctx->Polygon.FrontFace); |
||
387 | break; |
||
388 | case GL_GREEN_BIAS: |
||
389 | *params = FLOAT_TO_BOOL(ctx->Pixel.GreenBias); |
||
390 | break; |
||
391 | case GL_GREEN_BITS: |
||
392 | *params = INT_TO_BOOL( ctx->Visual.greenBits ); |
||
393 | break; |
||
394 | case GL_GREEN_SCALE: |
||
395 | *params = FLOAT_TO_BOOL(ctx->Pixel.GreenScale); |
||
396 | break; |
||
397 | case GL_INDEX_BITS: |
||
398 | *params = INT_TO_BOOL( ctx->Visual.indexBits ); |
||
399 | break; |
||
400 | case GL_INDEX_CLEAR_VALUE: |
||
401 | *params = INT_TO_BOOL(ctx->Color.ClearIndex); |
||
402 | break; |
||
403 | case GL_INDEX_MODE: |
||
404 | *params = ctx->Visual.rgbMode ? GL_FALSE : GL_TRUE; |
||
405 | break; |
||
406 | case GL_INDEX_OFFSET: |
||
407 | *params = INT_TO_BOOL(ctx->Pixel.IndexOffset); |
||
408 | break; |
||
409 | case GL_INDEX_SHIFT: |
||
410 | *params = INT_TO_BOOL(ctx->Pixel.IndexShift); |
||
411 | break; |
||
412 | case GL_INDEX_WRITEMASK: |
||
413 | *params = INT_TO_BOOL(ctx->Color.IndexMask); |
||
414 | break; |
||
415 | case GL_LIGHT0: |
||
416 | case GL_LIGHT1: |
||
417 | case GL_LIGHT2: |
||
418 | case GL_LIGHT3: |
||
419 | case GL_LIGHT4: |
||
420 | case GL_LIGHT5: |
||
421 | case GL_LIGHT6: |
||
422 | case GL_LIGHT7: |
||
423 | *params = ctx->Light.Light[pname-GL_LIGHT0].Enabled; |
||
424 | break; |
||
425 | case GL_LIGHTING: |
||
426 | *params = ctx->Light.Enabled; |
||
427 | break; |
||
428 | case GL_LIGHT_MODEL_AMBIENT: |
||
429 | params[0] = FLOAT_TO_BOOL(ctx->Light.Model.Ambient[0]); |
||
430 | params[1] = FLOAT_TO_BOOL(ctx->Light.Model.Ambient[1]); |
||
431 | params[2] = FLOAT_TO_BOOL(ctx->Light.Model.Ambient[2]); |
||
432 | params[3] = FLOAT_TO_BOOL(ctx->Light.Model.Ambient[3]); |
||
433 | break; |
||
434 | case GL_LIGHT_MODEL_COLOR_CONTROL: |
||
435 | params[0] = ENUM_TO_BOOL(ctx->Light.Model.ColorControl); |
||
436 | break; |
||
437 | case GL_LIGHT_MODEL_LOCAL_VIEWER: |
||
438 | *params = ctx->Light.Model.LocalViewer; |
||
439 | break; |
||
440 | case GL_LIGHT_MODEL_TWO_SIDE: |
||
441 | *params = ctx->Light.Model.TwoSide; |
||
442 | break; |
||
443 | case GL_LINE_SMOOTH: |
||
444 | *params = ctx->Line.SmoothFlag; |
||
445 | break; |
||
446 | case GL_LINE_SMOOTH_HINT: |
||
447 | *params = ENUM_TO_BOOL(ctx->Hint.LineSmooth); |
||
448 | break; |
||
449 | case GL_LINE_STIPPLE: |
||
450 | *params = ctx->Line.StippleFlag; |
||
451 | break; |
||
452 | case GL_LINE_STIPPLE_PATTERN: |
||
453 | *params = INT_TO_BOOL(ctx->Line.StipplePattern); |
||
454 | break; |
||
455 | case GL_LINE_STIPPLE_REPEAT: |
||
456 | *params = INT_TO_BOOL(ctx->Line.StippleFactor); |
||
457 | break; |
||
458 | case GL_LINE_WIDTH: |
||
459 | *params = FLOAT_TO_BOOL(ctx->Line.Width); |
||
460 | break; |
||
461 | case GL_LINE_WIDTH_GRANULARITY: |
||
462 | *params = FLOAT_TO_BOOL(ctx->Const.LineWidthGranularity); |
||
463 | break; |
||
464 | case GL_LINE_WIDTH_RANGE: |
||
465 | params[0] = FLOAT_TO_BOOL(ctx->Const.MinLineWidthAA); |
||
466 | params[1] = FLOAT_TO_BOOL(ctx->Const.MaxLineWidthAA); |
||
467 | break; |
||
468 | case GL_ALIASED_LINE_WIDTH_RANGE: |
||
469 | params[0] = FLOAT_TO_BOOL(ctx->Const.MinLineWidth); |
||
470 | params[1] = FLOAT_TO_BOOL(ctx->Const.MaxLineWidth); |
||
471 | break; |
||
472 | case GL_LIST_BASE: |
||
473 | *params = INT_TO_BOOL(ctx->List.ListBase); |
||
474 | break; |
||
475 | case GL_LIST_INDEX: |
||
476 | *params = INT_TO_BOOL( ctx->CurrentListNum ); |
||
477 | break; |
||
478 | case GL_LIST_MODE: |
||
479 | *params = ENUM_TO_BOOL( ctx->ExecuteFlag |
||
480 | ? GL_COMPILE_AND_EXECUTE : GL_COMPILE ); |
||
481 | break; |
||
482 | case GL_INDEX_LOGIC_OP: |
||
483 | *params = ctx->Color.IndexLogicOpEnabled; |
||
484 | break; |
||
485 | case GL_COLOR_LOGIC_OP: |
||
486 | *params = ctx->Color.ColorLogicOpEnabled; |
||
487 | break; |
||
488 | case GL_LOGIC_OP_MODE: |
||
489 | *params = ENUM_TO_BOOL(ctx->Color.LogicOp); |
||
490 | break; |
||
491 | case GL_MAP1_COLOR_4: |
||
492 | *params = ctx->Eval.Map1Color4; |
||
493 | break; |
||
494 | case GL_MAP1_GRID_DOMAIN: |
||
495 | params[0] = FLOAT_TO_BOOL(ctx->Eval.MapGrid1u1); |
||
496 | params[1] = FLOAT_TO_BOOL(ctx->Eval.MapGrid1u2); |
||
497 | break; |
||
498 | case GL_MAP1_GRID_SEGMENTS: |
||
499 | *params = INT_TO_BOOL(ctx->Eval.MapGrid1un); |
||
500 | break; |
||
501 | case GL_MAP1_INDEX: |
||
502 | *params = ctx->Eval.Map1Index; |
||
503 | break; |
||
504 | case GL_MAP1_NORMAL: |
||
505 | *params = ctx->Eval.Map1Normal; |
||
506 | break; |
||
507 | case GL_MAP1_TEXTURE_COORD_1: |
||
508 | *params = ctx->Eval.Map1TextureCoord1; |
||
509 | break; |
||
510 | case GL_MAP1_TEXTURE_COORD_2: |
||
511 | *params = ctx->Eval.Map1TextureCoord2; |
||
512 | break; |
||
513 | case GL_MAP1_TEXTURE_COORD_3: |
||
514 | *params = ctx->Eval.Map1TextureCoord3; |
||
515 | break; |
||
516 | case GL_MAP1_TEXTURE_COORD_4: |
||
517 | *params = ctx->Eval.Map1TextureCoord4; |
||
518 | break; |
||
519 | case GL_MAP1_VERTEX_3: |
||
520 | *params = ctx->Eval.Map1Vertex3; |
||
521 | break; |
||
522 | case GL_MAP1_VERTEX_4: |
||
523 | *params = ctx->Eval.Map1Vertex4; |
||
524 | break; |
||
525 | case GL_MAP2_COLOR_4: |
||
526 | *params = ctx->Eval.Map2Color4; |
||
527 | break; |
||
528 | case GL_MAP2_GRID_DOMAIN: |
||
529 | params[0] = FLOAT_TO_BOOL(ctx->Eval.MapGrid2u1); |
||
530 | params[1] = FLOAT_TO_BOOL(ctx->Eval.MapGrid2u2); |
||
531 | params[2] = FLOAT_TO_BOOL(ctx->Eval.MapGrid2v1); |
||
532 | params[3] = FLOAT_TO_BOOL(ctx->Eval.MapGrid2v2); |
||
533 | break; |
||
534 | case GL_MAP2_GRID_SEGMENTS: |
||
535 | params[0] = INT_TO_BOOL(ctx->Eval.MapGrid2un); |
||
536 | params[1] = INT_TO_BOOL(ctx->Eval.MapGrid2vn); |
||
537 | break; |
||
538 | case GL_MAP2_INDEX: |
||
539 | *params = ctx->Eval.Map2Index; |
||
540 | break; |
||
541 | case GL_MAP2_NORMAL: |
||
542 | *params = ctx->Eval.Map2Normal; |
||
543 | break; |
||
544 | case GL_MAP2_TEXTURE_COORD_1: |
||
545 | *params = ctx->Eval.Map2TextureCoord1; |
||
546 | break; |
||
547 | case GL_MAP2_TEXTURE_COORD_2: |
||
548 | *params = ctx->Eval.Map2TextureCoord2; |
||
549 | break; |
||
550 | case GL_MAP2_TEXTURE_COORD_3: |
||
551 | *params = ctx->Eval.Map2TextureCoord3; |
||
552 | break; |
||
553 | case GL_MAP2_TEXTURE_COORD_4: |
||
554 | *params = ctx->Eval.Map2TextureCoord4; |
||
555 | break; |
||
556 | case GL_MAP2_VERTEX_3: |
||
557 | *params = ctx->Eval.Map2Vertex3; |
||
558 | break; |
||
559 | case GL_MAP2_VERTEX_4: |
||
560 | *params = ctx->Eval.Map2Vertex4; |
||
561 | break; |
||
562 | case GL_MAP_COLOR: |
||
563 | *params = ctx->Pixel.MapColorFlag; |
||
564 | break; |
||
565 | case GL_MAP_STENCIL: |
||
566 | *params = ctx->Pixel.MapStencilFlag; |
||
567 | break; |
||
568 | case GL_MATRIX_MODE: |
||
569 | *params = ENUM_TO_BOOL( ctx->Transform.MatrixMode ); |
||
570 | break; |
||
571 | case GL_MAX_ATTRIB_STACK_DEPTH: |
||
572 | *params = INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH); |
||
573 | break; |
||
574 | case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: |
||
575 | *params = INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH); |
||
576 | break; |
||
577 | case GL_MAX_CLIP_PLANES: |
||
578 | *params = INT_TO_BOOL(ctx->Const.MaxClipPlanes); |
||
579 | break; |
||
580 | case GL_MAX_ELEMENTS_VERTICES: /* GL_VERSION_1_2 */ |
||
581 | *params = INT_TO_BOOL(ctx->Const.MaxArrayLockSize); |
||
582 | break; |
||
583 | case GL_MAX_ELEMENTS_INDICES: /* GL_VERSION_1_2 */ |
||
584 | *params = INT_TO_BOOL(ctx->Const.MaxArrayLockSize); |
||
585 | break; |
||
586 | case GL_MAX_EVAL_ORDER: |
||
587 | *params = INT_TO_BOOL(MAX_EVAL_ORDER); |
||
588 | break; |
||
589 | case GL_MAX_LIGHTS: |
||
590 | *params = INT_TO_BOOL(ctx->Const.MaxLights); |
||
591 | break; |
||
592 | case GL_MAX_LIST_NESTING: |
||
593 | *params = INT_TO_BOOL(MAX_LIST_NESTING); |
||
594 | break; |
||
595 | case GL_MAX_MODELVIEW_STACK_DEPTH: |
||
596 | *params = INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH); |
||
597 | break; |
||
598 | case GL_MAX_NAME_STACK_DEPTH: |
||
599 | *params = INT_TO_BOOL(MAX_NAME_STACK_DEPTH); |
||
600 | break; |
||
601 | case GL_MAX_PIXEL_MAP_TABLE: |
||
602 | *params = INT_TO_BOOL(MAX_PIXEL_MAP_TABLE); |
||
603 | break; |
||
604 | case GL_MAX_PROJECTION_STACK_DEPTH: |
||
605 | *params = INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH); |
||
606 | break; |
||
607 | case GL_MAX_TEXTURE_SIZE: |
||
608 | *params = INT_TO_BOOL(1 << (ctx->Const.MaxTextureLevels - 1)); |
||
609 | break; |
||
610 | case GL_MAX_3D_TEXTURE_SIZE: |
||
611 | *params = INT_TO_BOOL(1 << (ctx->Const.Max3DTextureLevels - 1)); |
||
612 | break; |
||
613 | case GL_MAX_TEXTURE_STACK_DEPTH: |
||
614 | *params = INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH); |
||
615 | break; |
||
616 | case GL_MAX_VIEWPORT_DIMS: |
||
617 | params[0] = INT_TO_BOOL(MAX_WIDTH); |
||
618 | params[1] = INT_TO_BOOL(MAX_HEIGHT); |
||
619 | break; |
||
620 | case GL_MODELVIEW_MATRIX: |
||
621 | for (i=0;i<16;i++) { |
||
622 | params[i] = FLOAT_TO_BOOL(ctx->ModelviewMatrixStack.Top->m[i]); |
||
623 | } |
||
624 | break; |
||
625 | case GL_MODELVIEW_STACK_DEPTH: |
||
626 | *params = INT_TO_BOOL(ctx->ModelviewMatrixStack.Depth + 1); |
||
627 | break; |
||
628 | case GL_NAME_STACK_DEPTH: |
||
629 | *params = INT_TO_BOOL(ctx->Select.NameStackDepth); |
||
630 | break; |
||
631 | case GL_NORMALIZE: |
||
632 | *params = ctx->Transform.Normalize; |
||
633 | break; |
||
634 | case GL_PACK_ALIGNMENT: |
||
635 | *params = INT_TO_BOOL(ctx->Pack.Alignment); |
||
636 | break; |
||
637 | case GL_PACK_LSB_FIRST: |
||
638 | *params = ctx->Pack.LsbFirst; |
||
639 | break; |
||
640 | case GL_PACK_ROW_LENGTH: |
||
641 | *params = INT_TO_BOOL(ctx->Pack.RowLength); |
||
642 | break; |
||
643 | case GL_PACK_SKIP_PIXELS: |
||
644 | *params = INT_TO_BOOL(ctx->Pack.SkipPixels); |
||
645 | break; |
||
646 | case GL_PACK_SKIP_ROWS: |
||
647 | *params = INT_TO_BOOL(ctx->Pack.SkipRows); |
||
648 | break; |
||
649 | case GL_PACK_SWAP_BYTES: |
||
650 | *params = ctx->Pack.SwapBytes; |
||
651 | break; |
||
652 | case GL_PACK_SKIP_IMAGES_EXT: |
||
653 | *params = ctx->Pack.SkipImages; |
||
654 | break; |
||
655 | case GL_PACK_IMAGE_HEIGHT_EXT: |
||
656 | *params = ctx->Pack.ImageHeight; |
||
657 | break; |
||
658 | case GL_PACK_INVERT_MESA: |
||
659 | *params = ctx->Pack.Invert; |
||
660 | break; |
||
661 | case GL_PERSPECTIVE_CORRECTION_HINT: |
||
662 | *params = ENUM_TO_BOOL(ctx->Hint.PerspectiveCorrection); |
||
663 | break; |
||
664 | case GL_PIXEL_MAP_A_TO_A_SIZE: |
||
665 | *params = INT_TO_BOOL(ctx->Pixel.MapAtoAsize); |
||
666 | break; |
||
667 | case GL_PIXEL_MAP_B_TO_B_SIZE: |
||
668 | *params = INT_TO_BOOL(ctx->Pixel.MapBtoBsize); |
||
669 | break; |
||
670 | case GL_PIXEL_MAP_G_TO_G_SIZE: |
||
671 | *params = INT_TO_BOOL(ctx->Pixel.MapGtoGsize); |
||
672 | break; |
||
673 | case GL_PIXEL_MAP_I_TO_A_SIZE: |
||
674 | *params = INT_TO_BOOL(ctx->Pixel.MapItoAsize); |
||
675 | break; |
||
676 | case GL_PIXEL_MAP_I_TO_B_SIZE: |
||
677 | *params = INT_TO_BOOL(ctx->Pixel.MapItoBsize); |
||
678 | break; |
||
679 | case GL_PIXEL_MAP_I_TO_G_SIZE: |
||
680 | *params = INT_TO_BOOL(ctx->Pixel.MapItoGsize); |
||
681 | break; |
||
682 | case GL_PIXEL_MAP_I_TO_I_SIZE: |
||
683 | *params = INT_TO_BOOL(ctx->Pixel.MapItoIsize); |
||
684 | break; |
||
685 | case GL_PIXEL_MAP_I_TO_R_SIZE: |
||
686 | *params = INT_TO_BOOL(ctx->Pixel.MapItoRsize); |
||
687 | break; |
||
688 | case GL_PIXEL_MAP_R_TO_R_SIZE: |
||
689 | *params = INT_TO_BOOL(ctx->Pixel.MapRtoRsize); |
||
690 | break; |
||
691 | case GL_PIXEL_MAP_S_TO_S_SIZE: |
||
692 | *params = INT_TO_BOOL(ctx->Pixel.MapStoSsize); |
||
693 | break; |
||
694 | case GL_POINT_SIZE: |
||
695 | *params = FLOAT_TO_BOOL(ctx->Point.Size); |
||
696 | break; |
||
697 | case GL_POINT_SIZE_GRANULARITY: |
||
698 | *params = FLOAT_TO_BOOL(ctx->Const.PointSizeGranularity ); |
||
699 | break; |
||
700 | case GL_POINT_SIZE_RANGE: |
||
701 | params[0] = FLOAT_TO_BOOL(ctx->Const.MinPointSizeAA); |
||
702 | params[1] = FLOAT_TO_BOOL(ctx->Const.MaxPointSizeAA); |
||
703 | break; |
||
704 | case GL_ALIASED_POINT_SIZE_RANGE: |
||
705 | params[0] = FLOAT_TO_BOOL(ctx->Const.MinPointSize); |
||
706 | params[1] = FLOAT_TO_BOOL(ctx->Const.MaxPointSize); |
||
707 | break; |
||
708 | case GL_POINT_SMOOTH: |
||
709 | *params = ctx->Point.SmoothFlag; |
||
710 | break; |
||
711 | case GL_POINT_SMOOTH_HINT: |
||
712 | *params = ENUM_TO_BOOL(ctx->Hint.PointSmooth); |
||
713 | break; |
||
714 | case GL_POINT_SIZE_MIN_EXT: |
||
715 | *params = FLOAT_TO_BOOL(ctx->Point.MinSize); |
||
716 | break; |
||
717 | case GL_POINT_SIZE_MAX_EXT: |
||
718 | *params = FLOAT_TO_BOOL(ctx->Point.MaxSize); |
||
719 | break; |
||
720 | case GL_POINT_FADE_THRESHOLD_SIZE_EXT: |
||
721 | *params = FLOAT_TO_BOOL(ctx->Point.Threshold); |
||
722 | break; |
||
723 | case GL_DISTANCE_ATTENUATION_EXT: |
||
724 | params[0] = FLOAT_TO_BOOL(ctx->Point.Params[0]); |
||
725 | params[1] = FLOAT_TO_BOOL(ctx->Point.Params[1]); |
||
726 | params[2] = FLOAT_TO_BOOL(ctx->Point.Params[2]); |
||
727 | break; |
||
728 | case GL_POLYGON_MODE: |
||
729 | params[0] = ENUM_TO_BOOL(ctx->Polygon.FrontMode); |
||
730 | params[1] = ENUM_TO_BOOL(ctx->Polygon.BackMode); |
||
731 | break; |
||
732 | case GL_POLYGON_OFFSET_BIAS_EXT: /* GL_EXT_polygon_offset */ |
||
733 | *params = FLOAT_TO_BOOL( ctx->Polygon.OffsetUnits ); |
||
734 | break; |
||
735 | case GL_POLYGON_OFFSET_FACTOR: |
||
736 | *params = FLOAT_TO_BOOL( ctx->Polygon.OffsetFactor ); |
||
737 | break; |
||
738 | case GL_POLYGON_OFFSET_UNITS: |
||
739 | *params = FLOAT_TO_BOOL( ctx->Polygon.OffsetUnits ); |
||
740 | break; |
||
741 | case GL_POLYGON_SMOOTH: |
||
742 | *params = ctx->Polygon.SmoothFlag; |
||
743 | break; |
||
744 | case GL_POLYGON_SMOOTH_HINT: |
||
745 | *params = ENUM_TO_BOOL(ctx->Hint.PolygonSmooth); |
||
746 | break; |
||
747 | case GL_POLYGON_STIPPLE: |
||
748 | *params = ctx->Polygon.StippleFlag; |
||
749 | break; |
||
750 | case GL_PROJECTION_MATRIX: |
||
751 | for (i=0;i<16;i++) { |
||
752 | params[i] = FLOAT_TO_BOOL(ctx->ProjectionMatrixStack.Top->m[i]); |
||
753 | } |
||
754 | break; |
||
755 | case GL_PROJECTION_STACK_DEPTH: |
||
756 | *params = INT_TO_BOOL(ctx->ProjectionMatrixStack.Depth + 1); |
||
757 | break; |
||
758 | case GL_READ_BUFFER: |
||
759 | *params = ENUM_TO_BOOL(ctx->Pixel.ReadBuffer); |
||
760 | break; |
||
761 | case GL_RED_BIAS: |
||
762 | *params = FLOAT_TO_BOOL(ctx->Pixel.RedBias); |
||
763 | break; |
||
764 | case GL_RED_BITS: |
||
765 | *params = INT_TO_BOOL( ctx->Visual.redBits ); |
||
766 | break; |
||
767 | case GL_RED_SCALE: |
||
768 | *params = FLOAT_TO_BOOL(ctx->Pixel.RedScale); |
||
769 | break; |
||
770 | case GL_RENDER_MODE: |
||
771 | *params = ENUM_TO_BOOL(ctx->RenderMode); |
||
772 | break; |
||
773 | case GL_RESCALE_NORMAL: |
||
774 | *params = ctx->Transform.RescaleNormals; |
||
775 | break; |
||
776 | case GL_RGBA_MODE: |
||
777 | *params = ctx->Visual.rgbMode; |
||
778 | break; |
||
779 | case GL_SCISSOR_BOX: |
||
780 | params[0] = INT_TO_BOOL(ctx->Scissor.X); |
||
781 | params[1] = INT_TO_BOOL(ctx->Scissor.Y); |
||
782 | params[2] = INT_TO_BOOL(ctx->Scissor.Width); |
||
783 | params[3] = INT_TO_BOOL(ctx->Scissor.Height); |
||
784 | break; |
||
785 | case GL_SCISSOR_TEST: |
||
786 | *params = ctx->Scissor.Enabled; |
||
787 | break; |
||
788 | case GL_SELECTION_BUFFER_SIZE: |
||
789 | *params = INT_TO_BOOL(ctx->Select.BufferSize); |
||
790 | break; |
||
791 | case GL_SHADE_MODEL: |
||
792 | *params = ENUM_TO_BOOL(ctx->Light.ShadeModel); |
||
793 | break; |
||
794 | case GL_SHARED_TEXTURE_PALETTE_EXT: |
||
795 | *params = ctx->Texture.SharedPalette; |
||
796 | break; |
||
797 | case GL_STENCIL_BITS: |
||
798 | *params = INT_TO_BOOL(ctx->Visual.stencilBits); |
||
799 | break; |
||
800 | case GL_STENCIL_CLEAR_VALUE: |
||
801 | *params = INT_TO_BOOL(ctx->Stencil.Clear); |
||
802 | break; |
||
803 | case GL_STENCIL_FAIL: |
||
804 | *params = ENUM_TO_BOOL(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); |
||
805 | break; |
||
806 | case GL_STENCIL_FUNC: |
||
807 | *params = ENUM_TO_BOOL(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); |
||
808 | break; |
||
809 | case GL_STENCIL_PASS_DEPTH_FAIL: |
||
810 | *params = ENUM_TO_BOOL(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); |
||
811 | break; |
||
812 | case GL_STENCIL_PASS_DEPTH_PASS: |
||
813 | *params = ENUM_TO_BOOL(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); |
||
814 | break; |
||
815 | case GL_STENCIL_REF: |
||
816 | *params = INT_TO_BOOL(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]); |
||
817 | break; |
||
818 | case GL_STENCIL_TEST: |
||
819 | *params = ctx->Stencil.Enabled; |
||
820 | break; |
||
821 | case GL_STENCIL_VALUE_MASK: |
||
822 | *params = INT_TO_BOOL(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]); |
||
823 | break; |
||
824 | case GL_STENCIL_WRITEMASK: |
||
825 | *params = INT_TO_BOOL(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]); |
||
826 | break; |
||
827 | case GL_STEREO: |
||
828 | *params = ctx->Visual.stereoMode; |
||
829 | break; |
||
830 | case GL_SUBPIXEL_BITS: |
||
831 | *params = INT_TO_BOOL(ctx->Const.SubPixelBits); |
||
832 | break; |
||
833 | case GL_TEXTURE_1D: |
||
834 | *params = _mesa_IsEnabled(GL_TEXTURE_1D); |
||
835 | break; |
||
836 | case GL_TEXTURE_2D: |
||
837 | *params = _mesa_IsEnabled(GL_TEXTURE_2D); |
||
838 | break; |
||
839 | case GL_TEXTURE_3D: |
||
840 | *params = _mesa_IsEnabled(GL_TEXTURE_3D); |
||
841 | break; |
||
842 | case GL_TEXTURE_BINDING_1D: |
||
843 | *params = INT_TO_BOOL(textureUnit->Current1D->Name); |
||
844 | break; |
||
845 | case GL_TEXTURE_BINDING_2D: |
||
846 | *params = INT_TO_BOOL(textureUnit->Current2D->Name); |
||
847 | break; |
||
848 | case GL_TEXTURE_BINDING_3D: |
||
849 | *params = INT_TO_BOOL(textureUnit->Current3D->Name); |
||
850 | break; |
||
851 | case GL_TEXTURE_ENV_COLOR: |
||
852 | { |
||
853 | params[0] = FLOAT_TO_BOOL(textureUnit->EnvColor[0]); |
||
854 | params[1] = FLOAT_TO_BOOL(textureUnit->EnvColor[1]); |
||
855 | params[2] = FLOAT_TO_BOOL(textureUnit->EnvColor[2]); |
||
856 | params[3] = FLOAT_TO_BOOL(textureUnit->EnvColor[3]); |
||
857 | } |
||
858 | break; |
||
859 | case GL_TEXTURE_ENV_MODE: |
||
860 | *params = ENUM_TO_BOOL(textureUnit->EnvMode); |
||
861 | break; |
||
862 | case GL_TEXTURE_GEN_S: |
||
863 | *params = (textureUnit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE; |
||
864 | break; |
||
865 | case GL_TEXTURE_GEN_T: |
||
866 | *params = (textureUnit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE; |
||
867 | break; |
||
868 | case GL_TEXTURE_GEN_R: |
||
869 | *params = (textureUnit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE; |
||
870 | break; |
||
871 | case GL_TEXTURE_GEN_Q: |
||
872 | *params = (textureUnit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE; |
||
873 | break; |
||
874 | case GL_TEXTURE_MATRIX: |
||
875 | for (i=0;i<16;i++) { |
||
876 | params[i] = |
||
877 | FLOAT_TO_BOOL(ctx->TextureMatrixStack[texUnit].Top->m[i]); |
||
878 | } |
||
879 | break; |
||
880 | case GL_TEXTURE_STACK_DEPTH: |
||
881 | *params = INT_TO_BOOL(ctx->TextureMatrixStack[texUnit].Depth + 1); |
||
882 | break; |
||
883 | case GL_UNPACK_ALIGNMENT: |
||
884 | *params = INT_TO_BOOL(ctx->Unpack.Alignment); |
||
885 | break; |
||
886 | case GL_UNPACK_LSB_FIRST: |
||
887 | *params = ctx->Unpack.LsbFirst; |
||
888 | break; |
||
889 | case GL_UNPACK_ROW_LENGTH: |
||
890 | *params = INT_TO_BOOL(ctx->Unpack.RowLength); |
||
891 | break; |
||
892 | case GL_UNPACK_SKIP_PIXELS: |
||
893 | *params = INT_TO_BOOL(ctx->Unpack.SkipPixels); |
||
894 | break; |
||
895 | case GL_UNPACK_SKIP_ROWS: |
||
896 | *params = INT_TO_BOOL(ctx->Unpack.SkipRows); |
||
897 | break; |
||
898 | case GL_UNPACK_SWAP_BYTES: |
||
899 | *params = ctx->Unpack.SwapBytes; |
||
900 | break; |
||
901 | case GL_UNPACK_SKIP_IMAGES_EXT: |
||
902 | *params = ctx->Unpack.SkipImages; |
||
903 | break; |
||
904 | case GL_UNPACK_IMAGE_HEIGHT_EXT: |
||
905 | *params = ctx->Unpack.ImageHeight; |
||
906 | break; |
||
907 | case GL_UNPACK_CLIENT_STORAGE_APPLE: |
||
908 | *params = ctx->Unpack.ClientStorage; |
||
909 | break; |
||
910 | case GL_VIEWPORT: |
||
911 | params[0] = INT_TO_BOOL(ctx->Viewport.X); |
||
912 | params[1] = INT_TO_BOOL(ctx->Viewport.Y); |
||
913 | params[2] = INT_TO_BOOL(ctx->Viewport.Width); |
||
914 | params[3] = INT_TO_BOOL(ctx->Viewport.Height); |
||
915 | break; |
||
916 | case GL_ZOOM_X: |
||
917 | *params = FLOAT_TO_BOOL(ctx->Pixel.ZoomX); |
||
918 | break; |
||
919 | case GL_ZOOM_Y: |
||
920 | *params = FLOAT_TO_BOOL(ctx->Pixel.ZoomY); |
||
921 | break; |
||
922 | case GL_VERTEX_ARRAY: |
||
923 | *params = ctx->Array.Vertex.Enabled; |
||
924 | break; |
||
925 | case GL_VERTEX_ARRAY_SIZE: |
||
926 | *params = INT_TO_BOOL(ctx->Array.Vertex.Size); |
||
927 | break; |
||
928 | case GL_VERTEX_ARRAY_TYPE: |
||
929 | *params = ENUM_TO_BOOL(ctx->Array.Vertex.Type); |
||
930 | break; |
||
931 | case GL_VERTEX_ARRAY_STRIDE: |
||
932 | *params = INT_TO_BOOL(ctx->Array.Vertex.Stride); |
||
933 | break; |
||
934 | case GL_VERTEX_ARRAY_COUNT_EXT: |
||
935 | *params = INT_TO_BOOL(0); |
||
936 | break; |
||
937 | case GL_NORMAL_ARRAY: |
||
938 | *params = ctx->Array.Normal.Enabled; |
||
939 | break; |
||
940 | case GL_NORMAL_ARRAY_TYPE: |
||
941 | *params = ENUM_TO_BOOL(ctx->Array.Normal.Type); |
||
942 | break; |
||
943 | case GL_NORMAL_ARRAY_STRIDE: |
||
944 | *params = INT_TO_BOOL(ctx->Array.Normal.Stride); |
||
945 | break; |
||
946 | case GL_NORMAL_ARRAY_COUNT_EXT: |
||
947 | *params = INT_TO_BOOL(0); |
||
948 | break; |
||
949 | case GL_COLOR_ARRAY: |
||
950 | *params = ctx->Array.Color.Enabled; |
||
951 | break; |
||
952 | case GL_COLOR_ARRAY_SIZE: |
||
953 | *params = INT_TO_BOOL(ctx->Array.Color.Size); |
||
954 | break; |
||
955 | case GL_COLOR_ARRAY_TYPE: |
||
956 | *params = ENUM_TO_BOOL(ctx->Array.Color.Type); |
||
957 | break; |
||
958 | case GL_COLOR_ARRAY_STRIDE: |
||
959 | *params = INT_TO_BOOL(ctx->Array.Color.Stride); |
||
960 | break; |
||
961 | case GL_COLOR_ARRAY_COUNT_EXT: |
||
962 | *params = INT_TO_BOOL(0); |
||
963 | break; |
||
964 | case GL_INDEX_ARRAY: |
||
965 | *params = ctx->Array.Index.Enabled; |
||
966 | break; |
||
967 | case GL_INDEX_ARRAY_TYPE: |
||
968 | *params = ENUM_TO_BOOL(ctx->Array.Index.Type); |
||
969 | break; |
||
970 | case GL_INDEX_ARRAY_STRIDE: |
||
971 | *params = INT_TO_BOOL(ctx->Array.Index.Stride); |
||
972 | break; |
||
973 | case GL_INDEX_ARRAY_COUNT_EXT: |
||
974 | *params = INT_TO_BOOL(0); |
||
975 | break; |
||
976 | case GL_TEXTURE_COORD_ARRAY: |
||
977 | *params = ctx->Array.TexCoord[texUnit].Enabled; |
||
978 | break; |
||
979 | case GL_TEXTURE_COORD_ARRAY_SIZE: |
||
980 | *params = INT_TO_BOOL(ctx->Array.TexCoord[texUnit].Size); |
||
981 | break; |
||
982 | case GL_TEXTURE_COORD_ARRAY_TYPE: |
||
983 | *params = ENUM_TO_BOOL(ctx->Array.TexCoord[texUnit].Type); |
||
984 | break; |
||
985 | case GL_TEXTURE_COORD_ARRAY_STRIDE: |
||
986 | *params = INT_TO_BOOL(ctx->Array.TexCoord[texUnit].Stride); |
||
987 | break; |
||
988 | case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: |
||
989 | *params = INT_TO_BOOL(0); |
||
990 | break; |
||
991 | case GL_EDGE_FLAG_ARRAY: |
||
992 | *params = ctx->Array.EdgeFlag.Enabled; |
||
993 | break; |
||
994 | case GL_EDGE_FLAG_ARRAY_STRIDE: |
||
995 | *params = INT_TO_BOOL(ctx->Array.EdgeFlag.Stride); |
||
996 | break; |
||
997 | case GL_EDGE_FLAG_ARRAY_COUNT_EXT: |
||
998 | *params = INT_TO_BOOL(0); |
||
999 | break; |
||
1000 | |||
1001 | /* GL_ARB_multitexture */ |
||
1002 | case GL_MAX_TEXTURE_UNITS_ARB: |
||
1003 | CHECK_EXTENSION_B(ARB_multitexture, pname); |
||
1004 | *params = INT_TO_BOOL(ctx->Const.MaxTextureUnits); |
||
1005 | break; |
||
1006 | case GL_ACTIVE_TEXTURE_ARB: |
||
1007 | CHECK_EXTENSION_B(ARB_multitexture, pname); |
||
1008 | *params = INT_TO_BOOL(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); |
||
1009 | break; |
||
1010 | case GL_CLIENT_ACTIVE_TEXTURE_ARB: |
||
1011 | CHECK_EXTENSION_B(ARB_multitexture, pname); |
||
1012 | *params = INT_TO_BOOL(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); |
||
1013 | break; |
||
1014 | |||
1015 | /* GL_ARB_texture_cube_map */ |
||
1016 | case GL_TEXTURE_CUBE_MAP_ARB: |
||
1017 | CHECK_EXTENSION_B(ARB_texture_cube_map, pname); |
||
1018 | *params = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB); |
||
1019 | break; |
||
1020 | case GL_TEXTURE_BINDING_CUBE_MAP_ARB: |
||
1021 | CHECK_EXTENSION_B(ARB_texture_cube_map, pname); |
||
1022 | *params = INT_TO_BOOL(textureUnit->CurrentCubeMap->Name); |
||
1023 | break; |
||
1024 | case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: |
||
1025 | CHECK_EXTENSION_B(ARB_texture_cube_map, pname); |
||
1026 | *params = INT_TO_BOOL(1 << (ctx->Const.MaxCubeTextureLevels - 1)); |
||
1027 | break; |
||
1028 | |||
1029 | /* GL_ARB_texture_compression */ |
||
1030 | case GL_TEXTURE_COMPRESSION_HINT_ARB: |
||
1031 | CHECK_EXTENSION_B(ARB_texture_compression, pname); |
||
1032 | *params = INT_TO_BOOL(ctx->Hint.TextureCompression); |
||
1033 | break; |
||
1034 | case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
1035 | CHECK_EXTENSION_B(ARB_texture_compression, pname); |
||
1036 | *params = INT_TO_BOOL(_mesa_get_compressed_formats(ctx, NULL)); |
||
1037 | break; |
||
1038 | case GL_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
1039 | CHECK_EXTENSION_B(ARB_texture_compression, pname); |
||
1040 | { |
||
1041 | GLint formats[100]; |
||
1042 | GLuint i, n; |
||
1043 | n = _mesa_get_compressed_formats(ctx, formats); |
||
1044 | for (i = 0; i < n; i++) |
||
1045 | params[i] = INT_TO_BOOL(formats[i]); |
||
1046 | } |
||
1047 | break; |
||
1048 | |||
1049 | /* GL_EXT_compiled_vertex_array */ |
||
1050 | case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: |
||
1051 | *params = ctx->Array.LockFirst ? GL_TRUE : GL_FALSE; |
||
1052 | break; |
||
1053 | case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: |
||
1054 | *params = ctx->Array.LockCount ? GL_TRUE : GL_FALSE; |
||
1055 | break; |
||
1056 | |||
1057 | /* GL_ARB_transpose_matrix */ |
||
1058 | case GL_TRANSPOSE_COLOR_MATRIX_ARB: |
||
1059 | { |
||
1060 | GLfloat tm[16]; |
||
1061 | GLuint i; |
||
1062 | _math_transposef(tm, ctx->ColorMatrixStack.Top->m); |
||
1063 | for (i=0;i<16;i++) { |
||
1064 | params[i] = FLOAT_TO_BOOL(tm[i]); |
||
1065 | } |
||
1066 | } |
||
1067 | break; |
||
1068 | case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: |
||
1069 | { |
||
1070 | GLfloat tm[16]; |
||
1071 | GLuint i; |
||
1072 | _math_transposef(tm, ctx->ModelviewMatrixStack.Top->m); |
||
1073 | for (i=0;i<16;i++) { |
||
1074 | params[i] = FLOAT_TO_BOOL(tm[i]); |
||
1075 | } |
||
1076 | } |
||
1077 | break; |
||
1078 | case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: |
||
1079 | { |
||
1080 | GLfloat tm[16]; |
||
1081 | GLuint i; |
||
1082 | _math_transposef(tm, ctx->ProjectionMatrixStack.Top->m); |
||
1083 | for (i=0;i<16;i++) { |
||
1084 | params[i] = FLOAT_TO_BOOL(tm[i]); |
||
1085 | } |
||
1086 | } |
||
1087 | break; |
||
1088 | case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: |
||
1089 | { |
||
1090 | GLfloat tm[16]; |
||
1091 | GLuint i; |
||
1092 | _math_transposef(tm, ctx->TextureMatrixStack[texUnit].Top->m); |
||
1093 | for (i=0;i<16;i++) { |
||
1094 | params[i] = FLOAT_TO_BOOL(tm[i]); |
||
1095 | } |
||
1096 | } |
||
1097 | break; |
||
1098 | |||
1099 | /* GL_HP_occlusion_test */ |
||
1100 | case GL_OCCLUSION_TEST_HP: |
||
1101 | CHECK_EXTENSION_B(HP_occlusion_test, pname); |
||
1102 | *params = ctx->Depth.OcclusionTest; |
||
1103 | return; |
||
1104 | case GL_OCCLUSION_TEST_RESULT_HP: |
||
1105 | CHECK_EXTENSION_B(HP_occlusion_test, pname); |
||
1106 | if (ctx->Depth.OcclusionTest) |
||
1107 | *params = ctx->OcclusionResult; |
||
1108 | else |
||
1109 | *params = ctx->OcclusionResultSaved; |
||
1110 | /* reset flag now */ |
||
1111 | ctx->OcclusionResult = GL_FALSE; |
||
1112 | ctx->OcclusionResultSaved = GL_FALSE; |
||
1113 | return; |
||
1114 | |||
1115 | /* GL_SGIS_pixel_texture */ |
||
1116 | case GL_PIXEL_TEXTURE_SGIS: |
||
1117 | *params = ctx->Pixel.PixelTextureEnabled; |
||
1118 | break; |
||
1119 | |||
1120 | /* GL_SGIX_pixel_texture */ |
||
1121 | case GL_PIXEL_TEX_GEN_SGIX: |
||
1122 | *params = ctx->Pixel.PixelTextureEnabled; |
||
1123 | break; |
||
1124 | case GL_PIXEL_TEX_GEN_MODE_SGIX: |
||
1125 | *params = (GLboolean) pixel_texgen_mode(ctx); |
||
1126 | break; |
||
1127 | |||
1128 | /* GL_SGI_color_matrix (also in 1.2 imaging) */ |
||
1129 | case GL_COLOR_MATRIX_SGI: |
||
1130 | for (i=0;i<16;i++) { |
||
1131 | params[i] = FLOAT_TO_BOOL(ctx->ColorMatrixStack.Top->m[i]); |
||
1132 | } |
||
1133 | break; |
||
1134 | case GL_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
1135 | *params = INT_TO_BOOL(ctx->ColorMatrixStack.Depth + 1); |
||
1136 | break; |
||
1137 | case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
1138 | *params = FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH); |
||
1139 | break; |
||
1140 | case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: |
||
1141 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixScale[0]); |
||
1142 | break; |
||
1143 | case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: |
||
1144 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixScale[1]); |
||
1145 | break; |
||
1146 | case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: |
||
1147 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixScale[2]); |
||
1148 | break; |
||
1149 | case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: |
||
1150 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixScale[3]); |
||
1151 | break; |
||
1152 | case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: |
||
1153 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixBias[0]); |
||
1154 | break; |
||
1155 | case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: |
||
1156 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixBias[1]); |
||
1157 | break; |
||
1158 | case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: |
||
1159 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixBias[2]); |
||
1160 | break; |
||
1161 | case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: |
||
1162 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostColorMatrixBias[3]); |
||
1163 | break; |
||
1164 | |||
1165 | /* GL_EXT_convolution (also in 1.2 imaging) */ |
||
1166 | case GL_CONVOLUTION_1D_EXT: |
||
1167 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1168 | *params = ctx->Pixel.Convolution1DEnabled; |
||
1169 | break; |
||
1170 | case GL_CONVOLUTION_2D: |
||
1171 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1172 | *params = ctx->Pixel.Convolution2DEnabled; |
||
1173 | break; |
||
1174 | case GL_SEPARABLE_2D: |
||
1175 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1176 | *params = ctx->Pixel.Separable2DEnabled; |
||
1177 | break; |
||
1178 | case GL_POST_CONVOLUTION_RED_SCALE_EXT: |
||
1179 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1180 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[0]); |
||
1181 | break; |
||
1182 | case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: |
||
1183 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1184 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[1]); |
||
1185 | break; |
||
1186 | case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: |
||
1187 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1188 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[2]); |
||
1189 | break; |
||
1190 | case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: |
||
1191 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1192 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[3]); |
||
1193 | break; |
||
1194 | case GL_POST_CONVOLUTION_RED_BIAS_EXT: |
||
1195 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1196 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[0]); |
||
1197 | break; |
||
1198 | case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: |
||
1199 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1200 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[1]); |
||
1201 | break; |
||
1202 | case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: |
||
1203 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1204 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[2]); |
||
1205 | break; |
||
1206 | case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: |
||
1207 | CHECK_EXTENSION_B(EXT_convolution, pname); |
||
1208 | *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[2]); |
||
1209 | break; |
||
1210 | |||
1211 | /* GL_EXT_histogram (also in 1.2 imaging) */ |
||
1212 | case GL_HISTOGRAM: |
||
1213 | CHECK_EXTENSION_B(EXT_histogram, pname); |
||
1214 | *params = ctx->Pixel.HistogramEnabled; |
||
1215 | break; |
||
1216 | case GL_MINMAX: |
||
1217 | CHECK_EXTENSION_B(EXT_histogram, pname); |
||
1218 | *params = ctx->Pixel.MinMaxEnabled; |
||
1219 | break; |
||
1220 | |||
1221 | /* GL_SGI_color_table (also in 1.2 imaging */ |
||
1222 | case GL_COLOR_TABLE_SGI: |
||
1223 | *params = ctx->Pixel.ColorTableEnabled; |
||
1224 | break; |
||
1225 | case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: |
||
1226 | *params = ctx->Pixel.PostConvolutionColorTableEnabled; |
||
1227 | break; |
||
1228 | case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: |
||
1229 | *params = ctx->Pixel.PostColorMatrixColorTableEnabled; |
||
1230 | break; |
||
1231 | |||
1232 | /* GL_EXT_secondary_color */ |
||
1233 | case GL_COLOR_SUM_EXT: |
||
1234 | CHECK_EXTENSION_B(EXT_secondary_color, pname); |
||
1235 | *params = ctx->Fog.ColorSumEnabled; |
||
1236 | break; |
||
1237 | case GL_CURRENT_SECONDARY_COLOR_EXT: |
||
1238 | CHECK_EXTENSION_B(EXT_secondary_color, pname); |
||
1239 | FLUSH_CURRENT(ctx, 0); |
||
1240 | params[0] = INT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]); |
||
1241 | params[1] = INT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]); |
||
1242 | params[2] = INT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]); |
||
1243 | break; |
||
1244 | case GL_SECONDARY_COLOR_ARRAY_EXT: |
||
1245 | CHECK_EXTENSION_B(EXT_secondary_color, pname); |
||
1246 | *params = ctx->Array.SecondaryColor.Enabled; |
||
1247 | break; |
||
1248 | case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: |
||
1249 | CHECK_EXTENSION_B(EXT_secondary_color, pname); |
||
1250 | *params = ENUM_TO_BOOL(ctx->Array.SecondaryColor.Type); |
||
1251 | break; |
||
1252 | case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: |
||
1253 | CHECK_EXTENSION_B(EXT_secondary_color, pname); |
||
1254 | *params = INT_TO_BOOL(ctx->Array.SecondaryColor.Stride); |
||
1255 | break; |
||
1256 | case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: |
||
1257 | CHECK_EXTENSION_B(EXT_secondary_color, pname); |
||
1258 | *params = INT_TO_BOOL(ctx->Array.SecondaryColor.Stride); |
||
1259 | break; |
||
1260 | |||
1261 | /* GL_EXT_fog_coord */ |
||
1262 | case GL_CURRENT_FOG_COORDINATE_EXT: |
||
1263 | CHECK_EXTENSION_B(EXT_fog_coord, pname); |
||
1264 | FLUSH_CURRENT(ctx, 0); |
||
1265 | *params = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]); |
||
1266 | break; |
||
1267 | case GL_FOG_COORDINATE_ARRAY_EXT: |
||
1268 | CHECK_EXTENSION_B(EXT_fog_coord, pname); |
||
1269 | *params = ctx->Array.FogCoord.Enabled; |
||
1270 | break; |
||
1271 | case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: |
||
1272 | CHECK_EXTENSION_B(EXT_fog_coord, pname); |
||
1273 | *params = ENUM_TO_BOOL(ctx->Array.FogCoord.Type); |
||
1274 | break; |
||
1275 | case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: |
||
1276 | CHECK_EXTENSION_B(EXT_fog_coord, pname); |
||
1277 | *params = INT_TO_BOOL(ctx->Array.FogCoord.Stride); |
||
1278 | break; |
||
1279 | |||
1280 | /* GL_EXT_texture_lod_bias */ |
||
1281 | case GL_MAX_TEXTURE_LOD_BIAS_EXT: |
||
1282 | *params = FLOAT_TO_BOOL(ctx->Const.MaxTextureLodBias); |
||
1283 | break; |
||
1284 | |||
1285 | /* GL_EXT_texture_filter_anisotropic */ |
||
1286 | case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
||
1287 | CHECK_EXTENSION_B(EXT_texture_filter_anisotropic, pname); |
||
1288 | *params = FLOAT_TO_BOOL(ctx->Const.MaxTextureMaxAnisotropy); |
||
1289 | break; |
||
1290 | |||
1291 | /* GL_ARB_multisample */ |
||
1292 | case GL_MULTISAMPLE_ARB: |
||
1293 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1294 | *params = ctx->Multisample.Enabled; |
||
1295 | break; |
||
1296 | case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: |
||
1297 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1298 | *params = ctx->Multisample.SampleAlphaToCoverage; |
||
1299 | break; |
||
1300 | case GL_SAMPLE_ALPHA_TO_ONE_ARB: |
||
1301 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1302 | *params = ctx->Multisample.SampleAlphaToOne; |
||
1303 | break; |
||
1304 | case GL_SAMPLE_COVERAGE_ARB: |
||
1305 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1306 | *params = ctx->Multisample.SampleCoverage; |
||
1307 | break; |
||
1308 | case GL_SAMPLE_COVERAGE_VALUE_ARB: |
||
1309 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1310 | *params = FLOAT_TO_BOOL(ctx->Multisample.SampleCoverageValue); |
||
1311 | break; |
||
1312 | case GL_SAMPLE_COVERAGE_INVERT_ARB: |
||
1313 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1314 | *params = ctx->Multisample.SampleCoverageInvert; |
||
1315 | break; |
||
1316 | case GL_SAMPLE_BUFFERS_ARB: |
||
1317 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1318 | *params = 0; /* XXX fix someday */ |
||
1319 | break; |
||
1320 | case GL_SAMPLES_ARB: |
||
1321 | CHECK_EXTENSION_B(ARB_multisample, pname); |
||
1322 | *params = 0; /* XXX fix someday */ |
||
1323 | break; |
||
1324 | |||
1325 | /* GL_IBM_rasterpos_clip */ |
||
1326 | case GL_RASTER_POSITION_UNCLIPPED_IBM: |
||
1327 | CHECK_EXTENSION_B(IBM_rasterpos_clip, pname); |
||
1328 | *params = ctx->Transform.RasterPositionUnclipped; |
||
1329 | break; |
||
1330 | |||
1331 | /* GL_NV_point_sprite */ |
||
1332 | case GL_POINT_SPRITE_NV: |
||
1333 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
1334 | *params = ctx->Point.PointSprite; |
||
1335 | break; |
||
1336 | case GL_POINT_SPRITE_R_MODE_NV: |
||
1337 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
1338 | *params = ENUM_TO_BOOL(ctx->Point.SpriteRMode); |
||
1339 | break; |
||
1340 | |||
1341 | /* GL_SGIS_generate_mipmap */ |
||
1342 | case GL_GENERATE_MIPMAP_HINT_SGIS: |
||
1343 | CHECK_EXTENSION_B(SGIS_generate_mipmap, pname); |
||
1344 | *params = ENUM_TO_BOOL(ctx->Hint.GenerateMipmap); |
||
1345 | break; |
||
1346 | |||
1347 | #if FEATURE_NV_vertex_program |
||
1348 | case GL_VERTEX_PROGRAM_NV: |
||
1349 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1350 | *params = ctx->VertexProgram.Enabled; |
||
1351 | break; |
||
1352 | case GL_VERTEX_PROGRAM_POINT_SIZE_NV: |
||
1353 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1354 | *params = ctx->VertexProgram.PointSizeEnabled; |
||
1355 | break; |
||
1356 | case GL_VERTEX_PROGRAM_TWO_SIDE_NV: |
||
1357 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1358 | *params = ctx->VertexProgram.TwoSideEnabled; |
||
1359 | break; |
||
1360 | case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV: |
||
1361 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1362 | *params = (MAX_PROGRAM_STACK_DEPTH > 0) ? GL_TRUE : GL_FALSE; |
||
1363 | break; |
||
1364 | case GL_MAX_TRACK_MATRICES_NV: |
||
1365 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1366 | *params = (MAX_PROGRAM_MATRICES > 0) ? GL_TRUE : GL_FALSE; |
||
1367 | break; |
||
1368 | case GL_CURRENT_MATRIX_STACK_DEPTH_NV: |
||
1369 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1370 | *params = (ctx->CurrentStack->Depth > 0) ? GL_TRUE : GL_FALSE; |
||
1371 | break; |
||
1372 | case GL_CURRENT_MATRIX_NV: |
||
1373 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1374 | *params = (ctx->Transform.MatrixMode != 0) ? GL_TRUE : GL_FALSE; |
||
1375 | break; |
||
1376 | case GL_VERTEX_PROGRAM_BINDING_NV: |
||
1377 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1378 | *params = (ctx->VertexProgram.CurrentID != 0) ? GL_TRUE : GL_FALSE; |
||
1379 | break; |
||
1380 | case GL_PROGRAM_ERROR_POSITION_NV: |
||
1381 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1382 | *params = (ctx->VertexProgram.ErrorPos != 0) ? GL_TRUE : GL_FALSE; |
||
1383 | break; |
||
1384 | case GL_VERTEX_ATTRIB_ARRAY0_NV: |
||
1385 | case GL_VERTEX_ATTRIB_ARRAY1_NV: |
||
1386 | case GL_VERTEX_ATTRIB_ARRAY2_NV: |
||
1387 | case GL_VERTEX_ATTRIB_ARRAY3_NV: |
||
1388 | case GL_VERTEX_ATTRIB_ARRAY4_NV: |
||
1389 | case GL_VERTEX_ATTRIB_ARRAY5_NV: |
||
1390 | case GL_VERTEX_ATTRIB_ARRAY6_NV: |
||
1391 | case GL_VERTEX_ATTRIB_ARRAY7_NV: |
||
1392 | case GL_VERTEX_ATTRIB_ARRAY8_NV: |
||
1393 | case GL_VERTEX_ATTRIB_ARRAY9_NV: |
||
1394 | case GL_VERTEX_ATTRIB_ARRAY10_NV: |
||
1395 | case GL_VERTEX_ATTRIB_ARRAY11_NV: |
||
1396 | case GL_VERTEX_ATTRIB_ARRAY12_NV: |
||
1397 | case GL_VERTEX_ATTRIB_ARRAY13_NV: |
||
1398 | case GL_VERTEX_ATTRIB_ARRAY14_NV: |
||
1399 | case GL_VERTEX_ATTRIB_ARRAY15_NV: |
||
1400 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1401 | { |
||
1402 | GLuint n = (GLuint) pname - GL_VERTEX_ATTRIB_ARRAY0_NV; |
||
1403 | *params = ctx->Array.VertexAttrib[n].Enabled; |
||
1404 | } |
||
1405 | break; |
||
1406 | case GL_MAP1_VERTEX_ATTRIB0_4_NV: |
||
1407 | case GL_MAP1_VERTEX_ATTRIB1_4_NV: |
||
1408 | case GL_MAP1_VERTEX_ATTRIB2_4_NV: |
||
1409 | case GL_MAP1_VERTEX_ATTRIB3_4_NV: |
||
1410 | case GL_MAP1_VERTEX_ATTRIB4_4_NV: |
||
1411 | case GL_MAP1_VERTEX_ATTRIB5_4_NV: |
||
1412 | case GL_MAP1_VERTEX_ATTRIB6_4_NV: |
||
1413 | case GL_MAP1_VERTEX_ATTRIB7_4_NV: |
||
1414 | case GL_MAP1_VERTEX_ATTRIB8_4_NV: |
||
1415 | case GL_MAP1_VERTEX_ATTRIB9_4_NV: |
||
1416 | case GL_MAP1_VERTEX_ATTRIB10_4_NV: |
||
1417 | case GL_MAP1_VERTEX_ATTRIB11_4_NV: |
||
1418 | case GL_MAP1_VERTEX_ATTRIB12_4_NV: |
||
1419 | case GL_MAP1_VERTEX_ATTRIB13_4_NV: |
||
1420 | case GL_MAP1_VERTEX_ATTRIB14_4_NV: |
||
1421 | case GL_MAP1_VERTEX_ATTRIB15_4_NV: |
||
1422 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1423 | { |
||
1424 | GLuint n = (GLuint) pname - GL_MAP1_VERTEX_ATTRIB0_4_NV; |
||
1425 | *params = ctx->Eval.Map1Attrib[n]; |
||
1426 | } |
||
1427 | break; |
||
1428 | case GL_MAP2_VERTEX_ATTRIB0_4_NV: |
||
1429 | case GL_MAP2_VERTEX_ATTRIB1_4_NV: |
||
1430 | case GL_MAP2_VERTEX_ATTRIB2_4_NV: |
||
1431 | case GL_MAP2_VERTEX_ATTRIB3_4_NV: |
||
1432 | case GL_MAP2_VERTEX_ATTRIB4_4_NV: |
||
1433 | case GL_MAP2_VERTEX_ATTRIB5_4_NV: |
||
1434 | case GL_MAP2_VERTEX_ATTRIB6_4_NV: |
||
1435 | case GL_MAP2_VERTEX_ATTRIB7_4_NV: |
||
1436 | case GL_MAP2_VERTEX_ATTRIB8_4_NV: |
||
1437 | case GL_MAP2_VERTEX_ATTRIB9_4_NV: |
||
1438 | case GL_MAP2_VERTEX_ATTRIB10_4_NV: |
||
1439 | case GL_MAP2_VERTEX_ATTRIB11_4_NV: |
||
1440 | case GL_MAP2_VERTEX_ATTRIB12_4_NV: |
||
1441 | case GL_MAP2_VERTEX_ATTRIB13_4_NV: |
||
1442 | case GL_MAP2_VERTEX_ATTRIB14_4_NV: |
||
1443 | case GL_MAP2_VERTEX_ATTRIB15_4_NV: |
||
1444 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
1445 | { |
||
1446 | GLuint n = (GLuint) pname - GL_MAP2_VERTEX_ATTRIB0_4_NV; |
||
1447 | *params = ctx->Eval.Map2Attrib[n]; |
||
1448 | } |
||
1449 | break; |
||
1450 | #endif /* FEATURE_NV_vertex_program */ |
||
1451 | |||
1452 | /* GL_NV_texture_rectangle */ |
||
1453 | case GL_TEXTURE_RECTANGLE_NV: |
||
1454 | CHECK_EXTENSION_B(NV_texture_rectangle, pname); |
||
1455 | *params = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV); |
||
1456 | break; |
||
1457 | case GL_TEXTURE_BINDING_RECTANGLE_NV: |
||
1458 | CHECK_EXTENSION_B(NV_texture_rectangle, pname); |
||
1459 | *params = INT_TO_BOOL(textureUnit->CurrentRect->Name); |
||
1460 | break; |
||
1461 | case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: |
||
1462 | CHECK_EXTENSION_B(NV_texture_rectangle, pname); |
||
1463 | *params = INT_TO_BOOL(ctx->Const.MaxTextureRectSize); |
||
1464 | break; |
||
1465 | |||
1466 | /* GL_EXT_stencil_two_side */ |
||
1467 | case GL_STENCIL_TEST_TWO_SIDE_EXT: |
||
1468 | CHECK_EXTENSION_B(EXT_stencil_two_side, pname); |
||
1469 | *params = ctx->Stencil.TestTwoSide; |
||
1470 | break; |
||
1471 | case GL_ACTIVE_STENCIL_FACE_EXT: |
||
1472 | CHECK_EXTENSION_B(EXT_stencil_two_side, pname); |
||
1473 | *params = ENUM_TO_BOOL(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); |
||
1474 | break; |
||
1475 | |||
1476 | default: |
||
1477 | _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname); |
||
1478 | } |
||
1479 | } |
||
1480 | |||
1481 | |||
1482 | void |
||
1483 | _mesa_GetDoublev( GLenum pname, GLdouble *params ) |
||
1484 | { |
||
1485 | GET_CURRENT_CONTEXT(ctx); |
||
1486 | GLuint i; |
||
1487 | GLuint texUnit = ctx->Texture.CurrentUnit; |
||
1488 | const struct gl_texture_unit *textureUnit = &ctx->Texture.Unit[texUnit]; |
||
1489 | ASSERT_OUTSIDE_BEGIN_END(ctx); |
||
1490 | |||
1491 | if (!params) |
||
1492 | return; |
||
1493 | |||
1494 | /* We need this in order to get correct results for |
||
1495 | * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases. |
||
1496 | */ |
||
1497 | FLUSH_VERTICES(ctx, 0); |
||
1498 | |||
1499 | if (MESA_VERBOSE & VERBOSE_API) |
||
1500 | _mesa_debug(ctx, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname)); |
||
1501 | |||
1502 | if (ctx->Driver.GetDoublev && (*ctx->Driver.GetDoublev)(ctx, pname, params)) |
||
1503 | return; |
||
1504 | |||
1505 | switch (pname) { |
||
1506 | case GL_ACCUM_RED_BITS: |
||
1507 | *params = (GLdouble) ctx->Visual.accumRedBits; |
||
1508 | break; |
||
1509 | case GL_ACCUM_GREEN_BITS: |
||
1510 | *params = (GLdouble) ctx->Visual.accumGreenBits; |
||
1511 | break; |
||
1512 | case GL_ACCUM_BLUE_BITS: |
||
1513 | *params = (GLdouble) ctx->Visual.accumBlueBits; |
||
1514 | break; |
||
1515 | case GL_ACCUM_ALPHA_BITS: |
||
1516 | *params = (GLdouble) ctx->Visual.accumAlphaBits; |
||
1517 | break; |
||
1518 | case GL_ACCUM_CLEAR_VALUE: |
||
1519 | params[0] = (GLdouble) ctx->Accum.ClearColor[0]; |
||
1520 | params[1] = (GLdouble) ctx->Accum.ClearColor[1]; |
||
1521 | params[2] = (GLdouble) ctx->Accum.ClearColor[2]; |
||
1522 | params[3] = (GLdouble) ctx->Accum.ClearColor[3]; |
||
1523 | break; |
||
1524 | case GL_ALPHA_BIAS: |
||
1525 | *params = (GLdouble) ctx->Pixel.AlphaBias; |
||
1526 | break; |
||
1527 | case GL_ALPHA_BITS: |
||
1528 | *params = (GLdouble) ctx->Visual.alphaBits; |
||
1529 | break; |
||
1530 | case GL_ALPHA_SCALE: |
||
1531 | *params = (GLdouble) ctx->Pixel.AlphaScale; |
||
1532 | break; |
||
1533 | case GL_ALPHA_TEST: |
||
1534 | *params = (GLdouble) ctx->Color.AlphaEnabled; |
||
1535 | break; |
||
1536 | case GL_ALPHA_TEST_FUNC: |
||
1537 | *params = ENUM_TO_DOUBLE(ctx->Color.AlphaFunc); |
||
1538 | break; |
||
1539 | case GL_ALPHA_TEST_REF: |
||
1540 | *params = (GLdouble) ctx->Color.AlphaRef; |
||
1541 | break; |
||
1542 | case GL_ATTRIB_STACK_DEPTH: |
||
1543 | *params = (GLdouble ) (ctx->AttribStackDepth); |
||
1544 | break; |
||
1545 | case GL_AUTO_NORMAL: |
||
1546 | *params = (GLdouble) ctx->Eval.AutoNormal; |
||
1547 | break; |
||
1548 | case GL_AUX_BUFFERS: |
||
1549 | *params = (GLdouble) ctx->Const.NumAuxBuffers; |
||
1550 | break; |
||
1551 | case GL_BLEND: |
||
1552 | *params = (GLdouble) ctx->Color.BlendEnabled; |
||
1553 | break; |
||
1554 | case GL_BLEND_DST: |
||
1555 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendDstRGB); |
||
1556 | break; |
||
1557 | case GL_BLEND_SRC: |
||
1558 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendSrcRGB); |
||
1559 | break; |
||
1560 | case GL_BLEND_SRC_RGB_EXT: |
||
1561 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendSrcRGB); |
||
1562 | break; |
||
1563 | case GL_BLEND_DST_RGB_EXT: |
||
1564 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendDstRGB); |
||
1565 | break; |
||
1566 | case GL_BLEND_SRC_ALPHA_EXT: |
||
1567 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendSrcA); |
||
1568 | break; |
||
1569 | case GL_BLEND_DST_ALPHA_EXT: |
||
1570 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendDstA); |
||
1571 | break; |
||
1572 | case GL_BLEND_EQUATION_EXT: |
||
1573 | *params = ENUM_TO_DOUBLE(ctx->Color.BlendEquation); |
||
1574 | break; |
||
1575 | case GL_BLEND_COLOR_EXT: |
||
1576 | params[0] = (GLdouble) ctx->Color.BlendColor[0]; |
||
1577 | params[1] = (GLdouble) ctx->Color.BlendColor[1]; |
||
1578 | params[2] = (GLdouble) ctx->Color.BlendColor[2]; |
||
1579 | params[3] = (GLdouble) ctx->Color.BlendColor[3]; |
||
1580 | break; |
||
1581 | case GL_BLUE_BIAS: |
||
1582 | *params = (GLdouble) ctx->Pixel.BlueBias; |
||
1583 | break; |
||
1584 | case GL_BLUE_BITS: |
||
1585 | *params = (GLdouble) ctx->Visual.blueBits; |
||
1586 | break; |
||
1587 | case GL_BLUE_SCALE: |
||
1588 | *params = (GLdouble) ctx->Pixel.BlueScale; |
||
1589 | break; |
||
1590 | case GL_CLIENT_ATTRIB_STACK_DEPTH: |
||
1591 | *params = (GLdouble) (ctx->ClientAttribStackDepth); |
||
1592 | break; |
||
1593 | case GL_CLIP_PLANE0: |
||
1594 | case GL_CLIP_PLANE1: |
||
1595 | case GL_CLIP_PLANE2: |
||
1596 | case GL_CLIP_PLANE3: |
||
1597 | case GL_CLIP_PLANE4: |
||
1598 | case GL_CLIP_PLANE5: |
||
1599 | if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0))) |
||
1600 | *params = 1.0; |
||
1601 | else |
||
1602 | *params = 0.0; |
||
1603 | break; |
||
1604 | case GL_COLOR_CLEAR_VALUE: |
||
1605 | params[0] = (GLdouble) ctx->Color.ClearColor[0]; |
||
1606 | params[1] = (GLdouble) ctx->Color.ClearColor[1]; |
||
1607 | params[2] = (GLdouble) ctx->Color.ClearColor[2]; |
||
1608 | params[3] = (GLdouble) ctx->Color.ClearColor[3]; |
||
1609 | break; |
||
1610 | case GL_COLOR_MATERIAL: |
||
1611 | *params = (GLdouble) ctx->Light.ColorMaterialEnabled; |
||
1612 | break; |
||
1613 | case GL_COLOR_MATERIAL_FACE: |
||
1614 | *params = ENUM_TO_DOUBLE(ctx->Light.ColorMaterialFace); |
||
1615 | break; |
||
1616 | case GL_COLOR_MATERIAL_PARAMETER: |
||
1617 | *params = ENUM_TO_DOUBLE(ctx->Light.ColorMaterialMode); |
||
1618 | break; |
||
1619 | case GL_COLOR_WRITEMASK: |
||
1620 | params[0] = ctx->Color.ColorMask[RCOMP] ? 1.0 : 0.0; |
||
1621 | params[1] = ctx->Color.ColorMask[GCOMP] ? 1.0 : 0.0; |
||
1622 | params[2] = ctx->Color.ColorMask[BCOMP] ? 1.0 : 0.0; |
||
1623 | params[3] = ctx->Color.ColorMask[ACOMP] ? 1.0 : 0.0; |
||
1624 | break; |
||
1625 | case GL_CULL_FACE: |
||
1626 | *params = (GLdouble) ctx->Polygon.CullFlag; |
||
1627 | break; |
||
1628 | case GL_CULL_FACE_MODE: |
||
1629 | *params = ENUM_TO_DOUBLE(ctx->Polygon.CullFaceMode); |
||
1630 | break; |
||
1631 | case GL_CURRENT_COLOR: |
||
1632 | FLUSH_CURRENT(ctx, 0); |
||
1633 | params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; |
||
1634 | params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; |
||
1635 | params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; |
||
1636 | params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; |
||
1637 | break; |
||
1638 | case GL_CURRENT_INDEX: |
||
1639 | FLUSH_CURRENT(ctx, 0); |
||
1640 | *params = (GLdouble) ctx->Current.Index; |
||
1641 | break; |
||
1642 | case GL_CURRENT_NORMAL: |
||
1643 | FLUSH_CURRENT(ctx, 0); |
||
1644 | params[0] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; |
||
1645 | params[1] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; |
||
1646 | params[2] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; |
||
1647 | break; |
||
1648 | case GL_CURRENT_RASTER_COLOR: |
||
1649 | params[0] = (GLdouble) ctx->Current.RasterColor[0]; |
||
1650 | params[1] = (GLdouble) ctx->Current.RasterColor[1]; |
||
1651 | params[2] = (GLdouble) ctx->Current.RasterColor[2]; |
||
1652 | params[3] = (GLdouble) ctx->Current.RasterColor[3]; |
||
1653 | break; |
||
1654 | case GL_CURRENT_RASTER_DISTANCE: |
||
1655 | params[0] = (GLdouble) ctx->Current.RasterDistance; |
||
1656 | break; |
||
1657 | case GL_CURRENT_RASTER_INDEX: |
||
1658 | *params = (GLdouble) ctx->Current.RasterIndex; |
||
1659 | break; |
||
1660 | case GL_CURRENT_RASTER_POSITION: |
||
1661 | params[0] = (GLdouble) ctx->Current.RasterPos[0]; |
||
1662 | params[1] = (GLdouble) ctx->Current.RasterPos[1]; |
||
1663 | params[2] = (GLdouble) ctx->Current.RasterPos[2]; |
||
1664 | params[3] = (GLdouble) ctx->Current.RasterPos[3]; |
||
1665 | break; |
||
1666 | case GL_CURRENT_RASTER_TEXTURE_COORDS: |
||
1667 | params[0] = (GLdouble) ctx->Current.RasterTexCoords[texUnit][0]; |
||
1668 | params[1] = (GLdouble) ctx->Current.RasterTexCoords[texUnit][1]; |
||
1669 | params[2] = (GLdouble) ctx->Current.RasterTexCoords[texUnit][2]; |
||
1670 | params[3] = (GLdouble) ctx->Current.RasterTexCoords[texUnit][3]; |
||
1671 | break; |
||
1672 | case GL_CURRENT_RASTER_POSITION_VALID: |
||
1673 | *params = (GLdouble) ctx->Current.RasterPosValid; |
||
1674 | break; |
||
1675 | case GL_CURRENT_TEXTURE_COORDS: |
||
1676 | FLUSH_CURRENT(ctx, 0); |
||
1677 | params[0] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]; |
||
1678 | params[1] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]; |
||
1679 | params[2] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]; |
||
1680 | params[3] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]; |
||
1681 | break; |
||
1682 | case GL_DEPTH_BIAS: |
||
1683 | *params = (GLdouble) ctx->Pixel.DepthBias; |
||
1684 | break; |
||
1685 | case GL_DEPTH_BITS: |
||
1686 | *params = (GLdouble) ctx->Visual.depthBits; |
||
1687 | break; |
||
1688 | case GL_DEPTH_CLEAR_VALUE: |
||
1689 | *params = (GLdouble) ctx->Depth.Clear; |
||
1690 | break; |
||
1691 | case GL_DEPTH_FUNC: |
||
1692 | *params = ENUM_TO_DOUBLE(ctx->Depth.Func); |
||
1693 | break; |
||
1694 | case GL_DEPTH_RANGE: |
||
1695 | params[0] = (GLdouble) ctx->Viewport.Near; |
||
1696 | params[1] = (GLdouble) ctx->Viewport.Far; |
||
1697 | break; |
||
1698 | case GL_DEPTH_SCALE: |
||
1699 | *params = (GLdouble) ctx->Pixel.DepthScale; |
||
1700 | break; |
||
1701 | case GL_DEPTH_TEST: |
||
1702 | *params = (GLdouble) ctx->Depth.Test; |
||
1703 | break; |
||
1704 | case GL_DEPTH_WRITEMASK: |
||
1705 | *params = (GLdouble) ctx->Depth.Mask; |
||
1706 | break; |
||
1707 | case GL_DITHER: |
||
1708 | *params = (GLdouble) ctx->Color.DitherFlag; |
||
1709 | break; |
||
1710 | case GL_DOUBLEBUFFER: |
||
1711 | *params = (GLdouble) ctx->Visual.doubleBufferMode; |
||
1712 | break; |
||
1713 | case GL_DRAW_BUFFER: |
||
1714 | *params = ENUM_TO_DOUBLE(ctx->Color.DrawBuffer); |
||
1715 | break; |
||
1716 | case GL_EDGE_FLAG: |
||
1717 | FLUSH_CURRENT(ctx, 0); |
||
1718 | *params = (GLdouble) ctx->Current.EdgeFlag; |
||
1719 | break; |
||
1720 | case GL_FEEDBACK_BUFFER_SIZE: |
||
1721 | *params = (GLdouble) ctx->Feedback.BufferSize; |
||
1722 | break; |
||
1723 | case GL_FEEDBACK_BUFFER_TYPE: |
||
1724 | *params = ENUM_TO_DOUBLE(ctx->Feedback.Type); |
||
1725 | break; |
||
1726 | case GL_FOG: |
||
1727 | *params = (GLdouble) ctx->Fog.Enabled; |
||
1728 | break; |
||
1729 | case GL_FOG_COLOR: |
||
1730 | params[0] = (GLdouble) ctx->Fog.Color[0]; |
||
1731 | params[1] = (GLdouble) ctx->Fog.Color[1]; |
||
1732 | params[2] = (GLdouble) ctx->Fog.Color[2]; |
||
1733 | params[3] = (GLdouble) ctx->Fog.Color[3]; |
||
1734 | break; |
||
1735 | case GL_FOG_DENSITY: |
||
1736 | *params = (GLdouble) ctx->Fog.Density; |
||
1737 | break; |
||
1738 | case GL_FOG_END: |
||
1739 | *params = (GLdouble) ctx->Fog.End; |
||
1740 | break; |
||
1741 | case GL_FOG_HINT: |
||
1742 | *params = ENUM_TO_DOUBLE(ctx->Hint.Fog); |
||
1743 | break; |
||
1744 | case GL_FOG_INDEX: |
||
1745 | *params = (GLdouble) ctx->Fog.Index; |
||
1746 | break; |
||
1747 | case GL_FOG_MODE: |
||
1748 | *params = ENUM_TO_DOUBLE(ctx->Fog.Mode); |
||
1749 | break; |
||
1750 | case GL_FOG_START: |
||
1751 | *params = (GLdouble) ctx->Fog.Start; |
||
1752 | break; |
||
1753 | case GL_FRONT_FACE: |
||
1754 | *params = ENUM_TO_DOUBLE(ctx->Polygon.FrontFace); |
||
1755 | break; |
||
1756 | case GL_GREEN_BIAS: |
||
1757 | *params = (GLdouble) ctx->Pixel.GreenBias; |
||
1758 | break; |
||
1759 | case GL_GREEN_BITS: |
||
1760 | *params = (GLdouble) ctx->Visual.greenBits; |
||
1761 | break; |
||
1762 | case GL_GREEN_SCALE: |
||
1763 | *params = (GLdouble) ctx->Pixel.GreenScale; |
||
1764 | break; |
||
1765 | case GL_INDEX_BITS: |
||
1766 | *params = (GLdouble) ctx->Visual.indexBits; |
||
1767 | break; |
||
1768 | case GL_INDEX_CLEAR_VALUE: |
||
1769 | *params = (GLdouble) ctx->Color.ClearIndex; |
||
1770 | break; |
||
1771 | case GL_INDEX_MODE: |
||
1772 | *params = ctx->Visual.rgbMode ? 0.0 : 1.0; |
||
1773 | break; |
||
1774 | case GL_INDEX_OFFSET: |
||
1775 | *params = (GLdouble) ctx->Pixel.IndexOffset; |
||
1776 | break; |
||
1777 | case GL_INDEX_SHIFT: |
||
1778 | *params = (GLdouble) ctx->Pixel.IndexShift; |
||
1779 | break; |
||
1780 | case GL_INDEX_WRITEMASK: |
||
1781 | *params = (GLdouble) ctx->Color.IndexMask; |
||
1782 | break; |
||
1783 | case GL_LIGHT0: |
||
1784 | case GL_LIGHT1: |
||
1785 | case GL_LIGHT2: |
||
1786 | case GL_LIGHT3: |
||
1787 | case GL_LIGHT4: |
||
1788 | case GL_LIGHT5: |
||
1789 | case GL_LIGHT6: |
||
1790 | case GL_LIGHT7: |
||
1791 | *params = (GLdouble) ctx->Light.Light[pname-GL_LIGHT0].Enabled; |
||
1792 | break; |
||
1793 | case GL_LIGHTING: |
||
1794 | *params = (GLdouble) ctx->Light.Enabled; |
||
1795 | break; |
||
1796 | case GL_LIGHT_MODEL_AMBIENT: |
||
1797 | params[0] = (GLdouble) ctx->Light.Model.Ambient[0]; |
||
1798 | params[1] = (GLdouble) ctx->Light.Model.Ambient[1]; |
||
1799 | params[2] = (GLdouble) ctx->Light.Model.Ambient[2]; |
||
1800 | params[3] = (GLdouble) ctx->Light.Model.Ambient[3]; |
||
1801 | break; |
||
1802 | case GL_LIGHT_MODEL_COLOR_CONTROL: |
||
1803 | params[0] = (GLdouble) ctx->Light.Model.ColorControl; |
||
1804 | break; |
||
1805 | case GL_LIGHT_MODEL_LOCAL_VIEWER: |
||
1806 | *params = (GLdouble) ctx->Light.Model.LocalViewer; |
||
1807 | break; |
||
1808 | case GL_LIGHT_MODEL_TWO_SIDE: |
||
1809 | *params = (GLdouble) ctx->Light.Model.TwoSide; |
||
1810 | break; |
||
1811 | case GL_LINE_SMOOTH: |
||
1812 | *params = (GLdouble) ctx->Line.SmoothFlag; |
||
1813 | break; |
||
1814 | case GL_LINE_SMOOTH_HINT: |
||
1815 | *params = ENUM_TO_DOUBLE(ctx->Hint.LineSmooth); |
||
1816 | break; |
||
1817 | case GL_LINE_STIPPLE: |
||
1818 | *params = (GLdouble) ctx->Line.StippleFlag; |
||
1819 | break; |
||
1820 | case GL_LINE_STIPPLE_PATTERN: |
||
1821 | *params = (GLdouble) ctx->Line.StipplePattern; |
||
1822 | break; |
||
1823 | case GL_LINE_STIPPLE_REPEAT: |
||
1824 | *params = (GLdouble) ctx->Line.StippleFactor; |
||
1825 | break; |
||
1826 | case GL_LINE_WIDTH: |
||
1827 | *params = (GLdouble) ctx->Line.Width; |
||
1828 | break; |
||
1829 | case GL_LINE_WIDTH_GRANULARITY: |
||
1830 | *params = (GLdouble) ctx->Const.LineWidthGranularity; |
||
1831 | break; |
||
1832 | case GL_LINE_WIDTH_RANGE: |
||
1833 | params[0] = (GLdouble) ctx->Const.MinLineWidthAA; |
||
1834 | params[1] = (GLdouble) ctx->Const.MaxLineWidthAA; |
||
1835 | break; |
||
1836 | case GL_ALIASED_LINE_WIDTH_RANGE: |
||
1837 | params[0] = (GLdouble) ctx->Const.MinLineWidth; |
||
1838 | params[1] = (GLdouble) ctx->Const.MaxLineWidth; |
||
1839 | break; |
||
1840 | case GL_LIST_BASE: |
||
1841 | *params = (GLdouble) ctx->List.ListBase; |
||
1842 | break; |
||
1843 | case GL_LIST_INDEX: |
||
1844 | *params = (GLdouble) ctx->CurrentListNum; |
||
1845 | break; |
||
1846 | case GL_LIST_MODE: |
||
1847 | *params = ctx->ExecuteFlag ? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE) |
||
1848 | : ENUM_TO_DOUBLE(GL_COMPILE); |
||
1849 | break; |
||
1850 | case GL_INDEX_LOGIC_OP: |
||
1851 | *params = (GLdouble) ctx->Color.IndexLogicOpEnabled; |
||
1852 | break; |
||
1853 | case GL_COLOR_LOGIC_OP: |
||
1854 | *params = (GLdouble) ctx->Color.ColorLogicOpEnabled; |
||
1855 | break; |
||
1856 | case GL_LOGIC_OP_MODE: |
||
1857 | *params = ENUM_TO_DOUBLE(ctx->Color.LogicOp); |
||
1858 | break; |
||
1859 | case GL_MAP1_COLOR_4: |
||
1860 | *params = (GLdouble) ctx->Eval.Map1Color4; |
||
1861 | break; |
||
1862 | case GL_MAP1_GRID_DOMAIN: |
||
1863 | params[0] = (GLdouble) ctx->Eval.MapGrid1u1; |
||
1864 | params[1] = (GLdouble) ctx->Eval.MapGrid1u2; |
||
1865 | break; |
||
1866 | case GL_MAP1_GRID_SEGMENTS: |
||
1867 | *params = (GLdouble) ctx->Eval.MapGrid1un; |
||
1868 | break; |
||
1869 | case GL_MAP1_INDEX: |
||
1870 | *params = (GLdouble) ctx->Eval.Map1Index; |
||
1871 | break; |
||
1872 | case GL_MAP1_NORMAL: |
||
1873 | *params = (GLdouble) ctx->Eval.Map1Normal; |
||
1874 | break; |
||
1875 | case GL_MAP1_TEXTURE_COORD_1: |
||
1876 | *params = (GLdouble) ctx->Eval.Map1TextureCoord1; |
||
1877 | break; |
||
1878 | case GL_MAP1_TEXTURE_COORD_2: |
||
1879 | *params = (GLdouble) ctx->Eval.Map1TextureCoord2; |
||
1880 | break; |
||
1881 | case GL_MAP1_TEXTURE_COORD_3: |
||
1882 | *params = (GLdouble) ctx->Eval.Map1TextureCoord3; |
||
1883 | break; |
||
1884 | case GL_MAP1_TEXTURE_COORD_4: |
||
1885 | *params = (GLdouble) ctx->Eval.Map1TextureCoord4; |
||
1886 | break; |
||
1887 | case GL_MAP1_VERTEX_3: |
||
1888 | *params = (GLdouble) ctx->Eval.Map1Vertex3; |
||
1889 | break; |
||
1890 | case GL_MAP1_VERTEX_4: |
||
1891 | *params = (GLdouble) ctx->Eval.Map1Vertex4; |
||
1892 | break; |
||
1893 | case GL_MAP2_COLOR_4: |
||
1894 | *params = (GLdouble) ctx->Eval.Map2Color4; |
||
1895 | break; |
||
1896 | case GL_MAP2_GRID_DOMAIN: |
||
1897 | params[0] = (GLdouble) ctx->Eval.MapGrid2u1; |
||
1898 | params[1] = (GLdouble) ctx->Eval.MapGrid2u2; |
||
1899 | params[2] = (GLdouble) ctx->Eval.MapGrid2v1; |
||
1900 | params[3] = (GLdouble) ctx->Eval.MapGrid2v2; |
||
1901 | break; |
||
1902 | case GL_MAP2_GRID_SEGMENTS: |
||
1903 | params[0] = (GLdouble) ctx->Eval.MapGrid2un; |
||
1904 | params[1] = (GLdouble) ctx->Eval.MapGrid2vn; |
||
1905 | break; |
||
1906 | case GL_MAP2_INDEX: |
||
1907 | *params = (GLdouble) ctx->Eval.Map2Index; |
||
1908 | break; |
||
1909 | case GL_MAP2_NORMAL: |
||
1910 | *params = (GLdouble) ctx->Eval.Map2Normal; |
||
1911 | break; |
||
1912 | case GL_MAP2_TEXTURE_COORD_1: |
||
1913 | *params = (GLdouble) ctx->Eval.Map2TextureCoord1; |
||
1914 | break; |
||
1915 | case GL_MAP2_TEXTURE_COORD_2: |
||
1916 | *params = (GLdouble) ctx->Eval.Map2TextureCoord2; |
||
1917 | break; |
||
1918 | case GL_MAP2_TEXTURE_COORD_3: |
||
1919 | *params = (GLdouble) ctx->Eval.Map2TextureCoord3; |
||
1920 | break; |
||
1921 | case GL_MAP2_TEXTURE_COORD_4: |
||
1922 | *params = (GLdouble) ctx->Eval.Map2TextureCoord4; |
||
1923 | break; |
||
1924 | case GL_MAP2_VERTEX_3: |
||
1925 | *params = (GLdouble) ctx->Eval.Map2Vertex3; |
||
1926 | break; |
||
1927 | case GL_MAP2_VERTEX_4: |
||
1928 | *params = (GLdouble) ctx->Eval.Map2Vertex4; |
||
1929 | break; |
||
1930 | case GL_MAP_COLOR: |
||
1931 | *params = (GLdouble) ctx->Pixel.MapColorFlag; |
||
1932 | break; |
||
1933 | case GL_MAP_STENCIL: |
||
1934 | *params = (GLdouble) ctx->Pixel.MapStencilFlag; |
||
1935 | break; |
||
1936 | case GL_MATRIX_MODE: |
||
1937 | *params = ENUM_TO_DOUBLE(ctx->Transform.MatrixMode); |
||
1938 | break; |
||
1939 | case GL_MAX_ATTRIB_STACK_DEPTH: |
||
1940 | *params = (GLdouble) MAX_ATTRIB_STACK_DEPTH; |
||
1941 | break; |
||
1942 | case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: |
||
1943 | *params = (GLdouble) MAX_CLIENT_ATTRIB_STACK_DEPTH; |
||
1944 | break; |
||
1945 | case GL_MAX_CLIP_PLANES: |
||
1946 | *params = (GLdouble) ctx->Const.MaxClipPlanes; |
||
1947 | break; |
||
1948 | case GL_MAX_ELEMENTS_VERTICES: /* GL_VERSION_1_2 */ |
||
1949 | *params = (GLdouble) ctx->Const.MaxArrayLockSize; |
||
1950 | break; |
||
1951 | case GL_MAX_ELEMENTS_INDICES: /* GL_VERSION_1_2 */ |
||
1952 | *params = (GLdouble) ctx->Const.MaxArrayLockSize; |
||
1953 | break; |
||
1954 | case GL_MAX_EVAL_ORDER: |
||
1955 | *params = (GLdouble) MAX_EVAL_ORDER; |
||
1956 | break; |
||
1957 | case GL_MAX_LIGHTS: |
||
1958 | *params = (GLdouble) ctx->Const.MaxLights; |
||
1959 | break; |
||
1960 | case GL_MAX_LIST_NESTING: |
||
1961 | *params = (GLdouble) MAX_LIST_NESTING; |
||
1962 | break; |
||
1963 | case GL_MAX_MODELVIEW_STACK_DEPTH: |
||
1964 | *params = (GLdouble) MAX_MODELVIEW_STACK_DEPTH; |
||
1965 | break; |
||
1966 | case GL_MAX_NAME_STACK_DEPTH: |
||
1967 | *params = (GLdouble) MAX_NAME_STACK_DEPTH; |
||
1968 | break; |
||
1969 | case GL_MAX_PIXEL_MAP_TABLE: |
||
1970 | *params = (GLdouble) MAX_PIXEL_MAP_TABLE; |
||
1971 | break; |
||
1972 | case GL_MAX_PROJECTION_STACK_DEPTH: |
||
1973 | *params = (GLdouble) MAX_PROJECTION_STACK_DEPTH; |
||
1974 | break; |
||
1975 | case GL_MAX_TEXTURE_SIZE: |
||
1976 | *params = (GLdouble) (1 << (ctx->Const.MaxTextureLevels - 1)); |
||
1977 | break; |
||
1978 | case GL_MAX_3D_TEXTURE_SIZE: |
||
1979 | *params = (GLdouble) (1 << (ctx->Const.Max3DTextureLevels - 1)); |
||
1980 | break; |
||
1981 | case GL_MAX_TEXTURE_STACK_DEPTH: |
||
1982 | *params = (GLdouble) MAX_TEXTURE_STACK_DEPTH; |
||
1983 | break; |
||
1984 | case GL_MAX_VIEWPORT_DIMS: |
||
1985 | params[0] = (GLdouble) MAX_WIDTH; |
||
1986 | params[1] = (GLdouble) MAX_HEIGHT; |
||
1987 | break; |
||
1988 | case GL_MODELVIEW_MATRIX: |
||
1989 | for (i=0;i<16;i++) { |
||
1990 | params[i] = (GLdouble) ctx->ModelviewMatrixStack.Top->m[i]; |
||
1991 | } |
||
1992 | break; |
||
1993 | case GL_MODELVIEW_STACK_DEPTH: |
||
1994 | *params = (GLdouble) (ctx->ModelviewMatrixStack.Depth + 1); |
||
1995 | break; |
||
1996 | case GL_NAME_STACK_DEPTH: |
||
1997 | *params = (GLdouble) ctx->Select.NameStackDepth; |
||
1998 | break; |
||
1999 | case GL_NORMALIZE: |
||
2000 | *params = (GLdouble) ctx->Transform.Normalize; |
||
2001 | break; |
||
2002 | case GL_PACK_ALIGNMENT: |
||
2003 | *params = (GLdouble) ctx->Pack.Alignment; |
||
2004 | break; |
||
2005 | case GL_PACK_LSB_FIRST: |
||
2006 | *params = (GLdouble) ctx->Pack.LsbFirst; |
||
2007 | break; |
||
2008 | case GL_PACK_ROW_LENGTH: |
||
2009 | *params = (GLdouble) ctx->Pack.RowLength; |
||
2010 | break; |
||
2011 | case GL_PACK_SKIP_PIXELS: |
||
2012 | *params = (GLdouble) ctx->Pack.SkipPixels; |
||
2013 | break; |
||
2014 | case GL_PACK_SKIP_ROWS: |
||
2015 | *params = (GLdouble) ctx->Pack.SkipRows; |
||
2016 | break; |
||
2017 | case GL_PACK_SWAP_BYTES: |
||
2018 | *params = (GLdouble) ctx->Pack.SwapBytes; |
||
2019 | break; |
||
2020 | case GL_PACK_SKIP_IMAGES_EXT: |
||
2021 | *params = (GLdouble) ctx->Pack.SkipImages; |
||
2022 | break; |
||
2023 | case GL_PACK_IMAGE_HEIGHT_EXT: |
||
2024 | *params = (GLdouble) ctx->Pack.ImageHeight; |
||
2025 | break; |
||
2026 | case GL_PACK_INVERT_MESA: |
||
2027 | *params = (GLdouble) ctx->Pack.Invert; |
||
2028 | break; |
||
2029 | case GL_PERSPECTIVE_CORRECTION_HINT: |
||
2030 | *params = ENUM_TO_DOUBLE(ctx->Hint.PerspectiveCorrection); |
||
2031 | break; |
||
2032 | case GL_PIXEL_MAP_A_TO_A_SIZE: |
||
2033 | *params = (GLdouble) ctx->Pixel.MapAtoAsize; |
||
2034 | break; |
||
2035 | case GL_PIXEL_MAP_B_TO_B_SIZE: |
||
2036 | *params = (GLdouble) ctx->Pixel.MapBtoBsize; |
||
2037 | break; |
||
2038 | case GL_PIXEL_MAP_G_TO_G_SIZE: |
||
2039 | *params = (GLdouble) ctx->Pixel.MapGtoGsize; |
||
2040 | break; |
||
2041 | case GL_PIXEL_MAP_I_TO_A_SIZE: |
||
2042 | *params = (GLdouble) ctx->Pixel.MapItoAsize; |
||
2043 | break; |
||
2044 | case GL_PIXEL_MAP_I_TO_B_SIZE: |
||
2045 | *params = (GLdouble) ctx->Pixel.MapItoBsize; |
||
2046 | break; |
||
2047 | case GL_PIXEL_MAP_I_TO_G_SIZE: |
||
2048 | *params = (GLdouble) ctx->Pixel.MapItoGsize; |
||
2049 | break; |
||
2050 | case GL_PIXEL_MAP_I_TO_I_SIZE: |
||
2051 | *params = (GLdouble) ctx->Pixel.MapItoIsize; |
||
2052 | break; |
||
2053 | case GL_PIXEL_MAP_I_TO_R_SIZE: |
||
2054 | *params = (GLdouble) ctx->Pixel.MapItoRsize; |
||
2055 | break; |
||
2056 | case GL_PIXEL_MAP_R_TO_R_SIZE: |
||
2057 | *params = (GLdouble) ctx->Pixel.MapRtoRsize; |
||
2058 | break; |
||
2059 | case GL_PIXEL_MAP_S_TO_S_SIZE: |
||
2060 | *params = (GLdouble) ctx->Pixel.MapStoSsize; |
||
2061 | break; |
||
2062 | case GL_POINT_SIZE: |
||
2063 | *params = (GLdouble) ctx->Point.Size; |
||
2064 | break; |
||
2065 | case GL_POINT_SIZE_GRANULARITY: |
||
2066 | *params = (GLdouble) ctx->Const.PointSizeGranularity; |
||
2067 | break; |
||
2068 | case GL_POINT_SIZE_RANGE: |
||
2069 | params[0] = (GLdouble) ctx->Const.MinPointSizeAA; |
||
2070 | params[1] = (GLdouble) ctx->Const.MaxPointSizeAA; |
||
2071 | break; |
||
2072 | case GL_ALIASED_POINT_SIZE_RANGE: |
||
2073 | params[0] = (GLdouble) ctx->Const.MinPointSize; |
||
2074 | params[1] = (GLdouble) ctx->Const.MaxPointSize; |
||
2075 | break; |
||
2076 | case GL_POINT_SMOOTH: |
||
2077 | *params = (GLdouble) ctx->Point.SmoothFlag; |
||
2078 | break; |
||
2079 | case GL_POINT_SMOOTH_HINT: |
||
2080 | *params = ENUM_TO_DOUBLE(ctx->Hint.PointSmooth); |
||
2081 | break; |
||
2082 | case GL_POINT_SIZE_MIN_EXT: |
||
2083 | *params = (GLdouble) (ctx->Point.MinSize); |
||
2084 | break; |
||
2085 | case GL_POINT_SIZE_MAX_EXT: |
||
2086 | *params = (GLdouble) (ctx->Point.MaxSize); |
||
2087 | break; |
||
2088 | case GL_POINT_FADE_THRESHOLD_SIZE_EXT: |
||
2089 | *params = (GLdouble) (ctx->Point.Threshold); |
||
2090 | break; |
||
2091 | case GL_DISTANCE_ATTENUATION_EXT: |
||
2092 | params[0] = (GLdouble) (ctx->Point.Params[0]); |
||
2093 | params[1] = (GLdouble) (ctx->Point.Params[1]); |
||
2094 | params[2] = (GLdouble) (ctx->Point.Params[2]); |
||
2095 | break; |
||
2096 | case GL_POLYGON_MODE: |
||
2097 | params[0] = ENUM_TO_DOUBLE(ctx->Polygon.FrontMode); |
||
2098 | params[1] = ENUM_TO_DOUBLE(ctx->Polygon.BackMode); |
||
2099 | break; |
||
2100 | case GL_POLYGON_OFFSET_BIAS_EXT: /* GL_EXT_polygon_offset */ |
||
2101 | *params = (GLdouble) ctx->Polygon.OffsetUnits; |
||
2102 | break; |
||
2103 | case GL_POLYGON_OFFSET_FACTOR: |
||
2104 | *params = (GLdouble) ctx->Polygon.OffsetFactor; |
||
2105 | break; |
||
2106 | case GL_POLYGON_OFFSET_UNITS: |
||
2107 | *params = (GLdouble) ctx->Polygon.OffsetUnits; |
||
2108 | break; |
||
2109 | case GL_POLYGON_SMOOTH: |
||
2110 | *params = (GLdouble) ctx->Polygon.SmoothFlag; |
||
2111 | break; |
||
2112 | case GL_POLYGON_SMOOTH_HINT: |
||
2113 | *params = ENUM_TO_DOUBLE(ctx->Hint.PolygonSmooth); |
||
2114 | break; |
||
2115 | case GL_POLYGON_STIPPLE: |
||
2116 | *params = (GLdouble) ctx->Polygon.StippleFlag; |
||
2117 | break; |
||
2118 | case GL_PROJECTION_MATRIX: |
||
2119 | for (i=0;i<16;i++) { |
||
2120 | params[i] = (GLdouble) ctx->ProjectionMatrixStack.Top->m[i]; |
||
2121 | } |
||
2122 | break; |
||
2123 | case GL_PROJECTION_STACK_DEPTH: |
||
2124 | *params = (GLdouble) (ctx->ProjectionMatrixStack.Depth + 1); |
||
2125 | break; |
||
2126 | case GL_READ_BUFFER: |
||
2127 | *params = ENUM_TO_DOUBLE(ctx->Pixel.ReadBuffer); |
||
2128 | break; |
||
2129 | case GL_RED_BIAS: |
||
2130 | *params = (GLdouble) ctx->Pixel.RedBias; |
||
2131 | break; |
||
2132 | case GL_RED_BITS: |
||
2133 | *params = (GLdouble) ctx->Visual.redBits; |
||
2134 | break; |
||
2135 | case GL_RED_SCALE: |
||
2136 | *params = (GLdouble) ctx->Pixel.RedScale; |
||
2137 | break; |
||
2138 | case GL_RENDER_MODE: |
||
2139 | *params = ENUM_TO_DOUBLE(ctx->RenderMode); |
||
2140 | break; |
||
2141 | case GL_RESCALE_NORMAL: |
||
2142 | *params = (GLdouble) ctx->Transform.RescaleNormals; |
||
2143 | break; |
||
2144 | case GL_RGBA_MODE: |
||
2145 | *params = (GLdouble) ctx->Visual.rgbMode; |
||
2146 | break; |
||
2147 | case GL_SCISSOR_BOX: |
||
2148 | params[0] = (GLdouble) ctx->Scissor.X; |
||
2149 | params[1] = (GLdouble) ctx->Scissor.Y; |
||
2150 | params[2] = (GLdouble) ctx->Scissor.Width; |
||
2151 | params[3] = (GLdouble) ctx->Scissor.Height; |
||
2152 | break; |
||
2153 | case GL_SCISSOR_TEST: |
||
2154 | *params = (GLdouble) ctx->Scissor.Enabled; |
||
2155 | break; |
||
2156 | case GL_SELECTION_BUFFER_SIZE: |
||
2157 | *params = (GLdouble) ctx->Select.BufferSize; |
||
2158 | break; |
||
2159 | case GL_SHADE_MODEL: |
||
2160 | *params = ENUM_TO_DOUBLE(ctx->Light.ShadeModel); |
||
2161 | break; |
||
2162 | case GL_SHARED_TEXTURE_PALETTE_EXT: |
||
2163 | *params = (GLdouble) ctx->Texture.SharedPalette; |
||
2164 | break; |
||
2165 | case GL_STENCIL_BITS: |
||
2166 | *params = (GLdouble) ctx->Visual.stencilBits; |
||
2167 | break; |
||
2168 | case GL_STENCIL_CLEAR_VALUE: |
||
2169 | *params = (GLdouble) ctx->Stencil.Clear; |
||
2170 | break; |
||
2171 | case GL_STENCIL_FAIL: |
||
2172 | *params = ENUM_TO_DOUBLE(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); |
||
2173 | break; |
||
2174 | case GL_STENCIL_FUNC: |
||
2175 | *params = ENUM_TO_DOUBLE(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); |
||
2176 | break; |
||
2177 | case GL_STENCIL_PASS_DEPTH_FAIL: |
||
2178 | *params = ENUM_TO_DOUBLE(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); |
||
2179 | break; |
||
2180 | case GL_STENCIL_PASS_DEPTH_PASS: |
||
2181 | *params = ENUM_TO_DOUBLE(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); |
||
2182 | break; |
||
2183 | case GL_STENCIL_REF: |
||
2184 | *params = (GLdouble) ctx->Stencil.Ref[ctx->Stencil.ActiveFace]; |
||
2185 | break; |
||
2186 | case GL_STENCIL_TEST: |
||
2187 | *params = (GLdouble) ctx->Stencil.Enabled; |
||
2188 | break; |
||
2189 | case GL_STENCIL_VALUE_MASK: |
||
2190 | *params = (GLdouble) ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]; |
||
2191 | break; |
||
2192 | case GL_STENCIL_WRITEMASK: |
||
2193 | *params = (GLdouble) ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]; |
||
2194 | break; |
||
2195 | case GL_STEREO: |
||
2196 | *params = (GLdouble) ctx->Visual.stereoMode; |
||
2197 | break; |
||
2198 | case GL_SUBPIXEL_BITS: |
||
2199 | *params = (GLdouble) ctx->Const.SubPixelBits; |
||
2200 | break; |
||
2201 | case GL_TEXTURE_1D: |
||
2202 | *params = _mesa_IsEnabled(GL_TEXTURE_1D) ? 1.0 : 0.0; |
||
2203 | break; |
||
2204 | case GL_TEXTURE_2D: |
||
2205 | *params = _mesa_IsEnabled(GL_TEXTURE_2D) ? 1.0 : 0.0; |
||
2206 | break; |
||
2207 | case GL_TEXTURE_3D: |
||
2208 | *params = _mesa_IsEnabled(GL_TEXTURE_3D) ? 1.0 : 0.0; |
||
2209 | break; |
||
2210 | case GL_TEXTURE_BINDING_1D: |
||
2211 | *params = (GLdouble) textureUnit->Current1D->Name; |
||
2212 | break; |
||
2213 | case GL_TEXTURE_BINDING_2D: |
||
2214 | *params = (GLdouble) textureUnit->Current2D->Name; |
||
2215 | break; |
||
2216 | case GL_TEXTURE_BINDING_3D: |
||
2217 | *params = (GLdouble) textureUnit->Current3D->Name; |
||
2218 | break; |
||
2219 | case GL_TEXTURE_ENV_COLOR: |
||
2220 | params[0] = (GLdouble) textureUnit->EnvColor[0]; |
||
2221 | params[1] = (GLdouble) textureUnit->EnvColor[1]; |
||
2222 | params[2] = (GLdouble) textureUnit->EnvColor[2]; |
||
2223 | params[3] = (GLdouble) textureUnit->EnvColor[3]; |
||
2224 | break; |
||
2225 | case GL_TEXTURE_ENV_MODE: |
||
2226 | *params = ENUM_TO_DOUBLE(textureUnit->EnvMode); |
||
2227 | break; |
||
2228 | case GL_TEXTURE_GEN_S: |
||
2229 | *params = (textureUnit->TexGenEnabled & S_BIT) ? 1.0 : 0.0; |
||
2230 | break; |
||
2231 | case GL_TEXTURE_GEN_T: |
||
2232 | *params = (textureUnit->TexGenEnabled & T_BIT) ? 1.0 : 0.0; |
||
2233 | break; |
||
2234 | case GL_TEXTURE_GEN_R: |
||
2235 | *params = (textureUnit->TexGenEnabled & R_BIT) ? 1.0 : 0.0; |
||
2236 | break; |
||
2237 | case GL_TEXTURE_GEN_Q: |
||
2238 | *params = (textureUnit->TexGenEnabled & Q_BIT) ? 1.0 : 0.0; |
||
2239 | break; |
||
2240 | case GL_TEXTURE_MATRIX: |
||
2241 | for (i=0;i<16;i++) { |
||
2242 | params[i] = (GLdouble) ctx->TextureMatrixStack[texUnit].Top->m[i]; |
||
2243 | } |
||
2244 | break; |
||
2245 | case GL_TEXTURE_STACK_DEPTH: |
||
2246 | *params = (GLdouble) (ctx->TextureMatrixStack[texUnit].Depth + 1); |
||
2247 | break; |
||
2248 | case GL_UNPACK_ALIGNMENT: |
||
2249 | *params = (GLdouble) ctx->Unpack.Alignment; |
||
2250 | break; |
||
2251 | case GL_UNPACK_LSB_FIRST: |
||
2252 | *params = (GLdouble) ctx->Unpack.LsbFirst; |
||
2253 | break; |
||
2254 | case GL_UNPACK_ROW_LENGTH: |
||
2255 | *params = (GLdouble) ctx->Unpack.RowLength; |
||
2256 | break; |
||
2257 | case GL_UNPACK_SKIP_PIXELS: |
||
2258 | *params = (GLdouble) ctx->Unpack.SkipPixels; |
||
2259 | break; |
||
2260 | case GL_UNPACK_SKIP_ROWS: |
||
2261 | *params = (GLdouble) ctx->Unpack.SkipRows; |
||
2262 | break; |
||
2263 | case GL_UNPACK_SWAP_BYTES: |
||
2264 | *params = (GLdouble) ctx->Unpack.SwapBytes; |
||
2265 | break; |
||
2266 | case GL_UNPACK_SKIP_IMAGES_EXT: |
||
2267 | *params = (GLdouble) ctx->Unpack.SkipImages; |
||
2268 | break; |
||
2269 | case GL_UNPACK_IMAGE_HEIGHT_EXT: |
||
2270 | *params = (GLdouble) ctx->Unpack.ImageHeight; |
||
2271 | break; |
||
2272 | case GL_UNPACK_CLIENT_STORAGE_APPLE: |
||
2273 | *params = (GLdouble) ctx->Unpack.ClientStorage; |
||
2274 | break; |
||
2275 | case GL_VIEWPORT: |
||
2276 | params[0] = (GLdouble) ctx->Viewport.X; |
||
2277 | params[1] = (GLdouble) ctx->Viewport.Y; |
||
2278 | params[2] = (GLdouble) ctx->Viewport.Width; |
||
2279 | params[3] = (GLdouble) ctx->Viewport.Height; |
||
2280 | break; |
||
2281 | case GL_ZOOM_X: |
||
2282 | *params = (GLdouble) ctx->Pixel.ZoomX; |
||
2283 | break; |
||
2284 | case GL_ZOOM_Y: |
||
2285 | *params = (GLdouble) ctx->Pixel.ZoomY; |
||
2286 | break; |
||
2287 | case GL_VERTEX_ARRAY: |
||
2288 | *params = (GLdouble) ctx->Array.Vertex.Enabled; |
||
2289 | break; |
||
2290 | case GL_VERTEX_ARRAY_SIZE: |
||
2291 | *params = (GLdouble) ctx->Array.Vertex.Size; |
||
2292 | break; |
||
2293 | case GL_VERTEX_ARRAY_TYPE: |
||
2294 | *params = ENUM_TO_DOUBLE(ctx->Array.Vertex.Type); |
||
2295 | break; |
||
2296 | case GL_VERTEX_ARRAY_STRIDE: |
||
2297 | *params = (GLdouble) ctx->Array.Vertex.Stride; |
||
2298 | break; |
||
2299 | case GL_VERTEX_ARRAY_COUNT_EXT: |
||
2300 | *params = 0.0; |
||
2301 | break; |
||
2302 | case GL_NORMAL_ARRAY: |
||
2303 | *params = (GLdouble) ctx->Array.Normal.Enabled; |
||
2304 | break; |
||
2305 | case GL_NORMAL_ARRAY_TYPE: |
||
2306 | *params = ENUM_TO_DOUBLE(ctx->Array.Normal.Type); |
||
2307 | break; |
||
2308 | case GL_NORMAL_ARRAY_STRIDE: |
||
2309 | *params = (GLdouble) ctx->Array.Normal.Stride; |
||
2310 | break; |
||
2311 | case GL_NORMAL_ARRAY_COUNT_EXT: |
||
2312 | *params = 0.0; |
||
2313 | break; |
||
2314 | case GL_COLOR_ARRAY: |
||
2315 | *params = (GLdouble) ctx->Array.Color.Enabled; |
||
2316 | break; |
||
2317 | case GL_COLOR_ARRAY_SIZE: |
||
2318 | *params = (GLdouble) ctx->Array.Color.Size; |
||
2319 | break; |
||
2320 | case GL_COLOR_ARRAY_TYPE: |
||
2321 | *params = ENUM_TO_DOUBLE(ctx->Array.Color.Type); |
||
2322 | break; |
||
2323 | case GL_COLOR_ARRAY_STRIDE: |
||
2324 | *params = (GLdouble) ctx->Array.Color.Stride; |
||
2325 | break; |
||
2326 | case GL_COLOR_ARRAY_COUNT_EXT: |
||
2327 | *params = 0.0; |
||
2328 | break; |
||
2329 | case GL_INDEX_ARRAY: |
||
2330 | *params = (GLdouble) ctx->Array.Index.Enabled; |
||
2331 | break; |
||
2332 | case GL_INDEX_ARRAY_TYPE: |
||
2333 | *params = ENUM_TO_DOUBLE(ctx->Array.Index.Type); |
||
2334 | break; |
||
2335 | case GL_INDEX_ARRAY_STRIDE: |
||
2336 | *params = (GLdouble) ctx->Array.Index.Stride; |
||
2337 | break; |
||
2338 | case GL_INDEX_ARRAY_COUNT_EXT: |
||
2339 | *params = 0.0; |
||
2340 | break; |
||
2341 | case GL_TEXTURE_COORD_ARRAY: |
||
2342 | *params = (GLdouble) ctx->Array.TexCoord[texUnit].Enabled; |
||
2343 | break; |
||
2344 | case GL_TEXTURE_COORD_ARRAY_SIZE: |
||
2345 | *params = (GLdouble) ctx->Array.TexCoord[texUnit].Size; |
||
2346 | break; |
||
2347 | case GL_TEXTURE_COORD_ARRAY_TYPE: |
||
2348 | *params = ENUM_TO_DOUBLE(ctx->Array.TexCoord[texUnit].Type); |
||
2349 | break; |
||
2350 | case GL_TEXTURE_COORD_ARRAY_STRIDE: |
||
2351 | *params = (GLdouble) ctx->Array.TexCoord[texUnit].Stride; |
||
2352 | break; |
||
2353 | case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: |
||
2354 | *params = 0.0; |
||
2355 | break; |
||
2356 | case GL_EDGE_FLAG_ARRAY: |
||
2357 | *params = (GLdouble) ctx->Array.EdgeFlag.Enabled; |
||
2358 | break; |
||
2359 | case GL_EDGE_FLAG_ARRAY_STRIDE: |
||
2360 | *params = (GLdouble) ctx->Array.EdgeFlag.Stride; |
||
2361 | break; |
||
2362 | case GL_EDGE_FLAG_ARRAY_COUNT_EXT: |
||
2363 | *params = 0.0; |
||
2364 | break; |
||
2365 | |||
2366 | /* GL_ARB_multitexture */ |
||
2367 | case GL_MAX_TEXTURE_UNITS_ARB: |
||
2368 | CHECK_EXTENSION_D(ARB_multitexture, pname); |
||
2369 | *params = (GLdouble) ctx->Const.MaxTextureUnits; |
||
2370 | break; |
||
2371 | case GL_ACTIVE_TEXTURE_ARB: |
||
2372 | CHECK_EXTENSION_D(ARB_multitexture, pname); |
||
2373 | *params = (GLdouble) (GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); |
||
2374 | break; |
||
2375 | case GL_CLIENT_ACTIVE_TEXTURE_ARB: |
||
2376 | CHECK_EXTENSION_D(ARB_multitexture, pname); |
||
2377 | *params = (GLdouble) (GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); |
||
2378 | break; |
||
2379 | |||
2380 | /* GL_ARB_texture_cube_map */ |
||
2381 | case GL_TEXTURE_CUBE_MAP_ARB: |
||
2382 | CHECK_EXTENSION_D(ARB_texture_cube_map, pname); |
||
2383 | *params = (GLdouble) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB); |
||
2384 | break; |
||
2385 | case GL_TEXTURE_BINDING_CUBE_MAP_ARB: |
||
2386 | CHECK_EXTENSION_D(ARB_texture_cube_map, pname); |
||
2387 | *params = (GLdouble) textureUnit->CurrentCubeMap->Name; |
||
2388 | break; |
||
2389 | case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: |
||
2390 | CHECK_EXTENSION_D(ARB_texture_cube_map, pname); |
||
2391 | *params = (GLdouble) (1 << (ctx->Const.MaxCubeTextureLevels - 1)); |
||
2392 | break; |
||
2393 | |||
2394 | /* GL_ARB_texture_compression */ |
||
2395 | case GL_TEXTURE_COMPRESSION_HINT_ARB: |
||
2396 | CHECK_EXTENSION_D(ARB_texture_compression, pname); |
||
2397 | *params = (GLdouble) ctx->Hint.TextureCompression; |
||
2398 | break; |
||
2399 | case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
2400 | CHECK_EXTENSION_D(ARB_texture_compression, pname); |
||
2401 | *params = (GLdouble) _mesa_get_compressed_formats(ctx, NULL); |
||
2402 | break; |
||
2403 | case GL_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
2404 | CHECK_EXTENSION_D(ARB_texture_compression, pname); |
||
2405 | { |
||
2406 | GLint formats[100]; |
||
2407 | GLuint i, n; |
||
2408 | n = _mesa_get_compressed_formats(ctx, formats); |
||
2409 | for (i = 0; i < n; i++) |
||
2410 | params[i] = (GLdouble) formats[i]; |
||
2411 | } |
||
2412 | break; |
||
2413 | |||
2414 | /* GL_EXT_compiled_vertex_array */ |
||
2415 | case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: |
||
2416 | *params = (GLdouble) ctx->Array.LockFirst; |
||
2417 | break; |
||
2418 | case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: |
||
2419 | *params = (GLdouble) ctx->Array.LockCount; |
||
2420 | break; |
||
2421 | |||
2422 | /* GL_ARB_transpose_matrix */ |
||
2423 | case GL_TRANSPOSE_COLOR_MATRIX_ARB: |
||
2424 | { |
||
2425 | GLfloat tm[16]; |
||
2426 | GLuint i; |
||
2427 | _math_transposef(tm, ctx->ColorMatrixStack.Top->m); |
||
2428 | for (i=0;i<16;i++) { |
||
2429 | params[i] = (GLdouble) tm[i]; |
||
2430 | } |
||
2431 | } |
||
2432 | break; |
||
2433 | case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: |
||
2434 | { |
||
2435 | GLfloat tm[16]; |
||
2436 | GLuint i; |
||
2437 | _math_transposef(tm, ctx->ModelviewMatrixStack.Top->m); |
||
2438 | for (i=0;i<16;i++) { |
||
2439 | params[i] = (GLdouble) tm[i]; |
||
2440 | } |
||
2441 | } |
||
2442 | break; |
||
2443 | case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: |
||
2444 | { |
||
2445 | GLfloat tm[16]; |
||
2446 | GLuint i; |
||
2447 | _math_transposef(tm, ctx->ProjectionMatrixStack.Top->m); |
||
2448 | for (i=0;i<16;i++) { |
||
2449 | params[i] = (GLdouble) tm[i]; |
||
2450 | } |
||
2451 | } |
||
2452 | break; |
||
2453 | case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: |
||
2454 | { |
||
2455 | GLfloat tm[16]; |
||
2456 | GLuint i; |
||
2457 | _math_transposef(tm, ctx->TextureMatrixStack[texUnit].Top->m); |
||
2458 | for (i=0;i<16;i++) { |
||
2459 | params[i] = (GLdouble) tm[i]; |
||
2460 | } |
||
2461 | } |
||
2462 | break; |
||
2463 | |||
2464 | /* GL_HP_occlusion_test */ |
||
2465 | case GL_OCCLUSION_TEST_HP: |
||
2466 | CHECK_EXTENSION_D(HP_occlusion_test, pname); |
||
2467 | *params = (GLdouble) ctx->Depth.OcclusionTest; |
||
2468 | break; |
||
2469 | case GL_OCCLUSION_TEST_RESULT_HP: |
||
2470 | CHECK_EXTENSION_D(HP_occlusion_test, pname); |
||
2471 | if (ctx->Depth.OcclusionTest) |
||
2472 | *params = (GLdouble) ctx->OcclusionResult; |
||
2473 | else |
||
2474 | *params = (GLdouble) ctx->OcclusionResultSaved; |
||
2475 | /* reset flag now */ |
||
2476 | ctx->OcclusionResult = GL_FALSE; |
||
2477 | ctx->OcclusionResultSaved = GL_FALSE; |
||
2478 | break; |
||
2479 | |||
2480 | /* GL_SGIS_pixel_texture */ |
||
2481 | case GL_PIXEL_TEXTURE_SGIS: |
||
2482 | *params = (GLdouble) ctx->Pixel.PixelTextureEnabled; |
||
2483 | break; |
||
2484 | |||
2485 | /* GL_SGIX_pixel_texture */ |
||
2486 | case GL_PIXEL_TEX_GEN_SGIX: |
||
2487 | *params = (GLdouble) ctx->Pixel.PixelTextureEnabled; |
||
2488 | break; |
||
2489 | case GL_PIXEL_TEX_GEN_MODE_SGIX: |
||
2490 | *params = (GLdouble) pixel_texgen_mode(ctx); |
||
2491 | break; |
||
2492 | |||
2493 | /* GL_SGI_color_matrix (also in 1.2 imaging) */ |
||
2494 | case GL_COLOR_MATRIX_SGI: |
||
2495 | for (i=0;i<16;i++) { |
||
2496 | params[i] = (GLdouble) ctx->ColorMatrixStack.Top->m[i]; |
||
2497 | } |
||
2498 | break; |
||
2499 | case GL_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
2500 | *params = (GLdouble) (ctx->ColorMatrixStack.Depth + 1); |
||
2501 | break; |
||
2502 | case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
2503 | *params = (GLdouble) MAX_COLOR_STACK_DEPTH; |
||
2504 | break; |
||
2505 | case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: |
||
2506 | *params = (GLdouble) ctx->Pixel.PostColorMatrixScale[0]; |
||
2507 | break; |
||
2508 | case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: |
||
2509 | *params = (GLdouble) ctx->Pixel.PostColorMatrixScale[1]; |
||
2510 | break; |
||
2511 | case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: |
||
2512 | *params = (GLdouble) ctx->Pixel.PostColorMatrixScale[2]; |
||
2513 | break; |
||
2514 | case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: |
||
2515 | *params = (GLdouble) ctx->Pixel.PostColorMatrixScale[3]; |
||
2516 | break; |
||
2517 | case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: |
||
2518 | *params = (GLdouble) ctx->Pixel.PostColorMatrixBias[0]; |
||
2519 | break; |
||
2520 | case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: |
||
2521 | *params = (GLdouble) ctx->Pixel.PostColorMatrixBias[1]; |
||
2522 | break; |
||
2523 | case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: |
||
2524 | *params = (GLdouble) ctx->Pixel.PostColorMatrixBias[2]; |
||
2525 | break; |
||
2526 | case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: |
||
2527 | *params = (GLdouble) ctx->Pixel.PostColorMatrixBias[3]; |
||
2528 | break; |
||
2529 | |||
2530 | /* GL_EXT_convolution (also in 1.2 imaging) */ |
||
2531 | case GL_CONVOLUTION_1D_EXT: |
||
2532 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2533 | *params = (GLdouble) ctx->Pixel.Convolution1DEnabled; |
||
2534 | break; |
||
2535 | case GL_CONVOLUTION_2D: |
||
2536 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2537 | *params = (GLdouble) ctx->Pixel.Convolution2DEnabled; |
||
2538 | break; |
||
2539 | case GL_SEPARABLE_2D: |
||
2540 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2541 | *params = (GLdouble) ctx->Pixel.Separable2DEnabled; |
||
2542 | break; |
||
2543 | case GL_POST_CONVOLUTION_RED_SCALE_EXT: |
||
2544 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2545 | *params = (GLdouble) ctx->Pixel.PostConvolutionScale[0]; |
||
2546 | break; |
||
2547 | case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: |
||
2548 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2549 | *params = (GLdouble) ctx->Pixel.PostConvolutionScale[1]; |
||
2550 | break; |
||
2551 | case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: |
||
2552 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2553 | *params = (GLdouble) ctx->Pixel.PostConvolutionScale[2]; |
||
2554 | break; |
||
2555 | case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: |
||
2556 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2557 | *params = (GLdouble) ctx->Pixel.PostConvolutionScale[3]; |
||
2558 | break; |
||
2559 | case GL_POST_CONVOLUTION_RED_BIAS_EXT: |
||
2560 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2561 | *params = (GLdouble) ctx->Pixel.PostConvolutionBias[0]; |
||
2562 | break; |
||
2563 | case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: |
||
2564 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2565 | *params = (GLdouble) ctx->Pixel.PostConvolutionBias[1]; |
||
2566 | break; |
||
2567 | case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: |
||
2568 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2569 | *params = (GLdouble) ctx->Pixel.PostConvolutionBias[2]; |
||
2570 | break; |
||
2571 | case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: |
||
2572 | CHECK_EXTENSION_D(EXT_convolution, pname); |
||
2573 | *params = (GLdouble) ctx->Pixel.PostConvolutionBias[2]; |
||
2574 | break; |
||
2575 | |||
2576 | /* GL_EXT_histogram (also in 1.2 imaging) */ |
||
2577 | case GL_HISTOGRAM: |
||
2578 | CHECK_EXTENSION_D(EXT_histogram, pname); |
||
2579 | *params = (GLdouble) ctx->Pixel.HistogramEnabled; |
||
2580 | break; |
||
2581 | case GL_MINMAX: |
||
2582 | CHECK_EXTENSION_D(EXT_histogram, pname); |
||
2583 | *params = (GLdouble) ctx->Pixel.MinMaxEnabled; |
||
2584 | break; |
||
2585 | |||
2586 | /* GL_SGI_color_table (also in 1.2 imaging */ |
||
2587 | case GL_COLOR_TABLE_SGI: |
||
2588 | *params = (GLdouble) ctx->Pixel.ColorTableEnabled; |
||
2589 | break; |
||
2590 | case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: |
||
2591 | *params = (GLdouble) ctx->Pixel.PostConvolutionColorTableEnabled; |
||
2592 | break; |
||
2593 | case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: |
||
2594 | *params = (GLdouble) ctx->Pixel.PostColorMatrixColorTableEnabled; |
||
2595 | break; |
||
2596 | |||
2597 | /* GL_EXT_secondary_color */ |
||
2598 | case GL_COLOR_SUM_EXT: |
||
2599 | CHECK_EXTENSION_D(EXT_secondary_color, pname); |
||
2600 | *params = (GLdouble) ctx->Fog.ColorSumEnabled; |
||
2601 | break; |
||
2602 | case GL_CURRENT_SECONDARY_COLOR_EXT: |
||
2603 | CHECK_EXTENSION_D(EXT_secondary_color, pname); |
||
2604 | FLUSH_CURRENT(ctx, 0); |
||
2605 | params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]; |
||
2606 | params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]; |
||
2607 | params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]; |
||
2608 | break; |
||
2609 | case GL_SECONDARY_COLOR_ARRAY_EXT: |
||
2610 | CHECK_EXTENSION_D(EXT_secondary_color, pname); |
||
2611 | *params = (GLdouble) ctx->Array.SecondaryColor.Enabled; |
||
2612 | break; |
||
2613 | case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: |
||
2614 | CHECK_EXTENSION_D(EXT_secondary_color, pname); |
||
2615 | *params = (GLdouble) ctx->Array.SecondaryColor.Type; |
||
2616 | break; |
||
2617 | case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: |
||
2618 | CHECK_EXTENSION_D(EXT_secondary_color, pname); |
||
2619 | *params = (GLdouble) ctx->Array.SecondaryColor.Stride; |
||
2620 | break; |
||
2621 | case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: |
||
2622 | CHECK_EXTENSION_D(EXT_secondary_color, pname); |
||
2623 | *params = (GLdouble) ctx->Array.SecondaryColor.Stride; |
||
2624 | break; |
||
2625 | |||
2626 | /* GL_EXT_fog_coord */ |
||
2627 | case GL_CURRENT_FOG_COORDINATE_EXT: |
||
2628 | CHECK_EXTENSION_D(EXT_fog_coord, pname); |
||
2629 | FLUSH_CURRENT(ctx, 0); |
||
2630 | *params = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; |
||
2631 | break; |
||
2632 | case GL_FOG_COORDINATE_ARRAY_EXT: |
||
2633 | CHECK_EXTENSION_D(EXT_fog_coord, pname); |
||
2634 | *params = (GLdouble) ctx->Array.FogCoord.Enabled; |
||
2635 | break; |
||
2636 | case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: |
||
2637 | CHECK_EXTENSION_D(EXT_fog_coord, pname); |
||
2638 | *params = (GLdouble) ctx->Array.FogCoord.Type; |
||
2639 | break; |
||
2640 | case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: |
||
2641 | CHECK_EXTENSION_D(EXT_fog_coord, pname); |
||
2642 | *params = (GLdouble) ctx->Array.FogCoord.Stride; |
||
2643 | break; |
||
2644 | |||
2645 | /* GL_EXT_texture_lod_bias */ |
||
2646 | case GL_MAX_TEXTURE_LOD_BIAS_EXT: |
||
2647 | *params = (GLdouble) ctx->Const.MaxTextureLodBias; |
||
2648 | break; |
||
2649 | |||
2650 | /* GL_EXT_texture_filter_anisotropic */ |
||
2651 | case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
||
2652 | CHECK_EXTENSION_D(EXT_texture_filter_anisotropic, pname); |
||
2653 | *params = (GLdouble) ctx->Const.MaxTextureMaxAnisotropy; |
||
2654 | break; |
||
2655 | |||
2656 | /* GL_ARB_multisample */ |
||
2657 | case GL_MULTISAMPLE_ARB: |
||
2658 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2659 | *params = (GLdouble) ctx->Multisample.Enabled; |
||
2660 | break; |
||
2661 | case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: |
||
2662 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2663 | *params = (GLdouble) ctx->Multisample.SampleAlphaToCoverage; |
||
2664 | break; |
||
2665 | case GL_SAMPLE_ALPHA_TO_ONE_ARB: |
||
2666 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2667 | *params = (GLdouble) ctx->Multisample.SampleAlphaToOne; |
||
2668 | break; |
||
2669 | case GL_SAMPLE_COVERAGE_ARB: |
||
2670 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2671 | *params = (GLdouble) ctx->Multisample.SampleCoverage; |
||
2672 | break; |
||
2673 | case GL_SAMPLE_COVERAGE_VALUE_ARB: |
||
2674 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2675 | *params = ctx->Multisample.SampleCoverageValue; |
||
2676 | break; |
||
2677 | case GL_SAMPLE_COVERAGE_INVERT_ARB: |
||
2678 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2679 | *params = (GLdouble) ctx->Multisample.SampleCoverageInvert; |
||
2680 | break; |
||
2681 | case GL_SAMPLE_BUFFERS_ARB: |
||
2682 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2683 | *params = 0.0; /* XXX fix someday */ |
||
2684 | break; |
||
2685 | case GL_SAMPLES_ARB: |
||
2686 | CHECK_EXTENSION_D(ARB_multisample, pname); |
||
2687 | *params = 0.0; /* XXX fix someday */ |
||
2688 | break; |
||
2689 | |||
2690 | /* GL_IBM_rasterpos_clip */ |
||
2691 | case GL_RASTER_POSITION_UNCLIPPED_IBM: |
||
2692 | CHECK_EXTENSION_D(IBM_rasterpos_clip, pname); |
||
2693 | *params = (GLdouble) ctx->Transform.RasterPositionUnclipped; |
||
2694 | break; |
||
2695 | |||
2696 | /* GL_NV_point_sprite */ |
||
2697 | case GL_POINT_SPRITE_NV: |
||
2698 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
2699 | *params = (GLdouble) ctx->Point.PointSprite; |
||
2700 | break; |
||
2701 | case GL_POINT_SPRITE_R_MODE_NV: |
||
2702 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
2703 | *params = (GLdouble) ctx->Point.SpriteRMode; |
||
2704 | break; |
||
2705 | |||
2706 | /* GL_SGIS_generate_mipmap */ |
||
2707 | case GL_GENERATE_MIPMAP_HINT_SGIS: |
||
2708 | CHECK_EXTENSION_D(SGIS_generate_mipmap, pname); |
||
2709 | *params = (GLdouble) ctx->Hint.GenerateMipmap; |
||
2710 | break; |
||
2711 | |||
2712 | #if FEATURE_NV_vertex_program |
||
2713 | case GL_VERTEX_PROGRAM_NV: |
||
2714 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2715 | *params = (GLdouble) ctx->VertexProgram.Enabled; |
||
2716 | break; |
||
2717 | case GL_VERTEX_PROGRAM_POINT_SIZE_NV: |
||
2718 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2719 | *params = (GLdouble) ctx->VertexProgram.PointSizeEnabled; |
||
2720 | break; |
||
2721 | case GL_VERTEX_PROGRAM_TWO_SIDE_NV: |
||
2722 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2723 | *params = (GLdouble) ctx->VertexProgram.TwoSideEnabled; |
||
2724 | break; |
||
2725 | case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV: |
||
2726 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2727 | *params = (GLdouble) MAX_PROGRAM_STACK_DEPTH; |
||
2728 | break; |
||
2729 | case GL_MAX_TRACK_MATRICES_NV: |
||
2730 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2731 | *params = (GLdouble) MAX_PROGRAM_MATRICES; |
||
2732 | break; |
||
2733 | case GL_CURRENT_MATRIX_STACK_DEPTH_NV: |
||
2734 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2735 | *params = (GLdouble) ctx->CurrentStack->Depth; |
||
2736 | break; |
||
2737 | case GL_CURRENT_MATRIX_NV: |
||
2738 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2739 | *params = (GLdouble) ctx->Transform.MatrixMode; |
||
2740 | break; |
||
2741 | case GL_VERTEX_PROGRAM_BINDING_NV: |
||
2742 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2743 | *params = (GLdouble) ctx->VertexProgram.CurrentID; |
||
2744 | break; |
||
2745 | case GL_PROGRAM_ERROR_POSITION_NV: |
||
2746 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2747 | *params = (GLdouble) ctx->VertexProgram.ErrorPos; |
||
2748 | break; |
||
2749 | case GL_VERTEX_ATTRIB_ARRAY0_NV: |
||
2750 | case GL_VERTEX_ATTRIB_ARRAY1_NV: |
||
2751 | case GL_VERTEX_ATTRIB_ARRAY2_NV: |
||
2752 | case GL_VERTEX_ATTRIB_ARRAY3_NV: |
||
2753 | case GL_VERTEX_ATTRIB_ARRAY4_NV: |
||
2754 | case GL_VERTEX_ATTRIB_ARRAY5_NV: |
||
2755 | case GL_VERTEX_ATTRIB_ARRAY6_NV: |
||
2756 | case GL_VERTEX_ATTRIB_ARRAY7_NV: |
||
2757 | case GL_VERTEX_ATTRIB_ARRAY8_NV: |
||
2758 | case GL_VERTEX_ATTRIB_ARRAY9_NV: |
||
2759 | case GL_VERTEX_ATTRIB_ARRAY10_NV: |
||
2760 | case GL_VERTEX_ATTRIB_ARRAY11_NV: |
||
2761 | case GL_VERTEX_ATTRIB_ARRAY12_NV: |
||
2762 | case GL_VERTEX_ATTRIB_ARRAY13_NV: |
||
2763 | case GL_VERTEX_ATTRIB_ARRAY14_NV: |
||
2764 | case GL_VERTEX_ATTRIB_ARRAY15_NV: |
||
2765 | CHECK_EXTENSION_D(NV_vertex_program, pname); |
||
2766 | { |
||
2767 | GLuint n = (GLuint) pname - GL_VERTEX_ATTRIB_ARRAY0_NV; |
||
2768 | *params = (GLdouble) ctx->Array.VertexAttrib[n].Enabled; |
||
2769 | } |
||
2770 | break; |
||
2771 | case GL_MAP1_VERTEX_ATTRIB0_4_NV: |
||
2772 | case GL_MAP1_VERTEX_ATTRIB1_4_NV: |
||
2773 | case GL_MAP1_VERTEX_ATTRIB2_4_NV: |
||
2774 | case GL_MAP1_VERTEX_ATTRIB3_4_NV: |
||
2775 | case GL_MAP1_VERTEX_ATTRIB4_4_NV: |
||
2776 | case GL_MAP1_VERTEX_ATTRIB5_4_NV: |
||
2777 | case GL_MAP1_VERTEX_ATTRIB6_4_NV: |
||
2778 | case GL_MAP1_VERTEX_ATTRIB7_4_NV: |
||
2779 | case GL_MAP1_VERTEX_ATTRIB8_4_NV: |
||
2780 | case GL_MAP1_VERTEX_ATTRIB9_4_NV: |
||
2781 | case GL_MAP1_VERTEX_ATTRIB10_4_NV: |
||
2782 | case GL_MAP1_VERTEX_ATTRIB11_4_NV: |
||
2783 | case GL_MAP1_VERTEX_ATTRIB12_4_NV: |
||
2784 | case GL_MAP1_VERTEX_ATTRIB13_4_NV: |
||
2785 | case GL_MAP1_VERTEX_ATTRIB14_4_NV: |
||
2786 | case GL_MAP1_VERTEX_ATTRIB15_4_NV: |
||
2787 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
2788 | { |
||
2789 | GLuint n = (GLuint) pname - GL_MAP1_VERTEX_ATTRIB0_4_NV; |
||
2790 | *params = (GLdouble) ctx->Eval.Map1Attrib[n]; |
||
2791 | } |
||
2792 | break; |
||
2793 | case GL_MAP2_VERTEX_ATTRIB0_4_NV: |
||
2794 | case GL_MAP2_VERTEX_ATTRIB1_4_NV: |
||
2795 | case GL_MAP2_VERTEX_ATTRIB2_4_NV: |
||
2796 | case GL_MAP2_VERTEX_ATTRIB3_4_NV: |
||
2797 | case GL_MAP2_VERTEX_ATTRIB4_4_NV: |
||
2798 | case GL_MAP2_VERTEX_ATTRIB5_4_NV: |
||
2799 | case GL_MAP2_VERTEX_ATTRIB6_4_NV: |
||
2800 | case GL_MAP2_VERTEX_ATTRIB7_4_NV: |
||
2801 | case GL_MAP2_VERTEX_ATTRIB8_4_NV: |
||
2802 | case GL_MAP2_VERTEX_ATTRIB9_4_NV: |
||
2803 | case GL_MAP2_VERTEX_ATTRIB10_4_NV: |
||
2804 | case GL_MAP2_VERTEX_ATTRIB11_4_NV: |
||
2805 | case GL_MAP2_VERTEX_ATTRIB12_4_NV: |
||
2806 | case GL_MAP2_VERTEX_ATTRIB13_4_NV: |
||
2807 | case GL_MAP2_VERTEX_ATTRIB14_4_NV: |
||
2808 | case GL_MAP2_VERTEX_ATTRIB15_4_NV: |
||
2809 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
2810 | { |
||
2811 | GLuint n = (GLuint) pname - GL_MAP2_VERTEX_ATTRIB0_4_NV; |
||
2812 | *params = (GLdouble) ctx->Eval.Map2Attrib[n]; |
||
2813 | } |
||
2814 | break; |
||
2815 | #endif /* FEATURE_NV_vertex_program */ |
||
2816 | |||
2817 | /* GL_NV_texture_rectangle */ |
||
2818 | case GL_TEXTURE_RECTANGLE_NV: |
||
2819 | CHECK_EXTENSION_D(NV_texture_rectangle, pname); |
||
2820 | *params = (GLdouble) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV); |
||
2821 | break; |
||
2822 | case GL_TEXTURE_BINDING_RECTANGLE_NV: |
||
2823 | CHECK_EXTENSION_D(NV_texture_rectangle, pname); |
||
2824 | *params = (GLdouble) textureUnit->CurrentRect->Name; |
||
2825 | break; |
||
2826 | case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: |
||
2827 | CHECK_EXTENSION_D(NV_texture_rectangle, pname); |
||
2828 | *params = (GLdouble) ctx->Const.MaxTextureRectSize; |
||
2829 | break; |
||
2830 | |||
2831 | /* GL_EXT_stencil_two_side */ |
||
2832 | case GL_STENCIL_TEST_TWO_SIDE_EXT: |
||
2833 | CHECK_EXTENSION_D(EXT_stencil_two_side, pname); |
||
2834 | *params = (GLdouble) ctx->Stencil.TestTwoSide; |
||
2835 | break; |
||
2836 | case GL_ACTIVE_STENCIL_FACE_EXT: |
||
2837 | CHECK_EXTENSION_D(EXT_stencil_two_side, pname); |
||
2838 | *params = (GLdouble) (ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); |
||
2839 | break; |
||
2840 | |||
2841 | default: |
||
2842 | _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev(pname=0x%x)", pname); |
||
2843 | } |
||
2844 | } |
||
2845 | |||
2846 | |||
2847 | void |
||
2848 | _mesa_GetFloatv( GLenum pname, GLfloat *params ) |
||
2849 | { |
||
2850 | GET_CURRENT_CONTEXT(ctx); |
||
2851 | GLuint i; |
||
2852 | GLuint texUnit = ctx->Texture.CurrentUnit; |
||
2853 | const struct gl_texture_unit *textureUnit = &ctx->Texture.Unit[texUnit]; |
||
2854 | ASSERT_OUTSIDE_BEGIN_END(ctx); |
||
2855 | |||
2856 | if (!params) |
||
2857 | return; |
||
2858 | |||
2859 | /* We need this in order to get correct results for |
||
2860 | * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases. |
||
2861 | */ |
||
2862 | FLUSH_VERTICES(ctx, 0); |
||
2863 | |||
2864 | if (MESA_VERBOSE & VERBOSE_API) |
||
2865 | _mesa_debug(ctx, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname)); |
||
2866 | |||
2867 | if (ctx->Driver.GetFloatv && (*ctx->Driver.GetFloatv)(ctx, pname, params)) |
||
2868 | return; |
||
2869 | |||
2870 | switch (pname) { |
||
2871 | case GL_ACCUM_RED_BITS: |
||
2872 | *params = (GLfloat) ctx->Visual.accumRedBits; |
||
2873 | break; |
||
2874 | case GL_ACCUM_GREEN_BITS: |
||
2875 | *params = (GLfloat) ctx->Visual.accumGreenBits; |
||
2876 | break; |
||
2877 | case GL_ACCUM_BLUE_BITS: |
||
2878 | *params = (GLfloat) ctx->Visual.accumBlueBits; |
||
2879 | break; |
||
2880 | case GL_ACCUM_ALPHA_BITS: |
||
2881 | *params = (GLfloat) ctx->Visual.accumAlphaBits; |
||
2882 | break; |
||
2883 | case GL_ACCUM_CLEAR_VALUE: |
||
2884 | params[0] = ctx->Accum.ClearColor[0]; |
||
2885 | params[1] = ctx->Accum.ClearColor[1]; |
||
2886 | params[2] = ctx->Accum.ClearColor[2]; |
||
2887 | params[3] = ctx->Accum.ClearColor[3]; |
||
2888 | break; |
||
2889 | case GL_ALPHA_BIAS: |
||
2890 | *params = ctx->Pixel.AlphaBias; |
||
2891 | break; |
||
2892 | case GL_ALPHA_BITS: |
||
2893 | *params = (GLfloat) ctx->Visual.alphaBits; |
||
2894 | break; |
||
2895 | case GL_ALPHA_SCALE: |
||
2896 | *params = ctx->Pixel.AlphaScale; |
||
2897 | break; |
||
2898 | case GL_ALPHA_TEST: |
||
2899 | *params = (GLfloat) ctx->Color.AlphaEnabled; |
||
2900 | break; |
||
2901 | case GL_ALPHA_TEST_FUNC: |
||
2902 | *params = ENUM_TO_FLOAT(ctx->Color.AlphaFunc); |
||
2903 | break; |
||
2904 | case GL_ALPHA_TEST_REF: |
||
2905 | *params = (GLfloat) ctx->Color.AlphaRef; |
||
2906 | break; |
||
2907 | case GL_ATTRIB_STACK_DEPTH: |
||
2908 | *params = (GLfloat) (ctx->AttribStackDepth); |
||
2909 | break; |
||
2910 | case GL_AUTO_NORMAL: |
||
2911 | *params = (GLfloat) ctx->Eval.AutoNormal; |
||
2912 | break; |
||
2913 | case GL_AUX_BUFFERS: |
||
2914 | *params = (GLfloat) ctx->Const.NumAuxBuffers; |
||
2915 | break; |
||
2916 | case GL_BLEND: |
||
2917 | *params = (GLfloat) ctx->Color.BlendEnabled; |
||
2918 | break; |
||
2919 | case GL_BLEND_DST: |
||
2920 | *params = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); |
||
2921 | break; |
||
2922 | case GL_BLEND_SRC: |
||
2923 | *params = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); |
||
2924 | break; |
||
2925 | case GL_BLEND_SRC_RGB_EXT: |
||
2926 | *params = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); |
||
2927 | break; |
||
2928 | case GL_BLEND_DST_RGB_EXT: |
||
2929 | *params = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); |
||
2930 | break; |
||
2931 | case GL_BLEND_SRC_ALPHA_EXT: |
||
2932 | *params = ENUM_TO_FLOAT(ctx->Color.BlendSrcA); |
||
2933 | break; |
||
2934 | case GL_BLEND_DST_ALPHA_EXT: |
||
2935 | *params = ENUM_TO_FLOAT(ctx->Color.BlendDstA); |
||
2936 | break; |
||
2937 | case GL_BLEND_EQUATION_EXT: |
||
2938 | *params = ENUM_TO_FLOAT(ctx->Color.BlendEquation); |
||
2939 | break; |
||
2940 | case GL_BLEND_COLOR_EXT: |
||
2941 | params[0] = ctx->Color.BlendColor[0]; |
||
2942 | params[1] = ctx->Color.BlendColor[1]; |
||
2943 | params[2] = ctx->Color.BlendColor[2]; |
||
2944 | params[3] = ctx->Color.BlendColor[3]; |
||
2945 | break; |
||
2946 | case GL_BLUE_BIAS: |
||
2947 | *params = ctx->Pixel.BlueBias; |
||
2948 | break; |
||
2949 | case GL_BLUE_BITS: |
||
2950 | *params = (GLfloat) ctx->Visual.blueBits; |
||
2951 | break; |
||
2952 | case GL_BLUE_SCALE: |
||
2953 | *params = ctx->Pixel.BlueScale; |
||
2954 | break; |
||
2955 | case GL_CLIENT_ATTRIB_STACK_DEPTH: |
||
2956 | *params = (GLfloat) (ctx->ClientAttribStackDepth); |
||
2957 | break; |
||
2958 | case GL_CLIP_PLANE0: |
||
2959 | case GL_CLIP_PLANE1: |
||
2960 | case GL_CLIP_PLANE2: |
||
2961 | case GL_CLIP_PLANE3: |
||
2962 | case GL_CLIP_PLANE4: |
||
2963 | case GL_CLIP_PLANE5: |
||
2964 | if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0))) |
||
2965 | *params = 1.0; |
||
2966 | else |
||
2967 | *params = 0.0; |
||
2968 | break; |
||
2969 | case GL_COLOR_CLEAR_VALUE: |
||
2970 | params[0] = ctx->Color.ClearColor[0]; |
||
2971 | params[1] = ctx->Color.ClearColor[1]; |
||
2972 | params[2] = ctx->Color.ClearColor[2]; |
||
2973 | params[3] = ctx->Color.ClearColor[3]; |
||
2974 | break; |
||
2975 | case GL_COLOR_MATERIAL: |
||
2976 | *params = (GLfloat) ctx->Light.ColorMaterialEnabled; |
||
2977 | break; |
||
2978 | case GL_COLOR_MATERIAL_FACE: |
||
2979 | *params = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace); |
||
2980 | break; |
||
2981 | case GL_COLOR_MATERIAL_PARAMETER: |
||
2982 | *params = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode); |
||
2983 | break; |
||
2984 | case GL_COLOR_WRITEMASK: |
||
2985 | params[0] = ctx->Color.ColorMask[RCOMP] ? 1.0F : 0.0F; |
||
2986 | params[1] = ctx->Color.ColorMask[GCOMP] ? 1.0F : 0.0F; |
||
2987 | params[2] = ctx->Color.ColorMask[BCOMP] ? 1.0F : 0.0F; |
||
2988 | params[3] = ctx->Color.ColorMask[ACOMP] ? 1.0F : 0.0F; |
||
2989 | break; |
||
2990 | case GL_CULL_FACE: |
||
2991 | *params = (GLfloat) ctx->Polygon.CullFlag; |
||
2992 | break; |
||
2993 | case GL_CULL_FACE_MODE: |
||
2994 | *params = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode); |
||
2995 | break; |
||
2996 | case GL_CURRENT_COLOR: |
||
2997 | FLUSH_CURRENT(ctx, 0); |
||
2998 | params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; |
||
2999 | params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; |
||
3000 | params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; |
||
3001 | params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; |
||
3002 | break; |
||
3003 | case GL_CURRENT_INDEX: |
||
3004 | FLUSH_CURRENT(ctx, 0); |
||
3005 | *params = (GLfloat) ctx->Current.Index; |
||
3006 | break; |
||
3007 | case GL_CURRENT_NORMAL: |
||
3008 | FLUSH_CURRENT(ctx, 0); |
||
3009 | params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; |
||
3010 | params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; |
||
3011 | params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; |
||
3012 | break; |
||
3013 | case GL_CURRENT_RASTER_COLOR: |
||
3014 | params[0] = ctx->Current.RasterColor[0]; |
||
3015 | params[1] = ctx->Current.RasterColor[1]; |
||
3016 | params[2] = ctx->Current.RasterColor[2]; |
||
3017 | params[3] = ctx->Current.RasterColor[3]; |
||
3018 | break; |
||
3019 | case GL_CURRENT_RASTER_DISTANCE: |
||
3020 | params[0] = ctx->Current.RasterDistance; |
||
3021 | break; |
||
3022 | case GL_CURRENT_RASTER_INDEX: |
||
3023 | *params = (GLfloat) ctx->Current.RasterIndex; |
||
3024 | break; |
||
3025 | case GL_CURRENT_RASTER_POSITION: |
||
3026 | params[0] = ctx->Current.RasterPos[0]; |
||
3027 | params[1] = ctx->Current.RasterPos[1]; |
||
3028 | params[2] = ctx->Current.RasterPos[2]; |
||
3029 | params[3] = ctx->Current.RasterPos[3]; |
||
3030 | break; |
||
3031 | case GL_CURRENT_RASTER_TEXTURE_COORDS: |
||
3032 | params[0] = ctx->Current.RasterTexCoords[texUnit][0]; |
||
3033 | params[1] = ctx->Current.RasterTexCoords[texUnit][1]; |
||
3034 | params[2] = ctx->Current.RasterTexCoords[texUnit][2]; |
||
3035 | params[3] = ctx->Current.RasterTexCoords[texUnit][3]; |
||
3036 | break; |
||
3037 | case GL_CURRENT_RASTER_POSITION_VALID: |
||
3038 | *params = (GLfloat) ctx->Current.RasterPosValid; |
||
3039 | break; |
||
3040 | case GL_CURRENT_TEXTURE_COORDS: |
||
3041 | FLUSH_CURRENT(ctx, 0); |
||
3042 | params[0] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]; |
||
3043 | params[1] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]; |
||
3044 | params[2] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]; |
||
3045 | params[3] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]; |
||
3046 | break; |
||
3047 | case GL_DEPTH_BIAS: |
||
3048 | *params = (GLfloat) ctx->Pixel.DepthBias; |
||
3049 | break; |
||
3050 | case GL_DEPTH_BITS: |
||
3051 | *params = (GLfloat) ctx->Visual.depthBits; |
||
3052 | break; |
||
3053 | case GL_DEPTH_CLEAR_VALUE: |
||
3054 | *params = (GLfloat) ctx->Depth.Clear; |
||
3055 | break; |
||
3056 | case GL_DEPTH_FUNC: |
||
3057 | *params = ENUM_TO_FLOAT(ctx->Depth.Func); |
||
3058 | break; |
||
3059 | case GL_DEPTH_RANGE: |
||
3060 | params[0] = (GLfloat) ctx->Viewport.Near; |
||
3061 | params[1] = (GLfloat) ctx->Viewport.Far; |
||
3062 | break; |
||
3063 | case GL_DEPTH_SCALE: |
||
3064 | *params = (GLfloat) ctx->Pixel.DepthScale; |
||
3065 | break; |
||
3066 | case GL_DEPTH_TEST: |
||
3067 | *params = (GLfloat) ctx->Depth.Test; |
||
3068 | break; |
||
3069 | case GL_DEPTH_WRITEMASK: |
||
3070 | *params = (GLfloat) ctx->Depth.Mask; |
||
3071 | break; |
||
3072 | case GL_DITHER: |
||
3073 | *params = (GLfloat) ctx->Color.DitherFlag; |
||
3074 | break; |
||
3075 | case GL_DOUBLEBUFFER: |
||
3076 | *params = (GLfloat) ctx->Visual.doubleBufferMode; |
||
3077 | break; |
||
3078 | case GL_DRAW_BUFFER: |
||
3079 | *params = ENUM_TO_FLOAT(ctx->Color.DrawBuffer); |
||
3080 | break; |
||
3081 | case GL_EDGE_FLAG: |
||
3082 | FLUSH_CURRENT(ctx, 0); |
||
3083 | *params = (GLfloat) ctx->Current.EdgeFlag; |
||
3084 | break; |
||
3085 | case GL_FEEDBACK_BUFFER_SIZE: |
||
3086 | *params = (GLfloat) ctx->Feedback.BufferSize; |
||
3087 | break; |
||
3088 | case GL_FEEDBACK_BUFFER_TYPE: |
||
3089 | *params = ENUM_TO_FLOAT(ctx->Feedback.Type); |
||
3090 | break; |
||
3091 | case GL_FOG: |
||
3092 | *params = (GLfloat) ctx->Fog.Enabled; |
||
3093 | break; |
||
3094 | case GL_FOG_COLOR: |
||
3095 | params[0] = ctx->Fog.Color[0]; |
||
3096 | params[1] = ctx->Fog.Color[1]; |
||
3097 | params[2] = ctx->Fog.Color[2]; |
||
3098 | params[3] = ctx->Fog.Color[3]; |
||
3099 | break; |
||
3100 | case GL_FOG_DENSITY: |
||
3101 | *params = ctx->Fog.Density; |
||
3102 | break; |
||
3103 | case GL_FOG_END: |
||
3104 | *params = ctx->Fog.End; |
||
3105 | break; |
||
3106 | case GL_FOG_HINT: |
||
3107 | *params = ENUM_TO_FLOAT(ctx->Hint.Fog); |
||
3108 | break; |
||
3109 | case GL_FOG_INDEX: |
||
3110 | *params = ctx->Fog.Index; |
||
3111 | break; |
||
3112 | case GL_FOG_MODE: |
||
3113 | *params = ENUM_TO_FLOAT(ctx->Fog.Mode); |
||
3114 | break; |
||
3115 | case GL_FOG_START: |
||
3116 | *params = ctx->Fog.Start; |
||
3117 | break; |
||
3118 | case GL_FRONT_FACE: |
||
3119 | *params = ENUM_TO_FLOAT(ctx->Polygon.FrontFace); |
||
3120 | break; |
||
3121 | case GL_GREEN_BIAS: |
||
3122 | *params = (GLfloat) ctx->Pixel.GreenBias; |
||
3123 | break; |
||
3124 | case GL_GREEN_BITS: |
||
3125 | *params = (GLfloat) ctx->Visual.greenBits; |
||
3126 | break; |
||
3127 | case GL_GREEN_SCALE: |
||
3128 | *params = (GLfloat) ctx->Pixel.GreenScale; |
||
3129 | break; |
||
3130 | case GL_INDEX_BITS: |
||
3131 | *params = (GLfloat) ctx->Visual.indexBits; |
||
3132 | break; |
||
3133 | case GL_INDEX_CLEAR_VALUE: |
||
3134 | *params = (GLfloat) ctx->Color.ClearIndex; |
||
3135 | break; |
||
3136 | case GL_INDEX_MODE: |
||
3137 | *params = ctx->Visual.rgbMode ? 0.0F : 1.0F; |
||
3138 | break; |
||
3139 | case GL_INDEX_OFFSET: |
||
3140 | *params = (GLfloat) ctx->Pixel.IndexOffset; |
||
3141 | break; |
||
3142 | case GL_INDEX_SHIFT: |
||
3143 | *params = (GLfloat) ctx->Pixel.IndexShift; |
||
3144 | break; |
||
3145 | case GL_INDEX_WRITEMASK: |
||
3146 | *params = (GLfloat) ctx->Color.IndexMask; |
||
3147 | break; |
||
3148 | case GL_LIGHT0: |
||
3149 | case GL_LIGHT1: |
||
3150 | case GL_LIGHT2: |
||
3151 | case GL_LIGHT3: |
||
3152 | case GL_LIGHT4: |
||
3153 | case GL_LIGHT5: |
||
3154 | case GL_LIGHT6: |
||
3155 | case GL_LIGHT7: |
||
3156 | *params = (GLfloat) ctx->Light.Light[pname-GL_LIGHT0].Enabled; |
||
3157 | break; |
||
3158 | case GL_LIGHTING: |
||
3159 | *params = (GLfloat) ctx->Light.Enabled; |
||
3160 | break; |
||
3161 | case GL_LIGHT_MODEL_AMBIENT: |
||
3162 | params[0] = ctx->Light.Model.Ambient[0]; |
||
3163 | params[1] = ctx->Light.Model.Ambient[1]; |
||
3164 | params[2] = ctx->Light.Model.Ambient[2]; |
||
3165 | params[3] = ctx->Light.Model.Ambient[3]; |
||
3166 | break; |
||
3167 | case GL_LIGHT_MODEL_COLOR_CONTROL: |
||
3168 | params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl); |
||
3169 | break; |
||
3170 | case GL_LIGHT_MODEL_LOCAL_VIEWER: |
||
3171 | *params = (GLfloat) ctx->Light.Model.LocalViewer; |
||
3172 | break; |
||
3173 | case GL_LIGHT_MODEL_TWO_SIDE: |
||
3174 | *params = (GLfloat) ctx->Light.Model.TwoSide; |
||
3175 | break; |
||
3176 | case GL_LINE_SMOOTH: |
||
3177 | *params = (GLfloat) ctx->Line.SmoothFlag; |
||
3178 | break; |
||
3179 | case GL_LINE_SMOOTH_HINT: |
||
3180 | *params = ENUM_TO_FLOAT(ctx->Hint.LineSmooth); |
||
3181 | break; |
||
3182 | case GL_LINE_STIPPLE: |
||
3183 | *params = (GLfloat) ctx->Line.StippleFlag; |
||
3184 | break; |
||
3185 | case GL_LINE_STIPPLE_PATTERN: |
||
3186 | *params = (GLfloat) ctx->Line.StipplePattern; |
||
3187 | break; |
||
3188 | case GL_LINE_STIPPLE_REPEAT: |
||
3189 | *params = (GLfloat) ctx->Line.StippleFactor; |
||
3190 | break; |
||
3191 | case GL_LINE_WIDTH: |
||
3192 | *params = (GLfloat) ctx->Line.Width; |
||
3193 | break; |
||
3194 | case GL_LINE_WIDTH_GRANULARITY: |
||
3195 | *params = (GLfloat) ctx->Const.LineWidthGranularity; |
||
3196 | break; |
||
3197 | case GL_LINE_WIDTH_RANGE: |
||
3198 | params[0] = (GLfloat) ctx->Const.MinLineWidthAA; |
||
3199 | params[1] = (GLfloat) ctx->Const.MaxLineWidthAA; |
||
3200 | break; |
||
3201 | case GL_ALIASED_LINE_WIDTH_RANGE: |
||
3202 | params[0] = (GLfloat) ctx->Const.MinLineWidth; |
||
3203 | params[1] = (GLfloat) ctx->Const.MaxLineWidth; |
||
3204 | break; |
||
3205 | case GL_LIST_BASE: |
||
3206 | *params = (GLfloat) ctx->List.ListBase; |
||
3207 | break; |
||
3208 | case GL_LIST_INDEX: |
||
3209 | *params = (GLfloat) ctx->CurrentListNum; |
||
3210 | break; |
||
3211 | case GL_LIST_MODE: |
||
3212 | *params = ctx->ExecuteFlag ? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE) |
||
3213 | : ENUM_TO_FLOAT(GL_COMPILE); |
||
3214 | break; |
||
3215 | case GL_INDEX_LOGIC_OP: |
||
3216 | *params = (GLfloat) ctx->Color.IndexLogicOpEnabled; |
||
3217 | break; |
||
3218 | case GL_COLOR_LOGIC_OP: |
||
3219 | *params = (GLfloat) ctx->Color.ColorLogicOpEnabled; |
||
3220 | break; |
||
3221 | case GL_LOGIC_OP_MODE: |
||
3222 | *params = ENUM_TO_FLOAT(ctx->Color.LogicOp); |
||
3223 | break; |
||
3224 | case GL_MAP1_COLOR_4: |
||
3225 | *params = (GLfloat) ctx->Eval.Map1Color4; |
||
3226 | break; |
||
3227 | case GL_MAP1_GRID_DOMAIN: |
||
3228 | params[0] = ctx->Eval.MapGrid1u1; |
||
3229 | params[1] = ctx->Eval.MapGrid1u2; |
||
3230 | break; |
||
3231 | case GL_MAP1_GRID_SEGMENTS: |
||
3232 | *params = (GLfloat) ctx->Eval.MapGrid1un; |
||
3233 | break; |
||
3234 | case GL_MAP1_INDEX: |
||
3235 | *params = (GLfloat) ctx->Eval.Map1Index; |
||
3236 | break; |
||
3237 | case GL_MAP1_NORMAL: |
||
3238 | *params = (GLfloat) ctx->Eval.Map1Normal; |
||
3239 | break; |
||
3240 | case GL_MAP1_TEXTURE_COORD_1: |
||
3241 | *params = (GLfloat) ctx->Eval.Map1TextureCoord1; |
||
3242 | break; |
||
3243 | case GL_MAP1_TEXTURE_COORD_2: |
||
3244 | *params = (GLfloat) ctx->Eval.Map1TextureCoord2; |
||
3245 | break; |
||
3246 | case GL_MAP1_TEXTURE_COORD_3: |
||
3247 | *params = (GLfloat) ctx->Eval.Map1TextureCoord3; |
||
3248 | break; |
||
3249 | case GL_MAP1_TEXTURE_COORD_4: |
||
3250 | *params = (GLfloat) ctx->Eval.Map1TextureCoord4; |
||
3251 | break; |
||
3252 | case GL_MAP1_VERTEX_3: |
||
3253 | *params = (GLfloat) ctx->Eval.Map1Vertex3; |
||
3254 | break; |
||
3255 | case GL_MAP1_VERTEX_4: |
||
3256 | *params = (GLfloat) ctx->Eval.Map1Vertex4; |
||
3257 | break; |
||
3258 | case GL_MAP2_COLOR_4: |
||
3259 | *params = (GLfloat) ctx->Eval.Map2Color4; |
||
3260 | break; |
||
3261 | case GL_MAP2_GRID_DOMAIN: |
||
3262 | params[0] = ctx->Eval.MapGrid2u1; |
||
3263 | params[1] = ctx->Eval.MapGrid2u2; |
||
3264 | params[2] = ctx->Eval.MapGrid2v1; |
||
3265 | params[3] = ctx->Eval.MapGrid2v2; |
||
3266 | break; |
||
3267 | case GL_MAP2_GRID_SEGMENTS: |
||
3268 | params[0] = (GLfloat) ctx->Eval.MapGrid2un; |
||
3269 | params[1] = (GLfloat) ctx->Eval.MapGrid2vn; |
||
3270 | break; |
||
3271 | case GL_MAP2_INDEX: |
||
3272 | *params = (GLfloat) ctx->Eval.Map2Index; |
||
3273 | break; |
||
3274 | case GL_MAP2_NORMAL: |
||
3275 | *params = (GLfloat) ctx->Eval.Map2Normal; |
||
3276 | break; |
||
3277 | case GL_MAP2_TEXTURE_COORD_1: |
||
3278 | *params = ctx->Eval.Map2TextureCoord1; |
||
3279 | break; |
||
3280 | case GL_MAP2_TEXTURE_COORD_2: |
||
3281 | *params = ctx->Eval.Map2TextureCoord2; |
||
3282 | break; |
||
3283 | case GL_MAP2_TEXTURE_COORD_3: |
||
3284 | *params = ctx->Eval.Map2TextureCoord3; |
||
3285 | break; |
||
3286 | case GL_MAP2_TEXTURE_COORD_4: |
||
3287 | *params = ctx->Eval.Map2TextureCoord4; |
||
3288 | break; |
||
3289 | case GL_MAP2_VERTEX_3: |
||
3290 | *params = (GLfloat) ctx->Eval.Map2Vertex3; |
||
3291 | break; |
||
3292 | case GL_MAP2_VERTEX_4: |
||
3293 | *params = (GLfloat) ctx->Eval.Map2Vertex4; |
||
3294 | break; |
||
3295 | case GL_MAP_COLOR: |
||
3296 | *params = (GLfloat) ctx->Pixel.MapColorFlag; |
||
3297 | break; |
||
3298 | case GL_MAP_STENCIL: |
||
3299 | *params = (GLfloat) ctx->Pixel.MapStencilFlag; |
||
3300 | break; |
||
3301 | case GL_MATRIX_MODE: |
||
3302 | *params = ENUM_TO_FLOAT(ctx->Transform.MatrixMode); |
||
3303 | break; |
||
3304 | case GL_MAX_ATTRIB_STACK_DEPTH: |
||
3305 | *params = (GLfloat) MAX_ATTRIB_STACK_DEPTH; |
||
3306 | break; |
||
3307 | case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: |
||
3308 | *params = (GLfloat) MAX_CLIENT_ATTRIB_STACK_DEPTH; |
||
3309 | break; |
||
3310 | case GL_MAX_CLIP_PLANES: |
||
3311 | *params = (GLfloat) ctx->Const.MaxClipPlanes; |
||
3312 | break; |
||
3313 | case GL_MAX_ELEMENTS_VERTICES: /* GL_VERSION_1_2 */ |
||
3314 | *params = (GLfloat) ctx->Const.MaxArrayLockSize; |
||
3315 | break; |
||
3316 | case GL_MAX_ELEMENTS_INDICES: /* GL_VERSION_1_2 */ |
||
3317 | *params = (GLfloat) ctx->Const.MaxArrayLockSize; |
||
3318 | break; |
||
3319 | case GL_MAX_EVAL_ORDER: |
||
3320 | *params = (GLfloat) MAX_EVAL_ORDER; |
||
3321 | break; |
||
3322 | case GL_MAX_LIGHTS: |
||
3323 | *params = (GLfloat) ctx->Const.MaxLights; |
||
3324 | break; |
||
3325 | case GL_MAX_LIST_NESTING: |
||
3326 | *params = (GLfloat) MAX_LIST_NESTING; |
||
3327 | break; |
||
3328 | case GL_MAX_MODELVIEW_STACK_DEPTH: |
||
3329 | *params = (GLfloat) MAX_MODELVIEW_STACK_DEPTH; |
||
3330 | break; |
||
3331 | case GL_MAX_NAME_STACK_DEPTH: |
||
3332 | *params = (GLfloat) MAX_NAME_STACK_DEPTH; |
||
3333 | break; |
||
3334 | case GL_MAX_PIXEL_MAP_TABLE: |
||
3335 | *params = (GLfloat) MAX_PIXEL_MAP_TABLE; |
||
3336 | break; |
||
3337 | case GL_MAX_PROJECTION_STACK_DEPTH: |
||
3338 | *params = (GLfloat) MAX_PROJECTION_STACK_DEPTH; |
||
3339 | break; |
||
3340 | case GL_MAX_TEXTURE_SIZE: |
||
3341 | *params = (GLfloat) (1 << (ctx->Const.MaxTextureLevels - 1)); |
||
3342 | break; |
||
3343 | case GL_MAX_3D_TEXTURE_SIZE: |
||
3344 | *params = (GLfloat) (1 << (ctx->Const.Max3DTextureLevels - 1)); |
||
3345 | break; |
||
3346 | case GL_MAX_TEXTURE_STACK_DEPTH: |
||
3347 | *params = (GLfloat) MAX_TEXTURE_STACK_DEPTH; |
||
3348 | break; |
||
3349 | case GL_MAX_VIEWPORT_DIMS: |
||
3350 | params[0] = (GLfloat) MAX_WIDTH; |
||
3351 | params[1] = (GLfloat) MAX_HEIGHT; |
||
3352 | break; |
||
3353 | case GL_MODELVIEW_MATRIX: |
||
3354 | for (i=0;i<16;i++) { |
||
3355 | params[i] = ctx->ModelviewMatrixStack.Top->m[i]; |
||
3356 | } |
||
3357 | break; |
||
3358 | case GL_MODELVIEW_STACK_DEPTH: |
||
3359 | *params = (GLfloat) (ctx->ModelviewMatrixStack.Depth + 1); |
||
3360 | break; |
||
3361 | case GL_NAME_STACK_DEPTH: |
||
3362 | *params = (GLfloat) ctx->Select.NameStackDepth; |
||
3363 | break; |
||
3364 | case GL_NORMALIZE: |
||
3365 | *params = (GLfloat) ctx->Transform.Normalize; |
||
3366 | break; |
||
3367 | case GL_PACK_ALIGNMENT: |
||
3368 | *params = (GLfloat) ctx->Pack.Alignment; |
||
3369 | break; |
||
3370 | case GL_PACK_LSB_FIRST: |
||
3371 | *params = (GLfloat) ctx->Pack.LsbFirst; |
||
3372 | break; |
||
3373 | case GL_PACK_ROW_LENGTH: |
||
3374 | *params = (GLfloat) ctx->Pack.RowLength; |
||
3375 | break; |
||
3376 | case GL_PACK_SKIP_PIXELS: |
||
3377 | *params = (GLfloat) ctx->Pack.SkipPixels; |
||
3378 | break; |
||
3379 | case GL_PACK_SKIP_ROWS: |
||
3380 | *params = (GLfloat) ctx->Pack.SkipRows; |
||
3381 | break; |
||
3382 | case GL_PACK_SWAP_BYTES: |
||
3383 | *params = (GLfloat) ctx->Pack.SwapBytes; |
||
3384 | break; |
||
3385 | case GL_PACK_SKIP_IMAGES_EXT: |
||
3386 | *params = (GLfloat) ctx->Pack.SkipImages; |
||
3387 | break; |
||
3388 | case GL_PACK_IMAGE_HEIGHT_EXT: |
||
3389 | *params = (GLfloat) ctx->Pack.ImageHeight; |
||
3390 | break; |
||
3391 | case GL_PACK_INVERT_MESA: |
||
3392 | *params = (GLfloat) ctx->Pack.Invert; |
||
3393 | break; |
||
3394 | case GL_PERSPECTIVE_CORRECTION_HINT: |
||
3395 | *params = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection); |
||
3396 | break; |
||
3397 | case GL_PIXEL_MAP_A_TO_A_SIZE: |
||
3398 | *params = (GLfloat) ctx->Pixel.MapAtoAsize; |
||
3399 | break; |
||
3400 | case GL_PIXEL_MAP_B_TO_B_SIZE: |
||
3401 | *params = (GLfloat) ctx->Pixel.MapBtoBsize; |
||
3402 | break; |
||
3403 | case GL_PIXEL_MAP_G_TO_G_SIZE: |
||
3404 | *params = (GLfloat) ctx->Pixel.MapGtoGsize; |
||
3405 | break; |
||
3406 | case GL_PIXEL_MAP_I_TO_A_SIZE: |
||
3407 | *params = (GLfloat) ctx->Pixel.MapItoAsize; |
||
3408 | break; |
||
3409 | case GL_PIXEL_MAP_I_TO_B_SIZE: |
||
3410 | *params = (GLfloat) ctx->Pixel.MapItoBsize; |
||
3411 | break; |
||
3412 | case GL_PIXEL_MAP_I_TO_G_SIZE: |
||
3413 | *params = (GLfloat) ctx->Pixel.MapItoGsize; |
||
3414 | break; |
||
3415 | case GL_PIXEL_MAP_I_TO_I_SIZE: |
||
3416 | *params = (GLfloat) ctx->Pixel.MapItoIsize; |
||
3417 | break; |
||
3418 | case GL_PIXEL_MAP_I_TO_R_SIZE: |
||
3419 | *params = (GLfloat) ctx->Pixel.MapItoRsize; |
||
3420 | break; |
||
3421 | case GL_PIXEL_MAP_R_TO_R_SIZE: |
||
3422 | *params = (GLfloat) ctx->Pixel.MapRtoRsize; |
||
3423 | break; |
||
3424 | case GL_PIXEL_MAP_S_TO_S_SIZE: |
||
3425 | *params = (GLfloat) ctx->Pixel.MapStoSsize; |
||
3426 | break; |
||
3427 | case GL_POINT_SIZE: |
||
3428 | *params = (GLfloat) ctx->Point.Size; |
||
3429 | break; |
||
3430 | case GL_POINT_SIZE_GRANULARITY: |
||
3431 | *params = (GLfloat) ctx->Const.PointSizeGranularity; |
||
3432 | break; |
||
3433 | case GL_POINT_SIZE_RANGE: |
||
3434 | params[0] = (GLfloat) ctx->Const.MinPointSizeAA; |
||
3435 | params[1] = (GLfloat) ctx->Const.MaxPointSizeAA; |
||
3436 | break; |
||
3437 | case GL_ALIASED_POINT_SIZE_RANGE: |
||
3438 | params[0] = (GLfloat) ctx->Const.MinPointSize; |
||
3439 | params[1] = (GLfloat) ctx->Const.MaxPointSize; |
||
3440 | break; |
||
3441 | case GL_POINT_SMOOTH: |
||
3442 | *params = (GLfloat) ctx->Point.SmoothFlag; |
||
3443 | break; |
||
3444 | case GL_POINT_SMOOTH_HINT: |
||
3445 | *params = ENUM_TO_FLOAT(ctx->Hint.PointSmooth); |
||
3446 | break; |
||
3447 | case GL_POINT_SIZE_MIN_EXT: |
||
3448 | *params = (GLfloat) (ctx->Point.MinSize); |
||
3449 | break; |
||
3450 | case GL_POINT_SIZE_MAX_EXT: |
||
3451 | *params = (GLfloat) (ctx->Point.MaxSize); |
||
3452 | break; |
||
3453 | case GL_POINT_FADE_THRESHOLD_SIZE_EXT: |
||
3454 | *params = (GLfloat) (ctx->Point.Threshold); |
||
3455 | break; |
||
3456 | case GL_DISTANCE_ATTENUATION_EXT: |
||
3457 | params[0] = (GLfloat) (ctx->Point.Params[0]); |
||
3458 | params[1] = (GLfloat) (ctx->Point.Params[1]); |
||
3459 | params[2] = (GLfloat) (ctx->Point.Params[2]); |
||
3460 | break; |
||
3461 | case GL_POLYGON_MODE: |
||
3462 | params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode); |
||
3463 | params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode); |
||
3464 | break; |
||
3465 | #ifdef GL_EXT_polygon_offset |
||
3466 | case GL_POLYGON_OFFSET_BIAS_EXT: |
||
3467 | *params = ctx->Polygon.OffsetUnits; |
||
3468 | break; |
||
3469 | #endif |
||
3470 | case GL_POLYGON_OFFSET_FACTOR: |
||
3471 | *params = ctx->Polygon.OffsetFactor; |
||
3472 | break; |
||
3473 | case GL_POLYGON_OFFSET_UNITS: |
||
3474 | *params = ctx->Polygon.OffsetUnits; |
||
3475 | break; |
||
3476 | case GL_POLYGON_SMOOTH: |
||
3477 | *params = (GLfloat) ctx->Polygon.SmoothFlag; |
||
3478 | break; |
||
3479 | case GL_POLYGON_SMOOTH_HINT: |
||
3480 | *params = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth); |
||
3481 | break; |
||
3482 | case GL_POLYGON_STIPPLE: |
||
3483 | *params = (GLfloat) ctx->Polygon.StippleFlag; |
||
3484 | break; |
||
3485 | case GL_PROJECTION_MATRIX: |
||
3486 | for (i=0;i<16;i++) { |
||
3487 | params[i] = ctx->ProjectionMatrixStack.Top->m[i]; |
||
3488 | } |
||
3489 | break; |
||
3490 | case GL_PROJECTION_STACK_DEPTH: |
||
3491 | *params = (GLfloat) (ctx->ProjectionMatrixStack.Depth + 1); |
||
3492 | break; |
||
3493 | case GL_READ_BUFFER: |
||
3494 | *params = ENUM_TO_FLOAT(ctx->Pixel.ReadBuffer); |
||
3495 | break; |
||
3496 | case GL_RED_BIAS: |
||
3497 | *params = ctx->Pixel.RedBias; |
||
3498 | break; |
||
3499 | case GL_RED_BITS: |
||
3500 | *params = (GLfloat) ctx->Visual.redBits; |
||
3501 | break; |
||
3502 | case GL_RED_SCALE: |
||
3503 | *params = ctx->Pixel.RedScale; |
||
3504 | break; |
||
3505 | case GL_RENDER_MODE: |
||
3506 | *params = ENUM_TO_FLOAT(ctx->RenderMode); |
||
3507 | break; |
||
3508 | case GL_RESCALE_NORMAL: |
||
3509 | *params = (GLfloat) ctx->Transform.RescaleNormals; |
||
3510 | break; |
||
3511 | case GL_RGBA_MODE: |
||
3512 | *params = (GLfloat) ctx->Visual.rgbMode; |
||
3513 | break; |
||
3514 | case GL_SCISSOR_BOX: |
||
3515 | params[0] = (GLfloat) ctx->Scissor.X; |
||
3516 | params[1] = (GLfloat) ctx->Scissor.Y; |
||
3517 | params[2] = (GLfloat) ctx->Scissor.Width; |
||
3518 | params[3] = (GLfloat) ctx->Scissor.Height; |
||
3519 | break; |
||
3520 | case GL_SCISSOR_TEST: |
||
3521 | *params = (GLfloat) ctx->Scissor.Enabled; |
||
3522 | break; |
||
3523 | case GL_SELECTION_BUFFER_SIZE: |
||
3524 | *params = (GLfloat) ctx->Select.BufferSize; |
||
3525 | break; |
||
3526 | case GL_SHADE_MODEL: |
||
3527 | *params = ENUM_TO_FLOAT(ctx->Light.ShadeModel); |
||
3528 | break; |
||
3529 | case GL_SHARED_TEXTURE_PALETTE_EXT: |
||
3530 | *params = (GLfloat) ctx->Texture.SharedPalette; |
||
3531 | break; |
||
3532 | case GL_STENCIL_BITS: |
||
3533 | *params = (GLfloat) ctx->Visual.stencilBits; |
||
3534 | break; |
||
3535 | case GL_STENCIL_CLEAR_VALUE: |
||
3536 | *params = (GLfloat) ctx->Stencil.Clear; |
||
3537 | break; |
||
3538 | case GL_STENCIL_FAIL: |
||
3539 | *params = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); |
||
3540 | break; |
||
3541 | case GL_STENCIL_FUNC: |
||
3542 | *params = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); |
||
3543 | break; |
||
3544 | case GL_STENCIL_PASS_DEPTH_FAIL: |
||
3545 | *params = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); |
||
3546 | break; |
||
3547 | case GL_STENCIL_PASS_DEPTH_PASS: |
||
3548 | *params = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); |
||
3549 | break; |
||
3550 | case GL_STENCIL_REF: |
||
3551 | *params = (GLfloat) ctx->Stencil.Ref[ctx->Stencil.ActiveFace]; |
||
3552 | break; |
||
3553 | case GL_STENCIL_TEST: |
||
3554 | *params = (GLfloat) ctx->Stencil.Enabled; |
||
3555 | break; |
||
3556 | case GL_STENCIL_VALUE_MASK: |
||
3557 | *params = (GLfloat) ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]; |
||
3558 | break; |
||
3559 | case GL_STENCIL_WRITEMASK: |
||
3560 | *params = (GLfloat) ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]; |
||
3561 | break; |
||
3562 | case GL_STEREO: |
||
3563 | *params = (GLfloat) ctx->Visual.stereoMode; |
||
3564 | break; |
||
3565 | case GL_SUBPIXEL_BITS: |
||
3566 | *params = (GLfloat) ctx->Const.SubPixelBits; |
||
3567 | break; |
||
3568 | case GL_TEXTURE_1D: |
||
3569 | *params = _mesa_IsEnabled(GL_TEXTURE_1D) ? 1.0F : 0.0F; |
||
3570 | break; |
||
3571 | case GL_TEXTURE_2D: |
||
3572 | *params = _mesa_IsEnabled(GL_TEXTURE_2D) ? 1.0F : 0.0F; |
||
3573 | break; |
||
3574 | case GL_TEXTURE_3D: |
||
3575 | *params = _mesa_IsEnabled(GL_TEXTURE_3D) ? 1.0F : 0.0F; |
||
3576 | break; |
||
3577 | case GL_TEXTURE_BINDING_1D: |
||
3578 | *params = (GLfloat) textureUnit->Current1D->Name; |
||
3579 | break; |
||
3580 | case GL_TEXTURE_BINDING_2D: |
||
3581 | *params = (GLfloat) textureUnit->Current2D->Name; |
||
3582 | break; |
||
3583 | case GL_TEXTURE_BINDING_3D: |
||
3584 | *params = (GLfloat) textureUnit->Current2D->Name; |
||
3585 | break; |
||
3586 | case GL_TEXTURE_ENV_COLOR: |
||
3587 | params[0] = textureUnit->EnvColor[0]; |
||
3588 | params[1] = textureUnit->EnvColor[1]; |
||
3589 | params[2] = textureUnit->EnvColor[2]; |
||
3590 | params[3] = textureUnit->EnvColor[3]; |
||
3591 | break; |
||
3592 | case GL_TEXTURE_ENV_MODE: |
||
3593 | *params = ENUM_TO_FLOAT(textureUnit->EnvMode); |
||
3594 | break; |
||
3595 | case GL_TEXTURE_GEN_S: |
||
3596 | *params = (textureUnit->TexGenEnabled & S_BIT) ? 1.0F : 0.0F; |
||
3597 | break; |
||
3598 | case GL_TEXTURE_GEN_T: |
||
3599 | *params = (textureUnit->TexGenEnabled & T_BIT) ? 1.0F : 0.0F; |
||
3600 | break; |
||
3601 | case GL_TEXTURE_GEN_R: |
||
3602 | *params = (textureUnit->TexGenEnabled & R_BIT) ? 1.0F : 0.0F; |
||
3603 | break; |
||
3604 | case GL_TEXTURE_GEN_Q: |
||
3605 | *params = (textureUnit->TexGenEnabled & Q_BIT) ? 1.0F : 0.0F; |
||
3606 | break; |
||
3607 | case GL_TEXTURE_MATRIX: |
||
3608 | for (i=0;i<16;i++) { |
||
3609 | params[i] = ctx->TextureMatrixStack[texUnit].Top->m[i]; |
||
3610 | } |
||
3611 | break; |
||
3612 | case GL_TEXTURE_STACK_DEPTH: |
||
3613 | *params = (GLfloat) (ctx->TextureMatrixStack[texUnit].Depth + 1); |
||
3614 | break; |
||
3615 | case GL_UNPACK_ALIGNMENT: |
||
3616 | *params = (GLfloat) ctx->Unpack.Alignment; |
||
3617 | break; |
||
3618 | case GL_UNPACK_LSB_FIRST: |
||
3619 | *params = (GLfloat) ctx->Unpack.LsbFirst; |
||
3620 | break; |
||
3621 | case GL_UNPACK_ROW_LENGTH: |
||
3622 | *params = (GLfloat) ctx->Unpack.RowLength; |
||
3623 | break; |
||
3624 | case GL_UNPACK_SKIP_PIXELS: |
||
3625 | *params = (GLfloat) ctx->Unpack.SkipPixels; |
||
3626 | break; |
||
3627 | case GL_UNPACK_SKIP_ROWS: |
||
3628 | *params = (GLfloat) ctx->Unpack.SkipRows; |
||
3629 | break; |
||
3630 | case GL_UNPACK_SWAP_BYTES: |
||
3631 | *params = (GLfloat) ctx->Unpack.SwapBytes; |
||
3632 | break; |
||
3633 | case GL_UNPACK_SKIP_IMAGES_EXT: |
||
3634 | *params = (GLfloat) ctx->Unpack.SkipImages; |
||
3635 | break; |
||
3636 | case GL_UNPACK_IMAGE_HEIGHT_EXT: |
||
3637 | *params = (GLfloat) ctx->Unpack.ImageHeight; |
||
3638 | break; |
||
3639 | case GL_UNPACK_CLIENT_STORAGE_APPLE: |
||
3640 | *params = (GLfloat) ctx->Unpack.ClientStorage; |
||
3641 | break; |
||
3642 | case GL_VIEWPORT: |
||
3643 | params[0] = (GLfloat) ctx->Viewport.X; |
||
3644 | params[1] = (GLfloat) ctx->Viewport.Y; |
||
3645 | params[2] = (GLfloat) ctx->Viewport.Width; |
||
3646 | params[3] = (GLfloat) ctx->Viewport.Height; |
||
3647 | break; |
||
3648 | case GL_ZOOM_X: |
||
3649 | *params = (GLfloat) ctx->Pixel.ZoomX; |
||
3650 | break; |
||
3651 | case GL_ZOOM_Y: |
||
3652 | *params = (GLfloat) ctx->Pixel.ZoomY; |
||
3653 | break; |
||
3654 | case GL_VERTEX_ARRAY: |
||
3655 | *params = (GLfloat) ctx->Array.Vertex.Enabled; |
||
3656 | break; |
||
3657 | case GL_VERTEX_ARRAY_SIZE: |
||
3658 | *params = (GLfloat) ctx->Array.Vertex.Size; |
||
3659 | break; |
||
3660 | case GL_VERTEX_ARRAY_TYPE: |
||
3661 | *params = ENUM_TO_FLOAT(ctx->Array.Vertex.Type); |
||
3662 | break; |
||
3663 | case GL_VERTEX_ARRAY_STRIDE: |
||
3664 | *params = (GLfloat) ctx->Array.Vertex.Stride; |
||
3665 | break; |
||
3666 | case GL_VERTEX_ARRAY_COUNT_EXT: |
||
3667 | *params = 0.0; |
||
3668 | break; |
||
3669 | case GL_NORMAL_ARRAY: |
||
3670 | *params = (GLfloat) ctx->Array.Normal.Enabled; |
||
3671 | break; |
||
3672 | case GL_NORMAL_ARRAY_TYPE: |
||
3673 | *params = ENUM_TO_FLOAT(ctx->Array.Normal.Type); |
||
3674 | break; |
||
3675 | case GL_NORMAL_ARRAY_STRIDE: |
||
3676 | *params = (GLfloat) ctx->Array.Normal.Stride; |
||
3677 | break; |
||
3678 | case GL_NORMAL_ARRAY_COUNT_EXT: |
||
3679 | *params = 0.0; |
||
3680 | break; |
||
3681 | case GL_COLOR_ARRAY: |
||
3682 | *params = (GLfloat) ctx->Array.Color.Enabled; |
||
3683 | break; |
||
3684 | case GL_COLOR_ARRAY_SIZE: |
||
3685 | *params = (GLfloat) ctx->Array.Color.Size; |
||
3686 | break; |
||
3687 | case GL_COLOR_ARRAY_TYPE: |
||
3688 | *params = ENUM_TO_FLOAT(ctx->Array.Color.Type); |
||
3689 | break; |
||
3690 | case GL_COLOR_ARRAY_STRIDE: |
||
3691 | *params = (GLfloat) ctx->Array.Color.Stride; |
||
3692 | break; |
||
3693 | case GL_COLOR_ARRAY_COUNT_EXT: |
||
3694 | *params = 0.0; |
||
3695 | break; |
||
3696 | case GL_INDEX_ARRAY: |
||
3697 | *params = (GLfloat) ctx->Array.Index.Enabled; |
||
3698 | break; |
||
3699 | case GL_INDEX_ARRAY_TYPE: |
||
3700 | *params = ENUM_TO_FLOAT(ctx->Array.Index.Type); |
||
3701 | break; |
||
3702 | case GL_INDEX_ARRAY_STRIDE: |
||
3703 | *params = (GLfloat) ctx->Array.Index.Stride; |
||
3704 | break; |
||
3705 | case GL_INDEX_ARRAY_COUNT_EXT: |
||
3706 | *params = 0.0; |
||
3707 | break; |
||
3708 | case GL_TEXTURE_COORD_ARRAY: |
||
3709 | *params = (GLfloat) ctx->Array.TexCoord[texUnit].Enabled; |
||
3710 | break; |
||
3711 | case GL_TEXTURE_COORD_ARRAY_SIZE: |
||
3712 | *params = (GLfloat) ctx->Array.TexCoord[texUnit].Size; |
||
3713 | break; |
||
3714 | case GL_TEXTURE_COORD_ARRAY_TYPE: |
||
3715 | *params = ENUM_TO_FLOAT(ctx->Array.TexCoord[texUnit].Type); |
||
3716 | break; |
||
3717 | case GL_TEXTURE_COORD_ARRAY_STRIDE: |
||
3718 | *params = (GLfloat) ctx->Array.TexCoord[texUnit].Stride; |
||
3719 | break; |
||
3720 | case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: |
||
3721 | *params = 0.0; |
||
3722 | break; |
||
3723 | case GL_EDGE_FLAG_ARRAY: |
||
3724 | *params = (GLfloat) ctx->Array.EdgeFlag.Enabled; |
||
3725 | break; |
||
3726 | case GL_EDGE_FLAG_ARRAY_STRIDE: |
||
3727 | *params = (GLfloat) ctx->Array.EdgeFlag.Stride; |
||
3728 | break; |
||
3729 | case GL_EDGE_FLAG_ARRAY_COUNT_EXT: |
||
3730 | *params = 0.0; |
||
3731 | break; |
||
3732 | |||
3733 | /* GL_ARB_multitexture */ |
||
3734 | case GL_MAX_TEXTURE_UNITS_ARB: |
||
3735 | CHECK_EXTENSION_F(ARB_multitexture, pname); |
||
3736 | *params = (GLfloat) ctx->Const.MaxTextureUnits; |
||
3737 | break; |
||
3738 | case GL_ACTIVE_TEXTURE_ARB: |
||
3739 | CHECK_EXTENSION_F(ARB_multitexture, pname); |
||
3740 | *params = (GLfloat) (GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); |
||
3741 | break; |
||
3742 | case GL_CLIENT_ACTIVE_TEXTURE_ARB: |
||
3743 | CHECK_EXTENSION_F(ARB_multitexture, pname); |
||
3744 | *params = (GLfloat) (GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); |
||
3745 | break; |
||
3746 | |||
3747 | /* GL_ARB_texture_cube_map */ |
||
3748 | case GL_TEXTURE_CUBE_MAP_ARB: |
||
3749 | CHECK_EXTENSION_F(ARB_texture_cube_map, pname); |
||
3750 | *params = (GLfloat) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB); |
||
3751 | break; |
||
3752 | case GL_TEXTURE_BINDING_CUBE_MAP_ARB: |
||
3753 | CHECK_EXTENSION_F(ARB_texture_cube_map, pname); |
||
3754 | *params = (GLfloat) textureUnit->CurrentCubeMap->Name; |
||
3755 | break; |
||
3756 | case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: |
||
3757 | CHECK_EXTENSION_F(ARB_texture_cube_map, pname); |
||
3758 | *params = (GLfloat) (1 << (ctx->Const.MaxCubeTextureLevels - 1)); |
||
3759 | break; |
||
3760 | |||
3761 | /* GL_ARB_texture_compression */ |
||
3762 | case GL_TEXTURE_COMPRESSION_HINT_ARB: |
||
3763 | CHECK_EXTENSION_F(ARB_texture_compression, pname); |
||
3764 | *params = (GLfloat) ctx->Hint.TextureCompression; |
||
3765 | break; |
||
3766 | case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
3767 | CHECK_EXTENSION_F(ARB_texture_compression, pname); |
||
3768 | *params = (GLfloat) _mesa_get_compressed_formats(ctx, NULL); |
||
3769 | break; |
||
3770 | case GL_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
3771 | CHECK_EXTENSION_F(ARB_texture_compression, pname); |
||
3772 | { |
||
3773 | GLint formats[100]; |
||
3774 | GLuint i, n; |
||
3775 | n = _mesa_get_compressed_formats(ctx, formats); |
||
3776 | for (i = 0; i < n; i++) |
||
3777 | params[i] = (GLfloat) formats[i]; |
||
3778 | } |
||
3779 | break; |
||
3780 | |||
3781 | /* GL_EXT_compiled_vertex_array */ |
||
3782 | case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: |
||
3783 | CHECK_EXTENSION_F(EXT_compiled_vertex_array, pname); |
||
3784 | *params = (GLfloat) ctx->Array.LockFirst; |
||
3785 | break; |
||
3786 | case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: |
||
3787 | CHECK_EXTENSION_F(EXT_compiled_vertex_array, pname); |
||
3788 | *params = (GLfloat) ctx->Array.LockCount; |
||
3789 | break; |
||
3790 | |||
3791 | /* GL_ARB_transpose_matrix */ |
||
3792 | case GL_TRANSPOSE_COLOR_MATRIX_ARB: |
||
3793 | _math_transposef(params, ctx->ColorMatrixStack.Top->m); |
||
3794 | break; |
||
3795 | case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: |
||
3796 | _math_transposef(params, ctx->ModelviewMatrixStack.Top->m); |
||
3797 | break; |
||
3798 | case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: |
||
3799 | _math_transposef(params, ctx->ProjectionMatrixStack.Top->m); |
||
3800 | break; |
||
3801 | case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: |
||
3802 | _math_transposef(params, ctx->TextureMatrixStack[texUnit].Top->m); |
||
3803 | break; |
||
3804 | |||
3805 | /* GL_HP_occlusion_test */ |
||
3806 | case GL_OCCLUSION_TEST_HP: |
||
3807 | CHECK_EXTENSION_F(HP_occlusion_test, pname); |
||
3808 | *params = (GLfloat) ctx->Depth.OcclusionTest; |
||
3809 | break; |
||
3810 | case GL_OCCLUSION_TEST_RESULT_HP: |
||
3811 | CHECK_EXTENSION_F(HP_occlusion_test, pname); |
||
3812 | if (ctx->Depth.OcclusionTest) |
||
3813 | *params = (GLfloat) ctx->OcclusionResult; |
||
3814 | else |
||
3815 | *params = (GLfloat) ctx->OcclusionResultSaved; |
||
3816 | /* reset flag now */ |
||
3817 | ctx->OcclusionResult = GL_FALSE; |
||
3818 | ctx->OcclusionResultSaved = GL_FALSE; |
||
3819 | break; |
||
3820 | |||
3821 | /* GL_SGIS_pixel_texture */ |
||
3822 | case GL_PIXEL_TEXTURE_SGIS: |
||
3823 | *params = (GLfloat) ctx->Pixel.PixelTextureEnabled; |
||
3824 | break; |
||
3825 | |||
3826 | /* GL_SGIX_pixel_texture */ |
||
3827 | case GL_PIXEL_TEX_GEN_SGIX: |
||
3828 | *params = (GLfloat) ctx->Pixel.PixelTextureEnabled; |
||
3829 | break; |
||
3830 | case GL_PIXEL_TEX_GEN_MODE_SGIX: |
||
3831 | *params = (GLfloat) pixel_texgen_mode(ctx); |
||
3832 | break; |
||
3833 | |||
3834 | /* GL_SGI_color_matrix (also in 1.2 imaging) */ |
||
3835 | case GL_COLOR_MATRIX_SGI: |
||
3836 | for (i=0;i<16;i++) { |
||
3837 | params[i] = ctx->ColorMatrixStack.Top->m[i]; |
||
3838 | } |
||
3839 | break; |
||
3840 | case GL_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
3841 | *params = (GLfloat) (ctx->ColorMatrixStack.Depth + 1); |
||
3842 | break; |
||
3843 | case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
3844 | *params = (GLfloat) MAX_COLOR_STACK_DEPTH; |
||
3845 | break; |
||
3846 | case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: |
||
3847 | *params = ctx->Pixel.PostColorMatrixScale[0]; |
||
3848 | break; |
||
3849 | case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: |
||
3850 | *params = ctx->Pixel.PostColorMatrixScale[1]; |
||
3851 | break; |
||
3852 | case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: |
||
3853 | *params = ctx->Pixel.PostColorMatrixScale[2]; |
||
3854 | break; |
||
3855 | case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: |
||
3856 | *params = ctx->Pixel.PostColorMatrixScale[3]; |
||
3857 | break; |
||
3858 | case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: |
||
3859 | *params = ctx->Pixel.PostColorMatrixBias[0]; |
||
3860 | break; |
||
3861 | case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: |
||
3862 | *params = ctx->Pixel.PostColorMatrixBias[1]; |
||
3863 | break; |
||
3864 | case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: |
||
3865 | *params = ctx->Pixel.PostColorMatrixBias[2]; |
||
3866 | break; |
||
3867 | case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: |
||
3868 | *params = ctx->Pixel.PostColorMatrixBias[3]; |
||
3869 | break; |
||
3870 | |||
3871 | /* GL_EXT_convolution (also in 1.2 imaging) */ |
||
3872 | case GL_CONVOLUTION_1D_EXT: |
||
3873 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3874 | *params = (GLfloat) ctx->Pixel.Convolution1DEnabled; |
||
3875 | break; |
||
3876 | case GL_CONVOLUTION_2D: |
||
3877 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3878 | *params = (GLfloat) ctx->Pixel.Convolution2DEnabled; |
||
3879 | break; |
||
3880 | case GL_SEPARABLE_2D: |
||
3881 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3882 | *params = (GLfloat) ctx->Pixel.Separable2DEnabled; |
||
3883 | break; |
||
3884 | case GL_POST_CONVOLUTION_RED_SCALE_EXT: |
||
3885 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3886 | *params = ctx->Pixel.PostConvolutionScale[0]; |
||
3887 | break; |
||
3888 | case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: |
||
3889 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3890 | *params = ctx->Pixel.PostConvolutionScale[1]; |
||
3891 | break; |
||
3892 | case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: |
||
3893 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3894 | *params = ctx->Pixel.PostConvolutionScale[2]; |
||
3895 | break; |
||
3896 | case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: |
||
3897 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3898 | *params = ctx->Pixel.PostConvolutionScale[3]; |
||
3899 | break; |
||
3900 | case GL_POST_CONVOLUTION_RED_BIAS_EXT: |
||
3901 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3902 | *params = ctx->Pixel.PostConvolutionBias[0]; |
||
3903 | break; |
||
3904 | case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: |
||
3905 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3906 | *params = ctx->Pixel.PostConvolutionBias[1]; |
||
3907 | break; |
||
3908 | case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: |
||
3909 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3910 | *params = ctx->Pixel.PostConvolutionBias[2]; |
||
3911 | break; |
||
3912 | case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: |
||
3913 | CHECK_EXTENSION_F(EXT_convolution, pname); |
||
3914 | *params = ctx->Pixel.PostConvolutionBias[2]; |
||
3915 | break; |
||
3916 | |||
3917 | /* GL_EXT_histogram (also in 1.2 imaging) */ |
||
3918 | case GL_HISTOGRAM: |
||
3919 | CHECK_EXTENSION_F(EXT_histogram, pname); |
||
3920 | *params = (GLfloat) ctx->Pixel.HistogramEnabled; |
||
3921 | break; |
||
3922 | case GL_MINMAX: |
||
3923 | CHECK_EXTENSION_F(EXT_histogram, pname); |
||
3924 | *params = (GLfloat) ctx->Pixel.MinMaxEnabled; |
||
3925 | break; |
||
3926 | |||
3927 | /* GL_SGI_color_table (also in 1.2 imaging */ |
||
3928 | case GL_COLOR_TABLE_SGI: |
||
3929 | *params = (GLfloat) ctx->Pixel.ColorTableEnabled; |
||
3930 | break; |
||
3931 | case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: |
||
3932 | *params = (GLfloat) ctx->Pixel.PostConvolutionColorTableEnabled; |
||
3933 | break; |
||
3934 | case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: |
||
3935 | *params = (GLfloat) ctx->Pixel.PostColorMatrixColorTableEnabled; |
||
3936 | break; |
||
3937 | |||
3938 | /* GL_EXT_secondary_color */ |
||
3939 | case GL_COLOR_SUM_EXT: |
||
3940 | CHECK_EXTENSION_F(EXT_secondary_color, pname); |
||
3941 | *params = (GLfloat) ctx->Fog.ColorSumEnabled; |
||
3942 | break; |
||
3943 | case GL_CURRENT_SECONDARY_COLOR_EXT: |
||
3944 | CHECK_EXTENSION_F(EXT_secondary_color, pname); |
||
3945 | FLUSH_CURRENT(ctx, 0); |
||
3946 | params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]; |
||
3947 | params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]; |
||
3948 | params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]; |
||
3949 | break; |
||
3950 | case GL_SECONDARY_COLOR_ARRAY_EXT: |
||
3951 | CHECK_EXTENSION_F(EXT_secondary_color, pname); |
||
3952 | *params = (GLfloat) ctx->Array.SecondaryColor.Enabled; |
||
3953 | break; |
||
3954 | case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: |
||
3955 | CHECK_EXTENSION_F(EXT_secondary_color, pname); |
||
3956 | *params = (GLfloat) ctx->Array.SecondaryColor.Type; |
||
3957 | break; |
||
3958 | case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: |
||
3959 | CHECK_EXTENSION_F(EXT_secondary_color, pname); |
||
3960 | *params = (GLfloat) ctx->Array.SecondaryColor.Stride; |
||
3961 | break; |
||
3962 | case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: |
||
3963 | CHECK_EXTENSION_F(EXT_secondary_color, pname); |
||
3964 | *params = (GLfloat) ctx->Array.SecondaryColor.Stride; |
||
3965 | break; |
||
3966 | |||
3967 | /* GL_EXT_fog_coord */ |
||
3968 | case GL_CURRENT_FOG_COORDINATE_EXT: |
||
3969 | CHECK_EXTENSION_F(EXT_fog_coord, pname); |
||
3970 | FLUSH_CURRENT(ctx, 0); |
||
3971 | *params = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; |
||
3972 | break; |
||
3973 | case GL_FOG_COORDINATE_ARRAY_EXT: |
||
3974 | CHECK_EXTENSION_F(EXT_fog_coord, pname); |
||
3975 | *params = (GLfloat) ctx->Array.FogCoord.Enabled; |
||
3976 | break; |
||
3977 | case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: |
||
3978 | CHECK_EXTENSION_F(EXT_fog_coord, pname); |
||
3979 | *params = (GLfloat) ctx->Array.FogCoord.Type; |
||
3980 | break; |
||
3981 | case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: |
||
3982 | CHECK_EXTENSION_F(EXT_fog_coord, pname); |
||
3983 | *params = (GLfloat) ctx->Array.FogCoord.Stride; |
||
3984 | break; |
||
3985 | |||
3986 | /* GL_EXT_texture_lod_bias */ |
||
3987 | case GL_MAX_TEXTURE_LOD_BIAS_EXT: |
||
3988 | *params = ctx->Const.MaxTextureLodBias; |
||
3989 | break; |
||
3990 | |||
3991 | /* GL_EXT_texture_filter_anisotropic */ |
||
3992 | case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
||
3993 | CHECK_EXTENSION_F(EXT_texture_filter_anisotropic, pname); |
||
3994 | *params = ctx->Const.MaxTextureMaxAnisotropy; |
||
3995 | break; |
||
3996 | |||
3997 | /* GL_ARB_multisample */ |
||
3998 | case GL_MULTISAMPLE_ARB: |
||
3999 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4000 | *params = (GLfloat) ctx->Multisample.Enabled; |
||
4001 | break; |
||
4002 | case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: |
||
4003 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4004 | *params = (GLfloat) ctx->Multisample.SampleAlphaToCoverage; |
||
4005 | break; |
||
4006 | case GL_SAMPLE_ALPHA_TO_ONE_ARB: |
||
4007 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4008 | *params = (GLfloat) ctx->Multisample.SampleAlphaToOne; |
||
4009 | break; |
||
4010 | case GL_SAMPLE_COVERAGE_ARB: |
||
4011 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4012 | *params = (GLfloat) ctx->Multisample.SampleCoverage; |
||
4013 | break; |
||
4014 | case GL_SAMPLE_COVERAGE_VALUE_ARB: |
||
4015 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4016 | *params = ctx->Multisample.SampleCoverageValue; |
||
4017 | break; |
||
4018 | case GL_SAMPLE_COVERAGE_INVERT_ARB: |
||
4019 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4020 | *params = (GLfloat) ctx->Multisample.SampleCoverageInvert; |
||
4021 | break; |
||
4022 | case GL_SAMPLE_BUFFERS_ARB: |
||
4023 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4024 | *params = 0.0; /* XXX fix someday */ |
||
4025 | break; |
||
4026 | case GL_SAMPLES_ARB: |
||
4027 | CHECK_EXTENSION_F(ARB_multisample, pname); |
||
4028 | *params = 0.0; /* XXX fix someday */ |
||
4029 | break; |
||
4030 | |||
4031 | /* GL_IBM_rasterpos_clip */ |
||
4032 | case GL_RASTER_POSITION_UNCLIPPED_IBM: |
||
4033 | CHECK_EXTENSION_F(IBM_rasterpos_clip, pname); |
||
4034 | *params = (GLfloat) ctx->Transform.RasterPositionUnclipped; |
||
4035 | break; |
||
4036 | |||
4037 | /* GL_NV_point_sprite */ |
||
4038 | case GL_POINT_SPRITE_NV: |
||
4039 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
4040 | *params = (GLfloat) ctx->Point.PointSprite; |
||
4041 | break; |
||
4042 | case GL_POINT_SPRITE_R_MODE_NV: |
||
4043 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
4044 | *params = (GLfloat) ctx->Point.SpriteRMode; |
||
4045 | break; |
||
4046 | |||
4047 | /* GL_SGIS_generate_mipmap */ |
||
4048 | case GL_GENERATE_MIPMAP_HINT_SGIS: |
||
4049 | CHECK_EXTENSION_F(SGIS_generate_mipmap, pname); |
||
4050 | *params = (GLfloat) ctx->Hint.GenerateMipmap; |
||
4051 | break; |
||
4052 | |||
4053 | #if FEATURE_NV_vertex_program |
||
4054 | case GL_VERTEX_PROGRAM_NV: |
||
4055 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4056 | *params = (GLfloat) ctx->VertexProgram.Enabled; |
||
4057 | break; |
||
4058 | case GL_VERTEX_PROGRAM_POINT_SIZE_NV: |
||
4059 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4060 | *params = (GLfloat) ctx->VertexProgram.PointSizeEnabled; |
||
4061 | break; |
||
4062 | case GL_VERTEX_PROGRAM_TWO_SIDE_NV: |
||
4063 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4064 | *params = (GLfloat) ctx->VertexProgram.TwoSideEnabled; |
||
4065 | break; |
||
4066 | case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV: |
||
4067 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4068 | *params = (GLfloat) MAX_PROGRAM_STACK_DEPTH; |
||
4069 | break; |
||
4070 | case GL_MAX_TRACK_MATRICES_NV: |
||
4071 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4072 | *params = (GLfloat) MAX_PROGRAM_MATRICES; |
||
4073 | break; |
||
4074 | case GL_CURRENT_MATRIX_STACK_DEPTH_NV: |
||
4075 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4076 | *params = (GLfloat) ctx->CurrentStack->Depth; |
||
4077 | break; |
||
4078 | case GL_CURRENT_MATRIX_NV: |
||
4079 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4080 | *params = (GLfloat) ctx->Transform.MatrixMode; |
||
4081 | break; |
||
4082 | case GL_VERTEX_PROGRAM_BINDING_NV: |
||
4083 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4084 | *params = (GLfloat) ctx->VertexProgram.CurrentID; |
||
4085 | break; |
||
4086 | case GL_PROGRAM_ERROR_POSITION_NV: |
||
4087 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4088 | *params = (GLfloat) ctx->VertexProgram.ErrorPos; |
||
4089 | break; |
||
4090 | case GL_VERTEX_ATTRIB_ARRAY0_NV: |
||
4091 | case GL_VERTEX_ATTRIB_ARRAY1_NV: |
||
4092 | case GL_VERTEX_ATTRIB_ARRAY2_NV: |
||
4093 | case GL_VERTEX_ATTRIB_ARRAY3_NV: |
||
4094 | case GL_VERTEX_ATTRIB_ARRAY4_NV: |
||
4095 | case GL_VERTEX_ATTRIB_ARRAY5_NV: |
||
4096 | case GL_VERTEX_ATTRIB_ARRAY6_NV: |
||
4097 | case GL_VERTEX_ATTRIB_ARRAY7_NV: |
||
4098 | case GL_VERTEX_ATTRIB_ARRAY8_NV: |
||
4099 | case GL_VERTEX_ATTRIB_ARRAY9_NV: |
||
4100 | case GL_VERTEX_ATTRIB_ARRAY10_NV: |
||
4101 | case GL_VERTEX_ATTRIB_ARRAY11_NV: |
||
4102 | case GL_VERTEX_ATTRIB_ARRAY12_NV: |
||
4103 | case GL_VERTEX_ATTRIB_ARRAY13_NV: |
||
4104 | case GL_VERTEX_ATTRIB_ARRAY14_NV: |
||
4105 | case GL_VERTEX_ATTRIB_ARRAY15_NV: |
||
4106 | CHECK_EXTENSION_F(NV_vertex_program, pname); |
||
4107 | { |
||
4108 | GLuint n = (GLuint) pname - GL_VERTEX_ATTRIB_ARRAY0_NV; |
||
4109 | *params = (GLfloat) ctx->Array.VertexAttrib[n].Enabled; |
||
4110 | } |
||
4111 | break; |
||
4112 | case GL_MAP1_VERTEX_ATTRIB0_4_NV: |
||
4113 | case GL_MAP1_VERTEX_ATTRIB1_4_NV: |
||
4114 | case GL_MAP1_VERTEX_ATTRIB2_4_NV: |
||
4115 | case GL_MAP1_VERTEX_ATTRIB3_4_NV: |
||
4116 | case GL_MAP1_VERTEX_ATTRIB4_4_NV: |
||
4117 | case GL_MAP1_VERTEX_ATTRIB5_4_NV: |
||
4118 | case GL_MAP1_VERTEX_ATTRIB6_4_NV: |
||
4119 | case GL_MAP1_VERTEX_ATTRIB7_4_NV: |
||
4120 | case GL_MAP1_VERTEX_ATTRIB8_4_NV: |
||
4121 | case GL_MAP1_VERTEX_ATTRIB9_4_NV: |
||
4122 | case GL_MAP1_VERTEX_ATTRIB10_4_NV: |
||
4123 | case GL_MAP1_VERTEX_ATTRIB11_4_NV: |
||
4124 | case GL_MAP1_VERTEX_ATTRIB12_4_NV: |
||
4125 | case GL_MAP1_VERTEX_ATTRIB13_4_NV: |
||
4126 | case GL_MAP1_VERTEX_ATTRIB14_4_NV: |
||
4127 | case GL_MAP1_VERTEX_ATTRIB15_4_NV: |
||
4128 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
4129 | { |
||
4130 | GLuint n = (GLuint) pname - GL_MAP1_VERTEX_ATTRIB0_4_NV; |
||
4131 | *params = (GLfloat) ctx->Eval.Map1Attrib[n]; |
||
4132 | } |
||
4133 | break; |
||
4134 | case GL_MAP2_VERTEX_ATTRIB0_4_NV: |
||
4135 | case GL_MAP2_VERTEX_ATTRIB1_4_NV: |
||
4136 | case GL_MAP2_VERTEX_ATTRIB2_4_NV: |
||
4137 | case GL_MAP2_VERTEX_ATTRIB3_4_NV: |
||
4138 | case GL_MAP2_VERTEX_ATTRIB4_4_NV: |
||
4139 | case GL_MAP2_VERTEX_ATTRIB5_4_NV: |
||
4140 | case GL_MAP2_VERTEX_ATTRIB6_4_NV: |
||
4141 | case GL_MAP2_VERTEX_ATTRIB7_4_NV: |
||
4142 | case GL_MAP2_VERTEX_ATTRIB8_4_NV: |
||
4143 | case GL_MAP2_VERTEX_ATTRIB9_4_NV: |
||
4144 | case GL_MAP2_VERTEX_ATTRIB10_4_NV: |
||
4145 | case GL_MAP2_VERTEX_ATTRIB11_4_NV: |
||
4146 | case GL_MAP2_VERTEX_ATTRIB12_4_NV: |
||
4147 | case GL_MAP2_VERTEX_ATTRIB13_4_NV: |
||
4148 | case GL_MAP2_VERTEX_ATTRIB14_4_NV: |
||
4149 | case GL_MAP2_VERTEX_ATTRIB15_4_NV: |
||
4150 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
4151 | { |
||
4152 | GLuint n = (GLuint) pname - GL_MAP2_VERTEX_ATTRIB0_4_NV; |
||
4153 | *params = (GLfloat) ctx->Eval.Map2Attrib[n]; |
||
4154 | } |
||
4155 | break; |
||
4156 | |||
4157 | /* GL_NV_texture_rectangle */ |
||
4158 | case GL_TEXTURE_RECTANGLE_NV: |
||
4159 | CHECK_EXTENSION_F(NV_texture_rectangle, pname); |
||
4160 | *params = (GLfloat) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV); |
||
4161 | break; |
||
4162 | case GL_TEXTURE_BINDING_RECTANGLE_NV: |
||
4163 | CHECK_EXTENSION_F(NV_texture_rectangle, pname); |
||
4164 | *params = (GLfloat) textureUnit->CurrentRect->Name; |
||
4165 | break; |
||
4166 | case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: |
||
4167 | CHECK_EXTENSION_F(NV_texture_rectangle, pname); |
||
4168 | *params = (GLfloat) ctx->Const.MaxTextureRectSize; |
||
4169 | break; |
||
4170 | #endif /* FEATURE_NV_vertex_program */ |
||
4171 | |||
4172 | /* GL_EXT_stencil_two_side */ |
||
4173 | case GL_STENCIL_TEST_TWO_SIDE_EXT: |
||
4174 | CHECK_EXTENSION_F(EXT_stencil_two_side, pname); |
||
4175 | *params = (GLfloat) ctx->Stencil.TestTwoSide; |
||
4176 | break; |
||
4177 | case GL_ACTIVE_STENCIL_FACE_EXT: |
||
4178 | CHECK_EXTENSION_F(EXT_stencil_two_side, pname); |
||
4179 | *params = (GLfloat) (ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); |
||
4180 | break; |
||
4181 | |||
4182 | default: |
||
4183 | _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(0x%x)", pname); |
||
4184 | } |
||
4185 | } |
||
4186 | |||
4187 | |||
4188 | void |
||
4189 | _mesa_GetIntegerv( GLenum pname, GLint *params ) |
||
4190 | { |
||
4191 | GET_CURRENT_CONTEXT(ctx); |
||
4192 | GLuint i; |
||
4193 | GLuint texUnit = ctx->Texture.CurrentUnit; |
||
4194 | const struct gl_texture_unit *textureUnit = &ctx->Texture.Unit[texUnit]; |
||
4195 | ASSERT_OUTSIDE_BEGIN_END(ctx); |
||
4196 | |||
4197 | if (!params) |
||
4198 | return; |
||
4199 | |||
4200 | /* We need this in order to get correct results for |
||
4201 | * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases. |
||
4202 | */ |
||
4203 | FLUSH_VERTICES(ctx, 0); |
||
4204 | |||
4205 | if (MESA_VERBOSE & VERBOSE_API) |
||
4206 | _mesa_debug(ctx, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname)); |
||
4207 | |||
4208 | if (ctx->Driver.GetIntegerv |
||
4209 | && (*ctx->Driver.GetIntegerv)(ctx, pname, params)) |
||
4210 | return; |
||
4211 | |||
4212 | switch (pname) { |
||
4213 | case GL_ACCUM_RED_BITS: |
||
4214 | *params = (GLint) ctx->Visual.accumRedBits; |
||
4215 | break; |
||
4216 | case GL_ACCUM_GREEN_BITS: |
||
4217 | *params = (GLint) ctx->Visual.accumGreenBits; |
||
4218 | break; |
||
4219 | case GL_ACCUM_BLUE_BITS: |
||
4220 | *params = (GLint) ctx->Visual.accumBlueBits; |
||
4221 | break; |
||
4222 | case GL_ACCUM_ALPHA_BITS: |
||
4223 | *params = (GLint) ctx->Visual.accumAlphaBits; |
||
4224 | break; |
||
4225 | case GL_ACCUM_CLEAR_VALUE: |
||
4226 | params[0] = FLOAT_TO_INT( ctx->Accum.ClearColor[0] ); |
||
4227 | params[1] = FLOAT_TO_INT( ctx->Accum.ClearColor[1] ); |
||
4228 | params[2] = FLOAT_TO_INT( ctx->Accum.ClearColor[2] ); |
||
4229 | params[3] = FLOAT_TO_INT( ctx->Accum.ClearColor[3] ); |
||
4230 | break; |
||
4231 | case GL_ALPHA_BIAS: |
||
4232 | *params = (GLint) ctx->Pixel.AlphaBias; |
||
4233 | break; |
||
4234 | case GL_ALPHA_BITS: |
||
4235 | *params = ctx->Visual.alphaBits; |
||
4236 | break; |
||
4237 | case GL_ALPHA_SCALE: |
||
4238 | *params = (GLint) ctx->Pixel.AlphaScale; |
||
4239 | break; |
||
4240 | case GL_ALPHA_TEST: |
||
4241 | *params = (GLint) ctx->Color.AlphaEnabled; |
||
4242 | break; |
||
4243 | case GL_ALPHA_TEST_REF: |
||
4244 | *params = FLOAT_TO_INT(ctx->Color.AlphaRef); |
||
4245 | break; |
||
4246 | case GL_ALPHA_TEST_FUNC: |
||
4247 | *params = (GLint) ctx->Color.AlphaFunc; |
||
4248 | break; |
||
4249 | case GL_ATTRIB_STACK_DEPTH: |
||
4250 | *params = (GLint) (ctx->AttribStackDepth); |
||
4251 | break; |
||
4252 | case GL_AUTO_NORMAL: |
||
4253 | *params = (GLint) ctx->Eval.AutoNormal; |
||
4254 | break; |
||
4255 | case GL_AUX_BUFFERS: |
||
4256 | *params = (GLint) ctx->Const.NumAuxBuffers; |
||
4257 | break; |
||
4258 | case GL_BLEND: |
||
4259 | *params = (GLint) ctx->Color.BlendEnabled; |
||
4260 | break; |
||
4261 | case GL_BLEND_DST: |
||
4262 | *params = (GLint) ctx->Color.BlendDstRGB; |
||
4263 | break; |
||
4264 | case GL_BLEND_SRC: |
||
4265 | *params = (GLint) ctx->Color.BlendSrcRGB; |
||
4266 | break; |
||
4267 | case GL_BLEND_SRC_RGB_EXT: |
||
4268 | *params = (GLint) ctx->Color.BlendSrcRGB; |
||
4269 | break; |
||
4270 | case GL_BLEND_DST_RGB_EXT: |
||
4271 | *params = (GLint) ctx->Color.BlendDstRGB; |
||
4272 | break; |
||
4273 | case GL_BLEND_SRC_ALPHA_EXT: |
||
4274 | *params = (GLint) ctx->Color.BlendSrcA; |
||
4275 | break; |
||
4276 | case GL_BLEND_DST_ALPHA_EXT: |
||
4277 | *params = (GLint) ctx->Color.BlendDstA; |
||
4278 | break; |
||
4279 | case GL_BLEND_EQUATION_EXT: |
||
4280 | *params = (GLint) ctx->Color.BlendEquation; |
||
4281 | break; |
||
4282 | case GL_BLEND_COLOR_EXT: |
||
4283 | params[0] = FLOAT_TO_INT( ctx->Color.BlendColor[0] ); |
||
4284 | params[1] = FLOAT_TO_INT( ctx->Color.BlendColor[1] ); |
||
4285 | params[2] = FLOAT_TO_INT( ctx->Color.BlendColor[2] ); |
||
4286 | params[3] = FLOAT_TO_INT( ctx->Color.BlendColor[3] ); |
||
4287 | break; |
||
4288 | case GL_BLUE_BIAS: |
||
4289 | *params = (GLint) ctx->Pixel.BlueBias; |
||
4290 | break; |
||
4291 | case GL_BLUE_BITS: |
||
4292 | *params = (GLint) ctx->Visual.blueBits; |
||
4293 | break; |
||
4294 | case GL_BLUE_SCALE: |
||
4295 | *params = (GLint) ctx->Pixel.BlueScale; |
||
4296 | break; |
||
4297 | case GL_CLIENT_ATTRIB_STACK_DEPTH: |
||
4298 | *params = (GLint) (ctx->ClientAttribStackDepth); |
||
4299 | break; |
||
4300 | case GL_CLIP_PLANE0: |
||
4301 | case GL_CLIP_PLANE1: |
||
4302 | case GL_CLIP_PLANE2: |
||
4303 | case GL_CLIP_PLANE3: |
||
4304 | case GL_CLIP_PLANE4: |
||
4305 | case GL_CLIP_PLANE5: |
||
4306 | if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0))) |
||
4307 | *params = 1; |
||
4308 | else |
||
4309 | *params = 0; |
||
4310 | break; |
||
4311 | case GL_COLOR_CLEAR_VALUE: |
||
4312 | params[0] = FLOAT_TO_INT( (ctx->Color.ClearColor[0]) ); |
||
4313 | params[1] = FLOAT_TO_INT( (ctx->Color.ClearColor[1]) ); |
||
4314 | params[2] = FLOAT_TO_INT( (ctx->Color.ClearColor[2]) ); |
||
4315 | params[3] = FLOAT_TO_INT( (ctx->Color.ClearColor[3]) ); |
||
4316 | break; |
||
4317 | case GL_COLOR_MATERIAL: |
||
4318 | *params = (GLint) ctx->Light.ColorMaterialEnabled; |
||
4319 | break; |
||
4320 | case GL_COLOR_MATERIAL_FACE: |
||
4321 | *params = (GLint) ctx->Light.ColorMaterialFace; |
||
4322 | break; |
||
4323 | case GL_COLOR_MATERIAL_PARAMETER: |
||
4324 | *params = (GLint) ctx->Light.ColorMaterialMode; |
||
4325 | break; |
||
4326 | case GL_COLOR_WRITEMASK: |
||
4327 | params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0; |
||
4328 | params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0; |
||
4329 | params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0; |
||
4330 | params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0; |
||
4331 | break; |
||
4332 | case GL_CULL_FACE: |
||
4333 | *params = (GLint) ctx->Polygon.CullFlag; |
||
4334 | break; |
||
4335 | case GL_CULL_FACE_MODE: |
||
4336 | *params = (GLint) ctx->Polygon.CullFaceMode; |
||
4337 | break; |
||
4338 | case GL_CURRENT_COLOR: |
||
4339 | FLUSH_CURRENT(ctx, 0); |
||
4340 | params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); |
||
4341 | params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); |
||
4342 | params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); |
||
4343 | params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); |
||
4344 | break; |
||
4345 | case GL_CURRENT_INDEX: |
||
4346 | FLUSH_CURRENT(ctx, 0); |
||
4347 | *params = (GLint) ctx->Current.Index; |
||
4348 | break; |
||
4349 | case GL_CURRENT_NORMAL: |
||
4350 | FLUSH_CURRENT(ctx, 0); |
||
4351 | params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); |
||
4352 | params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); |
||
4353 | params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); |
||
4354 | break; |
||
4355 | case GL_CURRENT_RASTER_COLOR: |
||
4356 | params[0] = FLOAT_TO_INT( ctx->Current.RasterColor[0] ); |
||
4357 | params[1] = FLOAT_TO_INT( ctx->Current.RasterColor[1] ); |
||
4358 | params[2] = FLOAT_TO_INT( ctx->Current.RasterColor[2] ); |
||
4359 | params[3] = FLOAT_TO_INT( ctx->Current.RasterColor[3] ); |
||
4360 | break; |
||
4361 | case GL_CURRENT_RASTER_DISTANCE: |
||
4362 | params[0] = (GLint) ctx->Current.RasterDistance; |
||
4363 | break; |
||
4364 | case GL_CURRENT_RASTER_INDEX: |
||
4365 | *params = (GLint) ctx->Current.RasterIndex; |
||
4366 | break; |
||
4367 | case GL_CURRENT_RASTER_POSITION: |
||
4368 | params[0] = (GLint) ctx->Current.RasterPos[0]; |
||
4369 | params[1] = (GLint) ctx->Current.RasterPos[1]; |
||
4370 | params[2] = (GLint) ctx->Current.RasterPos[2]; |
||
4371 | params[3] = (GLint) ctx->Current.RasterPos[3]; |
||
4372 | break; |
||
4373 | case GL_CURRENT_RASTER_TEXTURE_COORDS: |
||
4374 | params[0] = (GLint) ctx->Current.RasterTexCoords[texUnit][0]; |
||
4375 | params[1] = (GLint) ctx->Current.RasterTexCoords[texUnit][1]; |
||
4376 | params[2] = (GLint) ctx->Current.RasterTexCoords[texUnit][2]; |
||
4377 | params[3] = (GLint) ctx->Current.RasterTexCoords[texUnit][3]; |
||
4378 | break; |
||
4379 | case GL_CURRENT_RASTER_POSITION_VALID: |
||
4380 | *params = (GLint) ctx->Current.RasterPosValid; |
||
4381 | break; |
||
4382 | case GL_CURRENT_TEXTURE_COORDS: |
||
4383 | FLUSH_CURRENT(ctx, 0); |
||
4384 | params[0] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]; |
||
4385 | params[1] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]; |
||
4386 | params[2] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]; |
||
4387 | params[3] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]; |
||
4388 | break; |
||
4389 | case GL_DEPTH_BIAS: |
||
4390 | *params = (GLint) ctx->Pixel.DepthBias; |
||
4391 | break; |
||
4392 | case GL_DEPTH_BITS: |
||
4393 | *params = ctx->Visual.depthBits; |
||
4394 | break; |
||
4395 | case GL_DEPTH_CLEAR_VALUE: |
||
4396 | *params = (GLint) ctx->Depth.Clear; |
||
4397 | break; |
||
4398 | case GL_DEPTH_FUNC: |
||
4399 | *params = (GLint) ctx->Depth.Func; |
||
4400 | break; |
||
4401 | case GL_DEPTH_RANGE: |
||
4402 | params[0] = (GLint) ctx->Viewport.Near; |
||
4403 | params[1] = (GLint) ctx->Viewport.Far; |
||
4404 | break; |
||
4405 | case GL_DEPTH_SCALE: |
||
4406 | *params = (GLint) ctx->Pixel.DepthScale; |
||
4407 | break; |
||
4408 | case GL_DEPTH_TEST: |
||
4409 | *params = (GLint) ctx->Depth.Test; |
||
4410 | break; |
||
4411 | case GL_DEPTH_WRITEMASK: |
||
4412 | *params = (GLint) ctx->Depth.Mask; |
||
4413 | break; |
||
4414 | case GL_DITHER: |
||
4415 | *params = (GLint) ctx->Color.DitherFlag; |
||
4416 | break; |
||
4417 | case GL_DOUBLEBUFFER: |
||
4418 | *params = (GLint) ctx->Visual.doubleBufferMode; |
||
4419 | break; |
||
4420 | case GL_DRAW_BUFFER: |
||
4421 | *params = (GLint) ctx->Color.DrawBuffer; |
||
4422 | break; |
||
4423 | case GL_EDGE_FLAG: |
||
4424 | FLUSH_CURRENT(ctx, 0); |
||
4425 | *params = (GLint) ctx->Current.EdgeFlag; |
||
4426 | break; |
||
4427 | case GL_FEEDBACK_BUFFER_SIZE: |
||
4428 | *params = ctx->Feedback.BufferSize; |
||
4429 | break; |
||
4430 | case GL_FEEDBACK_BUFFER_TYPE: |
||
4431 | *params = ctx->Feedback.Type; |
||
4432 | break; |
||
4433 | case GL_FOG: |
||
4434 | *params = (GLint) ctx->Fog.Enabled; |
||
4435 | break; |
||
4436 | case GL_FOG_COLOR: |
||
4437 | params[0] = FLOAT_TO_INT( ctx->Fog.Color[0] ); |
||
4438 | params[1] = FLOAT_TO_INT( ctx->Fog.Color[1] ); |
||
4439 | params[2] = FLOAT_TO_INT( ctx->Fog.Color[2] ); |
||
4440 | params[3] = FLOAT_TO_INT( ctx->Fog.Color[3] ); |
||
4441 | break; |
||
4442 | case GL_FOG_DENSITY: |
||
4443 | *params = (GLint) ctx->Fog.Density; |
||
4444 | break; |
||
4445 | case GL_FOG_END: |
||
4446 | *params = (GLint) ctx->Fog.End; |
||
4447 | break; |
||
4448 | case GL_FOG_HINT: |
||
4449 | *params = (GLint) ctx->Hint.Fog; |
||
4450 | break; |
||
4451 | case GL_FOG_INDEX: |
||
4452 | *params = (GLint) ctx->Fog.Index; |
||
4453 | break; |
||
4454 | case GL_FOG_MODE: |
||
4455 | *params = (GLint) ctx->Fog.Mode; |
||
4456 | break; |
||
4457 | case GL_FOG_START: |
||
4458 | *params = (GLint) ctx->Fog.Start; |
||
4459 | break; |
||
4460 | case GL_FRONT_FACE: |
||
4461 | *params = (GLint) ctx->Polygon.FrontFace; |
||
4462 | break; |
||
4463 | case GL_GREEN_BIAS: |
||
4464 | *params = (GLint) ctx->Pixel.GreenBias; |
||
4465 | break; |
||
4466 | case GL_GREEN_BITS: |
||
4467 | *params = (GLint) ctx->Visual.greenBits; |
||
4468 | break; |
||
4469 | case GL_GREEN_SCALE: |
||
4470 | *params = (GLint) ctx->Pixel.GreenScale; |
||
4471 | break; |
||
4472 | case GL_INDEX_BITS: |
||
4473 | *params = (GLint) ctx->Visual.indexBits; |
||
4474 | break; |
||
4475 | case GL_INDEX_CLEAR_VALUE: |
||
4476 | *params = (GLint) ctx->Color.ClearIndex; |
||
4477 | break; |
||
4478 | case GL_INDEX_MODE: |
||
4479 | *params = ctx->Visual.rgbMode ? 0 : 1; |
||
4480 | break; |
||
4481 | case GL_INDEX_OFFSET: |
||
4482 | *params = ctx->Pixel.IndexOffset; |
||
4483 | break; |
||
4484 | case GL_INDEX_SHIFT: |
||
4485 | *params = ctx->Pixel.IndexShift; |
||
4486 | break; |
||
4487 | case GL_INDEX_WRITEMASK: |
||
4488 | *params = (GLint) ctx->Color.IndexMask; |
||
4489 | break; |
||
4490 | case GL_LIGHT0: |
||
4491 | case GL_LIGHT1: |
||
4492 | case GL_LIGHT2: |
||
4493 | case GL_LIGHT3: |
||
4494 | case GL_LIGHT4: |
||
4495 | case GL_LIGHT5: |
||
4496 | case GL_LIGHT6: |
||
4497 | case GL_LIGHT7: |
||
4498 | *params = (GLint) ctx->Light.Light[pname-GL_LIGHT0].Enabled; |
||
4499 | break; |
||
4500 | case GL_LIGHTING: |
||
4501 | *params = (GLint) ctx->Light.Enabled; |
||
4502 | break; |
||
4503 | case GL_LIGHT_MODEL_AMBIENT: |
||
4504 | params[0] = FLOAT_TO_INT( ctx->Light.Model.Ambient[0] ); |
||
4505 | params[1] = FLOAT_TO_INT( ctx->Light.Model.Ambient[1] ); |
||
4506 | params[2] = FLOAT_TO_INT( ctx->Light.Model.Ambient[2] ); |
||
4507 | params[3] = FLOAT_TO_INT( ctx->Light.Model.Ambient[3] ); |
||
4508 | break; |
||
4509 | case GL_LIGHT_MODEL_COLOR_CONTROL: |
||
4510 | params[0] = (GLint) ctx->Light.Model.ColorControl; |
||
4511 | break; |
||
4512 | case GL_LIGHT_MODEL_LOCAL_VIEWER: |
||
4513 | *params = (GLint) ctx->Light.Model.LocalViewer; |
||
4514 | break; |
||
4515 | case GL_LIGHT_MODEL_TWO_SIDE: |
||
4516 | *params = (GLint) ctx->Light.Model.TwoSide; |
||
4517 | break; |
||
4518 | case GL_LINE_SMOOTH: |
||
4519 | *params = (GLint) ctx->Line.SmoothFlag; |
||
4520 | break; |
||
4521 | case GL_LINE_SMOOTH_HINT: |
||
4522 | *params = (GLint) ctx->Hint.LineSmooth; |
||
4523 | break; |
||
4524 | case GL_LINE_STIPPLE: |
||
4525 | *params = (GLint) ctx->Line.StippleFlag; |
||
4526 | break; |
||
4527 | case GL_LINE_STIPPLE_PATTERN: |
||
4528 | *params = (GLint) ctx->Line.StipplePattern; |
||
4529 | break; |
||
4530 | case GL_LINE_STIPPLE_REPEAT: |
||
4531 | *params = (GLint) ctx->Line.StippleFactor; |
||
4532 | break; |
||
4533 | case GL_LINE_WIDTH: |
||
4534 | *params = (GLint) ctx->Line.Width; |
||
4535 | break; |
||
4536 | case GL_LINE_WIDTH_GRANULARITY: |
||
4537 | *params = (GLint) ctx->Const.LineWidthGranularity; |
||
4538 | break; |
||
4539 | case GL_LINE_WIDTH_RANGE: |
||
4540 | params[0] = (GLint) ctx->Const.MinLineWidthAA; |
||
4541 | params[1] = (GLint) ctx->Const.MaxLineWidthAA; |
||
4542 | break; |
||
4543 | case GL_ALIASED_LINE_WIDTH_RANGE: |
||
4544 | params[0] = (GLint) ctx->Const.MinLineWidth; |
||
4545 | params[1] = (GLint) ctx->Const.MaxLineWidth; |
||
4546 | break; |
||
4547 | case GL_LIST_BASE: |
||
4548 | *params = (GLint) ctx->List.ListBase; |
||
4549 | break; |
||
4550 | case GL_LIST_INDEX: |
||
4551 | *params = (GLint) ctx->CurrentListNum; |
||
4552 | break; |
||
4553 | case GL_LIST_MODE: |
||
4554 | *params = ctx->ExecuteFlag ? (GLint) GL_COMPILE_AND_EXECUTE |
||
4555 | : (GLint) GL_COMPILE; |
||
4556 | break; |
||
4557 | case GL_INDEX_LOGIC_OP: |
||
4558 | *params = (GLint) ctx->Color.IndexLogicOpEnabled; |
||
4559 | break; |
||
4560 | case GL_COLOR_LOGIC_OP: |
||
4561 | *params = (GLint) ctx->Color.ColorLogicOpEnabled; |
||
4562 | break; |
||
4563 | case GL_LOGIC_OP_MODE: |
||
4564 | *params = (GLint) ctx->Color.LogicOp; |
||
4565 | break; |
||
4566 | case GL_MAP1_COLOR_4: |
||
4567 | *params = (GLint) ctx->Eval.Map1Color4; |
||
4568 | break; |
||
4569 | case GL_MAP1_GRID_DOMAIN: |
||
4570 | params[0] = (GLint) ctx->Eval.MapGrid1u1; |
||
4571 | params[1] = (GLint) ctx->Eval.MapGrid1u2; |
||
4572 | break; |
||
4573 | case GL_MAP1_GRID_SEGMENTS: |
||
4574 | *params = (GLint) ctx->Eval.MapGrid1un; |
||
4575 | break; |
||
4576 | case GL_MAP1_INDEX: |
||
4577 | *params = (GLint) ctx->Eval.Map1Index; |
||
4578 | break; |
||
4579 | case GL_MAP1_NORMAL: |
||
4580 | *params = (GLint) ctx->Eval.Map1Normal; |
||
4581 | break; |
||
4582 | case GL_MAP1_TEXTURE_COORD_1: |
||
4583 | *params = (GLint) ctx->Eval.Map1TextureCoord1; |
||
4584 | break; |
||
4585 | case GL_MAP1_TEXTURE_COORD_2: |
||
4586 | *params = (GLint) ctx->Eval.Map1TextureCoord2; |
||
4587 | break; |
||
4588 | case GL_MAP1_TEXTURE_COORD_3: |
||
4589 | *params = (GLint) ctx->Eval.Map1TextureCoord3; |
||
4590 | break; |
||
4591 | case GL_MAP1_TEXTURE_COORD_4: |
||
4592 | *params = (GLint) ctx->Eval.Map1TextureCoord4; |
||
4593 | break; |
||
4594 | case GL_MAP1_VERTEX_3: |
||
4595 | *params = (GLint) ctx->Eval.Map1Vertex3; |
||
4596 | break; |
||
4597 | case GL_MAP1_VERTEX_4: |
||
4598 | *params = (GLint) ctx->Eval.Map1Vertex4; |
||
4599 | break; |
||
4600 | case GL_MAP2_COLOR_4: |
||
4601 | *params = (GLint) ctx->Eval.Map2Color4; |
||
4602 | break; |
||
4603 | case GL_MAP2_GRID_DOMAIN: |
||
4604 | params[0] = (GLint) ctx->Eval.MapGrid2u1; |
||
4605 | params[1] = (GLint) ctx->Eval.MapGrid2u2; |
||
4606 | params[2] = (GLint) ctx->Eval.MapGrid2v1; |
||
4607 | params[3] = (GLint) ctx->Eval.MapGrid2v2; |
||
4608 | break; |
||
4609 | case GL_MAP2_GRID_SEGMENTS: |
||
4610 | params[0] = (GLint) ctx->Eval.MapGrid2un; |
||
4611 | params[1] = (GLint) ctx->Eval.MapGrid2vn; |
||
4612 | break; |
||
4613 | case GL_MAP2_INDEX: |
||
4614 | *params = (GLint) ctx->Eval.Map2Index; |
||
4615 | break; |
||
4616 | case GL_MAP2_NORMAL: |
||
4617 | *params = (GLint) ctx->Eval.Map2Normal; |
||
4618 | break; |
||
4619 | case GL_MAP2_TEXTURE_COORD_1: |
||
4620 | *params = (GLint) ctx->Eval.Map2TextureCoord1; |
||
4621 | break; |
||
4622 | case GL_MAP2_TEXTURE_COORD_2: |
||
4623 | *params = (GLint) ctx->Eval.Map2TextureCoord2; |
||
4624 | break; |
||
4625 | case GL_MAP2_TEXTURE_COORD_3: |
||
4626 | *params = (GLint) ctx->Eval.Map2TextureCoord3; |
||
4627 | break; |
||
4628 | case GL_MAP2_TEXTURE_COORD_4: |
||
4629 | *params = (GLint) ctx->Eval.Map2TextureCoord4; |
||
4630 | break; |
||
4631 | case GL_MAP2_VERTEX_3: |
||
4632 | *params = (GLint) ctx->Eval.Map2Vertex3; |
||
4633 | break; |
||
4634 | case GL_MAP2_VERTEX_4: |
||
4635 | *params = (GLint) ctx->Eval.Map2Vertex4; |
||
4636 | break; |
||
4637 | case GL_MAP_COLOR: |
||
4638 | *params = (GLint) ctx->Pixel.MapColorFlag; |
||
4639 | break; |
||
4640 | case GL_MAP_STENCIL: |
||
4641 | *params = (GLint) ctx->Pixel.MapStencilFlag; |
||
4642 | break; |
||
4643 | case GL_MATRIX_MODE: |
||
4644 | *params = (GLint) ctx->Transform.MatrixMode; |
||
4645 | break; |
||
4646 | case GL_MAX_ATTRIB_STACK_DEPTH: |
||
4647 | *params = (GLint) MAX_ATTRIB_STACK_DEPTH; |
||
4648 | break; |
||
4649 | case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: |
||
4650 | *params = (GLint) MAX_CLIENT_ATTRIB_STACK_DEPTH; |
||
4651 | break; |
||
4652 | case GL_MAX_CLIP_PLANES: |
||
4653 | *params = (GLint) ctx->Const.MaxClipPlanes; |
||
4654 | break; |
||
4655 | case GL_MAX_ELEMENTS_VERTICES: /* GL_VERSION_1_2 */ |
||
4656 | *params = (GLint) ctx->Const.MaxArrayLockSize; |
||
4657 | break; |
||
4658 | case GL_MAX_ELEMENTS_INDICES: /* GL_VERSION_1_2 */ |
||
4659 | *params = (GLint) ctx->Const.MaxArrayLockSize; |
||
4660 | break; |
||
4661 | case GL_MAX_EVAL_ORDER: |
||
4662 | *params = (GLint) MAX_EVAL_ORDER; |
||
4663 | break; |
||
4664 | case GL_MAX_LIGHTS: |
||
4665 | *params = (GLint) ctx->Const.MaxLights; |
||
4666 | break; |
||
4667 | case GL_MAX_LIST_NESTING: |
||
4668 | *params = (GLint) MAX_LIST_NESTING; |
||
4669 | break; |
||
4670 | case GL_MAX_MODELVIEW_STACK_DEPTH: |
||
4671 | *params = (GLint) MAX_MODELVIEW_STACK_DEPTH; |
||
4672 | break; |
||
4673 | case GL_MAX_NAME_STACK_DEPTH: |
||
4674 | *params = (GLint) MAX_NAME_STACK_DEPTH; |
||
4675 | break; |
||
4676 | case GL_MAX_PIXEL_MAP_TABLE: |
||
4677 | *params = (GLint) MAX_PIXEL_MAP_TABLE; |
||
4678 | break; |
||
4679 | case GL_MAX_PROJECTION_STACK_DEPTH: |
||
4680 | *params = (GLint) MAX_PROJECTION_STACK_DEPTH; |
||
4681 | break; |
||
4682 | case GL_MAX_TEXTURE_SIZE: |
||
4683 | *params = (1 << (ctx->Const.MaxTextureLevels - 1)); |
||
4684 | break; |
||
4685 | case GL_MAX_3D_TEXTURE_SIZE: |
||
4686 | *params = (1 << (ctx->Const.Max3DTextureLevels - 1)); |
||
4687 | break; |
||
4688 | case GL_MAX_TEXTURE_STACK_DEPTH: |
||
4689 | *params = (GLint) MAX_TEXTURE_STACK_DEPTH; |
||
4690 | break; |
||
4691 | case GL_MAX_VIEWPORT_DIMS: |
||
4692 | params[0] = (GLint) MAX_WIDTH; |
||
4693 | params[1] = (GLint) MAX_HEIGHT; |
||
4694 | break; |
||
4695 | case GL_MODELVIEW_MATRIX: |
||
4696 | for (i=0;i<16;i++) { |
||
4697 | params[i] = (GLint) ctx->ModelviewMatrixStack.Top->m[i]; |
||
4698 | } |
||
4699 | break; |
||
4700 | case GL_MODELVIEW_STACK_DEPTH: |
||
4701 | *params = (GLint) (ctx->ModelviewMatrixStack.Depth + 1); |
||
4702 | break; |
||
4703 | case GL_NAME_STACK_DEPTH: |
||
4704 | *params = (GLint) ctx->Select.NameStackDepth; |
||
4705 | break; |
||
4706 | case GL_NORMALIZE: |
||
4707 | *params = (GLint) ctx->Transform.Normalize; |
||
4708 | break; |
||
4709 | case GL_PACK_ALIGNMENT: |
||
4710 | *params = ctx->Pack.Alignment; |
||
4711 | break; |
||
4712 | case GL_PACK_LSB_FIRST: |
||
4713 | *params = (GLint) ctx->Pack.LsbFirst; |
||
4714 | break; |
||
4715 | case GL_PACK_ROW_LENGTH: |
||
4716 | *params = ctx->Pack.RowLength; |
||
4717 | break; |
||
4718 | case GL_PACK_SKIP_PIXELS: |
||
4719 | *params = ctx->Pack.SkipPixels; |
||
4720 | break; |
||
4721 | case GL_PACK_SKIP_ROWS: |
||
4722 | *params = ctx->Pack.SkipRows; |
||
4723 | break; |
||
4724 | case GL_PACK_SWAP_BYTES: |
||
4725 | *params = (GLint) ctx->Pack.SwapBytes; |
||
4726 | break; |
||
4727 | case GL_PACK_SKIP_IMAGES_EXT: |
||
4728 | *params = ctx->Pack.SkipImages; |
||
4729 | break; |
||
4730 | case GL_PACK_IMAGE_HEIGHT_EXT: |
||
4731 | *params = ctx->Pack.ImageHeight; |
||
4732 | break; |
||
4733 | case GL_PACK_INVERT_MESA: |
||
4734 | *params = ctx->Pack.Invert; |
||
4735 | break; |
||
4736 | case GL_PERSPECTIVE_CORRECTION_HINT: |
||
4737 | *params = (GLint) ctx->Hint.PerspectiveCorrection; |
||
4738 | break; |
||
4739 | case GL_PIXEL_MAP_A_TO_A_SIZE: |
||
4740 | *params = ctx->Pixel.MapAtoAsize; |
||
4741 | break; |
||
4742 | case GL_PIXEL_MAP_B_TO_B_SIZE: |
||
4743 | *params = ctx->Pixel.MapBtoBsize; |
||
4744 | break; |
||
4745 | case GL_PIXEL_MAP_G_TO_G_SIZE: |
||
4746 | *params = ctx->Pixel.MapGtoGsize; |
||
4747 | break; |
||
4748 | case GL_PIXEL_MAP_I_TO_A_SIZE: |
||
4749 | *params = ctx->Pixel.MapItoAsize; |
||
4750 | break; |
||
4751 | case GL_PIXEL_MAP_I_TO_B_SIZE: |
||
4752 | *params = ctx->Pixel.MapItoBsize; |
||
4753 | break; |
||
4754 | case GL_PIXEL_MAP_I_TO_G_SIZE: |
||
4755 | *params = ctx->Pixel.MapItoGsize; |
||
4756 | break; |
||
4757 | case GL_PIXEL_MAP_I_TO_I_SIZE: |
||
4758 | *params = ctx->Pixel.MapItoIsize; |
||
4759 | break; |
||
4760 | case GL_PIXEL_MAP_I_TO_R_SIZE: |
||
4761 | *params = ctx->Pixel.MapItoRsize; |
||
4762 | break; |
||
4763 | case GL_PIXEL_MAP_R_TO_R_SIZE: |
||
4764 | *params = ctx->Pixel.MapRtoRsize; |
||
4765 | break; |
||
4766 | case GL_PIXEL_MAP_S_TO_S_SIZE: |
||
4767 | *params = ctx->Pixel.MapStoSsize; |
||
4768 | break; |
||
4769 | case GL_POINT_SIZE: |
||
4770 | *params = (GLint) ctx->Point.Size; |
||
4771 | break; |
||
4772 | case GL_POINT_SIZE_GRANULARITY: |
||
4773 | *params = (GLint) ctx->Const.PointSizeGranularity; |
||
4774 | break; |
||
4775 | case GL_POINT_SIZE_RANGE: |
||
4776 | params[0] = (GLint) ctx->Const.MinPointSizeAA; |
||
4777 | params[1] = (GLint) ctx->Const.MaxPointSizeAA; |
||
4778 | break; |
||
4779 | case GL_ALIASED_POINT_SIZE_RANGE: |
||
4780 | params[0] = (GLint) ctx->Const.MinPointSize; |
||
4781 | params[1] = (GLint) ctx->Const.MaxPointSize; |
||
4782 | break; |
||
4783 | case GL_POINT_SMOOTH: |
||
4784 | *params = (GLint) ctx->Point.SmoothFlag; |
||
4785 | break; |
||
4786 | case GL_POINT_SMOOTH_HINT: |
||
4787 | *params = (GLint) ctx->Hint.PointSmooth; |
||
4788 | break; |
||
4789 | case GL_POINT_SIZE_MIN_EXT: |
||
4790 | *params = (GLint) (ctx->Point.MinSize); |
||
4791 | break; |
||
4792 | case GL_POINT_SIZE_MAX_EXT: |
||
4793 | *params = (GLint) (ctx->Point.MaxSize); |
||
4794 | break; |
||
4795 | case GL_POINT_FADE_THRESHOLD_SIZE_EXT: |
||
4796 | *params = (GLint) (ctx->Point.Threshold); |
||
4797 | break; |
||
4798 | case GL_DISTANCE_ATTENUATION_EXT: |
||
4799 | params[0] = (GLint) (ctx->Point.Params[0]); |
||
4800 | params[1] = (GLint) (ctx->Point.Params[1]); |
||
4801 | params[2] = (GLint) (ctx->Point.Params[2]); |
||
4802 | break; |
||
4803 | case GL_POLYGON_MODE: |
||
4804 | params[0] = (GLint) ctx->Polygon.FrontMode; |
||
4805 | params[1] = (GLint) ctx->Polygon.BackMode; |
||
4806 | break; |
||
4807 | case GL_POLYGON_OFFSET_BIAS_EXT: /* GL_EXT_polygon_offset */ |
||
4808 | *params = (GLint) ctx->Polygon.OffsetUnits; |
||
4809 | break; |
||
4810 | case GL_POLYGON_OFFSET_FACTOR: |
||
4811 | *params = (GLint) ctx->Polygon.OffsetFactor; |
||
4812 | break; |
||
4813 | case GL_POLYGON_OFFSET_UNITS: |
||
4814 | *params = (GLint) ctx->Polygon.OffsetUnits; |
||
4815 | break; |
||
4816 | case GL_POLYGON_SMOOTH: |
||
4817 | *params = (GLint) ctx->Polygon.SmoothFlag; |
||
4818 | break; |
||
4819 | case GL_POLYGON_SMOOTH_HINT: |
||
4820 | *params = (GLint) ctx->Hint.PolygonSmooth; |
||
4821 | break; |
||
4822 | case GL_POLYGON_STIPPLE: |
||
4823 | *params = (GLint) ctx->Polygon.StippleFlag; |
||
4824 | break; |
||
4825 | case GL_PROJECTION_MATRIX: |
||
4826 | for (i=0;i<16;i++) { |
||
4827 | params[i] = (GLint) ctx->ProjectionMatrixStack.Top->m[i]; |
||
4828 | } |
||
4829 | break; |
||
4830 | case GL_PROJECTION_STACK_DEPTH: |
||
4831 | *params = (GLint) (ctx->ProjectionMatrixStack.Depth + 1); |
||
4832 | break; |
||
4833 | case GL_READ_BUFFER: |
||
4834 | *params = (GLint) ctx->Pixel.ReadBuffer; |
||
4835 | break; |
||
4836 | case GL_RED_BIAS: |
||
4837 | *params = (GLint) ctx->Pixel.RedBias; |
||
4838 | break; |
||
4839 | case GL_RED_BITS: |
||
4840 | *params = (GLint) ctx->Visual.redBits; |
||
4841 | break; |
||
4842 | case GL_RED_SCALE: |
||
4843 | *params = (GLint) ctx->Pixel.RedScale; |
||
4844 | break; |
||
4845 | case GL_RENDER_MODE: |
||
4846 | *params = (GLint) ctx->RenderMode; |
||
4847 | break; |
||
4848 | case GL_RESCALE_NORMAL: |
||
4849 | *params = (GLint) ctx->Transform.RescaleNormals; |
||
4850 | break; |
||
4851 | case GL_RGBA_MODE: |
||
4852 | *params = (GLint) ctx->Visual.rgbMode; |
||
4853 | break; |
||
4854 | case GL_SCISSOR_BOX: |
||
4855 | params[0] = (GLint) ctx->Scissor.X; |
||
4856 | params[1] = (GLint) ctx->Scissor.Y; |
||
4857 | params[2] = (GLint) ctx->Scissor.Width; |
||
4858 | params[3] = (GLint) ctx->Scissor.Height; |
||
4859 | break; |
||
4860 | case GL_SCISSOR_TEST: |
||
4861 | *params = (GLint) ctx->Scissor.Enabled; |
||
4862 | break; |
||
4863 | case GL_SELECTION_BUFFER_SIZE: |
||
4864 | *params = (GLint) ctx->Select.BufferSize; |
||
4865 | break; |
||
4866 | case GL_SHADE_MODEL: |
||
4867 | *params = (GLint) ctx->Light.ShadeModel; |
||
4868 | break; |
||
4869 | case GL_SHARED_TEXTURE_PALETTE_EXT: |
||
4870 | *params = (GLint) ctx->Texture.SharedPalette; |
||
4871 | break; |
||
4872 | case GL_STENCIL_BITS: |
||
4873 | *params = ctx->Visual.stencilBits; |
||
4874 | break; |
||
4875 | case GL_STENCIL_CLEAR_VALUE: |
||
4876 | *params = (GLint) ctx->Stencil.Clear; |
||
4877 | break; |
||
4878 | case GL_STENCIL_FAIL: |
||
4879 | *params = (GLint) ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]; |
||
4880 | break; |
||
4881 | case GL_STENCIL_FUNC: |
||
4882 | *params = (GLint) ctx->Stencil.Function[ctx->Stencil.ActiveFace]; |
||
4883 | break; |
||
4884 | case GL_STENCIL_PASS_DEPTH_FAIL: |
||
4885 | *params = (GLint) ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]; |
||
4886 | break; |
||
4887 | case GL_STENCIL_PASS_DEPTH_PASS: |
||
4888 | *params = (GLint) ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]; |
||
4889 | break; |
||
4890 | case GL_STENCIL_REF: |
||
4891 | *params = (GLint) ctx->Stencil.Ref[ctx->Stencil.ActiveFace]; |
||
4892 | break; |
||
4893 | case GL_STENCIL_TEST: |
||
4894 | *params = (GLint) ctx->Stencil.Enabled; |
||
4895 | break; |
||
4896 | case GL_STENCIL_VALUE_MASK: |
||
4897 | *params = (GLint) ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]; |
||
4898 | break; |
||
4899 | case GL_STENCIL_WRITEMASK: |
||
4900 | *params = (GLint) ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]; |
||
4901 | break; |
||
4902 | case GL_STEREO: |
||
4903 | *params = (GLint) ctx->Visual.stereoMode; |
||
4904 | break; |
||
4905 | case GL_SUBPIXEL_BITS: |
||
4906 | *params = ctx->Const.SubPixelBits; |
||
4907 | break; |
||
4908 | case GL_TEXTURE_1D: |
||
4909 | *params = _mesa_IsEnabled(GL_TEXTURE_1D) ? 1 : 0; |
||
4910 | break; |
||
4911 | case GL_TEXTURE_2D: |
||
4912 | *params = _mesa_IsEnabled(GL_TEXTURE_2D) ? 1 : 0; |
||
4913 | break; |
||
4914 | case GL_TEXTURE_3D: |
||
4915 | *params = _mesa_IsEnabled(GL_TEXTURE_3D) ? 1 : 0; |
||
4916 | break; |
||
4917 | case GL_TEXTURE_BINDING_1D: |
||
4918 | *params = textureUnit->Current1D->Name; |
||
4919 | break; |
||
4920 | case GL_TEXTURE_BINDING_2D: |
||
4921 | *params = textureUnit->Current2D->Name; |
||
4922 | break; |
||
4923 | case GL_TEXTURE_BINDING_3D: |
||
4924 | *params = textureUnit->Current3D->Name; |
||
4925 | break; |
||
4926 | case GL_TEXTURE_ENV_COLOR: |
||
4927 | params[0] = FLOAT_TO_INT( textureUnit->EnvColor[0] ); |
||
4928 | params[1] = FLOAT_TO_INT( textureUnit->EnvColor[1] ); |
||
4929 | params[2] = FLOAT_TO_INT( textureUnit->EnvColor[2] ); |
||
4930 | params[3] = FLOAT_TO_INT( textureUnit->EnvColor[3] ); |
||
4931 | break; |
||
4932 | case GL_TEXTURE_ENV_MODE: |
||
4933 | *params = (GLint) textureUnit->EnvMode; |
||
4934 | break; |
||
4935 | case GL_TEXTURE_GEN_S: |
||
4936 | *params = (textureUnit->TexGenEnabled & S_BIT) ? 1 : 0; |
||
4937 | break; |
||
4938 | case GL_TEXTURE_GEN_T: |
||
4939 | *params = (textureUnit->TexGenEnabled & T_BIT) ? 1 : 0; |
||
4940 | break; |
||
4941 | case GL_TEXTURE_GEN_R: |
||
4942 | *params = (textureUnit->TexGenEnabled & R_BIT) ? 1 : 0; |
||
4943 | break; |
||
4944 | case GL_TEXTURE_GEN_Q: |
||
4945 | *params = (textureUnit->TexGenEnabled & Q_BIT) ? 1 : 0; |
||
4946 | break; |
||
4947 | case GL_TEXTURE_MATRIX: |
||
4948 | for (i=0;i<16;i++) { |
||
4949 | params[i] = (GLint) ctx->TextureMatrixStack[texUnit].Top->m[i]; |
||
4950 | } |
||
4951 | break; |
||
4952 | case GL_TEXTURE_STACK_DEPTH: |
||
4953 | *params = (GLint) (ctx->TextureMatrixStack[texUnit].Depth + 1); |
||
4954 | break; |
||
4955 | case GL_UNPACK_ALIGNMENT: |
||
4956 | *params = ctx->Unpack.Alignment; |
||
4957 | break; |
||
4958 | case GL_UNPACK_LSB_FIRST: |
||
4959 | *params = (GLint) ctx->Unpack.LsbFirst; |
||
4960 | break; |
||
4961 | case GL_UNPACK_ROW_LENGTH: |
||
4962 | *params = ctx->Unpack.RowLength; |
||
4963 | break; |
||
4964 | case GL_UNPACK_SKIP_PIXELS: |
||
4965 | *params = ctx->Unpack.SkipPixels; |
||
4966 | break; |
||
4967 | case GL_UNPACK_SKIP_ROWS: |
||
4968 | *params = ctx->Unpack.SkipRows; |
||
4969 | break; |
||
4970 | case GL_UNPACK_SWAP_BYTES: |
||
4971 | *params = (GLint) ctx->Unpack.SwapBytes; |
||
4972 | break; |
||
4973 | case GL_UNPACK_SKIP_IMAGES_EXT: |
||
4974 | *params = ctx->Unpack.SkipImages; |
||
4975 | break; |
||
4976 | case GL_UNPACK_IMAGE_HEIGHT_EXT: |
||
4977 | *params = ctx->Unpack.ImageHeight; |
||
4978 | break; |
||
4979 | case GL_UNPACK_CLIENT_STORAGE_APPLE: |
||
4980 | *params = ctx->Unpack.ClientStorage; |
||
4981 | break; |
||
4982 | case GL_VIEWPORT: |
||
4983 | params[0] = (GLint) ctx->Viewport.X; |
||
4984 | params[1] = (GLint) ctx->Viewport.Y; |
||
4985 | params[2] = (GLint) ctx->Viewport.Width; |
||
4986 | params[3] = (GLint) ctx->Viewport.Height; |
||
4987 | break; |
||
4988 | case GL_ZOOM_X: |
||
4989 | *params = (GLint) ctx->Pixel.ZoomX; |
||
4990 | break; |
||
4991 | case GL_ZOOM_Y: |
||
4992 | *params = (GLint) ctx->Pixel.ZoomY; |
||
4993 | break; |
||
4994 | case GL_VERTEX_ARRAY: |
||
4995 | *params = (GLint) ctx->Array.Vertex.Enabled; |
||
4996 | break; |
||
4997 | case GL_VERTEX_ARRAY_SIZE: |
||
4998 | *params = ctx->Array.Vertex.Size; |
||
4999 | break; |
||
5000 | case GL_VERTEX_ARRAY_TYPE: |
||
5001 | *params = ctx->Array.Vertex.Type; |
||
5002 | break; |
||
5003 | case GL_VERTEX_ARRAY_STRIDE: |
||
5004 | *params = ctx->Array.Vertex.Stride; |
||
5005 | break; |
||
5006 | case GL_VERTEX_ARRAY_COUNT_EXT: |
||
5007 | *params = 0; |
||
5008 | break; |
||
5009 | case GL_NORMAL_ARRAY: |
||
5010 | *params = (GLint) ctx->Array.Normal.Enabled; |
||
5011 | break; |
||
5012 | case GL_NORMAL_ARRAY_TYPE: |
||
5013 | *params = ctx->Array.Normal.Type; |
||
5014 | break; |
||
5015 | case GL_NORMAL_ARRAY_STRIDE: |
||
5016 | *params = ctx->Array.Normal.Stride; |
||
5017 | break; |
||
5018 | case GL_NORMAL_ARRAY_COUNT_EXT: |
||
5019 | *params = 0; |
||
5020 | break; |
||
5021 | case GL_COLOR_ARRAY: |
||
5022 | *params = (GLint) ctx->Array.Color.Enabled; |
||
5023 | break; |
||
5024 | case GL_COLOR_ARRAY_SIZE: |
||
5025 | *params = ctx->Array.Color.Size; |
||
5026 | break; |
||
5027 | case GL_COLOR_ARRAY_TYPE: |
||
5028 | *params = ctx->Array.Color.Type; |
||
5029 | break; |
||
5030 | case GL_COLOR_ARRAY_STRIDE: |
||
5031 | *params = ctx->Array.Color.Stride; |
||
5032 | break; |
||
5033 | case GL_COLOR_ARRAY_COUNT_EXT: |
||
5034 | *params = 0; |
||
5035 | break; |
||
5036 | case GL_INDEX_ARRAY: |
||
5037 | *params = (GLint) ctx->Array.Index.Enabled; |
||
5038 | break; |
||
5039 | case GL_INDEX_ARRAY_TYPE: |
||
5040 | *params = ctx->Array.Index.Type; |
||
5041 | break; |
||
5042 | case GL_INDEX_ARRAY_STRIDE: |
||
5043 | *params = ctx->Array.Index.Stride; |
||
5044 | break; |
||
5045 | case GL_INDEX_ARRAY_COUNT_EXT: |
||
5046 | *params = 0; |
||
5047 | break; |
||
5048 | case GL_TEXTURE_COORD_ARRAY: |
||
5049 | *params = (GLint) ctx->Array.TexCoord[texUnit].Enabled; |
||
5050 | break; |
||
5051 | case GL_TEXTURE_COORD_ARRAY_SIZE: |
||
5052 | *params = ctx->Array.TexCoord[texUnit].Size; |
||
5053 | break; |
||
5054 | case GL_TEXTURE_COORD_ARRAY_TYPE: |
||
5055 | *params = ctx->Array.TexCoord[texUnit].Type; |
||
5056 | break; |
||
5057 | case GL_TEXTURE_COORD_ARRAY_STRIDE: |
||
5058 | *params = ctx->Array.TexCoord[texUnit].Stride; |
||
5059 | break; |
||
5060 | case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: |
||
5061 | *params = 0; |
||
5062 | break; |
||
5063 | case GL_EDGE_FLAG_ARRAY: |
||
5064 | *params = (GLint) ctx->Array.EdgeFlag.Enabled; |
||
5065 | break; |
||
5066 | case GL_EDGE_FLAG_ARRAY_STRIDE: |
||
5067 | *params = ctx->Array.EdgeFlag.Stride; |
||
5068 | break; |
||
5069 | case GL_EDGE_FLAG_ARRAY_COUNT_EXT: |
||
5070 | *params = 0; |
||
5071 | break; |
||
5072 | |||
5073 | /* GL_ARB_multitexture */ |
||
5074 | case GL_MAX_TEXTURE_UNITS_ARB: |
||
5075 | CHECK_EXTENSION_I(ARB_multitexture, pname); |
||
5076 | *params = ctx->Const.MaxTextureUnits; |
||
5077 | break; |
||
5078 | case GL_ACTIVE_TEXTURE_ARB: |
||
5079 | CHECK_EXTENSION_I(ARB_multitexture, pname); |
||
5080 | *params = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit; |
||
5081 | break; |
||
5082 | case GL_CLIENT_ACTIVE_TEXTURE_ARB: |
||
5083 | CHECK_EXTENSION_I(ARB_multitexture, pname); |
||
5084 | *params = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture; |
||
5085 | break; |
||
5086 | |||
5087 | /* GL_ARB_texture_cube_map */ |
||
5088 | case GL_TEXTURE_CUBE_MAP_ARB: |
||
5089 | CHECK_EXTENSION_I(ARB_texture_cube_map, pname); |
||
5090 | *params = (GLint) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB); |
||
5091 | break; |
||
5092 | case GL_TEXTURE_BINDING_CUBE_MAP_ARB: |
||
5093 | CHECK_EXTENSION_I(ARB_texture_cube_map, pname); |
||
5094 | *params = textureUnit->CurrentCubeMap->Name; |
||
5095 | break; |
||
5096 | case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: |
||
5097 | CHECK_EXTENSION_I(ARB_texture_cube_map, pname); |
||
5098 | *params = (1 << (ctx->Const.MaxCubeTextureLevels - 1)); |
||
5099 | break; |
||
5100 | |||
5101 | /* GL_ARB_texture_compression */ |
||
5102 | case GL_TEXTURE_COMPRESSION_HINT_ARB: |
||
5103 | CHECK_EXTENSION_I(ARB_texture_compression, pname); |
||
5104 | *params = (GLint) ctx->Hint.TextureCompression; |
||
5105 | break; |
||
5106 | case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
5107 | CHECK_EXTENSION_I(ARB_texture_compression, pname); |
||
5108 | *params = (GLint) _mesa_get_compressed_formats(ctx, NULL); |
||
5109 | break; |
||
5110 | case GL_COMPRESSED_TEXTURE_FORMATS_ARB: |
||
5111 | CHECK_EXTENSION_I(ARB_texture_compression, pname); |
||
5112 | (void) _mesa_get_compressed_formats(ctx, params); |
||
5113 | break; |
||
5114 | |||
5115 | /* GL_EXT_compiled_vertex_array */ |
||
5116 | case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: |
||
5117 | CHECK_EXTENSION_I(EXT_compiled_vertex_array, pname); |
||
5118 | *params = ctx->Array.LockFirst; |
||
5119 | break; |
||
5120 | case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: |
||
5121 | CHECK_EXTENSION_I(EXT_compiled_vertex_array, pname); |
||
5122 | *params = ctx->Array.LockCount; |
||
5123 | break; |
||
5124 | |||
5125 | /* GL_ARB_transpose_matrix */ |
||
5126 | case GL_TRANSPOSE_COLOR_MATRIX_ARB: |
||
5127 | { |
||
5128 | GLfloat tm[16]; |
||
5129 | GLuint i; |
||
5130 | _math_transposef(tm, ctx->ColorMatrixStack.Top->m); |
||
5131 | for (i=0;i<16;i++) { |
||
5132 | params[i] = (GLint) tm[i]; |
||
5133 | } |
||
5134 | } |
||
5135 | break; |
||
5136 | case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: |
||
5137 | { |
||
5138 | GLfloat tm[16]; |
||
5139 | GLuint i; |
||
5140 | _math_transposef(tm, ctx->ModelviewMatrixStack.Top->m); |
||
5141 | for (i=0;i<16;i++) { |
||
5142 | params[i] = (GLint) tm[i]; |
||
5143 | } |
||
5144 | } |
||
5145 | break; |
||
5146 | case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: |
||
5147 | { |
||
5148 | GLfloat tm[16]; |
||
5149 | GLuint i; |
||
5150 | _math_transposef(tm, ctx->ProjectionMatrixStack.Top->m); |
||
5151 | for (i=0;i<16;i++) { |
||
5152 | params[i] = (GLint) tm[i]; |
||
5153 | } |
||
5154 | } |
||
5155 | break; |
||
5156 | case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: |
||
5157 | { |
||
5158 | GLfloat tm[16]; |
||
5159 | GLuint i; |
||
5160 | _math_transposef(tm, ctx->TextureMatrixStack[texUnit].Top->m); |
||
5161 | for (i=0;i<16;i++) { |
||
5162 | params[i] = (GLint) tm[i]; |
||
5163 | } |
||
5164 | } |
||
5165 | break; |
||
5166 | |||
5167 | /* GL_HP_occlusion_test */ |
||
5168 | case GL_OCCLUSION_TEST_HP: |
||
5169 | CHECK_EXTENSION_I(HP_occlusion_test, pname); |
||
5170 | *params = (GLint) ctx->Depth.OcclusionTest; |
||
5171 | break; |
||
5172 | case GL_OCCLUSION_TEST_RESULT_HP: |
||
5173 | CHECK_EXTENSION_I(HP_occlusion_test, pname); |
||
5174 | if (ctx->Depth.OcclusionTest) |
||
5175 | *params = (GLint) ctx->OcclusionResult; |
||
5176 | else |
||
5177 | *params = (GLint) ctx->OcclusionResultSaved; |
||
5178 | /* reset flag now */ |
||
5179 | ctx->OcclusionResult = GL_FALSE; |
||
5180 | ctx->OcclusionResultSaved = GL_FALSE; |
||
5181 | break; |
||
5182 | |||
5183 | /* GL_SGIS_pixel_texture */ |
||
5184 | case GL_PIXEL_TEXTURE_SGIS: |
||
5185 | CHECK_EXTENSION_I(SGIS_pixel_texture, pname); |
||
5186 | *params = (GLint) ctx->Pixel.PixelTextureEnabled; |
||
5187 | break; |
||
5188 | |||
5189 | /* GL_SGIX_pixel_texture */ |
||
5190 | case GL_PIXEL_TEX_GEN_SGIX: |
||
5191 | CHECK_EXTENSION_I(SGIX_pixel_texture, pname); |
||
5192 | *params = (GLint) ctx->Pixel.PixelTextureEnabled; |
||
5193 | break; |
||
5194 | case GL_PIXEL_TEX_GEN_MODE_SGIX: |
||
5195 | CHECK_EXTENSION_I(SGIX_pixel_texture, pname); |
||
5196 | *params = (GLint) pixel_texgen_mode(ctx); |
||
5197 | break; |
||
5198 | |||
5199 | /* GL_SGI_color_matrix (also in 1.2 imaging) */ |
||
5200 | case GL_COLOR_MATRIX_SGI: |
||
5201 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5202 | for (i=0;i<16;i++) { |
||
5203 | params[i] = (GLint) ctx->ColorMatrixStack.Top->m[i]; |
||
5204 | } |
||
5205 | break; |
||
5206 | case GL_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
5207 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5208 | *params = ctx->ColorMatrixStack.Depth + 1; |
||
5209 | break; |
||
5210 | case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: |
||
5211 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5212 | *params = MAX_COLOR_STACK_DEPTH; |
||
5213 | break; |
||
5214 | case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: |
||
5215 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5216 | *params = (GLint) ctx->Pixel.PostColorMatrixScale[0]; |
||
5217 | break; |
||
5218 | case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: |
||
5219 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5220 | *params = (GLint) ctx->Pixel.PostColorMatrixScale[1]; |
||
5221 | break; |
||
5222 | case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: |
||
5223 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5224 | *params = (GLint) ctx->Pixel.PostColorMatrixScale[2]; |
||
5225 | break; |
||
5226 | case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: |
||
5227 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5228 | *params = (GLint) ctx->Pixel.PostColorMatrixScale[3]; |
||
5229 | break; |
||
5230 | case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: |
||
5231 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5232 | *params = (GLint) ctx->Pixel.PostColorMatrixBias[0]; |
||
5233 | break; |
||
5234 | case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: |
||
5235 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5236 | *params = (GLint) ctx->Pixel.PostColorMatrixBias[1]; |
||
5237 | break; |
||
5238 | case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: |
||
5239 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5240 | *params = (GLint) ctx->Pixel.PostColorMatrixBias[2]; |
||
5241 | break; |
||
5242 | case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: |
||
5243 | CHECK_EXTENSION_I(SGI_color_matrix, pname); |
||
5244 | *params = (GLint) ctx->Pixel.PostColorMatrixBias[3]; |
||
5245 | break; |
||
5246 | |||
5247 | /* GL_EXT_convolution (also in 1.2 imaging) */ |
||
5248 | case GL_CONVOLUTION_1D_EXT: |
||
5249 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5250 | *params = (GLint) ctx->Pixel.Convolution1DEnabled; |
||
5251 | break; |
||
5252 | case GL_CONVOLUTION_2D: |
||
5253 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5254 | *params = (GLint) ctx->Pixel.Convolution2DEnabled; |
||
5255 | break; |
||
5256 | case GL_SEPARABLE_2D: |
||
5257 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5258 | *params = (GLint) ctx->Pixel.Separable2DEnabled; |
||
5259 | break; |
||
5260 | case GL_POST_CONVOLUTION_RED_SCALE_EXT: |
||
5261 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5262 | *params = (GLint) ctx->Pixel.PostConvolutionScale[0]; |
||
5263 | break; |
||
5264 | case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: |
||
5265 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5266 | *params = (GLint) ctx->Pixel.PostConvolutionScale[1]; |
||
5267 | break; |
||
5268 | case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: |
||
5269 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5270 | *params = (GLint) ctx->Pixel.PostConvolutionScale[2]; |
||
5271 | break; |
||
5272 | case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: |
||
5273 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5274 | *params = (GLint) ctx->Pixel.PostConvolutionScale[3]; |
||
5275 | break; |
||
5276 | case GL_POST_CONVOLUTION_RED_BIAS_EXT: |
||
5277 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5278 | *params = (GLint) ctx->Pixel.PostConvolutionBias[0]; |
||
5279 | break; |
||
5280 | case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: |
||
5281 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5282 | *params = (GLint) ctx->Pixel.PostConvolutionBias[1]; |
||
5283 | break; |
||
5284 | case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: |
||
5285 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5286 | *params = (GLint) ctx->Pixel.PostConvolutionBias[2]; |
||
5287 | break; |
||
5288 | case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: |
||
5289 | CHECK_EXTENSION_I(EXT_convolution, pname); |
||
5290 | *params = (GLint) ctx->Pixel.PostConvolutionBias[2]; |
||
5291 | break; |
||
5292 | |||
5293 | /* GL_EXT_histogram (also in 1.2 imaging) */ |
||
5294 | case GL_HISTOGRAM: |
||
5295 | CHECK_EXTENSION_I(EXT_histogram, pname); |
||
5296 | *params = (GLint) ctx->Pixel.HistogramEnabled; |
||
5297 | break; |
||
5298 | case GL_MINMAX: |
||
5299 | CHECK_EXTENSION_I(EXT_histogram, pname); |
||
5300 | *params = (GLint) ctx->Pixel.MinMaxEnabled; |
||
5301 | break; |
||
5302 | |||
5303 | /* GL_SGI_color_table (also in 1.2 imaging */ |
||
5304 | case GL_COLOR_TABLE_SGI: |
||
5305 | CHECK_EXTENSION_I(SGI_color_table, pname); |
||
5306 | *params = (GLint) ctx->Pixel.ColorTableEnabled; |
||
5307 | break; |
||
5308 | case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: |
||
5309 | CHECK_EXTENSION_I(SGI_color_table, pname); |
||
5310 | *params = (GLint) ctx->Pixel.PostConvolutionColorTableEnabled; |
||
5311 | break; |
||
5312 | case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: |
||
5313 | CHECK_EXTENSION_I(SGI_color_table, pname); |
||
5314 | *params = (GLint) ctx->Pixel.PostColorMatrixColorTableEnabled; |
||
5315 | break; |
||
5316 | |||
5317 | |||
5318 | /* GL_EXT_secondary_color */ |
||
5319 | case GL_COLOR_SUM_EXT: |
||
5320 | CHECK_EXTENSION_I(EXT_secondary_color, pname); |
||
5321 | *params = (GLint) ctx->Fog.ColorSumEnabled; |
||
5322 | break; |
||
5323 | case GL_CURRENT_SECONDARY_COLOR_EXT: |
||
5324 | CHECK_EXTENSION_I(EXT_secondary_color, pname); |
||
5325 | FLUSH_CURRENT(ctx, 0); |
||
5326 | params[0] = FLOAT_TO_INT( (ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]) ); |
||
5327 | params[1] = FLOAT_TO_INT( (ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]) ); |
||
5328 | params[2] = FLOAT_TO_INT( (ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]) ); |
||
5329 | break; |
||
5330 | case GL_SECONDARY_COLOR_ARRAY_EXT: |
||
5331 | CHECK_EXTENSION_I(EXT_secondary_color, pname); |
||
5332 | *params = (GLint) ctx->Array.SecondaryColor.Enabled; |
||
5333 | break; |
||
5334 | case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: |
||
5335 | CHECK_EXTENSION_I(EXT_secondary_color, pname); |
||
5336 | *params = (GLint) ctx->Array.SecondaryColor.Type; |
||
5337 | break; |
||
5338 | case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: |
||
5339 | CHECK_EXTENSION_I(EXT_secondary_color, pname); |
||
5340 | *params = (GLint) ctx->Array.SecondaryColor.Stride; |
||
5341 | break; |
||
5342 | case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: |
||
5343 | CHECK_EXTENSION_I(EXT_secondary_color, pname); |
||
5344 | *params = (GLint) ctx->Array.SecondaryColor.Stride; |
||
5345 | break; |
||
5346 | |||
5347 | /* GL_EXT_fog_coord */ |
||
5348 | case GL_CURRENT_FOG_COORDINATE_EXT: |
||
5349 | CHECK_EXTENSION_I(EXT_fog_coord, pname); |
||
5350 | FLUSH_CURRENT(ctx, 0); |
||
5351 | *params = (GLint) ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; |
||
5352 | break; |
||
5353 | case GL_FOG_COORDINATE_ARRAY_EXT: |
||
5354 | CHECK_EXTENSION_I(EXT_fog_coord, pname); |
||
5355 | *params = (GLint) ctx->Array.FogCoord.Enabled; |
||
5356 | break; |
||
5357 | case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: |
||
5358 | CHECK_EXTENSION_I(EXT_fog_coord, pname); |
||
5359 | *params = (GLint) ctx->Array.FogCoord.Type; |
||
5360 | break; |
||
5361 | case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: |
||
5362 | CHECK_EXTENSION_I(EXT_fog_coord, pname); |
||
5363 | *params = (GLint) ctx->Array.FogCoord.Stride; |
||
5364 | break; |
||
5365 | |||
5366 | /* GL_EXT_texture_lod_bias */ |
||
5367 | case GL_MAX_TEXTURE_LOD_BIAS_EXT: |
||
5368 | *params = (GLint) ctx->Const.MaxTextureLodBias; |
||
5369 | break; |
||
5370 | |||
5371 | /* GL_EXT_texture_filter_anisotropic */ |
||
5372 | case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: |
||
5373 | CHECK_EXTENSION_I(EXT_texture_filter_anisotropic, pname); |
||
5374 | *params = (GLint) ctx->Const.MaxTextureMaxAnisotropy; |
||
5375 | break; |
||
5376 | |||
5377 | /* GL_ARB_multisample */ |
||
5378 | case GL_MULTISAMPLE_ARB: |
||
5379 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5380 | *params = (GLint) ctx->Multisample.Enabled; |
||
5381 | break; |
||
5382 | case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: |
||
5383 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5384 | *params = (GLint) ctx->Multisample.SampleAlphaToCoverage; |
||
5385 | break; |
||
5386 | case GL_SAMPLE_ALPHA_TO_ONE_ARB: |
||
5387 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5388 | *params = (GLint) ctx->Multisample.SampleAlphaToOne; |
||
5389 | break; |
||
5390 | case GL_SAMPLE_COVERAGE_ARB: |
||
5391 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5392 | *params = (GLint) ctx->Multisample.SampleCoverage; |
||
5393 | break; |
||
5394 | case GL_SAMPLE_COVERAGE_VALUE_ARB: |
||
5395 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5396 | *params = (GLint) ctx->Multisample.SampleCoverageValue; |
||
5397 | break; |
||
5398 | case GL_SAMPLE_COVERAGE_INVERT_ARB: |
||
5399 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5400 | *params = (GLint) ctx->Multisample.SampleCoverageInvert; |
||
5401 | break; |
||
5402 | case GL_SAMPLE_BUFFERS_ARB: |
||
5403 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5404 | *params = 0; /* XXX fix someday */ |
||
5405 | break; |
||
5406 | case GL_SAMPLES_ARB: |
||
5407 | CHECK_EXTENSION_I(ARB_multisample, pname); |
||
5408 | *params = 0; /* XXX fix someday */ |
||
5409 | break; |
||
5410 | |||
5411 | /* GL_IBM_rasterpos_clip */ |
||
5412 | case GL_RASTER_POSITION_UNCLIPPED_IBM: |
||
5413 | CHECK_EXTENSION_I(IBM_rasterpos_clip, pname); |
||
5414 | *params = (GLint) ctx->Transform.RasterPositionUnclipped; |
||
5415 | break; |
||
5416 | |||
5417 | /* GL_NV_point_sprite */ |
||
5418 | case GL_POINT_SPRITE_NV: |
||
5419 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
5420 | *params = (GLint) ctx->Point.PointSprite; |
||
5421 | break; |
||
5422 | case GL_POINT_SPRITE_R_MODE_NV: |
||
5423 | CHECK_EXTENSION_B(NV_point_sprite, pname); |
||
5424 | *params = (GLint) ctx->Point.SpriteRMode; |
||
5425 | break; |
||
5426 | |||
5427 | /* GL_SGIS_generate_mipmap */ |
||
5428 | case GL_GENERATE_MIPMAP_HINT_SGIS: |
||
5429 | CHECK_EXTENSION_I(SGIS_generate_mipmap, pname); |
||
5430 | *params = (GLint) ctx->Hint.GenerateMipmap; |
||
5431 | break; |
||
5432 | |||
5433 | #if FEATURE_NV_vertex_program |
||
5434 | case GL_VERTEX_PROGRAM_NV: |
||
5435 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5436 | *params = (GLint) ctx->VertexProgram.Enabled; |
||
5437 | break; |
||
5438 | case GL_VERTEX_PROGRAM_POINT_SIZE_NV: |
||
5439 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5440 | *params = (GLint) ctx->VertexProgram.PointSizeEnabled; |
||
5441 | break; |
||
5442 | case GL_VERTEX_PROGRAM_TWO_SIDE_NV: |
||
5443 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5444 | *params = (GLint) ctx->VertexProgram.TwoSideEnabled; |
||
5445 | break; |
||
5446 | case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV: |
||
5447 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5448 | *params = MAX_PROGRAM_STACK_DEPTH; |
||
5449 | break; |
||
5450 | case GL_MAX_TRACK_MATRICES_NV: |
||
5451 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5452 | *params = MAX_PROGRAM_MATRICES; |
||
5453 | break; |
||
5454 | case GL_CURRENT_MATRIX_STACK_DEPTH_NV: |
||
5455 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5456 | *params = ctx->CurrentStack->Depth; |
||
5457 | break; |
||
5458 | case GL_CURRENT_MATRIX_NV: |
||
5459 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5460 | *params = (GLint) ctx->Transform.MatrixMode; |
||
5461 | break; |
||
5462 | case GL_VERTEX_PROGRAM_BINDING_NV: |
||
5463 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5464 | *params = (GLint) ctx->VertexProgram.CurrentID; |
||
5465 | break; |
||
5466 | case GL_PROGRAM_ERROR_POSITION_NV: |
||
5467 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5468 | *params = (GLint) ctx->VertexProgram.ErrorPos; |
||
5469 | break; |
||
5470 | case GL_VERTEX_ATTRIB_ARRAY0_NV: |
||
5471 | case GL_VERTEX_ATTRIB_ARRAY1_NV: |
||
5472 | case GL_VERTEX_ATTRIB_ARRAY2_NV: |
||
5473 | case GL_VERTEX_ATTRIB_ARRAY3_NV: |
||
5474 | case GL_VERTEX_ATTRIB_ARRAY4_NV: |
||
5475 | case GL_VERTEX_ATTRIB_ARRAY5_NV: |
||
5476 | case GL_VERTEX_ATTRIB_ARRAY6_NV: |
||
5477 | case GL_VERTEX_ATTRIB_ARRAY7_NV: |
||
5478 | case GL_VERTEX_ATTRIB_ARRAY8_NV: |
||
5479 | case GL_VERTEX_ATTRIB_ARRAY9_NV: |
||
5480 | case GL_VERTEX_ATTRIB_ARRAY10_NV: |
||
5481 | case GL_VERTEX_ATTRIB_ARRAY11_NV: |
||
5482 | case GL_VERTEX_ATTRIB_ARRAY12_NV: |
||
5483 | case GL_VERTEX_ATTRIB_ARRAY13_NV: |
||
5484 | case GL_VERTEX_ATTRIB_ARRAY14_NV: |
||
5485 | case GL_VERTEX_ATTRIB_ARRAY15_NV: |
||
5486 | CHECK_EXTENSION_I(NV_vertex_program, pname); |
||
5487 | { |
||
5488 | GLuint n = (GLuint) pname - GL_VERTEX_ATTRIB_ARRAY0_NV; |
||
5489 | *params = (GLint) ctx->Array.VertexAttrib[n].Enabled; |
||
5490 | } |
||
5491 | break; |
||
5492 | case GL_MAP1_VERTEX_ATTRIB0_4_NV: |
||
5493 | case GL_MAP1_VERTEX_ATTRIB1_4_NV: |
||
5494 | case GL_MAP1_VERTEX_ATTRIB2_4_NV: |
||
5495 | case GL_MAP1_VERTEX_ATTRIB3_4_NV: |
||
5496 | case GL_MAP1_VERTEX_ATTRIB4_4_NV: |
||
5497 | case GL_MAP1_VERTEX_ATTRIB5_4_NV: |
||
5498 | case GL_MAP1_VERTEX_ATTRIB6_4_NV: |
||
5499 | case GL_MAP1_VERTEX_ATTRIB7_4_NV: |
||
5500 | case GL_MAP1_VERTEX_ATTRIB8_4_NV: |
||
5501 | case GL_MAP1_VERTEX_ATTRIB9_4_NV: |
||
5502 | case GL_MAP1_VERTEX_ATTRIB10_4_NV: |
||
5503 | case GL_MAP1_VERTEX_ATTRIB11_4_NV: |
||
5504 | case GL_MAP1_VERTEX_ATTRIB12_4_NV: |
||
5505 | case GL_MAP1_VERTEX_ATTRIB13_4_NV: |
||
5506 | case GL_MAP1_VERTEX_ATTRIB14_4_NV: |
||
5507 | case GL_MAP1_VERTEX_ATTRIB15_4_NV: |
||
5508 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
5509 | { |
||
5510 | GLuint n = (GLuint) pname - GL_MAP1_VERTEX_ATTRIB0_4_NV; |
||
5511 | *params = (GLint) ctx->Eval.Map1Attrib[n]; |
||
5512 | } |
||
5513 | break; |
||
5514 | case GL_MAP2_VERTEX_ATTRIB0_4_NV: |
||
5515 | case GL_MAP2_VERTEX_ATTRIB1_4_NV: |
||
5516 | case GL_MAP2_VERTEX_ATTRIB2_4_NV: |
||
5517 | case GL_MAP2_VERTEX_ATTRIB3_4_NV: |
||
5518 | case GL_MAP2_VERTEX_ATTRIB4_4_NV: |
||
5519 | case GL_MAP2_VERTEX_ATTRIB5_4_NV: |
||
5520 | case GL_MAP2_VERTEX_ATTRIB6_4_NV: |
||
5521 | case GL_MAP2_VERTEX_ATTRIB7_4_NV: |
||
5522 | case GL_MAP2_VERTEX_ATTRIB8_4_NV: |
||
5523 | case GL_MAP2_VERTEX_ATTRIB9_4_NV: |
||
5524 | case GL_MAP2_VERTEX_ATTRIB10_4_NV: |
||
5525 | case GL_MAP2_VERTEX_ATTRIB11_4_NV: |
||
5526 | case GL_MAP2_VERTEX_ATTRIB12_4_NV: |
||
5527 | case GL_MAP2_VERTEX_ATTRIB13_4_NV: |
||
5528 | case GL_MAP2_VERTEX_ATTRIB14_4_NV: |
||
5529 | case GL_MAP2_VERTEX_ATTRIB15_4_NV: |
||
5530 | CHECK_EXTENSION_B(NV_vertex_program, pname); |
||
5531 | { |
||
5532 | GLuint n = (GLuint) pname - GL_MAP2_VERTEX_ATTRIB0_4_NV; |
||
5533 | *params = (GLint) ctx->Eval.Map2Attrib[n]; |
||
5534 | } |
||
5535 | break; |
||
5536 | |||
5537 | /* GL_NV_texture_rectangle */ |
||
5538 | case GL_TEXTURE_RECTANGLE_NV: |
||
5539 | CHECK_EXTENSION_I(NV_texture_rectangle, pname); |
||
5540 | *params = (GLint) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV); |
||
5541 | break; |
||
5542 | case GL_TEXTURE_BINDING_RECTANGLE_NV: |
||
5543 | CHECK_EXTENSION_I(NV_texture_rectangle, pname); |
||
5544 | *params = (GLint) textureUnit->CurrentRect->Name; |
||
5545 | break; |
||
5546 | case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: |
||
5547 | CHECK_EXTENSION_I(NV_texture_rectangle, pname); |
||
5548 | *params = (GLint) ctx->Const.MaxTextureRectSize; |
||
5549 | break; |
||
5550 | #endif /* FEATURE_NV_vertex_program */ |
||
5551 | |||
5552 | /* GL_EXT_stencil_two_side */ |
||
5553 | case GL_STENCIL_TEST_TWO_SIDE_EXT: |
||
5554 | CHECK_EXTENSION_I(EXT_stencil_two_side, pname); |
||
5555 | *params = (GLint) ctx->Stencil.TestTwoSide; |
||
5556 | break; |
||
5557 | case GL_ACTIVE_STENCIL_FACE_EXT: |
||
5558 | CHECK_EXTENSION_I(EXT_stencil_two_side, pname); |
||
5559 | *params = (GLint) (ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); |
||
5560 | break; |
||
5561 | |||
5562 | default: |
||
5563 | _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname); |
||
5564 | } |
||
5565 | } |
||
5566 | |||
5567 | |||
5568 | |||
5569 | void |
||
5570 | _mesa_GetPointerv( GLenum pname, GLvoid **params ) |
||
5571 | { |
||
5572 | GET_CURRENT_CONTEXT(ctx); |
||
5573 | GLuint texUnit = ctx->Texture.CurrentUnit; |
||
5574 | ASSERT_OUTSIDE_BEGIN_END(ctx); |
||
5575 | |||
5576 | if (!params) |
||
5577 | return; |
||
5578 | |||
5579 | if (MESA_VERBOSE & VERBOSE_API) |
||
5580 | _mesa_debug(ctx, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname)); |
||
5581 | |||
5582 | if (ctx->Driver.GetPointerv |
||
5583 | && (*ctx->Driver.GetPointerv)(ctx, pname, params)) |
||
5584 | return; |
||
5585 | |||
5586 | switch (pname) { |
||
5587 | case GL_VERTEX_ARRAY_POINTER: |
||
5588 | *params = ctx->Array.Vertex.Ptr; |
||
5589 | break; |
||
5590 | case GL_NORMAL_ARRAY_POINTER: |
||
5591 | *params = ctx->Array.Normal.Ptr; |
||
5592 | break; |
||
5593 | case GL_COLOR_ARRAY_POINTER: |
||
5594 | *params = ctx->Array.Color.Ptr; |
||
5595 | break; |
||
5596 | case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT: |
||
5597 | *params = ctx->Array.SecondaryColor.Ptr; |
||
5598 | break; |
||
5599 | case GL_FOG_COORDINATE_ARRAY_POINTER_EXT: |
||
5600 | *params = ctx->Array.FogCoord.Ptr; |
||
5601 | break; |
||
5602 | case GL_INDEX_ARRAY_POINTER: |
||
5603 | *params = ctx->Array.Index.Ptr; |
||
5604 | break; |
||
5605 | case GL_TEXTURE_COORD_ARRAY_POINTER: |
||
5606 | *params = ctx->Array.TexCoord[texUnit].Ptr; |
||
5607 | break; |
||
5608 | case GL_EDGE_FLAG_ARRAY_POINTER: |
||
5609 | *params = ctx->Array.EdgeFlag.Ptr; |
||
5610 | break; |
||
5611 | case GL_FEEDBACK_BUFFER_POINTER: |
||
5612 | *params = ctx->Feedback.Buffer; |
||
5613 | break; |
||
5614 | case GL_SELECTION_BUFFER_POINTER: |
||
5615 | *params = ctx->Select.Buffer; |
||
5616 | break; |
||
5617 | default: |
||
5618 | _mesa_error( ctx, GL_INVALID_ENUM, "glGetPointerv" ); |
||
5619 | return; |
||
5620 | } |
||
5621 | } |
||
5622 | |||
5623 | |||
5624 | |||
5625 | const GLubyte * |
||
5626 | _mesa_GetString( GLenum name ) |
||
5627 | { |
||
5628 | GET_CURRENT_CONTEXT(ctx); |
||
5629 | static const char *vendor = "Brian Paul"; |
||
5630 | static const char *renderer = "Mesa"; |
||
5631 | static const char *version_1_2 = "1.2 Mesa 5.0"; |
||
5632 | static const char *version_1_3 = "1.3 Mesa 5.0"; |
||
5633 | static const char *version_1_4 = "1.4 Mesa 5.0"; |
||
5634 | |||
5635 | ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0); |
||
5636 | |||
5637 | /* this is a required driver function */ |
||
5638 | assert(ctx->Driver.GetString); |
||
5639 | { |
||
5640 | const GLubyte *str = (*ctx->Driver.GetString)(ctx, name); |
||
5641 | if (str) |
||
5642 | return str; |
||
5643 | |||
5644 | switch (name) { |
||
5645 | case GL_VENDOR: |
||
5646 | return (const GLubyte *) vendor; |
||
5647 | case GL_RENDERER: |
||
5648 | return (const GLubyte *) renderer; |
||
5649 | case GL_VERSION: |
||
5650 | if (ctx->Extensions.ARB_multisample && |
||
5651 | ctx->Extensions.ARB_multitexture && |
||
5652 | ctx->Extensions.ARB_texture_border_clamp && |
||
5653 | ctx->Extensions.ARB_texture_compression && |
||
5654 | ctx->Extensions.ARB_texture_cube_map && |
||
5655 | ctx->Extensions.EXT_texture_env_add && |
||
5656 | ctx->Extensions.ARB_texture_env_combine && |
||
5657 | ctx->Extensions.ARB_texture_env_dot3) { |
||
5658 | if (ctx->Extensions.ARB_depth_texture && |
||
5659 | ctx->Extensions.ARB_shadow && |
||
5660 | ctx->Extensions.ARB_texture_env_crossbar && |
||
5661 | ctx->Extensions.ARB_texture_mirrored_repeat && |
||
5662 | ctx->Extensions.ARB_window_pos && |
||
5663 | ctx->Extensions.EXT_blend_color && |
||
5664 | ctx->Extensions.EXT_blend_func_separate && |
||
5665 | ctx->Extensions.EXT_blend_logic_op && |
||
5666 | ctx->Extensions.EXT_blend_minmax && |
||
5667 | ctx->Extensions.EXT_blend_subtract && |
||
5668 | ctx->Extensions.EXT_fog_coord && |
||
5669 | ctx->Extensions.EXT_multi_draw_arrays && |
||
5670 | ctx->Extensions.EXT_point_parameters && /*aka ARB*/ |
||
5671 | ctx->Extensions.EXT_secondary_color && |
||
5672 | ctx->Extensions.EXT_stencil_wrap && |
||
5673 | ctx->Extensions.SGIS_generate_mipmap) { |
||
5674 | return (const GLubyte *) version_1_4; |
||
5675 | } |
||
5676 | else { |
||
5677 | return (const GLubyte *) version_1_3; |
||
5678 | } |
||
5679 | } |
||
5680 | else { |
||
5681 | return (const GLubyte *) version_1_2; |
||
5682 | } |
||
5683 | case GL_EXTENSIONS: |
||
5684 | return (const GLubyte *) _mesa_extensions_get_string(ctx); |
||
5685 | default: |
||
5686 | _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); |
||
5687 | return (const GLubyte *) 0; |
||
5688 | } |
||
5689 | } |
||
5690 | } |
||
5691 | |||
5692 | |||
5693 | /* |
||
5694 | * Execute a glGetError command |
||
5695 | */ |
||
5696 | GLenum |
||
5697 | _mesa_GetError( void ) |
||
5698 | { |
||
5699 | GET_CURRENT_CONTEXT(ctx); |
||
5700 | GLenum e = ctx->ErrorValue; |
||
5701 | ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0); |
||
5702 | |||
5703 | if (MESA_VERBOSE & VERBOSE_API) |
||
5704 | _mesa_debug(ctx, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e)); |
||
5705 | |||
5706 | ctx->ErrorValue = (GLenum) GL_NO_ERROR; |
||
5707 | return e; |
||
5708 | } |