vbo_noop.c revision af69d88d
1/* 2 * Mesa 3-D graphics library 3 * 4 * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. 5 * Copyright (C) 2011 VMware, Inc. All Rights Reserved. 6 * 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: 13 * 14 * The above copyright notice and this permission notice shall be included 15 * in all copies or substantial portions of the Software. 16 * 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. 24 */ 25 26 27/** 28 * GLvertexformat no-op functions. Used in out-of-memory situations. 29 */ 30 31 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" 38 39static void GLAPIENTRY 40_mesa_noop_EdgeFlag(GLboolean b) 41{ 42} 43 44static void GLAPIENTRY 45_mesa_noop_Indexf(GLfloat f) 46{ 47} 48 49static void GLAPIENTRY 50_mesa_noop_Indexfv(const GLfloat * v) 51{ 52} 53 54static void GLAPIENTRY 55_mesa_noop_FogCoordfEXT(GLfloat a) 56{ 57} 58 59static void GLAPIENTRY 60_mesa_noop_FogCoordfvEXT(const GLfloat * v) 61{ 62} 63 64static void GLAPIENTRY 65_mesa_noop_Normal3f(GLfloat a, GLfloat b, GLfloat c) 66{ 67} 68 69static void GLAPIENTRY 70_mesa_noop_Normal3fv(const GLfloat * v) 71{ 72} 73 74static void GLAPIENTRY 75_mesa_noop_Color4f(GLfloat a, GLfloat b, GLfloat c, GLfloat d) 76{ 77} 78 79static void GLAPIENTRY 80_mesa_noop_Color4fv(const GLfloat * v) 81{ 82} 83 84static void GLAPIENTRY 85_mesa_noop_Color3f(GLfloat a, GLfloat b, GLfloat c) 86{ 87} 88 89static void GLAPIENTRY 90_mesa_noop_Color3fv(const GLfloat * v) 91{ 92} 93 94static void GLAPIENTRY 95_mesa_noop_MultiTexCoord1fARB(GLenum target, GLfloat a) 96{ 97} 98 99static void GLAPIENTRY 100_mesa_noop_MultiTexCoord1fvARB(GLenum target, const GLfloat * v) 101{ 102} 103 104static void GLAPIENTRY 105_mesa_noop_MultiTexCoord2fARB(GLenum target, GLfloat a, GLfloat b) 106{ 107} 108 109static void GLAPIENTRY 110_mesa_noop_MultiTexCoord2fvARB(GLenum target, const GLfloat * v) 111{ 112} 113 114static void GLAPIENTRY 115_mesa_noop_MultiTexCoord3fARB(GLenum target, GLfloat a, GLfloat b, GLfloat c) 116{ 117} 118 119static void GLAPIENTRY 120_mesa_noop_MultiTexCoord3fvARB(GLenum target, const GLfloat * v) 121{ 122} 123 124static void GLAPIENTRY 125_mesa_noop_MultiTexCoord4fARB(GLenum target, GLfloat a, GLfloat b, 126 GLfloat c, GLfloat d) 127{ 128} 129 130static void GLAPIENTRY 131_mesa_noop_MultiTexCoord4fvARB(GLenum target, const GLfloat * v) 132{ 133} 134 135static void GLAPIENTRY 136_mesa_noop_SecondaryColor3fEXT(GLfloat a, GLfloat b, GLfloat c) 137{ 138} 139 140static void GLAPIENTRY 141_mesa_noop_SecondaryColor3fvEXT(const GLfloat * v) 142{ 143} 144 145static void GLAPIENTRY 146_mesa_noop_TexCoord1f(GLfloat a) 147{ 148} 149 150static void GLAPIENTRY 151_mesa_noop_TexCoord1fv(const GLfloat * v) 152{ 153} 154 155static void GLAPIENTRY 156_mesa_noop_TexCoord2f(GLfloat a, GLfloat b) 157{ 158} 159 160static void GLAPIENTRY 161_mesa_noop_TexCoord2fv(const GLfloat * v) 162{ 163} 164 165static void GLAPIENTRY 166_mesa_noop_TexCoord3f(GLfloat a, GLfloat b, GLfloat c) 167{ 168} 169 170static void GLAPIENTRY 171_mesa_noop_TexCoord3fv(const GLfloat * v) 172{ 173} 174 175static void GLAPIENTRY 176_mesa_noop_TexCoord4f(GLfloat a, GLfloat b, GLfloat c, GLfloat d) 177{ 178} 179 180static void GLAPIENTRY 181_mesa_noop_TexCoord4fv(const GLfloat * v) 182{ 183} 184 185static void GLAPIENTRY 186_mesa_noop_VertexAttrib1fNV(GLuint index, GLfloat x) 187{ 188} 189 190static void GLAPIENTRY 191_mesa_noop_VertexAttrib1fvNV(GLuint index, const GLfloat * v) 192{ 193} 194 195static void GLAPIENTRY 196_mesa_noop_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) 197{ 198} 199 200static void GLAPIENTRY 201_mesa_noop_VertexAttrib2fvNV(GLuint index, const GLfloat * v) 202{ 203} 204 205static void GLAPIENTRY 206_mesa_noop_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) 207{ 208} 209 210static void GLAPIENTRY 211_mesa_noop_VertexAttrib3fvNV(GLuint index, const GLfloat * v) 212{ 213} 214 215static void GLAPIENTRY 216_mesa_noop_VertexAttrib4fNV(GLuint index, GLfloat x, 217 GLfloat y, GLfloat z, GLfloat w) 218{ 219} 220 221static void GLAPIENTRY 222_mesa_noop_VertexAttrib4fvNV(GLuint index, const GLfloat * v) 223{ 224} 225 226 227static void GLAPIENTRY 228_mesa_noop_VertexAttrib1fARB(GLuint index, GLfloat x) 229{ 230} 231 232static void GLAPIENTRY 233_mesa_noop_VertexAttrib1fvARB(GLuint index, const GLfloat * v) 234{ 235} 236 237static void GLAPIENTRY 238_mesa_noop_VertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y) 239{ 240} 241 242static void GLAPIENTRY 243_mesa_noop_VertexAttrib2fvARB(GLuint index, const GLfloat * v) 244{ 245} 246 247static void GLAPIENTRY 248_mesa_noop_VertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z) 249{ 250} 251 252static void GLAPIENTRY 253_mesa_noop_VertexAttrib3fvARB(GLuint index, const GLfloat * v) 254{ 255} 256 257static void GLAPIENTRY 258_mesa_noop_VertexAttrib4fARB(GLuint index, GLfloat x, 259 GLfloat y, GLfloat z, GLfloat w) 260{ 261} 262 263static void GLAPIENTRY 264_mesa_noop_VertexAttrib4fvARB(GLuint index, const GLfloat * v) 265{ 266} 267 268static void GLAPIENTRY 269_mesa_noop_Materialfv(GLenum face, GLenum pname, const GLfloat * params) 270{ 271} 272 273static void GLAPIENTRY 274_mesa_noop_Vertex2fv(const GLfloat * v) 275{ 276} 277 278static void GLAPIENTRY 279_mesa_noop_Vertex3fv(const GLfloat * v) 280{ 281} 282 283static void GLAPIENTRY 284_mesa_noop_Vertex4fv(const GLfloat * v) 285{ 286} 287 288static void GLAPIENTRY 289_mesa_noop_Vertex2f(GLfloat a, GLfloat b) 290{ 291} 292 293static void GLAPIENTRY 294_mesa_noop_Vertex3f(GLfloat a, GLfloat b, GLfloat c) 295{ 296} 297 298static void GLAPIENTRY 299_mesa_noop_Vertex4f(GLfloat a, GLfloat b, GLfloat c, GLfloat d) 300{ 301} 302 303static void GLAPIENTRY 304_mesa_noop_EvalCoord1f(GLfloat a) 305{ 306} 307 308static void GLAPIENTRY 309_mesa_noop_EvalCoord1fv(const GLfloat * v) 310{ 311} 312 313static void GLAPIENTRY 314_mesa_noop_EvalCoord2f(GLfloat a, GLfloat b) 315{ 316} 317 318static void GLAPIENTRY 319_mesa_noop_EvalCoord2fv(const GLfloat * v) 320{ 321} 322 323static void GLAPIENTRY 324_mesa_noop_EvalPoint1(GLint a) 325{ 326} 327 328static void GLAPIENTRY 329_mesa_noop_EvalPoint2(GLint a, GLint b) 330{ 331} 332 333static void GLAPIENTRY 334_mesa_noop_ArrayElement(GLint elem) 335{ 336} 337 338 339static void GLAPIENTRY 340_mesa_noop_Begin(GLenum mode) 341{ 342} 343 344static void GLAPIENTRY 345_mesa_noop_End(void) 346{ 347} 348 349static void GLAPIENTRY 350_mesa_noop_PrimitiveRestartNV(void) 351{ 352} 353 354 355/** 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. 359 */ 360void 361_mesa_noop_vtxfmt_init(GLvertexformat * vfmt) 362{ 363 vfmt->ArrayElement = _mesa_noop_ArrayElement; 364 365 vfmt->Begin = _mesa_noop_Begin; 366 367 vfmt->CallList = _mesa_CallList; 368 vfmt->CallLists = _mesa_CallLists; 369 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; 376 377 vfmt->PrimitiveRestartNV = _mesa_noop_PrimitiveRestartNV; 378 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; 385 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; 433} 434 435 436/** 437 * Is the given dispatch table using the no-op functions? 438 */ 439GLboolean 440_mesa_using_noop_vtxfmt(const struct _glapi_table *dispatch) 441{ 442 return GET_Begin((struct _glapi_table *) dispatch) == _mesa_noop_Begin; 443} 444