3 * Mesa 3-D graphics library
6 * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 #include "api_validate.h"
30 #include "api_arrayelt.h"
39 /* In states where certain vertex components are required for t&l or
40 * rasterization, we still need to keep track of the current values.
41 * These functions provide this service by keeping uptodate the
42 * 'ctx->Current' struct for all data elements not included in the
43 * currently enabled hardware vertex.
46 void GLAPIENTRY
_mesa_noop_EdgeFlag( GLboolean b
)
48 GET_CURRENT_CONTEXT(ctx
);
49 ctx
->Current
.EdgeFlag
= b
;
52 void GLAPIENTRY
_mesa_noop_EdgeFlagv( const GLboolean
*b
)
54 GET_CURRENT_CONTEXT(ctx
);
55 ctx
->Current
.EdgeFlag
= *b
;
58 void GLAPIENTRY
_mesa_noop_Indexf( GLfloat f
)
60 GET_CURRENT_CONTEXT(ctx
);
61 ctx
->Current
.Index
= f
;
64 void GLAPIENTRY
_mesa_noop_Indexfv( const GLfloat
*v
)
66 GET_CURRENT_CONTEXT(ctx
);
67 ctx
->Current
.Index
= *v
;
70 void GLAPIENTRY
_mesa_noop_FogCoordfEXT( GLfloat a
)
72 GET_CURRENT_CONTEXT(ctx
);
73 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
];
80 void GLAPIENTRY
_mesa_noop_FogCoordfvEXT( const GLfloat
*v
)
82 GET_CURRENT_CONTEXT(ctx
);
83 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
];
90 void GLAPIENTRY
_mesa_noop_Normal3f( GLfloat a
, GLfloat b
, GLfloat c
)
92 GET_CURRENT_CONTEXT(ctx
);
93 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
];
100 void GLAPIENTRY
_mesa_noop_Normal3fv( const GLfloat
*v
)
102 GET_CURRENT_CONTEXT(ctx
);
103 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
];
110 void GLAPIENTRY
_mesa_noop_Color4f( GLfloat a
, GLfloat b
, GLfloat c
, GLfloat d
)
112 GET_CURRENT_CONTEXT(ctx
);
113 GLfloat
*color
= ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
];
120 void GLAPIENTRY
_mesa_noop_Color4fv( const GLfloat
*v
)
122 GET_CURRENT_CONTEXT(ctx
);
123 GLfloat
*color
= ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
];
130 void GLAPIENTRY
_mesa_noop_Color3f( GLfloat a
, GLfloat b
, GLfloat c
)
132 GET_CURRENT_CONTEXT(ctx
);
133 GLfloat
*color
= ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
];
140 void GLAPIENTRY
_mesa_noop_Color3fv( const GLfloat
*v
)
142 GET_CURRENT_CONTEXT(ctx
);
143 GLfloat
*color
= ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
];
150 void GLAPIENTRY
_mesa_noop_MultiTexCoord1fARB( GLenum target
, GLfloat a
)
152 GET_CURRENT_CONTEXT(ctx
);
153 GLuint unit
= target
- GL_TEXTURE0_ARB
;
155 /* unit is unsigned -- cannot be less than zero.
157 if (unit
< MAX_TEXTURE_COORD_UNITS
)
159 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
167 void GLAPIENTRY
_mesa_noop_MultiTexCoord1fvARB( GLenum target
, const GLfloat
*v
)
169 GET_CURRENT_CONTEXT(ctx
);
170 GLuint unit
= target
- GL_TEXTURE0_ARB
;
172 /* unit is unsigned -- cannot be less than zero.
174 if (unit
< MAX_TEXTURE_COORD_UNITS
)
176 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
184 void GLAPIENTRY
_mesa_noop_MultiTexCoord2fARB( GLenum target
, GLfloat a
, GLfloat b
)
186 GET_CURRENT_CONTEXT(ctx
);
187 GLuint unit
= target
- GL_TEXTURE0_ARB
;
189 /* unit is unsigned -- cannot be less than zero.
191 if (unit
< MAX_TEXTURE_COORD_UNITS
)
193 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
201 void GLAPIENTRY
_mesa_noop_MultiTexCoord2fvARB( GLenum target
, const GLfloat
*v
)
203 GET_CURRENT_CONTEXT(ctx
);
204 GLuint unit
= target
- GL_TEXTURE0_ARB
;
206 /* unit is unsigned -- cannot be less than zero.
208 if (unit
< MAX_TEXTURE_COORD_UNITS
)
210 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
218 void GLAPIENTRY
_mesa_noop_MultiTexCoord3fARB( GLenum target
, GLfloat a
, GLfloat b
, GLfloat c
)
220 GET_CURRENT_CONTEXT(ctx
);
221 GLuint unit
= target
- GL_TEXTURE0_ARB
;
223 /* unit is unsigned -- cannot be less than zero.
225 if (unit
< MAX_TEXTURE_COORD_UNITS
)
227 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
235 void GLAPIENTRY
_mesa_noop_MultiTexCoord3fvARB( GLenum target
, const GLfloat
*v
)
237 GET_CURRENT_CONTEXT(ctx
);
238 GLuint unit
= target
- GL_TEXTURE0_ARB
;
240 /* unit is unsigned -- cannot be less than zero.
242 if (unit
< MAX_TEXTURE_COORD_UNITS
)
244 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
252 void GLAPIENTRY
_mesa_noop_MultiTexCoord4fARB( GLenum target
, GLfloat a
, GLfloat b
,
253 GLfloat c
, GLfloat d
)
255 GET_CURRENT_CONTEXT(ctx
);
256 GLuint unit
= target
- GL_TEXTURE0_ARB
;
258 /* unit is unsigned -- cannot be less than zero.
260 if (unit
< MAX_TEXTURE_COORD_UNITS
)
262 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
270 void GLAPIENTRY
_mesa_noop_MultiTexCoord4fvARB( GLenum target
, const GLfloat
*v
)
272 GET_CURRENT_CONTEXT(ctx
);
273 GLuint unit
= target
- GL_TEXTURE0_ARB
;
275 /* unit is unsigned -- cannot be less than zero.
277 if (unit
< MAX_TEXTURE_COORD_UNITS
)
279 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
];
287 void GLAPIENTRY
_mesa_noop_SecondaryColor3fEXT( GLfloat a
, GLfloat b
, GLfloat c
)
289 GET_CURRENT_CONTEXT(ctx
);
290 GLfloat
*color
= ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
];
297 void GLAPIENTRY
_mesa_noop_SecondaryColor3fvEXT( const GLfloat
*v
)
299 GET_CURRENT_CONTEXT(ctx
);
300 GLfloat
*color
= ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
];
307 void GLAPIENTRY
_mesa_noop_TexCoord1f( GLfloat a
)
309 GET_CURRENT_CONTEXT(ctx
);
310 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
317 void GLAPIENTRY
_mesa_noop_TexCoord1fv( const GLfloat
*v
)
319 GET_CURRENT_CONTEXT(ctx
);
320 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
327 void GLAPIENTRY
_mesa_noop_TexCoord2f( GLfloat a
, GLfloat b
)
329 GET_CURRENT_CONTEXT(ctx
);
330 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
337 void GLAPIENTRY
_mesa_noop_TexCoord2fv( const GLfloat
*v
)
339 GET_CURRENT_CONTEXT(ctx
);
340 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
347 void GLAPIENTRY
_mesa_noop_TexCoord3f( GLfloat a
, GLfloat b
, GLfloat c
)
349 GET_CURRENT_CONTEXT(ctx
);
350 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
357 void GLAPIENTRY
_mesa_noop_TexCoord3fv( const GLfloat
*v
)
359 GET_CURRENT_CONTEXT(ctx
);
360 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
367 void GLAPIENTRY
_mesa_noop_TexCoord4f( GLfloat a
, GLfloat b
, GLfloat c
, GLfloat d
)
369 GET_CURRENT_CONTEXT(ctx
);
370 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
377 void GLAPIENTRY
_mesa_noop_TexCoord4fv( const GLfloat
*v
)
379 GET_CURRENT_CONTEXT(ctx
);
380 GLfloat
*dest
= ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
];
389 void GLAPIENTRY
_mesa_noop_VertexAttrib1fNV( GLuint index
, GLfloat x
)
391 GET_CURRENT_CONTEXT(ctx
);
392 if (index
< VERT_ATTRIB_MAX
) {
393 ASSIGN_4V(ctx
->Current
.Attrib
[index
], x
, 0, 0, 1);
396 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib1f" );
399 void GLAPIENTRY
_mesa_noop_VertexAttrib1fvNV( GLuint index
, const GLfloat
*v
)
401 GET_CURRENT_CONTEXT(ctx
);
402 if (index
< VERT_ATTRIB_MAX
) {
403 ASSIGN_4V(ctx
->Current
.Attrib
[index
], v
[0], 0, 0, 1);
406 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib1fv" );
409 void GLAPIENTRY
_mesa_noop_VertexAttrib2fNV( GLuint index
, GLfloat x
, GLfloat y
)
411 GET_CURRENT_CONTEXT(ctx
);
412 if (index
< VERT_ATTRIB_MAX
) {
413 ASSIGN_4V(ctx
->Current
.Attrib
[index
], x
, y
, 0, 1);
416 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib2f" );
419 void GLAPIENTRY
_mesa_noop_VertexAttrib2fvNV( GLuint index
, const GLfloat
*v
)
421 GET_CURRENT_CONTEXT(ctx
);
422 if (index
< VERT_ATTRIB_MAX
) {
423 ASSIGN_4V(ctx
->Current
.Attrib
[index
], v
[0], v
[1], 0, 1);
426 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib2fv" );
429 void GLAPIENTRY
_mesa_noop_VertexAttrib3fNV( GLuint index
, GLfloat x
,
430 GLfloat y
, GLfloat z
)
432 GET_CURRENT_CONTEXT(ctx
);
433 if (index
< VERT_ATTRIB_MAX
) {
434 ASSIGN_4V(ctx
->Current
.Attrib
[index
], x
, y
, z
, 1);
437 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib3f" );
440 void GLAPIENTRY
_mesa_noop_VertexAttrib3fvNV( GLuint index
, const GLfloat
*v
)
442 GET_CURRENT_CONTEXT(ctx
);
443 if (index
< VERT_ATTRIB_MAX
) {
444 ASSIGN_4V(ctx
->Current
.Attrib
[index
], v
[0], v
[1], v
[2], 1);
447 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib3fv" );
450 void GLAPIENTRY
_mesa_noop_VertexAttrib4fNV( GLuint index
, GLfloat x
,
451 GLfloat y
, GLfloat z
, GLfloat w
)
453 GET_CURRENT_CONTEXT(ctx
);
454 if (index
< VERT_ATTRIB_MAX
) {
455 ASSIGN_4V(ctx
->Current
.Attrib
[index
], x
, y
, z
, w
);
458 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib4f" );
461 void GLAPIENTRY
_mesa_noop_VertexAttrib4fvNV( GLuint index
, const GLfloat
*v
)
463 GET_CURRENT_CONTEXT(ctx
);
464 if (index
< VERT_ATTRIB_MAX
) {
465 ASSIGN_4V(ctx
->Current
.Attrib
[index
], v
[0], v
[1], v
[2], v
[3]);
468 _mesa_error( ctx
, GL_INVALID_ENUM
, "glVertexAttrib4fv" );
473 void GLAPIENTRY
_mesa_noop_Materialfv( GLenum face
, GLenum pname
, const GLfloat
*params
)
475 GET_CURRENT_CONTEXT(ctx
);
477 struct gl_material
*mat
= &ctx
->Light
.Material
;
478 GLuint bitmask
= _mesa_material_bitmask( ctx
, face
, pname
, ~0,
479 "_mesa_noop_Materialfv" );
481 if (ctx
->Light
.ColorMaterialEnabled
)
482 bitmask
&= ~ctx
->Light
.ColorMaterialBitmask
;
488 case GL_SHININESS
: nr
= 1; break;
489 case GL_COLOR_INDEXES
: nr
= 3; break;
490 default: nr
= 4 ; break;
493 for (i
= 0 ; i
< MAT_ATTRIB_MAX
; i
++)
494 if (bitmask
& (1<<i
))
495 COPY_SZ_4V( mat
->Attrib
[i
], nr
, params
);
497 _mesa_update_material( ctx
, bitmask
);
500 /* These really are noops outside begin/end:
502 void GLAPIENTRY
_mesa_noop_Vertex2fv( const GLfloat
*v
)
507 void GLAPIENTRY
_mesa_noop_Vertex3fv( const GLfloat
*v
)
512 void GLAPIENTRY
_mesa_noop_Vertex4fv( const GLfloat
*v
)
517 void GLAPIENTRY
_mesa_noop_Vertex2f( GLfloat a
, GLfloat b
)
522 void GLAPIENTRY
_mesa_noop_Vertex3f( GLfloat a
, GLfloat b
, GLfloat c
)
524 (void) a
; (void) b
; (void) c
;
527 void GLAPIENTRY
_mesa_noop_Vertex4f( GLfloat a
, GLfloat b
, GLfloat c
, GLfloat d
)
529 (void) a
; (void) b
; (void) c
; (void) d
;
532 /* Similarly, these have no effect outside begin/end:
534 void GLAPIENTRY
_mesa_noop_EvalCoord1f( GLfloat a
)
539 void GLAPIENTRY
_mesa_noop_EvalCoord1fv( const GLfloat
*v
)
544 void GLAPIENTRY
_mesa_noop_EvalCoord2f( GLfloat a
, GLfloat b
)
549 void GLAPIENTRY
_mesa_noop_EvalCoord2fv( const GLfloat
*v
)
554 void GLAPIENTRY
_mesa_noop_EvalPoint1( GLint a
)
559 void GLAPIENTRY
_mesa_noop_EvalPoint2( GLint a
, GLint b
)
565 /* Begin -- call into driver, should result in the vtxfmt being
568 void GLAPIENTRY
_mesa_noop_Begin( GLenum mode
)
573 /* End -- just raise an error
575 void GLAPIENTRY
_mesa_noop_End( void )
577 GET_CURRENT_CONTEXT(ctx
);
578 _mesa_error( ctx
, GL_INVALID_OPERATION
, "glEnd" );
582 /* Execute a glRectf() function. This is not suitable for GL_COMPILE
583 * modes (as the test for outside begin/end is not compiled),
584 * but may be useful for drivers in circumstances which exclude
585 * display list interactions.
587 * (None of the functions in this file are suitable for GL_COMPILE
590 void GLAPIENTRY
_mesa_noop_Rectf( GLfloat x1
, GLfloat y1
, GLfloat x2
, GLfloat y2
)
593 GET_CURRENT_CONTEXT(ctx
);
594 ASSERT_OUTSIDE_BEGIN_END(ctx
);
598 glVertex2f( x1
, y1
);
599 glVertex2f( x2
, y1
);
600 glVertex2f( x2
, y2
);
601 glVertex2f( x1
, y2
);
606 /* Some very basic support for arrays. Drivers without explicit array
607 * support can hook these in, but still need to supply an array-elt
610 void GLAPIENTRY
_mesa_noop_DrawArrays(GLenum mode
, GLint start
, GLsizei count
)
612 GET_CURRENT_CONTEXT(ctx
);
615 if (!_mesa_validate_DrawArrays( ctx
, mode
, start
, count
))
619 for (i
= start
; i
< count
; i
++)
625 void GLAPIENTRY
_mesa_noop_DrawElements(GLenum mode
, GLsizei count
, GLenum type
,
626 const GLvoid
*indices
)
628 GET_CURRENT_CONTEXT(ctx
);
631 if (!_mesa_validate_DrawElements( ctx
, mode
, count
, type
, indices
))
637 case GL_UNSIGNED_BYTE
:
638 for (i
= 0 ; i
< count
; i
++)
639 glArrayElement( ((GLubyte
*)indices
)[i
] );
641 case GL_UNSIGNED_SHORT
:
642 for (i
= 0 ; i
< count
; i
++)
643 glArrayElement( ((GLushort
*)indices
)[i
] );
645 case GL_UNSIGNED_INT
:
646 for (i
= 0 ; i
< count
; i
++)
647 glArrayElement( ((GLuint
*)indices
)[i
] );
650 _mesa_error( ctx
, GL_INVALID_ENUM
, "glDrawElements(type)" );
657 void GLAPIENTRY
_mesa_noop_DrawRangeElements(GLenum mode
,
658 GLuint start
, GLuint end
,
659 GLsizei count
, GLenum type
,
660 const GLvoid
*indices
)
662 GET_CURRENT_CONTEXT(ctx
);
664 if (_mesa_validate_DrawRangeElements( ctx
, mode
,
666 count
, type
, indices
))
667 glDrawElements( mode
, count
, type
, indices
);
674 /* KW: If are compiling, we don't know whether eval will produce a
675 * vertex when it is run in the future. If this is pure immediate
676 * mode, eval is a noop if neither vertex map is enabled.
678 * Thus we need to have a check in the display list code or
679 * elsewhere for eval(1,2) vertices in the case where
680 * map(1,2)_vertex is disabled, and to purge those vertices from
683 void GLAPIENTRY
_mesa_noop_EvalMesh1( GLenum mode
, GLint i1
, GLint i2
)
685 GET_CURRENT_CONTEXT(ctx
);
695 prim
= GL_LINE_STRIP
;
698 _mesa_error( ctx
, GL_INVALID_ENUM
, "glEvalMesh1(mode)" );
702 /* No effect if vertex maps disabled.
704 if (!ctx
->Eval
.Map1Vertex4
&&
705 !ctx
->Eval
.Map1Vertex3
&&
706 !(ctx
->VertexProgram
.Enabled
&& ctx
->Eval
.Map1Attrib
[VERT_ATTRIB_POS
]))
709 du
= ctx
->Eval
.MapGrid1du
;
710 u
= ctx
->Eval
.MapGrid1u1
+ i1
* du
;
713 for (i
=i1
;i
<=i2
;i
++,u
+=du
) {
721 void GLAPIENTRY
_mesa_noop_EvalMesh2( GLenum mode
, GLint i1
, GLint i2
, GLint j1
, GLint j2
)
723 GET_CURRENT_CONTEXT(ctx
);
724 GLfloat u
, du
, v
, dv
, v1
, u1
;
733 _mesa_error( ctx
, GL_INVALID_ENUM
, "glEvalMesh2(mode)" );
737 /* No effect if vertex maps disabled.
739 if (!ctx
->Eval
.Map2Vertex4
&&
740 !ctx
->Eval
.Map2Vertex3
&&
741 !(ctx
->VertexProgram
.Enabled
&& ctx
->Eval
.Map2Attrib
[VERT_ATTRIB_POS
]))
744 du
= ctx
->Eval
.MapGrid2du
;
745 dv
= ctx
->Eval
.MapGrid2dv
;
746 v1
= ctx
->Eval
.MapGrid2v1
+ j1
* dv
;
747 u1
= ctx
->Eval
.MapGrid2u1
+ i1
* du
;
751 glBegin( GL_POINTS
);
752 for (v
=v1
,j
=j1
;j
<=j2
;j
++,v
+=dv
) {
753 for (u
=u1
,i
=i1
;i
<=i2
;i
++,u
+=du
) {
754 glEvalCoord2f(u
, v
);
760 for (v
=v1
,j
=j1
;j
<=j2
;j
++,v
+=dv
) {
761 glBegin( GL_LINE_STRIP
);
762 for (u
=u1
,i
=i1
;i
<=i2
;i
++,u
+=du
) {
763 glEvalCoord2f(u
, v
);
767 for (u
=u1
,i
=i1
;i
<=i2
;i
++,u
+=du
) {
768 glBegin( GL_LINE_STRIP
);
769 for (v
=v1
,j
=j1
;j
<=j2
;j
++,v
+=dv
) {
770 glEvalCoord2f(u
, v
);
776 for (v
=v1
,j
=j1
;j
<j2
;j
++,v
+=dv
) {
777 glBegin( GL_TRIANGLE_STRIP
);
778 for (u
=u1
,i
=i1
;i
<=i2
;i
++,u
+=du
) {
779 glEvalCoord2f(u
, v
);
780 glEvalCoord2f(u
, v
+dv
);
786 _mesa_error( ctx
, GL_INVALID_ENUM
, "glEvalMesh2(mode)" );
793 /* Build a vertexformat full of things to use outside begin/end pairs.
795 * TODO -- build a whole dispatch table for this purpose, and likewise
796 * for inside begin/end.
798 void _mesa_noop_vtxfmt_init( GLvertexformat
*vfmt
)
800 vfmt
->ArrayElement
= _ae_loopback_array_elt
; /* generic helper */
801 vfmt
->Begin
= _mesa_noop_Begin
;
802 vfmt
->CallList
= _mesa_CallList
;
803 vfmt
->CallLists
= _mesa_CallLists
;
804 vfmt
->Color3f
= _mesa_noop_Color3f
;
805 vfmt
->Color3fv
= _mesa_noop_Color3fv
;
806 vfmt
->Color4f
= _mesa_noop_Color4f
;
807 vfmt
->Color4fv
= _mesa_noop_Color4fv
;
808 vfmt
->EdgeFlag
= _mesa_noop_EdgeFlag
;
809 vfmt
->EdgeFlagv
= _mesa_noop_EdgeFlagv
;
810 vfmt
->End
= _mesa_noop_End
;
811 vfmt
->EvalCoord1f
= _mesa_noop_EvalCoord1f
;
812 vfmt
->EvalCoord1fv
= _mesa_noop_EvalCoord1fv
;
813 vfmt
->EvalCoord2f
= _mesa_noop_EvalCoord2f
;
814 vfmt
->EvalCoord2fv
= _mesa_noop_EvalCoord2fv
;
815 vfmt
->EvalPoint1
= _mesa_noop_EvalPoint1
;
816 vfmt
->EvalPoint2
= _mesa_noop_EvalPoint2
;
817 vfmt
->FogCoordfEXT
= _mesa_noop_FogCoordfEXT
;
818 vfmt
->FogCoordfvEXT
= _mesa_noop_FogCoordfvEXT
;
819 vfmt
->Indexf
= _mesa_noop_Indexf
;
820 vfmt
->Indexfv
= _mesa_noop_Indexfv
;
821 vfmt
->Materialfv
= _mesa_noop_Materialfv
;
822 vfmt
->MultiTexCoord1fARB
= _mesa_noop_MultiTexCoord1fARB
;
823 vfmt
->MultiTexCoord1fvARB
= _mesa_noop_MultiTexCoord1fvARB
;
824 vfmt
->MultiTexCoord2fARB
= _mesa_noop_MultiTexCoord2fARB
;
825 vfmt
->MultiTexCoord2fvARB
= _mesa_noop_MultiTexCoord2fvARB
;
826 vfmt
->MultiTexCoord3fARB
= _mesa_noop_MultiTexCoord3fARB
;
827 vfmt
->MultiTexCoord3fvARB
= _mesa_noop_MultiTexCoord3fvARB
;
828 vfmt
->MultiTexCoord4fARB
= _mesa_noop_MultiTexCoord4fARB
;
829 vfmt
->MultiTexCoord4fvARB
= _mesa_noop_MultiTexCoord4fvARB
;
830 vfmt
->Normal3f
= _mesa_noop_Normal3f
;
831 vfmt
->Normal3fv
= _mesa_noop_Normal3fv
;
832 vfmt
->SecondaryColor3fEXT
= _mesa_noop_SecondaryColor3fEXT
;
833 vfmt
->SecondaryColor3fvEXT
= _mesa_noop_SecondaryColor3fvEXT
;
834 vfmt
->TexCoord1f
= _mesa_noop_TexCoord1f
;
835 vfmt
->TexCoord1fv
= _mesa_noop_TexCoord1fv
;
836 vfmt
->TexCoord2f
= _mesa_noop_TexCoord2f
;
837 vfmt
->TexCoord2fv
= _mesa_noop_TexCoord2fv
;
838 vfmt
->TexCoord3f
= _mesa_noop_TexCoord3f
;
839 vfmt
->TexCoord3fv
= _mesa_noop_TexCoord3fv
;
840 vfmt
->TexCoord4f
= _mesa_noop_TexCoord4f
;
841 vfmt
->TexCoord4fv
= _mesa_noop_TexCoord4fv
;
842 vfmt
->Vertex2f
= _mesa_noop_Vertex2f
;
843 vfmt
->Vertex2fv
= _mesa_noop_Vertex2fv
;
844 vfmt
->Vertex3f
= _mesa_noop_Vertex3f
;
845 vfmt
->Vertex3fv
= _mesa_noop_Vertex3fv
;
846 vfmt
->Vertex4f
= _mesa_noop_Vertex4f
;
847 vfmt
->Vertex4fv
= _mesa_noop_Vertex4fv
;
848 vfmt
->VertexAttrib1fNV
= _mesa_noop_VertexAttrib1fNV
;
849 vfmt
->VertexAttrib1fvNV
= _mesa_noop_VertexAttrib1fvNV
;
850 vfmt
->VertexAttrib2fNV
= _mesa_noop_VertexAttrib2fNV
;
851 vfmt
->VertexAttrib2fvNV
= _mesa_noop_VertexAttrib2fvNV
;
852 vfmt
->VertexAttrib3fNV
= _mesa_noop_VertexAttrib3fNV
;
853 vfmt
->VertexAttrib3fvNV
= _mesa_noop_VertexAttrib3fvNV
;
854 vfmt
->VertexAttrib4fNV
= _mesa_noop_VertexAttrib4fNV
;
855 vfmt
->VertexAttrib4fvNV
= _mesa_noop_VertexAttrib4fvNV
;
857 vfmt
->Rectf
= _mesa_noop_Rectf
;
859 vfmt
->DrawArrays
= _mesa_noop_DrawArrays
;
860 vfmt
->DrawElements
= _mesa_noop_DrawElements
;
861 vfmt
->DrawRangeElements
= _mesa_noop_DrawRangeElements
;
862 vfmt
->EvalMesh1
= _mesa_noop_EvalMesh1
;
863 vfmt
->EvalMesh2
= _mesa_noop_EvalMesh2
;