2 * Mesa 3-D graphics library
4 * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
5 * Copyright (C) 2011 VMware, Inc. All Rights Reserved.
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice shall be included
15 * in all copies or substantial portions of the Software.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
21 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
22 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23 * OTHER DEALINGS IN THE SOFTWARE.
28 * GLvertexformat no-op functions. Used in out-of-memory situations.
32 #include "main/glheader.h"
33 #include "main/context.h"
34 #include "main/dispatch.h"
35 #include "main/dlist.h"
36 #include "main/eval.h"
37 #include "vbo/vbo_noop.h"
39 static void GLAPIENTRY
40 _mesa_noop_EdgeFlag(GLboolean b
)
44 static void GLAPIENTRY
45 _mesa_noop_Indexf(GLfloat f
)
49 static void GLAPIENTRY
50 _mesa_noop_Indexfv(const GLfloat
* v
)
54 static void GLAPIENTRY
55 _mesa_noop_FogCoordfEXT(GLfloat a
)
59 static void GLAPIENTRY
60 _mesa_noop_FogCoordfvEXT(const GLfloat
* v
)
64 static void GLAPIENTRY
65 _mesa_noop_Normal3f(GLfloat a
, GLfloat b
, GLfloat c
)
69 static void GLAPIENTRY
70 _mesa_noop_Normal3fv(const GLfloat
* v
)
74 static void GLAPIENTRY
75 _mesa_noop_Color4f(GLfloat a
, GLfloat b
, GLfloat c
, GLfloat d
)
79 static void GLAPIENTRY
80 _mesa_noop_Color4fv(const GLfloat
* v
)
84 static void GLAPIENTRY
85 _mesa_noop_Color3f(GLfloat a
, GLfloat b
, GLfloat c
)
89 static void GLAPIENTRY
90 _mesa_noop_Color3fv(const GLfloat
* v
)
94 static void GLAPIENTRY
95 _mesa_noop_MultiTexCoord1fARB(GLenum target
, GLfloat a
)
99 static void GLAPIENTRY
100 _mesa_noop_MultiTexCoord1fvARB(GLenum target
, const GLfloat
* v
)
104 static void GLAPIENTRY
105 _mesa_noop_MultiTexCoord2fARB(GLenum target
, GLfloat a
, GLfloat b
)
109 static void GLAPIENTRY
110 _mesa_noop_MultiTexCoord2fvARB(GLenum target
, const GLfloat
* v
)
114 static void GLAPIENTRY
115 _mesa_noop_MultiTexCoord3fARB(GLenum target
, GLfloat a
, GLfloat b
, GLfloat c
)
119 static void GLAPIENTRY
120 _mesa_noop_MultiTexCoord3fvARB(GLenum target
, const GLfloat
* v
)
124 static void GLAPIENTRY
125 _mesa_noop_MultiTexCoord4fARB(GLenum target
, GLfloat a
, GLfloat b
,
126 GLfloat c
, GLfloat d
)
130 static void GLAPIENTRY
131 _mesa_noop_MultiTexCoord4fvARB(GLenum target
, const GLfloat
* v
)
135 static void GLAPIENTRY
136 _mesa_noop_SecondaryColor3fEXT(GLfloat a
, GLfloat b
, GLfloat c
)
140 static void GLAPIENTRY
141 _mesa_noop_SecondaryColor3fvEXT(const GLfloat
* v
)
145 static void GLAPIENTRY
146 _mesa_noop_TexCoord1f(GLfloat a
)
150 static void GLAPIENTRY
151 _mesa_noop_TexCoord1fv(const GLfloat
* v
)
155 static void GLAPIENTRY
156 _mesa_noop_TexCoord2f(GLfloat a
, GLfloat b
)
160 static void GLAPIENTRY
161 _mesa_noop_TexCoord2fv(const GLfloat
* v
)
165 static void GLAPIENTRY
166 _mesa_noop_TexCoord3f(GLfloat a
, GLfloat b
, GLfloat c
)
170 static void GLAPIENTRY
171 _mesa_noop_TexCoord3fv(const GLfloat
* v
)
175 static void GLAPIENTRY
176 _mesa_noop_TexCoord4f(GLfloat a
, GLfloat b
, GLfloat c
, GLfloat d
)
180 static void GLAPIENTRY
181 _mesa_noop_TexCoord4fv(const GLfloat
* v
)
185 static void GLAPIENTRY
186 _mesa_noop_VertexAttrib1fNV(GLuint index
, GLfloat x
)
190 static void GLAPIENTRY
191 _mesa_noop_VertexAttrib1fvNV(GLuint index
, const GLfloat
* v
)
195 static void GLAPIENTRY
196 _mesa_noop_VertexAttrib2fNV(GLuint index
, GLfloat x
, GLfloat y
)
200 static void GLAPIENTRY
201 _mesa_noop_VertexAttrib2fvNV(GLuint index
, const GLfloat
* v
)
205 static void GLAPIENTRY
206 _mesa_noop_VertexAttrib3fNV(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
210 static void GLAPIENTRY
211 _mesa_noop_VertexAttrib3fvNV(GLuint index
, const GLfloat
* v
)
215 static void GLAPIENTRY
216 _mesa_noop_VertexAttrib4fNV(GLuint index
, GLfloat x
,
217 GLfloat y
, GLfloat z
, GLfloat w
)
221 static void GLAPIENTRY
222 _mesa_noop_VertexAttrib4fvNV(GLuint index
, const GLfloat
* v
)
227 static void GLAPIENTRY
228 _mesa_noop_VertexAttrib1fARB(GLuint index
, GLfloat x
)
232 static void GLAPIENTRY
233 _mesa_noop_VertexAttrib1fvARB(GLuint index
, const GLfloat
* v
)
237 static void GLAPIENTRY
238 _mesa_noop_VertexAttrib2fARB(GLuint index
, GLfloat x
, GLfloat y
)
242 static void GLAPIENTRY
243 _mesa_noop_VertexAttrib2fvARB(GLuint index
, const GLfloat
* v
)
247 static void GLAPIENTRY
248 _mesa_noop_VertexAttrib3fARB(GLuint index
, GLfloat x
, GLfloat y
, GLfloat z
)
252 static void GLAPIENTRY
253 _mesa_noop_VertexAttrib3fvARB(GLuint index
, const GLfloat
* v
)
257 static void GLAPIENTRY
258 _mesa_noop_VertexAttrib4fARB(GLuint index
, GLfloat x
,
259 GLfloat y
, GLfloat z
, GLfloat w
)
263 static void GLAPIENTRY
264 _mesa_noop_VertexAttrib4fvARB(GLuint index
, const GLfloat
* v
)
268 static void GLAPIENTRY
269 _mesa_noop_Materialfv(GLenum face
, GLenum pname
, const GLfloat
* params
)
273 static void GLAPIENTRY
274 _mesa_noop_Vertex2fv(const GLfloat
* v
)
278 static void GLAPIENTRY
279 _mesa_noop_Vertex3fv(const GLfloat
* v
)
283 static void GLAPIENTRY
284 _mesa_noop_Vertex4fv(const GLfloat
* v
)
288 static void GLAPIENTRY
289 _mesa_noop_Vertex2f(GLfloat a
, GLfloat b
)
293 static void GLAPIENTRY
294 _mesa_noop_Vertex3f(GLfloat a
, GLfloat b
, GLfloat c
)
298 static void GLAPIENTRY
299 _mesa_noop_Vertex4f(GLfloat a
, GLfloat b
, GLfloat c
, GLfloat d
)
303 static void GLAPIENTRY
304 _mesa_noop_EvalCoord1f(GLfloat a
)
308 static void GLAPIENTRY
309 _mesa_noop_EvalCoord1fv(const GLfloat
* v
)
313 static void GLAPIENTRY
314 _mesa_noop_EvalCoord2f(GLfloat a
, GLfloat b
)
318 static void GLAPIENTRY
319 _mesa_noop_EvalCoord2fv(const GLfloat
* v
)
323 static void GLAPIENTRY
324 _mesa_noop_EvalPoint1(GLint a
)
328 static void GLAPIENTRY
329 _mesa_noop_EvalPoint2(GLint a
, GLint b
)
333 static void GLAPIENTRY
334 _mesa_noop_ArrayElement(GLint elem
)
339 static void GLAPIENTRY
340 _mesa_noop_Begin(GLenum mode
)
344 static void GLAPIENTRY
349 static void GLAPIENTRY
350 _mesa_noop_PrimitiveRestartNV(void)
356 * Build a vertexformat of functions that are no-ops.
357 * These are used in out-of-memory situations when we have no VBO
358 * to put the vertex data into.
361 _mesa_noop_vtxfmt_init(GLvertexformat
* vfmt
)
363 vfmt
->ArrayElement
= _mesa_noop_ArrayElement
;
365 vfmt
->Begin
= _mesa_noop_Begin
;
367 vfmt
->CallList
= _mesa_CallList
;
368 vfmt
->CallLists
= _mesa_CallLists
;
370 vfmt
->Color3f
= _mesa_noop_Color3f
;
371 vfmt
->Color3fv
= _mesa_noop_Color3fv
;
372 vfmt
->Color4f
= _mesa_noop_Color4f
;
373 vfmt
->Color4fv
= _mesa_noop_Color4fv
;
374 vfmt
->EdgeFlag
= _mesa_noop_EdgeFlag
;
375 vfmt
->End
= _mesa_noop_End
;
377 vfmt
->PrimitiveRestartNV
= _mesa_noop_PrimitiveRestartNV
;
379 vfmt
->EvalCoord1f
= _mesa_noop_EvalCoord1f
;
380 vfmt
->EvalCoord1fv
= _mesa_noop_EvalCoord1fv
;
381 vfmt
->EvalCoord2f
= _mesa_noop_EvalCoord2f
;
382 vfmt
->EvalCoord2fv
= _mesa_noop_EvalCoord2fv
;
383 vfmt
->EvalPoint1
= _mesa_noop_EvalPoint1
;
384 vfmt
->EvalPoint2
= _mesa_noop_EvalPoint2
;
386 vfmt
->FogCoordfEXT
= _mesa_noop_FogCoordfEXT
;
387 vfmt
->FogCoordfvEXT
= _mesa_noop_FogCoordfvEXT
;
388 vfmt
->Indexf
= _mesa_noop_Indexf
;
389 vfmt
->Indexfv
= _mesa_noop_Indexfv
;
390 vfmt
->Materialfv
= _mesa_noop_Materialfv
;
391 vfmt
->MultiTexCoord1fARB
= _mesa_noop_MultiTexCoord1fARB
;
392 vfmt
->MultiTexCoord1fvARB
= _mesa_noop_MultiTexCoord1fvARB
;
393 vfmt
->MultiTexCoord2fARB
= _mesa_noop_MultiTexCoord2fARB
;
394 vfmt
->MultiTexCoord2fvARB
= _mesa_noop_MultiTexCoord2fvARB
;
395 vfmt
->MultiTexCoord3fARB
= _mesa_noop_MultiTexCoord3fARB
;
396 vfmt
->MultiTexCoord3fvARB
= _mesa_noop_MultiTexCoord3fvARB
;
397 vfmt
->MultiTexCoord4fARB
= _mesa_noop_MultiTexCoord4fARB
;
398 vfmt
->MultiTexCoord4fvARB
= _mesa_noop_MultiTexCoord4fvARB
;
399 vfmt
->Normal3f
= _mesa_noop_Normal3f
;
400 vfmt
->Normal3fv
= _mesa_noop_Normal3fv
;
401 vfmt
->SecondaryColor3fEXT
= _mesa_noop_SecondaryColor3fEXT
;
402 vfmt
->SecondaryColor3fvEXT
= _mesa_noop_SecondaryColor3fvEXT
;
403 vfmt
->TexCoord1f
= _mesa_noop_TexCoord1f
;
404 vfmt
->TexCoord1fv
= _mesa_noop_TexCoord1fv
;
405 vfmt
->TexCoord2f
= _mesa_noop_TexCoord2f
;
406 vfmt
->TexCoord2fv
= _mesa_noop_TexCoord2fv
;
407 vfmt
->TexCoord3f
= _mesa_noop_TexCoord3f
;
408 vfmt
->TexCoord3fv
= _mesa_noop_TexCoord3fv
;
409 vfmt
->TexCoord4f
= _mesa_noop_TexCoord4f
;
410 vfmt
->TexCoord4fv
= _mesa_noop_TexCoord4fv
;
411 vfmt
->Vertex2f
= _mesa_noop_Vertex2f
;
412 vfmt
->Vertex2fv
= _mesa_noop_Vertex2fv
;
413 vfmt
->Vertex3f
= _mesa_noop_Vertex3f
;
414 vfmt
->Vertex3fv
= _mesa_noop_Vertex3fv
;
415 vfmt
->Vertex4f
= _mesa_noop_Vertex4f
;
416 vfmt
->Vertex4fv
= _mesa_noop_Vertex4fv
;
417 vfmt
->VertexAttrib1fNV
= _mesa_noop_VertexAttrib1fNV
;
418 vfmt
->VertexAttrib1fvNV
= _mesa_noop_VertexAttrib1fvNV
;
419 vfmt
->VertexAttrib2fNV
= _mesa_noop_VertexAttrib2fNV
;
420 vfmt
->VertexAttrib2fvNV
= _mesa_noop_VertexAttrib2fvNV
;
421 vfmt
->VertexAttrib3fNV
= _mesa_noop_VertexAttrib3fNV
;
422 vfmt
->VertexAttrib3fvNV
= _mesa_noop_VertexAttrib3fvNV
;
423 vfmt
->VertexAttrib4fNV
= _mesa_noop_VertexAttrib4fNV
;
424 vfmt
->VertexAttrib4fvNV
= _mesa_noop_VertexAttrib4fvNV
;
425 vfmt
->VertexAttrib1fARB
= _mesa_noop_VertexAttrib1fARB
;
426 vfmt
->VertexAttrib1fvARB
= _mesa_noop_VertexAttrib1fvARB
;
427 vfmt
->VertexAttrib2fARB
= _mesa_noop_VertexAttrib2fARB
;
428 vfmt
->VertexAttrib2fvARB
= _mesa_noop_VertexAttrib2fvARB
;
429 vfmt
->VertexAttrib3fARB
= _mesa_noop_VertexAttrib3fARB
;
430 vfmt
->VertexAttrib3fvARB
= _mesa_noop_VertexAttrib3fvARB
;
431 vfmt
->VertexAttrib4fARB
= _mesa_noop_VertexAttrib4fARB
;
432 vfmt
->VertexAttrib4fvARB
= _mesa_noop_VertexAttrib4fvARB
;
437 * Is the given dispatch table using the no-op functions?
440 _mesa_using_noop_vtxfmt(const struct _glapi_table
*dispatch
)
442 return GET_Begin((struct _glapi_table
*) dispatch
) == _mesa_noop_Begin
;