Merge branch 'mesa_7_5_branch' into mesa_7_6_branch
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 16 Sep 2009 14:57:19 +0000 (07:57 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 16 Sep 2009 14:57:19 +0000 (07:57 -0700)
Conflicts:
src/mesa/main/dlist.c

1  2 
src/mesa/drivers/dri/intel/intel_context.c
src/mesa/main/dlist.c

index 8cff9ea64a0e5445891f1ca47d500078af1649cd,2f76ed0276affc0ed1125bd9b1772d0da540f1f7..b53c1733fbb48a9fac01f2796df28b00e24fe29a
@@@ -5786,24 -5835,493 +5838,511 @@@ save_BlitFramebufferEXT(GLint srcX0, GL
  #endif
  
  
 +/** GL_EXT_provoking_vertex */
 +static void GLAPIENTRY
 +save_ProvokingVertexEXT(GLenum mode)
 +{
 +   GET_CURRENT_CONTEXT(ctx);
 +   Node *n;
 +   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
 +   n = ALLOC_INSTRUCTION(ctx, OPCODE_PROVOKING_VERTEX, 1);
 +   if (n) {
 +      n[1].e = mode;
 +   }
 +   if (ctx->ExecuteFlag) {
 +      /*CALL_ProvokingVertexEXT(ctx->Exec, (mode));*/
 +      _mesa_ProvokingVertexEXT(mode);
 +   }
 +}
 +
 +
+ /* aka UseProgram() */
+ static void GLAPIENTRY
+ save_UseProgramObjectARB(GLhandleARB program)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_USE_PROGRAM, 1);
+    if (n) {
+       n[1].ui = program;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UseProgramObjectARB(ctx->Exec, (program));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform1fARB(GLint location, GLfloat x)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_1F, 2);
+    if (n) {
+       n[1].i = location;
+       n[2].f = x;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform1fARB(ctx->Exec, (location, x));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform2fARB(GLint location, GLfloat x, GLfloat y)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_2F, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].f = x;
+       n[3].f = y;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform2fARB(ctx->Exec, (location, x, y));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform3fARB(GLint location, GLfloat x, GLfloat y, GLfloat z)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_3F, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].f = x;
+       n[3].f = y;
+       n[4].f = z;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform3fARB(ctx->Exec, (location, x, y, z));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform4fARB(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_4F, 5);
+    if (n) {
+       n[1].i = location;
+       n[2].f = x;
+       n[3].f = y;
+       n[4].f = z;
+       n[5].f = w;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform4fARB(ctx->Exec, (location, x, y, z, w));
+    }
+ }
+ /** Return copy of memory */
+ static void *
+ memdup(const void *src, GLsizei bytes)
+ {
+    void *b = bytes >= 0 ? _mesa_malloc(bytes) : NULL;
+    if (b)
+       _mesa_memcpy(b, src, bytes);
+    return b;
+ }
+ static void GLAPIENTRY
+ save_Uniform1fvARB(GLint location, GLsizei count, const GLfloat *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_1FV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 1 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform1fvARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform2fvARB(GLint location, GLsizei count, const GLfloat *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_2FV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 2 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform2fvARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform3fvARB(GLint location, GLsizei count, const GLfloat *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_3FV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 3 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform3fvARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform4fvARB(GLint location, GLsizei count, const GLfloat *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_4FV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 4 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform4fvARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform1iARB(GLint location, GLint x)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_1I, 2);
+    if (n) {
+       n[1].i = location;
+       n[2].i = x;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform1iARB(ctx->Exec, (location, x));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform2iARB(GLint location, GLint x, GLint y)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_2I, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = x;
+       n[3].i = y;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform2iARB(ctx->Exec, (location, x, y));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform3iARB(GLint location, GLint x, GLint y, GLint z)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_3I, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = x;
+       n[3].i = y;
+       n[4].i = z;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform3iARB(ctx->Exec, (location, x, y, z));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform4iARB(GLint location, GLint x, GLint y, GLint z, GLint w)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_4I, 5);
+    if (n) {
+       n[1].i = location;
+       n[2].i = x;
+       n[3].i = y;
+       n[4].i = z;
+       n[5].i = w;
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform4iARB(ctx->Exec, (location, x, y, z, w));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform1ivARB(GLint location, GLsizei count, const GLint *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_1IV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 1 * sizeof(GLint));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform1ivARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform2ivARB(GLint location, GLsizei count, const GLint *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_2IV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 2 * sizeof(GLint));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform2ivARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform3ivARB(GLint location, GLsizei count, const GLint *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_3IV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 3 * sizeof(GLint));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform3ivARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_Uniform4ivARB(GLint location, GLsizei count, const GLint *v)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_4IV, 3);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].data = memdup(v, count * 4 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_Uniform4ivARB(ctx->Exec, (location, count, v));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose,
+                          const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX22, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 2 * 2 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix2fvARB(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose,
+                          const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX33, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 3 * 3 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix3fvARB(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose,
+                          const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX44, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 4 * 4 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix4fvARB(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX23, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 2 * 3 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix2x3fv(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX32, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 3 * 2 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix3x2fv(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX24, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 2 * 4 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix2x4fv(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX42, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 4 * 2 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix4x2fv(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX34, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 3 * 4 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix3x4fv(ctx->Exec, (location, count, transpose, m));
+    }
+ }
+ static void GLAPIENTRY
+ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *m)
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    Node *n;
+    ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+    n = ALLOC_INSTRUCTION(ctx, OPCODE_UNIFORM_MATRIX43, 4);
+    if (n) {
+       n[1].i = location;
+       n[2].i = count;
+       n[3].b = transpose;
+       n[4].data = memdup(m, count * 4 * 3 * sizeof(GLfloat));
+    }
+    if (ctx->ExecuteFlag) {
+       CALL_UniformMatrix4x3fv(ctx->Exec, (location, count, transpose, m));
+    }
+ }
  
  /**
   * Save an error-generating command into display list.