ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

shaders.c
Go to the documentation of this file.
00001 /*
00002  * Mesa 3-D graphics library
00003  * Version:  7.3
00004  *
00005  * Copyright (C) 2004-2008  Brian Paul   All Rights Reserved.
00006  *
00007  * Permission is hereby granted, free of charge, to any person obtaining a
00008  * copy of this software and associated documentation files (the "Software"),
00009  * to deal in the Software without restriction, including without limitation
00010  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00011  * and/or sell copies of the Software, and to permit persons to whom the
00012  * Software is furnished to do so, subject to the following conditions:
00013  *
00014  * The above copyright notice and this permission notice shall be included
00015  * in all copies or substantial portions of the Software.
00016  *
00017  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00018  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00019  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
00020  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
00021  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
00022  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00023  */
00024 
00025 
00026 #include "glheader.h"
00027 #include "context.h"
00028 #include "shaders.h"
00029 
00030 
00045 void GLAPIENTRY
00046 _mesa_AttachObjectARB(GLhandleARB program, GLhandleARB shader)
00047 {
00048    GET_CURRENT_CONTEXT(ctx);
00049    ctx->Driver.AttachShader(ctx, program, shader);
00050 }
00051 
00052 
00053 void GLAPIENTRY
00054 _mesa_AttachShader(GLuint program, GLuint shader)
00055 {
00056    GET_CURRENT_CONTEXT(ctx);
00057    ctx->Driver.AttachShader(ctx, program, shader);
00058 }
00059 
00060 
00061 void GLAPIENTRY
00062 _mesa_BindAttribLocationARB(GLhandleARB program, GLuint index,
00063                             const GLcharARB *name)
00064 {
00065    GET_CURRENT_CONTEXT(ctx);
00066    ctx->Driver.BindAttribLocation(ctx, program, index, name);
00067 }
00068 
00069 
00070 void GLAPIENTRY
00071 _mesa_CompileShaderARB(GLhandleARB shaderObj)
00072 {
00073    GET_CURRENT_CONTEXT(ctx);
00074    ctx->Driver.CompileShader(ctx, shaderObj);
00075 }
00076 
00077 
00078 GLuint GLAPIENTRY
00079 _mesa_CreateShader(GLenum type)
00080 {
00081    GET_CURRENT_CONTEXT(ctx);
00082    return ctx->Driver.CreateShader(ctx, type);
00083 }
00084 
00085 
00086 GLhandleARB GLAPIENTRY
00087 _mesa_CreateShaderObjectARB(GLenum type)
00088 {
00089    GET_CURRENT_CONTEXT(ctx);
00090    return ctx->Driver.CreateShader(ctx, type);
00091 }
00092 
00093 
00094 GLuint GLAPIENTRY
00095 _mesa_CreateProgram(void)
00096 {
00097    GET_CURRENT_CONTEXT(ctx);
00098    return ctx->Driver.CreateProgram(ctx);
00099 }
00100 
00101 
00102 GLhandleARB GLAPIENTRY
00103 _mesa_CreateProgramObjectARB(void)
00104 {
00105    GET_CURRENT_CONTEXT(ctx);
00106    return ctx->Driver.CreateProgram(ctx);
00107 }
00108 
00109 
00110 void GLAPIENTRY
00111 _mesa_DeleteObjectARB(GLhandleARB obj)
00112 {
00113    if (obj) {
00114       GET_CURRENT_CONTEXT(ctx);
00115       if (ctx->Driver.IsProgram(ctx, obj)) {
00116          ctx->Driver.DeleteProgram2(ctx, obj);
00117       }
00118       else if (ctx->Driver.IsShader(ctx, obj)) {
00119          ctx->Driver.DeleteShader(ctx, obj);
00120       }
00121       else {
00122          /* error? */
00123       }
00124    }
00125 }
00126 
00127 
00128 void GLAPIENTRY
00129 _mesa_DeleteProgram(GLuint name)
00130 {
00131    if (name) {
00132       GET_CURRENT_CONTEXT(ctx);
00133       ctx->Driver.DeleteProgram2(ctx, name);
00134    }
00135 }
00136 
00137 
00138 void GLAPIENTRY
00139 _mesa_DeleteShader(GLuint name)
00140 {
00141    if (name) {
00142       GET_CURRENT_CONTEXT(ctx);
00143       ctx->Driver.DeleteShader(ctx, name);
00144    }
00145 }
00146 
00147 
00148 void GLAPIENTRY
00149 _mesa_DetachObjectARB(GLhandleARB program, GLhandleARB shader)
00150 {
00151    GET_CURRENT_CONTEXT(ctx);
00152    ctx->Driver.DetachShader(ctx, program, shader);
00153 }
00154 
00155 
00156 void GLAPIENTRY
00157 _mesa_DetachShader(GLuint program, GLuint shader)
00158 {
00159    GET_CURRENT_CONTEXT(ctx);
00160    ctx->Driver.DetachShader(ctx, program, shader);
00161 }
00162 
00163 
00164 void GLAPIENTRY
00165 _mesa_GetActiveAttribARB(GLhandleARB program, GLuint index,
00166                          GLsizei maxLength, GLsizei * length, GLint * size,
00167                          GLenum * type, GLcharARB * name)
00168 {
00169    GET_CURRENT_CONTEXT(ctx);
00170    ctx->Driver.GetActiveAttrib(ctx, program, index, maxLength, length, size,
00171                                type, name);
00172 }
00173 
00174 
00175 void GLAPIENTRY
00176 _mesa_GetActiveUniformARB(GLhandleARB program, GLuint index,
00177                           GLsizei maxLength, GLsizei * length, GLint * size,
00178                           GLenum * type, GLcharARB * name)
00179 {
00180    GET_CURRENT_CONTEXT(ctx);
00181    ctx->Driver.GetActiveUniform(ctx, program, index, maxLength, length, size,
00182                                 type, name);
00183 }
00184 
00185 
00186 void GLAPIENTRY
00187 _mesa_GetAttachedObjectsARB(GLhandleARB container, GLsizei maxCount,
00188                             GLsizei * count, GLhandleARB * obj)
00189 {
00190    GET_CURRENT_CONTEXT(ctx);
00191    ctx->Driver.GetAttachedShaders(ctx, container, maxCount, count, obj);
00192 }
00193 
00194 
00195 void GLAPIENTRY
00196 _mesa_GetAttachedShaders(GLuint program, GLsizei maxCount,
00197                          GLsizei *count, GLuint *obj)
00198 {
00199    GET_CURRENT_CONTEXT(ctx);
00200    ctx->Driver.GetAttachedShaders(ctx, program, maxCount, count, obj);
00201 }
00202 
00203 
00204 GLint GLAPIENTRY
00205 _mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name)
00206 {
00207    GET_CURRENT_CONTEXT(ctx);
00208    return ctx->Driver.GetAttribLocation(ctx, program, name);
00209 }
00210 
00211 
00212 void GLAPIENTRY
00213 _mesa_GetInfoLogARB(GLhandleARB object, GLsizei maxLength, GLsizei * length,
00214                     GLcharARB * infoLog)
00215 {
00216    GET_CURRENT_CONTEXT(ctx);
00217    /* Implement in terms of GetProgramInfoLog, GetShaderInfoLog */
00218    if (ctx->Driver.IsProgram(ctx, object)) {
00219       ctx->Driver.GetProgramInfoLog(ctx, object, maxLength, length, infoLog);
00220    }
00221    else if (ctx->Driver.IsShader(ctx, object)) {
00222       ctx->Driver.GetShaderInfoLog(ctx, object, maxLength, length, infoLog);
00223    }
00224    else {
00225       _mesa_error(ctx, GL_INVALID_OPERATION, "glGetInfoLogARB");
00226    }
00227 }
00228 
00229 
00230 void GLAPIENTRY
00231 _mesa_GetObjectParameterivARB(GLhandleARB object, GLenum pname, GLint *params)
00232 {
00233    GET_CURRENT_CONTEXT(ctx);
00234    /* Implement in terms of GetProgramiv, GetShaderiv */
00235    if (ctx->Driver.IsProgram(ctx, object)) {
00236       if (pname == GL_OBJECT_TYPE_ARB) {
00237      *params = GL_PROGRAM_OBJECT_ARB;
00238       }
00239       else {
00240      ctx->Driver.GetProgramiv(ctx, object, pname, params);
00241       }
00242    }
00243    else if (ctx->Driver.IsShader(ctx, object)) {
00244       if (pname == GL_OBJECT_TYPE_ARB) {
00245      *params = GL_SHADER_OBJECT_ARB;
00246       }
00247       else {
00248      ctx->Driver.GetShaderiv(ctx, object, pname, params);
00249       }
00250    }
00251    else {
00252       _mesa_error(ctx, GL_INVALID_VALUE, "glGetObjectParameterivARB");
00253    }
00254 }
00255 
00256 
00257 void GLAPIENTRY
00258 _mesa_GetObjectParameterfvARB(GLhandleARB object, GLenum pname,
00259                               GLfloat *params)
00260 {
00261    GLint iparams[1];  /* XXX is one element enough? */
00262    _mesa_GetObjectParameterivARB(object, pname, iparams);
00263    params[0] = (GLfloat) iparams[0];
00264 }
00265 
00266 
00267 void GLAPIENTRY
00268 _mesa_GetProgramiv(GLuint program, GLenum pname, GLint *params)
00269 {
00270    GET_CURRENT_CONTEXT(ctx);
00271    ctx->Driver.GetProgramiv(ctx, program, pname, params);
00272 }
00273 
00274 
00275 void GLAPIENTRY
00276 _mesa_GetShaderiv(GLuint shader, GLenum pname, GLint *params)
00277 {
00278    GET_CURRENT_CONTEXT(ctx);
00279    ctx->Driver.GetShaderiv(ctx, shader, pname, params);
00280 }
00281 
00282 
00283 void GLAPIENTRY
00284 _mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize,
00285                         GLsizei *length, GLchar *infoLog)
00286 {
00287    GET_CURRENT_CONTEXT(ctx);
00288    ctx->Driver.GetProgramInfoLog(ctx, program, bufSize, length, infoLog);
00289 }
00290 
00291 
00292 void GLAPIENTRY
00293 _mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize,
00294                        GLsizei *length, GLchar *infoLog)
00295 {
00296    GET_CURRENT_CONTEXT(ctx);
00297    ctx->Driver.GetShaderInfoLog(ctx, shader, bufSize, length, infoLog);
00298 }
00299 
00300 
00301 void GLAPIENTRY
00302 _mesa_GetShaderSourceARB(GLhandleARB shader, GLsizei maxLength,
00303                          GLsizei *length, GLcharARB *sourceOut)
00304 {
00305    GET_CURRENT_CONTEXT(ctx);
00306    ctx->Driver.GetShaderSource(ctx, shader, maxLength, length, sourceOut);
00307 }
00308 
00309 
00310 void GLAPIENTRY
00311 _mesa_GetUniformfvARB(GLhandleARB program, GLint location, GLfloat * params)
00312 {
00313    GET_CURRENT_CONTEXT(ctx);
00314    ctx->Driver.GetUniformfv(ctx, program, location, params);
00315 }
00316 
00317 
00318 void GLAPIENTRY
00319 _mesa_GetUniformivARB(GLhandleARB program, GLint location, GLint * params)
00320 {
00321    GET_CURRENT_CONTEXT(ctx);
00322    ctx->Driver.GetUniformiv(ctx, program, location, params);
00323 }
00324 
00325 
00326 
00327 #if 0
00328 GLint GLAPIENTRY
00329 _mesa_GetUniformLocation(GLuint program, const GLcharARB *name)
00330 {
00331    GET_CURRENT_CONTEXT(ctx);
00332    return ctx->Driver.GetUniformLocation(ctx, program, name);
00333 }
00334 #endif
00335 
00336 
00337 GLhandleARB GLAPIENTRY
00338 _mesa_GetHandleARB(GLenum pname)
00339 {
00340    GET_CURRENT_CONTEXT(ctx);
00341    return ctx->Driver.GetHandle(ctx, pname);
00342 }
00343 
00344 
00345 GLint GLAPIENTRY
00346 _mesa_GetUniformLocationARB(GLhandleARB programObj, const GLcharARB *name)
00347 {
00348    GET_CURRENT_CONTEXT(ctx);
00349    return ctx->Driver.GetUniformLocation(ctx, programObj, name);
00350 }
00351 
00352 
00353 GLboolean GLAPIENTRY
00354 _mesa_IsProgram(GLuint name)
00355 {
00356    GET_CURRENT_CONTEXT(ctx);
00357    return ctx->Driver.IsProgram(ctx, name);
00358 }
00359 
00360 
00361 GLboolean GLAPIENTRY
00362 _mesa_IsShader(GLuint name)
00363 {
00364    GET_CURRENT_CONTEXT(ctx);
00365    return ctx->Driver.IsShader(ctx, name);
00366 }
00367 
00368 
00369 void GLAPIENTRY
00370 _mesa_LinkProgramARB(GLhandleARB programObj)
00371 {
00372    GET_CURRENT_CONTEXT(ctx);
00373    ctx->Driver.LinkProgram(ctx, programObj);
00374 }
00375 
00376 
00382 void GLAPIENTRY
00383 _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count,
00384                       const GLcharARB ** string, const GLint * length)
00385 {
00386    GET_CURRENT_CONTEXT(ctx);
00387    GLint *offsets;
00388    GLsizei i, totalLength;
00389    GLcharARB *source;
00390 
00391    if (!shaderObj || string == NULL) {
00392       _mesa_error(ctx, GL_INVALID_VALUE, "glShaderSourceARB");
00393       return;
00394    }
00395 
00396    /*
00397     * This array holds offsets of where the appropriate string ends, thus the
00398     * last element will be set to the total length of the source code.
00399     */
00400    offsets = (GLint *) _mesa_malloc(count * sizeof(GLint));
00401    if (offsets == NULL) {
00402       _mesa_error(ctx, GL_OUT_OF_MEMORY, "glShaderSourceARB");
00403       return;
00404    }
00405 
00406    for (i = 0; i < count; i++) {
00407       if (string[i] == NULL) {
00408          _mesa_free((GLvoid *) offsets);
00409          _mesa_error(ctx, GL_INVALID_OPERATION, "glShaderSourceARB(null string)");
00410          return;
00411       }
00412       if (length == NULL || length[i] < 0)
00413          offsets[i] = _mesa_strlen(string[i]);
00414       else
00415          offsets[i] = length[i];
00416       /* accumulate string lengths */
00417       if (i > 0)
00418          offsets[i] += offsets[i - 1];
00419    }
00420 
00421    /* Total length of source string is sum off all strings plus two.
00422     * One extra byte for terminating zero, another extra byte to silence
00423     * valgrind warnings in the parser/grammer code.
00424     */
00425    totalLength = offsets[count - 1] + 2;
00426    source = (GLcharARB *) _mesa_malloc(totalLength * sizeof(GLcharARB));
00427    if (source == NULL) {
00428       _mesa_free((GLvoid *) offsets);
00429       _mesa_error(ctx, GL_OUT_OF_MEMORY, "glShaderSourceARB");
00430       return;
00431    }
00432 
00433    for (i = 0; i < count; i++) {
00434       GLint start = (i > 0) ? offsets[i - 1] : 0;
00435       _mesa_memcpy(source + start, string[i],
00436                    (offsets[i] - start) * sizeof(GLcharARB));
00437    }
00438    source[totalLength - 1] = '\0';
00439    source[totalLength - 2] = '\0';
00440 
00441    ctx->Driver.ShaderSource(ctx, shaderObj, source);
00442 
00443    _mesa_free(offsets);
00444 }
00445 
00446 
00447 void GLAPIENTRY
00448 _mesa_Uniform1fARB(GLint location, GLfloat v0)
00449 {
00450    GET_CURRENT_CONTEXT(ctx);
00451    ctx->Driver.Uniform(ctx, location, 1, &v0, GL_FLOAT);
00452 }
00453 
00454 void GLAPIENTRY
00455 _mesa_Uniform2fARB(GLint location, GLfloat v0, GLfloat v1)
00456 {
00457    GET_CURRENT_CONTEXT(ctx);
00458    GLfloat v[2];
00459    v[0] = v0;
00460    v[1] = v1;
00461    ctx->Driver.Uniform(ctx, location, 1, v, GL_FLOAT_VEC2);
00462 }
00463 
00464 void GLAPIENTRY
00465 _mesa_Uniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
00466 {
00467    GET_CURRENT_CONTEXT(ctx);
00468    GLfloat v[3];
00469    v[0] = v0;
00470    v[1] = v1;
00471    v[2] = v2;
00472    ctx->Driver.Uniform(ctx, location, 1, v, GL_FLOAT_VEC3);
00473 }
00474 
00475 void GLAPIENTRY
00476 _mesa_Uniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2,
00477                    GLfloat v3)
00478 {
00479    GET_CURRENT_CONTEXT(ctx);
00480    GLfloat v[4];
00481    v[0] = v0;
00482    v[1] = v1;
00483    v[2] = v2;
00484    v[3] = v3;
00485    ctx->Driver.Uniform(ctx, location, 1, v, GL_FLOAT_VEC4);
00486 }
00487 
00488 void GLAPIENTRY
00489 _mesa_Uniform1iARB(GLint location, GLint v0)
00490 {
00491    GET_CURRENT_CONTEXT(ctx);
00492    ctx->Driver.Uniform(ctx, location, 1, &v0, GL_INT);
00493 }
00494 
00495 void GLAPIENTRY
00496 _mesa_Uniform2iARB(GLint location, GLint v0, GLint v1)
00497 {
00498    GET_CURRENT_CONTEXT(ctx);
00499    GLint v[2];
00500    v[0] = v0;
00501    v[1] = v1;
00502    ctx->Driver.Uniform(ctx, location, 1, v, GL_INT_VEC2);
00503 }
00504 
00505 void GLAPIENTRY
00506 _mesa_Uniform3iARB(GLint location, GLint v0, GLint v1, GLint v2)
00507 {
00508    GET_CURRENT_CONTEXT(ctx);
00509    GLint v[3];
00510    v[0] = v0;
00511    v[1] = v1;
00512    v[2] = v2;
00513    ctx->Driver.Uniform(ctx, location, 1, v, GL_INT_VEC3);
00514 }
00515 
00516 void GLAPIENTRY
00517 _mesa_Uniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
00518 {
00519    GET_CURRENT_CONTEXT(ctx);
00520    GLint v[4];
00521    v[0] = v0;
00522    v[1] = v1;
00523    v[2] = v2;
00524    v[3] = v3;
00525    ctx->Driver.Uniform(ctx, location, 1, v, GL_INT_VEC4);
00526 }
00527 
00528 void GLAPIENTRY
00529 _mesa_Uniform1fvARB(GLint location, GLsizei count, const GLfloat * value)
00530 {
00531    GET_CURRENT_CONTEXT(ctx);
00532    ctx->Driver.Uniform(ctx, location, count, value, GL_FLOAT);
00533 }
00534 
00535 void GLAPIENTRY
00536 _mesa_Uniform2fvARB(GLint location, GLsizei count, const GLfloat * value)
00537 {
00538    GET_CURRENT_CONTEXT(ctx);
00539    ctx->Driver.Uniform(ctx, location, count, value, GL_FLOAT_VEC2);
00540 }
00541 
00542 void GLAPIENTRY
00543 _mesa_Uniform3fvARB(GLint location, GLsizei count, const GLfloat * value)
00544 {
00545    GET_CURRENT_CONTEXT(ctx);
00546    ctx->Driver.Uniform(ctx, location, count, value, GL_FLOAT_VEC3);
00547 }
00548 
00549 void GLAPIENTRY
00550 _mesa_Uniform4fvARB(GLint location, GLsizei count, const GLfloat * value)
00551 {
00552    GET_CURRENT_CONTEXT(ctx);
00553    ctx->Driver.Uniform(ctx, location, count, value, GL_FLOAT_VEC4);
00554 }
00555 
00556 void GLAPIENTRY
00557 _mesa_Uniform1ivARB(GLint location, GLsizei count, const GLint * value)
00558 {
00559    GET_CURRENT_CONTEXT(ctx);
00560    ctx->Driver.Uniform(ctx, location, count, value, GL_INT);
00561 }
00562 
00563 void GLAPIENTRY
00564 _mesa_Uniform2ivARB(GLint location, GLsizei count, const GLint * value)
00565 {
00566    GET_CURRENT_CONTEXT(ctx);
00567    ctx->Driver.Uniform(ctx, location, count, value, GL_INT_VEC2);
00568 }
00569 
00570 void GLAPIENTRY
00571 _mesa_Uniform3ivARB(GLint location, GLsizei count, const GLint * value)
00572 {
00573    GET_CURRENT_CONTEXT(ctx);
00574    ctx->Driver.Uniform(ctx, location, count, value, GL_INT_VEC3);
00575 }
00576 
00577 void GLAPIENTRY
00578 _mesa_Uniform4ivARB(GLint location, GLsizei count, const GLint * value)
00579 {
00580    GET_CURRENT_CONTEXT(ctx);
00581    ctx->Driver.Uniform(ctx, location, count, value, GL_INT_VEC4);
00582 }
00583 
00584 
00585 void GLAPIENTRY
00586 _mesa_UniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose,
00587                           const GLfloat * value)
00588 {
00589    GET_CURRENT_CONTEXT(ctx);
00590    ctx->Driver.UniformMatrix(ctx, 2, 2, GL_FLOAT_MAT2,
00591                              location, count, transpose, value);
00592 }
00593 
00594 void GLAPIENTRY
00595 _mesa_UniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose,
00596                           const GLfloat * value)
00597 {
00598    GET_CURRENT_CONTEXT(ctx);
00599    ctx->Driver.UniformMatrix(ctx, 3, 3, GL_FLOAT_MAT3,
00600                              location, count, transpose, value);
00601 }
00602 
00603 void GLAPIENTRY
00604 _mesa_UniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose,
00605                           const GLfloat * value)
00606 {
00607    GET_CURRENT_CONTEXT(ctx);
00608    ctx->Driver.UniformMatrix(ctx, 4, 4, GL_FLOAT_MAT4,
00609                              location, count, transpose, value);
00610 }
00611 
00612 
00616 void GLAPIENTRY
00617 _mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose,
00618                          const GLfloat *value)
00619 {
00620    GET_CURRENT_CONTEXT(ctx);
00621    ctx->Driver.UniformMatrix(ctx, 2, 3, GL_FLOAT_MAT2x3,
00622                              location, count, transpose, value);
00623 }
00624 
00625 void GLAPIENTRY
00626 _mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose,
00627                          const GLfloat *value)
00628 {
00629    GET_CURRENT_CONTEXT(ctx);
00630    ctx->Driver.UniformMatrix(ctx, 3, 2, GL_FLOAT_MAT3x2,
00631                              location, count, transpose, value);
00632 }
00633 
00634 void GLAPIENTRY
00635 _mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose,
00636                          const GLfloat *value)
00637 {
00638    GET_CURRENT_CONTEXT(ctx);
00639    ctx->Driver.UniformMatrix(ctx, 2, 4, GL_FLOAT_MAT2x4,
00640                              location, count, transpose, value);
00641 }
00642 
00643 void GLAPIENTRY
00644 _mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose,
00645                          const GLfloat *value)
00646 {
00647    GET_CURRENT_CONTEXT(ctx);
00648    ctx->Driver.UniformMatrix(ctx, 4, 2, GL_FLOAT_MAT4x2,
00649                              location, count, transpose, value);
00650 }
00651 
00652 void GLAPIENTRY
00653 _mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
00654                          const GLfloat *value)
00655 {
00656    GET_CURRENT_CONTEXT(ctx);
00657    ctx->Driver.UniformMatrix(ctx, 3, 4, GL_FLOAT_MAT3x4,
00658                              location, count, transpose, value);
00659 }
00660 
00661 void GLAPIENTRY
00662 _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
00663                          const GLfloat *value)
00664 {
00665    GET_CURRENT_CONTEXT(ctx);
00666    ctx->Driver.UniformMatrix(ctx, 4, 3, GL_FLOAT_MAT4x3,
00667                              location, count, transpose, value);
00668 }
00669 
00670 
00671 void GLAPIENTRY
00672 _mesa_UseProgramObjectARB(GLhandleARB program)
00673 {
00674    GET_CURRENT_CONTEXT(ctx);
00675    FLUSH_VERTICES(ctx, _NEW_PROGRAM);
00676    ctx->Driver.UseProgram(ctx, program);
00677 }
00678 
00679 
00680 void GLAPIENTRY
00681 _mesa_ValidateProgramARB(GLhandleARB program)
00682 {
00683    GET_CURRENT_CONTEXT(ctx);
00684    ctx->Driver.ValidateProgram(ctx, program);
00685 }
00686 

Generated on Sat May 26 2012 04:19:10 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.