Home | History | Annotate | Download | only in vbo
      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