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 39 static void GLAPIENTRY 40 _mesa_noop_EdgeFlag(GLboolean b) 41 { 42 } 43 44 static void GLAPIENTRY 45 _mesa_noop_Indexf(GLfloat f) 46 { 47 } 48 49 static void GLAPIENTRY 50 _mesa_noop_Indexfv(const GLfloat * v) 51 { 52 } 53 54 static void GLAPIENTRY 55 _mesa_noop_FogCoordfEXT(GLfloat a) 56 { 57 } 58 59 static void GLAPIENTRY 60 _mesa_noop_FogCoordfvEXT(const GLfloat * v) 61 { 62 } 63 64 static void GLAPIENTRY 65 _mesa_noop_Normal3f(GLfloat a, GLfloat b, GLfloat c) 66 { 67 } 68 69 static void GLAPIENTRY 70 _mesa_noop_Normal3fv(const GLfloat * v) 71 { 72 } 73 74 static void GLAPIENTRY 75 _mesa_noop_Color4f(GLfloat a, GLfloat b, GLfloat c, GLfloat d) 76 { 77 } 78 79 static void GLAPIENTRY 80 _mesa_noop_Color4fv(const GLfloat * v) 81 { 82 } 83 84 static void GLAPIENTRY 85 _mesa_noop_Color3f(GLfloat a, GLfloat b, GLfloat c) 86 { 87 } 88 89 static void GLAPIENTRY 90 _mesa_noop_Color3fv(const GLfloat * v) 91 { 92 } 93 94 static void GLAPIENTRY 95 _mesa_noop_MultiTexCoord1fARB(GLenum target, GLfloat a) 96 { 97 } 98 99 static void GLAPIENTRY 100 _mesa_noop_MultiTexCoord1fvARB(GLenum target, const GLfloat * v) 101 { 102 } 103 104 static void GLAPIENTRY 105 _mesa_noop_MultiTexCoord2fARB(GLenum target, GLfloat a, GLfloat b) 106 { 107 } 108 109 static void GLAPIENTRY 110 _mesa_noop_MultiTexCoord2fvARB(GLenum target, const GLfloat * v) 111 { 112 } 113 114 static void GLAPIENTRY 115 _mesa_noop_MultiTexCoord3fARB(GLenum target, GLfloat a, GLfloat b, GLfloat c) 116 { 117 } 118 119 static void GLAPIENTRY 120 _mesa_noop_MultiTexCoord3fvARB(GLenum target, const GLfloat * v) 121 { 122 } 123 124 static void GLAPIENTRY 125 _mesa_noop_MultiTexCoord4fARB(GLenum target, GLfloat a, GLfloat b, 126 GLfloat c, GLfloat d) 127 { 128 } 129 130 static void GLAPIENTRY 131 _mesa_noop_MultiTexCoord4fvARB(GLenum target, const GLfloat * v) 132 { 133 } 134 135 static void GLAPIENTRY 136 _mesa_noop_SecondaryColor3fEXT(GLfloat a, GLfloat b, GLfloat c) 137 { 138 } 139 140 static void GLAPIENTRY 141 _mesa_noop_SecondaryColor3fvEXT(const GLfloat * v) 142 { 143 } 144 145 static void GLAPIENTRY 146 _mesa_noop_TexCoord1f(GLfloat a) 147 { 148 } 149 150 static void GLAPIENTRY 151 _mesa_noop_TexCoord1fv(const GLfloat * v) 152 { 153 } 154 155 static void GLAPIENTRY 156 _mesa_noop_TexCoord2f(GLfloat a, GLfloat b) 157 { 158 } 159 160 static void GLAPIENTRY 161 _mesa_noop_TexCoord2fv(const GLfloat * v) 162 { 163 } 164 165 static void GLAPIENTRY 166 _mesa_noop_TexCoord3f(GLfloat a, GLfloat b, GLfloat c) 167 { 168 } 169 170 static void GLAPIENTRY 171 _mesa_noop_TexCoord3fv(const GLfloat * v) 172 { 173 } 174 175 static void GLAPIENTRY 176 _mesa_noop_TexCoord4f(GLfloat a, GLfloat b, GLfloat c, GLfloat d) 177 { 178 } 179 180 static void GLAPIENTRY 181 _mesa_noop_TexCoord4fv(const GLfloat * v) 182 { 183 } 184 185 static void GLAPIENTRY 186 _mesa_noop_VertexAttrib1fNV(GLuint index, GLfloat x) 187 { 188 } 189 190 static void GLAPIENTRY 191 _mesa_noop_VertexAttrib1fvNV(GLuint index, const GLfloat * v) 192 { 193 } 194 195 static void GLAPIENTRY 196 _mesa_noop_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) 197 { 198 } 199 200 static void GLAPIENTRY 201 _mesa_noop_VertexAttrib2fvNV(GLuint index, const GLfloat * v) 202 { 203 } 204 205 static void GLAPIENTRY 206 _mesa_noop_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) 207 { 208 } 209 210 static void GLAPIENTRY 211 _mesa_noop_VertexAttrib3fvNV(GLuint index, const GLfloat * v) 212 { 213 } 214 215 static void GLAPIENTRY 216 _mesa_noop_VertexAttrib4fNV(GLuint index, GLfloat x, 217 GLfloat y, GLfloat z, GLfloat w) 218 { 219 } 220 221 static void GLAPIENTRY 222 _mesa_noop_VertexAttrib4fvNV(GLuint index, const GLfloat * v) 223 { 224 } 225 226 227 static void GLAPIENTRY 228 _mesa_noop_VertexAttrib1fARB(GLuint index, GLfloat x) 229 { 230 } 231 232 static void GLAPIENTRY 233 _mesa_noop_VertexAttrib1fvARB(GLuint index, const GLfloat * v) 234 { 235 } 236 237 static void GLAPIENTRY 238 _mesa_noop_VertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y) 239 { 240 } 241 242 static void GLAPIENTRY 243 _mesa_noop_VertexAttrib2fvARB(GLuint index, const GLfloat * v) 244 { 245 } 246 247 static void GLAPIENTRY 248 _mesa_noop_VertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z) 249 { 250 } 251 252 static void GLAPIENTRY 253 _mesa_noop_VertexAttrib3fvARB(GLuint index, const GLfloat * v) 254 { 255 } 256 257 static void GLAPIENTRY 258 _mesa_noop_VertexAttrib4fARB(GLuint index, GLfloat x, 259 GLfloat y, GLfloat z, GLfloat w) 260 { 261 } 262 263 static void GLAPIENTRY 264 _mesa_noop_VertexAttrib4fvARB(GLuint index, const GLfloat * v) 265 { 266 } 267 268 static void GLAPIENTRY 269 _mesa_noop_Materialfv(GLenum face, GLenum pname, const GLfloat * params) 270 { 271 } 272 273 static void GLAPIENTRY 274 _mesa_noop_Vertex2fv(const GLfloat * v) 275 { 276 } 277 278 static void GLAPIENTRY 279 _mesa_noop_Vertex3fv(const GLfloat * v) 280 { 281 } 282 283 static void GLAPIENTRY 284 _mesa_noop_Vertex4fv(const GLfloat * v) 285 { 286 } 287 288 static void GLAPIENTRY 289 _mesa_noop_Vertex2f(GLfloat a, GLfloat b) 290 { 291 } 292 293 static void GLAPIENTRY 294 _mesa_noop_Vertex3f(GLfloat a, GLfloat b, GLfloat c) 295 { 296 } 297 298 static void GLAPIENTRY 299 _mesa_noop_Vertex4f(GLfloat a, GLfloat b, GLfloat c, GLfloat d) 300 { 301 } 302 303 static void GLAPIENTRY 304 _mesa_noop_EvalCoord1f(GLfloat a) 305 { 306 } 307 308 static void GLAPIENTRY 309 _mesa_noop_EvalCoord1fv(const GLfloat * v) 310 { 311 } 312 313 static void GLAPIENTRY 314 _mesa_noop_EvalCoord2f(GLfloat a, GLfloat b) 315 { 316 } 317 318 static void GLAPIENTRY 319 _mesa_noop_EvalCoord2fv(const GLfloat * v) 320 { 321 } 322 323 static void GLAPIENTRY 324 _mesa_noop_EvalPoint1(GLint a) 325 { 326 } 327 328 static void GLAPIENTRY 329 _mesa_noop_EvalPoint2(GLint a, GLint b) 330 { 331 } 332 333 static void GLAPIENTRY 334 _mesa_noop_ArrayElement(GLint elem) 335 { 336 } 337 338 339 static void GLAPIENTRY 340 _mesa_noop_Begin(GLenum mode) 341 { 342 } 343 344 static void GLAPIENTRY 345 _mesa_noop_End(void) 346 { 347 } 348 349 static 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 */ 360 void 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 */ 439 GLboolean 440 _mesa_using_noop_vtxfmt(const struct _glapi_table *dispatch) 441 { 442 return GET_Begin((struct _glapi_table *) dispatch) == _mesa_noop_Begin; 443 } 444