mesa: Branch 'master' - 4 commits

Brian Paul brianp at kemper.freedesktop.org
Sun Apr 8 22:47:44 UTC 2007


 configs/default                                  |    2 -
 progs/demos/Makefile                             |   15 ++++++---
 progs/util/extfuncs.h                            |   14 ++++++++
 src/mesa/shader/slang/library/slang_shader.syn   |   21 ++++++++++++
 src/mesa/shader/slang/library/slang_shader_syn.h |   12 +++++++
 src/mesa/shader/slang/slang_codegen.c            |    9 +++++
 src/mesa/shader/slang/slang_compile.c            |   25 +++++++++++++++
 src/mesa/shader/slang/slang_compile_variable.c   |   18 ++++++++++
 src/mesa/shader/slang/slang_print.c              |   18 ++++++++++
 src/mesa/shader/slang/slang_storage.c            |   26 ++++++++++++---
 src/mesa/shader/slang/slang_typeinfo.c           |   38 +++++++++++++++++++++--
 src/mesa/shader/slang/slang_typeinfo.h           |    6 +++
 12 files changed, 190 insertions(+), 14 deletions(-)

New commits:
diff-tree 5c0c60a13cb95032a49aa77ae7275387a351a057 (from 5dba996dba3bd55f1f44904e7abd9486fee899d9)
Author: Brian <brian at nostromo.localnet.net>
Date:   Sun Apr 8 16:47:32 2007 -0600

    support for GLSL 1.20 non-square matrices

diff --git a/src/mesa/shader/slang/library/slang_shader.syn b/src/mesa/shader/slang/library/slang_shader.syn
index 9389869..1764d1a 100644
--- a/src/mesa/shader/slang/library/slang_shader.syn
+++ b/src/mesa/shader/slang/library/slang_shader.syn
@@ -144,6 +144,15 @@
 .emtcode TYPE_SPECIFIER_STRUCT                      24
 .emtcode TYPE_SPECIFIER_TYPENAME                    25
 
+/* OpenGL 2.1 */
+.emtcode TYPE_SPECIFIER_MAT23                       26
+.emtcode TYPE_SPECIFIER_MAT32                       27
+.emtcode TYPE_SPECIFIER_MAT24                       28
+.emtcode TYPE_SPECIFIER_MAT42                       29
+.emtcode TYPE_SPECIFIER_MAT34                       30
+.emtcode TYPE_SPECIFIER_MAT43                       31
+
+
 /* structure field */
 .emtcode FIELD_NONE                                 0
 .emtcode FIELD_NEXT                                 1
@@ -880,6 +889,12 @@ type_qualifier
                                           | "mat2"
                                           | "mat3"
                                           | "mat4"
+                                          | "mat2x3"
+                                          | "mat3x2"
+                                          | "mat2x4"
+                                          | "mat4x2"
+                                          | "mat3x4"
+                                          | "mat4x3"
                                           | "sampler1D"
                                           | "sampler2D"
                                           | "sampler3D"
@@ -908,6 +923,12 @@ type_specifier_space
     "mat2" .emit TYPE_SPECIFIER_MAT2 .or
     "mat3" .emit TYPE_SPECIFIER_MAT3 .or
     "mat4" .emit TYPE_SPECIFIER_MAT4 .or
+    "mat2x3" .emit TYPE_SPECIFIER_MAT23 .or
+    "mat3x2" .emit TYPE_SPECIFIER_MAT32 .or
+    "mat2x4" .emit TYPE_SPECIFIER_MAT24 .or
+    "mat4x2" .emit TYPE_SPECIFIER_MAT42 .or
+    "mat3x4" .emit TYPE_SPECIFIER_MAT34 .or
+    "mat4x3" .emit TYPE_SPECIFIER_MAT43 .or
     "sampler1D" .emit TYPE_SPECIFIER_SAMPLER1D .or
     "sampler2D" .emit TYPE_SPECIFIER_SAMPLER2D .or
     "sampler3D" .emit TYPE_SPECIFIER_SAMPLER3D .or
diff --git a/src/mesa/shader/slang/library/slang_shader_syn.h b/src/mesa/shader/slang/library/slang_shader_syn.h
index 4863fed..fe37adc 100644
--- a/src/mesa/shader/slang/library/slang_shader_syn.h
+++ b/src/mesa/shader/slang/library/slang_shader_syn.h
@@ -67,6 +67,12 @@
 ".emtcode TYPE_SPECIFIER_SAMPLER2DRECTSHADOW 23\n"
 ".emtcode TYPE_SPECIFIER_STRUCT 24\n"
 ".emtcode TYPE_SPECIFIER_TYPENAME 25\n"
+".emtcode TYPE_SPECIFIER_MAT23 26\n"
+".emtcode TYPE_SPECIFIER_MAT32 27\n"
+".emtcode TYPE_SPECIFIER_MAT24 28\n"
+".emtcode TYPE_SPECIFIER_MAT42 29\n"
+".emtcode TYPE_SPECIFIER_MAT34 30\n"
+".emtcode TYPE_SPECIFIER_MAT43 31\n"
 ".emtcode FIELD_NONE 0\n"
 ".emtcode FIELD_NEXT 1\n"
 ".emtcode FIELD_ARRAY 2\n"
@@ -431,6 +437,12 @@
 " \"mat2\" .emit TYPE_SPECIFIER_MAT2 .or\n"
 " \"mat3\" .emit TYPE_SPECIFIER_MAT3 .or\n"
 " \"mat4\" .emit TYPE_SPECIFIER_MAT4 .or\n"
+" \"mat2x3\" .emit TYPE_SPECIFIER_MAT23 .or\n"
+" \"mat3x2\" .emit TYPE_SPECIFIER_MAT32 .or\n"
+" \"mat2x4\" .emit TYPE_SPECIFIER_MAT24 .or\n"
+" \"mat4x2\" .emit TYPE_SPECIFIER_MAT42 .or\n"
+" \"mat3x4\" .emit TYPE_SPECIFIER_MAT34 .or\n"
+" \"mat4x3\" .emit TYPE_SPECIFIER_MAT43 .or\n"
 " \"sampler1D\" .emit TYPE_SPECIFIER_SAMPLER1D .or\n"
 " \"sampler2D\" .emit TYPE_SPECIFIER_SAMPLER2D .or\n"
 " \"sampler3D\" .emit TYPE_SPECIFIER_SAMPLER3D .or\n"
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 0c14e64..a25037c 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -143,6 +143,15 @@ _slang_sizeof_type_specifier(const slang
       return 3 * 3;
    case SLANG_SPEC_MAT4:
       return 4 * 4;
+   case SLANG_SPEC_MAT23:
+   case SLANG_SPEC_MAT32:
+      return 2 * 3;
+   case SLANG_SPEC_MAT24:
+   case SLANG_SPEC_MAT42:
+      return 2 * 4;
+   case SLANG_SPEC_MAT34:
+   case SLANG_SPEC_MAT43:
+      return 3 * 4;
    case SLANG_SPEC_SAMPLER1D:
    case SLANG_SPEC_SAMPLER2D:
    case SLANG_SPEC_SAMPLER3D:
diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c
index 85dd158..65522ae 100644
--- a/src/mesa/shader/slang/slang_compile.c
+++ b/src/mesa/shader/slang/slang_compile.c
@@ -491,6 +491,13 @@ parse_type_qualifier(slang_parse_ctx * C
 #define TYPE_SPECIFIER_SAMPLER2DRECTSHADOW 23
 #define TYPE_SPECIFIER_STRUCT 24
 #define TYPE_SPECIFIER_TYPENAME 25
+#define TYPE_SPECIFIER_MAT23 26
+#define TYPE_SPECIFIER_MAT32 27
+#define TYPE_SPECIFIER_MAT24 28
+#define TYPE_SPECIFIER_MAT42 29
+#define TYPE_SPECIFIER_MAT34 30
+#define TYPE_SPECIFIER_MAT43 31
+
 
 static int
 parse_type_specifier(slang_parse_ctx * C, slang_output_ctx * O,
@@ -545,6 +552,24 @@ parse_type_specifier(slang_parse_ctx * C
    case TYPE_SPECIFIER_MAT4:
       spec->type = SLANG_SPEC_MAT4;
       break;
+   case TYPE_SPECIFIER_MAT23:
+      spec->type = SLANG_SPEC_MAT23;
+      break;
+   case TYPE_SPECIFIER_MAT32:
+      spec->type = SLANG_SPEC_MAT32;
+      break;
+   case TYPE_SPECIFIER_MAT24:
+      spec->type = SLANG_SPEC_MAT24;
+      break;
+   case TYPE_SPECIFIER_MAT42:
+      spec->type = SLANG_SPEC_MAT42;
+      break;
+   case TYPE_SPECIFIER_MAT34:
+      spec->type = SLANG_SPEC_MAT34;
+      break;
+   case TYPE_SPECIFIER_MAT43:
+      spec->type = SLANG_SPEC_MAT43;
+      break;
    case TYPE_SPECIFIER_SAMPLER1D:
       spec->type = SLANG_SPEC_SAMPLER1D;
       break;
diff --git a/src/mesa/shader/slang/slang_compile_variable.c b/src/mesa/shader/slang/slang_compile_variable.c
index 9a0b985..819b4f9 100644
--- a/src/mesa/shader/slang/slang_compile_variable.c
+++ b/src/mesa/shader/slang/slang_compile_variable.c
@@ -56,6 +56,12 @@ static const type_specifier_type_name ty
    {"mat2", SLANG_SPEC_MAT2},
    {"mat3", SLANG_SPEC_MAT3},
    {"mat4", SLANG_SPEC_MAT4},
+   {"mat2x3", SLANG_SPEC_MAT23},
+   {"mat3x2", SLANG_SPEC_MAT32},
+   {"mat2x4", SLANG_SPEC_MAT24},
+   {"mat4x2", SLANG_SPEC_MAT42},
+   {"mat3x4", SLANG_SPEC_MAT34},
+   {"mat4x3", SLANG_SPEC_MAT43},
    {"sampler1D", SLANG_SPEC_SAMPLER1D},
    {"sampler2D", SLANG_SPEC_SAMPLER2D},
    {"sampler3D", SLANG_SPEC_SAMPLER3D},
@@ -367,6 +373,18 @@ gl_type_from_specifier(const slang_type_
       return GL_FLOAT_MAT3_ARB;
    case SLANG_SPEC_MAT4:
       return GL_FLOAT_MAT4_ARB;
+   case SLANG_SPEC_MAT23:
+      return GL_FLOAT_MAT2x3_ARB;
+   case SLANG_SPEC_MAT32:
+      return GL_FLOAT_MAT3x2_ARB;
+   case SLANG_SPEC_MAT24:
+      return GL_FLOAT_MAT2x4_ARB;
+   case SLANG_SPEC_MAT42:
+      return GL_FLOAT_MAT4x2_ARB;
+   case SLANG_SPEC_MAT34:
+      return GL_FLOAT_MAT3x4_ARB;
+   case SLANG_SPEC_MAT43:
+      return GL_FLOAT_MAT4x3_ARB;
    case SLANG_SPEC_SAMPLER1D:
       return GL_SAMPLER_1D_ARB;
    case SLANG_SPEC_SAMPLER2D:
diff --git a/src/mesa/shader/slang/slang_print.c b/src/mesa/shader/slang/slang_print.c
index 90e6fe2..f3e127c 100644
--- a/src/mesa/shader/slang/slang_print.c
+++ b/src/mesa/shader/slang/slang_print.c
@@ -101,6 +101,24 @@ print_type(const slang_fully_specified_t
    case SLANG_SPEC_MAT4:
       printf("mat4");
       break;
+   case SLANG_SPEC_MAT23:
+      printf("mat2x3");
+      break;
+   case SLANG_SPEC_MAT32:
+      printf("mat3x2");
+      break;
+   case SLANG_SPEC_MAT24:
+      printf("mat2x4");
+      break;
+   case SLANG_SPEC_MAT42:
+      printf("mat4x2");
+      break;
+   case SLANG_SPEC_MAT34:
+      printf("mat3x4");
+      break;
+   case SLANG_SPEC_MAT43:
+      printf("mat4x3");
+      break;
    case SLANG_SPEC_SAMPLER1D:
       printf("sampler1D");
       break;
diff --git a/src/mesa/shader/slang/slang_storage.c b/src/mesa/shader/slang/slang_storage.c
index 6d6a6d9..ecd6048 100644
--- a/src/mesa/shader/slang/slang_storage.c
+++ b/src/mesa/shader/slang/slang_storage.c
@@ -105,13 +105,13 @@ aggregate_vector(slang_storage_aggregate
 
 static GLboolean
 aggregate_matrix(slang_storage_aggregate * agg, slang_storage_type basic_type,
-                 GLuint dimension)
+                 GLuint columns, GLuint rows)
 {
    slang_storage_array *arr = slang_storage_aggregate_push_new(agg);
    if (arr == NULL)
       return GL_FALSE;
    arr->type = SLANG_STORE_AGGREGATE;
-   arr->length = dimension;
+   arr->length = columns;
    arr->aggregate =
       (slang_storage_aggregate *)
       slang_alloc_malloc(sizeof(slang_storage_aggregate));
@@ -122,7 +122,7 @@ aggregate_matrix(slang_storage_aggregate
       arr->aggregate = NULL;
       return GL_FALSE;
    }
-   if (!aggregate_vector(arr->aggregate, basic_type, dimension))
+   if (!aggregate_vector(arr->aggregate, basic_type, rows))
       return GL_FALSE;
    return GL_TRUE;
 }
@@ -180,11 +180,25 @@ _slang_aggregate_variable(slang_storage_
    case SLANG_SPEC_VEC4:
       return aggregate_vector(agg, SLANG_STORE_FLOAT, 4);
    case SLANG_SPEC_MAT2:
-      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 2);
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 2, 2);
    case SLANG_SPEC_MAT3:
-      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 3);
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 3, 3);
    case SLANG_SPEC_MAT4:
-      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 4);
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 4, 4);
+
+   case SLANG_SPEC_MAT23:
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 2, 3);
+   case SLANG_SPEC_MAT32:
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 3, 2);
+   case SLANG_SPEC_MAT24:
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 2, 4);
+   case SLANG_SPEC_MAT42:
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 4, 2);
+   case SLANG_SPEC_MAT34:
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 3, 4);
+   case SLANG_SPEC_MAT43:
+      return aggregate_matrix(agg, SLANG_STORE_FLOAT, 4, 3);
+
    case SLANG_SPEC_SAMPLER1D:
    case SLANG_SPEC_SAMPLER2D:
    case SLANG_SPEC_SAMPLER3D:
diff --git a/src/mesa/shader/slang/slang_typeinfo.c b/src/mesa/shader/slang/slang_typeinfo.c
index fef5575..2af8eb7 100644
--- a/src/mesa/shader/slang/slang_typeinfo.c
+++ b/src/mesa/shader/slang/slang_typeinfo.c
@@ -815,6 +815,12 @@ _slang_type_is_matrix(slang_type_specifi
    case SLANG_SPEC_MAT2:
    case SLANG_SPEC_MAT3:
    case SLANG_SPEC_MAT4:
+   case SLANG_SPEC_MAT23:
+   case SLANG_SPEC_MAT32:
+   case SLANG_SPEC_MAT24:
+   case SLANG_SPEC_MAT42:
+   case SLANG_SPEC_MAT34:
+   case SLANG_SPEC_MAT43:
       return GL_TRUE;
    default:
       return GL_FALSE;
@@ -847,7 +853,8 @@ _slang_type_is_vector(slang_type_specifi
 
 
 /**
- * Given a vector type, return the type of the vector's elements
+ * Given a vector type, return the type of the vector's elements.
+ * For a matrix, return the type of the columns.
  */
 slang_type_specifier_type
 _slang_type_base(slang_type_specifier_type ty)
@@ -874,6 +881,18 @@ _slang_type_base(slang_type_specifier_ty
       return SLANG_SPEC_VEC3;
    case SLANG_SPEC_MAT4:
       return SLANG_SPEC_VEC4;
+   case SLANG_SPEC_MAT23:
+      return SLANG_SPEC_VEC3;
+   case SLANG_SPEC_MAT32:
+      return SLANG_SPEC_VEC2;
+   case SLANG_SPEC_MAT24:
+      return SLANG_SPEC_VEC4;
+   case SLANG_SPEC_MAT42:
+      return SLANG_SPEC_VEC2;
+   case SLANG_SPEC_MAT34:
+      return SLANG_SPEC_VEC4;
+   case SLANG_SPEC_MAT43:
+      return SLANG_SPEC_VEC3;
    default:
       return SLANG_SPEC_VOID;
    }
@@ -881,7 +900,8 @@ _slang_type_base(slang_type_specifier_ty
 
 
 /**
- * Return the dimensionality of a vector or matrix type.
+ * Return the dimensionality of a vector, or for a matrix, return number
+ * of columns.
  */
 GLuint
 _slang_type_dim(slang_type_specifier_type ty)
@@ -906,6 +926,20 @@ _slang_type_dim(slang_type_specifier_typ
    case SLANG_SPEC_BVEC4:
    case SLANG_SPEC_MAT4:
       return 4;
+
+   case SLANG_SPEC_MAT23:
+      return 2;
+   case SLANG_SPEC_MAT32:
+      return 3;
+   case SLANG_SPEC_MAT24:
+      return 2;
+   case SLANG_SPEC_MAT42:
+      return 4;
+   case SLANG_SPEC_MAT34:
+      return 3;
+   case SLANG_SPEC_MAT43:
+      return 4;
+
    default:
       return 0;
    }
diff --git a/src/mesa/shader/slang/slang_typeinfo.h b/src/mesa/shader/slang/slang_typeinfo.h
index c815c99..ffffd09 100644
--- a/src/mesa/shader/slang/slang_typeinfo.h
+++ b/src/mesa/shader/slang/slang_typeinfo.h
@@ -108,6 +108,12 @@ typedef enum slang_type_specifier_type_
    SLANG_SPEC_MAT2,
    SLANG_SPEC_MAT3,
    SLANG_SPEC_MAT4,
+   SLANG_SPEC_MAT23,
+   SLANG_SPEC_MAT32,
+   SLANG_SPEC_MAT24,
+   SLANG_SPEC_MAT42,
+   SLANG_SPEC_MAT34,
+   SLANG_SPEC_MAT43,
    SLANG_SPEC_SAMPLER1D,
    SLANG_SPEC_SAMPLER2D,
    SLANG_SPEC_SAMPLER3D,
diff-tree 5dba996dba3bd55f1f44904e7abd9486fee899d9 (from 9612a3011f52ab98b42e48d0eed76b68bca92e57)
Author: Brian <brian at nostromo.localnet.net>
Date:   Sun Apr 8 15:50:31 2007 -0600

    add glsl to PROGRAM_DIRS

diff --git a/configs/default b/configs/default
index 72176f1..b162287 100644
--- a/configs/default
+++ b/configs/default
@@ -63,7 +63,7 @@ SRC_DIRS = mesa glu glut/glx glw
 GLU_DIRS = sgi
 DRIVER_DIRS = x11 osmesa
 # Which subdirs under $(TOP)/progs/ to enter:
-PROGRAM_DIRS = demos redbook samples xdemos
+PROGRAM_DIRS = demos redbook samples glsl xdemos
 
 
 # Library/program dependencies
diff-tree 9612a3011f52ab98b42e48d0eed76b68bca92e57 (from 0d3d930912d0e4c78f5e4785625614fe8b5b613e)
Author: Brian <brian at nostromo.localnet.net>
Date:   Sun Apr 8 15:42:26 2007 -0600

    fix some dependencies, remove some CFLAGS

diff --git a/progs/demos/Makefile b/progs/demos/Makefile
index 6369746..cf96828 100644
--- a/progs/demos/Makefile
+++ b/progs/demos/Makefile
@@ -118,34 +118,39 @@ extfuncs.h:  $(TOP)/progs/util/extfuncs.
 
 
 reflect: reflect.o showbuffer.o readtex.o
-	$(CC) -I$(INCDIR) $(CFLAGS) reflect.o showbuffer.o readtex.o $(APP_LIB_DEPS) -o $@
+	$(CC) reflect.o showbuffer.o readtex.o $(APP_LIB_DEPS) -o $@
 
 reflect.o: reflect.c showbuffer.h
 	$(CC) -c -I$(INCDIR) $(CFLAGS) reflect.c
 
 
 shadowtex: shadowtex.o showbuffer.o
-	$(CC) -I$(INCDIR) $(CFLAGS) shadowtex.o showbuffer.o $(APP_LIB_DEPS) -o $@
+	$(CC) shadowtex.o showbuffer.o $(APP_LIB_DEPS) -o $@
 
 shadowtex.o: shadowtex.c showbuffer.h
 	$(CC) -c -I$(INCDIR) $(CFLAGS) shadowtex.c
 
 
 gloss: gloss.o trackball.o readtex.o
-	$(CC) -I$(INCDIR) $(CFLAGS) gloss.o trackball.o readtex.o $(APP_LIB_DEPS) -o $@
+	$(CC) gloss.o trackball.o readtex.o $(APP_LIB_DEPS) -o $@
 
 gloss.o: gloss.c trackball.h
 	$(CC) -c -I$(INCDIR) $(CFLAGS) gloss.c
 
 
 engine: engine.o trackball.o readtex.o
-	$(CC) -I$(INCDIR) $(CFLAGS) engine.o trackball.o readtex.o $(APP_LIB_DEPS) -o $@
+	$(CC) engine.o trackball.o readtex.o $(APP_LIB_DEPS) -o $@
 
 engine.o: engine.c trackball.h
 	$(CC) -c -I$(INCDIR) $(CFLAGS) engine.c
 
 
-fslight.c: extfuncs.h
+fslight: fslight.o
+	$(CC) fslight.o $(APP_LIB_DEPS) -o $@
+
+fslight.o: fslight.c extfuncs.h
+	$(CC) -c -I$(INCDIR) $(CFLAGS) fslight.c
+
 
 
 clean:
diff-tree 0d3d930912d0e4c78f5e4785625614fe8b5b613e (from d8bfc42bb778e46e64569a6f621e9d41ddca2e59)
Author: Brian <brian at nostromo.localnet.net>
Date:   Sun Apr 8 15:41:02 2007 -0600

    add 2.1 functions

diff --git a/progs/util/extfuncs.h b/progs/util/extfuncs.h
index 13067cd..90302bb 100644
--- a/progs/util/extfuncs.h
+++ b/progs/util/extfuncs.h
@@ -38,6 +38,13 @@ static PFNGLVERTEXATTRIB2FPROC glVertexA
 static PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_func = NULL;
 static PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_func = NULL;
 
+/* OpenGL 2.1 */
+static PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv_func = NULL;
+static PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv_func = NULL;
+static PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv_func = NULL;
+static PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv_func = NULL;
+static PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv_func = NULL;
+static PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv_func = NULL;
 
 /* GL_ARB_vertex/fragment_program */
 static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func = NULL;
@@ -98,6 +105,13 @@ GetExtensionFuncs(void)
    glVertexAttrib3f_func = (PFNGLVERTEXATTRIB3FPROC) glutGetProcAddress("glVertexAttrib3f");
    glVertexAttrib4f_func = (PFNGLVERTEXATTRIB4FPROC) glutGetProcAddress("glVertexAttrib4f");
 
+   /* OpenGL 2.1 */
+   glUniformMatrix2x3fv_func = (PFNGLUNIFORMMATRIX2X3FVPROC) glutGetProcAddress("glUniformMatrix2x3fv");
+   glUniformMatrix3x2fv_func = (PFNGLUNIFORMMATRIX3X2FVPROC) glutGetProcAddress("glUniformMatrix3x2fv");
+   glUniformMatrix2x4fv_func = (PFNGLUNIFORMMATRIX2X4FVPROC) glutGetProcAddress("glUniformMatrix2x4fv");
+   glUniformMatrix4x2fv_func = (PFNGLUNIFORMMATRIX4X2FVPROC) glutGetProcAddress("glUniformMatrix4x2fv");
+   glUniformMatrix3x4fv_func = (PFNGLUNIFORMMATRIX3X4FVPROC) glutGetProcAddress("glUniformMatrix3x4fv");
+   glUniformMatrix4x3fv_func = (PFNGLUNIFORMMATRIX4X3FVPROC) glutGetProcAddress("glUniformMatrix4x3fv");
 
    /* GL_ARB_vertex/fragment_program */
    glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress("glBindProgramARB");



More information about the mesa-commit mailing list