-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 11-12-23 08:51 PM, Matt Turner wrote: > On Fri, Dec 23, 2011 at 8:37 PM, Kenneth Graunke <kenn...@whitecape.org> wrote: >> On 12/23/2011 04:21 PM, Matt Turner wrote: >>> # Flex and Bison for GLSL compiler >>> -FLEX = @FLEX@ >>> -BISON = @BISON@ >>> +FLEX = @LEX@ >>> +BISON = @YACC@ This will set FLEX to any lex program found by autconf. This is not good, but not any worse than it is now. It simply follows the current assumption that flex/bison is always available at checkout out time on all platforms.
I am assuming it has not been a problem so far as not al platforms build mesa. Note that the configuration can be "created" (./autogen.sh) on a platform with flex/bison. The tarball would be created (make dist) with the lex/yacc code generated. The tarball can then be moved and configured (./configure) on the target platform where no lex/yacc exists and build successfully. >>> >> >> Question about this: will this still require Flex and Bison, or accept >> any Lex and Yacc? The GLSL compiler actually relies upon Flex/Bison >> extensions to pass line locations and other things, so it won't work >> with ordinary lex/yacc. > > I believe it will actually accept any yacc/lex. Strangely, there > aren't AC_PROG macros for bison and flex, although many projects > require these implementations. > > We run into this in Gentoo a lot, and it's surprising that there isn't > (to my knowledge) an autoconfig macro for bison/flex. Probably for the same reasons there are no macros for each brand of compiler. > > > I use AC_PROG_{LEX,YACC} below since they define $YACC and $LEX, which > are what automake knows to use for .y/.l files. If there's a better > way to handle this, I'm okay with it. If only FLEX/BISON works, then you have to write your own macros to test for the presence of the tool and write the makefile rules. If a platform does not have flex and bison, then you cannot create the mesa autotools configuration. To make mesa code more portable, one would have to look at a different implementation of the GLSL compiler to remove such a dependency. If that is not possible, configure.ac should do a "feature test" for the flex/bison and abort if not found. This would be preferable to having a GLSL compiler failing in a hard to diagnose way. > >>> # Library names (base name) >>> GL_LIB = @GL_LIB@ >>> diff --git a/configure.ac b/configure.ac >>> index 0d75353..7aea0b5 100644 >>> --- a/configure.ac >>> +++ b/configure.ac >>> @@ -17,6 +17,12 @@ AC_INIT([Mesa],[mesa_version], >>> AC_CONFIG_AUX_DIR([bin]) >>> AC_CANONICAL_HOST >>> >>> +# Initialize Automake >>> +AM_INIT_AUTOMAKE([foreign dist-bzip2]) >>> + >>> +# Initialize libtool >>> +AC_PROG_LIBTOOL >>> + >>> dnl Save user CFLAGS and CXXFLAGS so one can override the default ones >>> USER_CFLAGS="$CFLAGS" >>> USER_CXXFLAGS="$CXXFLAGS" >>> @@ -44,11 +50,14 @@ if test "x$MKDEP" = "x"; then >>> AC_MSG_ERROR([makedepend is required to build Mesa]) >>> fi >>> >>> -AC_PATH_PROG([FLEX], [flex]) >>> -test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa]) >>> - >>> -AC_PATH_PROG([BISON], [bison]) >>> -test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa]) >>> +AC_PROG_YACC >>> +AC_PATH_PROG([YACC_INST], $YACC) >>> +if test ! -f "$srcdir/gram.c"; then >>> + if test -z "$YACC_INST"; then >>> + AC_MSG_ERROR([yacc not found - unable to compile gram.y]) >>> + fi >>> +fi >> >> Isn't AC_PROG_YACC a strong enough guarantee? I'm a little confused by >> the asymmetry between the LEX and YACC checks here. It's a workaround to AC_PROG_YACC. When it cannot find any yacc program, it just sets the YACC variable to 'yacc" regardless of whether it is on disk or not. The extra AC_PATH_PROG ensures that whatever AC_PROG_YACC finds is in fact really there. >> > > I wondered the same thing myself during the last go-around. Gaetan to > the rescue again! > > http://lists.freedesktop.org/archives/mesa-dev/2011-September/012658.html > >>> +AC_PROG_LEX >>> >>> dnl Our fallback install-sh is a symlink to minstall. Use the existing >>> dnl configuration in that case. >>> @@ -996,10 +1005,10 @@ if test "x$enable_dri" = xyes ; then >>> AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore]) >>> enable_dricore=no >>> else >>> - DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so' >>> + DRICORE_GLSL_LIBS='$(TOP)/src/glsl/libglsl.la' >>> DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so' >>> - DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl' >>> - DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl' >>> + DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) $(TOP)/src/glsl/.libs/libglsl.so' >>> + DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore $(TOP)/src/glsl/.libs/libglsl.so' >>> DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE' >>> DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE' >>> MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)' >>> @@ -1961,3 +1970,8 @@ echo " PYTHON2: $PYTHON2" >>> echo "" >>> echo " Run '${MAKE-make}' to build Mesa" >>> echo "" >>> + >>> +AC_CONFIG_FILES([ >>> + src/glsl/Makefile >>> + src/glsl/glcpp/Makefile]) >>> +AC_OUTPUT >>> diff --git a/src/glsl/Makefile b/src/glsl/Makefile >>> deleted file mode 100644 >>> index d9ecbc8..0000000 >>> --- a/src/glsl/Makefile >>> +++ /dev/null >>> @@ -1,172 +0,0 @@ >>> - >>> -#src/glsl/pp/Makefile >>> - >>> -TOP = ../.. >>> - >>> -include $(TOP)/configs/current >>> - >>> -LIBNAME = glsl >>> - >>> -include Makefile.sources >>> - >>> -GLCPP_SOURCES = \ >>> - $(LIBGLCPP_GENERATED_SOURCES) \ >>> - $(LIBGLCPP_SOURCES) \ >>> - ralloc.c \ >>> - glcpp/glcpp.c >>> - >>> -C_SOURCES = \ >>> - $(LIBGLCPP_GENERATED_SOURCES) \ >>> - $(LIBGLCPP_SOURCES) \ >>> - $(LIBGLSL_SOURCES) >>> - >>> -# common sources for builtin_compiler and libglsl >>> -CXX_SOURCES = \ >>> - $(BUILTIN_COMPILER_GENERATED_CXX_SOURCES) \ >>> - $(LIBGLSL_CXX_SOURCES) >>> - >>> -LIBS = \ >>> - $(TOP)/src/glsl/libglsl.a >>> - >>> -APPS = glsl_compiler glsl_test glcpp/glcpp >>> - >>> -GLSL2_C_SOURCES = \ >>> - ../mesa/program/hash_table.c \ >>> - ../mesa/program/symbol_table.c >>> -GLSL2_CXX_SOURCES = \ >>> - $(GLSL_COMPILER_CXX_SOURCES) >>> - >>> -GLSL2_OBJECTS = \ >>> - $(GLSL2_C_SOURCES:.c=.o) \ >>> - $(GLSL2_CXX_SOURCES:.cpp=.o) >>> - >>> -TEST_C_SOURCES = \ >>> - ../mesa/program/hash_table.c \ >>> - ../mesa/program/symbol_table.c >>> - >>> -TEST_CXX_SOURCES = \ >>> - standalone_scaffolding.cpp \ >>> - test.cpp \ >>> - test_optpass.cpp >>> - >>> -TEST_OBJECTS = \ >>> - $(TEST_C_SOURCES:.c=.o) \ >>> - $(TEST_CXX_SOURCES:.cpp=.o) >>> - >>> -### Basic defines ### >>> - >>> -DEFINES += \ >>> - $(LIBRARY_DEFINES) \ >>> - $(API_DEFINES) >>> - >>> -GLCPP_OBJECTS = \ >>> - $(GLCPP_SOURCES:.c=.o) \ >>> - ../mesa/program/hash_table.o >>> - >>> -OBJECTS = \ >>> - $(C_SOURCES:.c=.o) \ >>> - $(CXX_SOURCES:.cpp=.o) >>> - >>> -DRICORE_OBJ_DIR = obj-visible >>> -OBJECTS_DRICORE = $(addprefix $(DRICORE_OBJ_DIR)/,$(OBJECTS)) >>> - >>> -INCLUDES = \ >>> - -I. \ >>> - -I../mesa \ >>> - -I../mapi \ >>> - -I../../include \ >>> - $(LIBRARY_INCLUDES) >>> - >>> -ALL_SOURCES = \ >>> - $(C_SOURCES) \ >>> - $(CXX_SOURCES) \ >>> - $(GLSL2_CXX_SOURCES) \ >>> - $(GLSL2_C_SOURCES) \ >>> - $(TEST_CXX_SOURCES) \ >>> - $(TEST_C_SOURCES) >>> - >>> -##### TARGETS ##### >>> - >>> -default: depend lib$(LIBNAME).a $(APPS) $(DRICORE_GLSL_LIBS) >>> - >>> -$(TOP)/$(LIB_DIR)/libglsl.so: $(OBJECTS_DRICORE) builtin_function.o Makefile $(TOP)/src/glsl/Makefile.template >>> - $(MKLIB) -o $@ -linker '$(CXX)' -ldflags '$(LDFLAGS)' \ >>> - -cplusplus -noprefix \ >>> - -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/$@.dylib \ >>> - $(OBJECTS_DRICORE) builtin_function.o >>> - >>> -lib$(LIBNAME).a: $(OBJECTS) builtin_function.o Makefile $(TOP)/src/glsl/Makefile.template >>> - $(MKLIB) -cplusplus -o $(LIBNAME) -static $(OBJECTS) builtin_function.o >>> - >>> -depend: $(ALL_SOURCES) Makefile >>> - rm -f depend >>> - touch depend >>> - $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(ALL_SOURCES) 2> /dev/null >>> - $(MKDEP) $(MKDEP_OPTIONS) -a -p $(DRICORE_OBJ_DIR)/ $(INCLUDES) $(ALL_SOURCES) 2> /dev/null >>> - >>> -# Remove .o and backup files >>> -clean: clean-dricore >>> - rm -f $(GLCPP_OBJECTS) $(GLSL2_OBJECTS) $(TEST_OBJECTS) $(OBJECTS) lib$(LIBNAME).a depend depend.bak builtin_function.cpp builtin_function.o builtin_stubs.o builtin_compiler >>> - -rm -f $(APPS) >>> - >>> -clean-dricore: >>> - -rm -f $(OBJECTS_DRICORE) $(TOP)/$(LIB_DIR)/libglsl.so libglsl.so >>> - >>> -ifneq (,$(DRICORE_GLSL_LIBS)) >>> -DRICORE_INSTALL_TARGET = install-dricore >>> -endif >>> - >>> -# Dummy target >>> -install: $(DRICORE_INSTALL_TARGET) >>> - @echo -n "" >>> - >>> -install-dricore: default >>> - $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) >>> - $(INSTALL) -m 755 $(DRICORE_GLSL_LIBS) $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) >>> - >>> -##### RULES ##### >>> - >>> -glsl_compiler: $(GLSL2_OBJECTS) libglsl.a >>> - $(APP_CXX) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(GLSL2_OBJECTS) $(LIBS) -o $@ >>> - >>> -glsl_test: $(TEST_OBJECTS) libglsl.a >>> - $(APP_CXX) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(TEST_OBJECTS) $(LIBS) -o $@ >>> - >>> -glcpp: glcpp/glcpp >>> -glcpp/glcpp: $(GLCPP_OBJECTS) >>> - $(APP_CC) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(GLCPP_OBJECTS) -o $@ >>> - >>> -.cpp.o: >>> - $(CXX) -c $(INCLUDES) $(CXXFLAGS) $(DEFINES) $< -o $@ >>> - >>> -.c.o: >>> - $(CC) -c $(INCLUDES) $(CFLAGS) $(DEFINES) $< -o $@ >>> - >>> -$(DRICORE_OBJ_DIR)/%.o : %.cpp >>> - @mkdir -p $(dir $@) >>> - $(CXX) -c $(INCLUDES) $(DRI_CXXFLAGS) $(DEFINES) $< -o $@ >>> - >>> -$(DRICORE_OBJ_DIR)/%.o : %.c >>> - @mkdir -p $(dir $@) >>> - $(CC) -c $(INCLUDES) $(DRI_CFLAGS) $(DEFINES) $< -o $@ >>> - >>> -glsl_lexer.cpp: glsl_lexer.ll >>> - $(FLEX) --nounistd -o$@ $< >>> - >>> -glsl_parser.cpp: glsl_parser.yy >>> - $(BISON) -v -o "$@" -p "_mesa_glsl_" --defines=glsl_parser.h $< >>> - >>> -glcpp/glcpp-lex.c: glcpp/glcpp-lex.l >>> - $(FLEX) --nounistd -o$@ $< >>> - >>> -glcpp/glcpp-parse.c: glcpp/glcpp-parse.y >>> - $(BISON) -v -o "$@" --defines=glcpp/glcpp-parse.h $< >>> - >>> -builtin_compiler: $(GLSL2_OBJECTS) $(OBJECTS) builtin_stubs.o >>> - $(APP_CXX) $(INCLUDES) $(CXXFLAGS) $(LDFLAGS) $(OBJECTS) $(GLSL2_OBJECTS) builtin_stubs.o -o $@ >>> - >>> -builtin_function.cpp: builtins/profiles/* builtins/ir/* builtins/tools/generate_builtins.py builtins/tools/texture_builtins.py builtin_compiler >>> - @echo Regenerating builtin_function.cpp... >>> - $(PYTHON2) $(PYTHON_FLAGS) builtins/tools/generate_builtins.py ./builtin_compiler > builtin_function.cpp || rm -f builtin_function.cpp >>> - >>> --include depend >>> diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am >>> new file mode 100644 >>> index 0000000..2f022ef >>> --- /dev/null >>> +++ b/src/glsl/Makefile.am >>> @@ -0,0 +1,126 @@ >>> +SUBDIRS= glcpp >>> + >>> +noinst_LTLIBRARIES = \ >>> + libhash_table.la \ >>> + libstandalone_scaffolding.la \ >>> + libsymbol_table.la \ >>> + libmain.la \ >>> + libglslcore.la >>> +lib_LTLIBRARIES = libglsl.la >>> +noinst_PROGRAMS = builtin_compiler glsl_test >>> +bin_PROGRAMS = glsl_compiler >>> + >>> +INCLUDES = \ >>> + -I. \ >>> + -I../mesa \ >>> + -I../mapi \ >>> + -I$(top_srcdir)/include >>> + >>> +BUILT_SOURCES = glsl_parser.h >>> +AM_YFLAGS = -d -p "_mesa_glsl_" >>> +AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).c >>> + >>> +libhash_table_la_SOURCES = ../mesa/program/hash_table.c >>> +libstandalone_scaffolding_la_SOURCES = standalone_scaffolding.cpp >>> +libsymbol_table_la_SOURCES = ../mesa/program/symbol_table.c >>> +libmain_la_SOURCES = main.cpp >>> + >>> +libglslcore_la_SOURCES = \ >>> + strtod.c \ >>> + ast_expr.cpp \ >>> + ast_function.cpp \ >>> + ast_to_hir.cpp \ >>> + ast_type.cpp \ >>> + builtin_variables.cpp \ >>> + glsl_lexer.lpp \ >>> + glsl_parser.ypp \ >>> + glsl_parser_extras.cpp \ >>> + glsl_types.cpp \ >>> + glsl_symbol_table.cpp \ >>> + hir_field_selection.cpp \ >>> + ir_basic_block.cpp \ >>> + ir_clone.cpp \ >>> + ir_constant_expression.cpp \ >>> + ir.cpp \ >>> + ir_expression_flattening.cpp \ >>> + ir_function_can_inline.cpp \ >>> + ir_function_detect_recursion.cpp \ >>> + ir_function.cpp \ >>> + ir_hierarchical_visitor.cpp \ >>> + ir_hv_accept.cpp \ >>> + ir_import_prototypes.cpp \ >>> + ir_print_visitor.cpp \ >>> + ir_reader.cpp \ >>> + ir_rvalue_visitor.cpp \ >>> + ir_set_program_inouts.cpp \ >>> + ir_validate.cpp \ >>> + ir_variable_refcount.cpp \ >>> + linker.cpp \ >>> + link_functions.cpp \ >>> + link_uniforms.cpp \ >>> + loop_analysis.cpp \ >>> + loop_controls.cpp \ >>> + loop_unroll.cpp \ >>> + lower_clip_distance.cpp \ >>> + lower_discard.cpp \ >>> + lower_if_to_cond_assign.cpp \ >>> + lower_instructions.cpp \ >>> + lower_jumps.cpp \ >>> + lower_mat_op_to_vec.cpp \ >>> + lower_noise.cpp \ >>> + lower_texture_projection.cpp \ >>> + lower_variable_index_to_cond_assign.cpp \ >>> + lower_vec_index_to_cond_assign.cpp \ >>> + lower_vec_index_to_swizzle.cpp \ >>> + lower_vector.cpp \ >>> + opt_algebraic.cpp \ >>> + opt_constant_folding.cpp \ >>> + opt_constant_propagation.cpp \ >>> + opt_constant_variable.cpp \ >>> + opt_copy_propagation.cpp \ >>> + opt_copy_propagation_elements.cpp \ >>> + opt_dead_code.cpp \ >>> + opt_dead_code_local.cpp \ >>> + opt_dead_functions.cpp \ >>> + opt_discard_simplification.cpp \ >>> + opt_function_inlining.cpp \ >>> + opt_if_simplification.cpp \ >>> + opt_noop_swizzle.cpp \ >>> + opt_redundant_jumps.cpp \ >>> + opt_structure_splitting.cpp \ >>> + opt_swizzle_swizzle.cpp \ >>> + opt_tree_grafting.cpp \ >>> + s_expression.cpp >>> +libglslcore_la_LIBADD = glcpp/libglcpp.la >> >> Lately we've been trying to put lists of source files in >> Makefile.sources so we can share them with the Android.mk files. > > That's definitely a good goal. It looks like it should be possible > with some work to Makefile.sources (and probably breaking Android in > the process. :) > >>> +builtin_compiler_SOURCES = builtin_stubs.cpp >>> +builtin_compiler_LDADD = \ >>> + libmain.la \ >>> + libglslcore.la \ >>> + libhash_table.la \ >>> + libsymbol_table.la \ >>> + libstandalone_scaffolding.la >>> + >>> +libglsl_la_SOURCES = builtin_function.cpp >>> +libglsl_la_LIBADD = libglslcore.la >>> + >>> +glsl_compiler_SOURCES = >>> +glsl_compiler_LDADD = \ >>> + libmain.la \ >>> + libglsl.la \ >>> + libhash_table.la \ >>> + libsymbol_table.la \ >>> + libstandalone_scaffolding.la >>> + >>> +glsl_test_SOURCES = \ >>> + test.cpp \ >>> + test_optpass.cpp >>> +glsl_test_LDADD = \ >>> + libglsl.la \ >>> + libhash_table.la \ >>> + libsymbol_table.la \ >>> + libstandalone_scaffolding.la >>> + >>> +builtin_function.cpp: builtins/profiles/* builtins/ir/* builtins/tools/generate_builtins.py builtins/tools/texture_builtins.py builtin_compiler >>> + @echo Regenerating builtin_function.cpp... >>> + $(PYTHON2) $(PYTHON_FLAGS) builtins/tools/generate_builtins.py ./builtin_compiler > builtin_function.cpp || rm -f builtin_function.cpp >>> diff --git a/src/glsl/glcpp/Makefile.am b/src/glsl/glcpp/Makefile.am >>> new file mode 100644 >>> index 0000000..4f66dc6 >>> --- /dev/null >>> +++ b/src/glsl/glcpp/Makefile.am >>> @@ -0,0 +1,23 @@ >>> +noinst_LTLIBRARIES = libglcpp.la libhash_table.la >>> +noinst_PROGRAMS = glcpp >>> + >>> +INCLUDES = \ >>> + -I. \ >>> + -I../../mesa \ >>> + -I../../mapi \ >>> + -I$(top_srcdir)/include >>> + >>> +BUILT_SOURCES = glcpp-parse.h >>> +AM_YFLAGS = -d >>> +AM_LFLAGS = --nounistd -o$(LEX_OUTPUT_ROOT).c >>> + >>> +libhash_table_la_SOURCES = ../../mesa/program/hash_table.c >>> + >>> +libglcpp_la_SOURCES = \ >>> + glcpp-lex.l \ >>> + glcpp-parse.y \ >>> + pp.c \ >>> + ../ralloc.c >>> + >>> +glcpp_SOURCES = glcpp.c >>> +glcpp_LDADD = libglcpp.la libhash_table.la >>> diff --git a/src/glsl/glsl_lexer.lpp b/src/glsl/glsl_lexer.lpp >>> new file mode 120000 >>> index 0000000..d897de3 >>> --- /dev/null >>> +++ b/src/glsl/glsl_lexer.lpp >>> @@ -0,0 +1 @@ >>> +glsl_lexer.ll >>> \ No newline at end of file >>> diff --git a/src/glsl/glsl_parser.ypp b/src/glsl/glsl_parser.ypp >>> new file mode 120000 >>> index 0000000..e8171ff >>> --- /dev/null >>> +++ b/src/glsl/glsl_parser.ypp >>> @@ -0,0 +1 @@ >>> +glsl_parser.yy >>> \ No newline at end of file >>> diff --git a/src/mesa/drivers/osmesa/Makefile b/src/mesa/drivers/osmesa/Makefile >>> index 39ab09a..b2315c7 100644 >>> --- a/src/mesa/drivers/osmesa/Makefile >>> +++ b/src/mesa/drivers/osmesa/Makefile >>> @@ -23,7 +23,7 @@ INCLUDE_DIRS = \ >>> CORE_MESA = \ >>> $(TOP)/src/mesa/libmesa.a \ >>> $(TOP)/src/mapi/glapi/libglapi.a \ >>> - $(TOP)/src/glsl/libglsl.a >>> + $(TOP)/src/glsl/libglsl.la >>> >>> .c.o: >>> $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@ >>> diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak >>> index 09cdd26..125ea46 100644 >>> --- a/src/mesa/sources.mak >>> +++ b/src/mesa/sources.mak >>> @@ -371,7 +371,7 @@ COMMON_DRIVER_OBJECTS = $(COMMON_DRIVER_SOURCES:.c=.o) >>> ### Other archives/libraries >>> >>> GLSL_LIBS = \ >>> - $(TOP)/src/glsl/libglsl.a >>> + $(TOP)/src/glsl/libglsl.la >>> >>> >>> ### Include directories >> >> Matt, this looks like a great start. Thanks so much for working on >> this. I hope we can accept it soon. > > Awesome. Thanks a lot for the review! > > Matt > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk73fQQACgkQubv1WfueyfxkwwCcCbqbs2RtiKK8N1ovtzPSL1gW FCoAmgK7dYtNSxzGufmrC5aVRbLshGkg =PJNC -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev