15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/include/GL/gl.h MesaLib/include/GL/gl.h
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/include/GL/gl.h	Tue Apr 27 14:41:21 2010
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/include/GL/gl.h	Thu Oct 14 14:41:53 2010
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 55,61 ****
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #    define GLAPI __declspec(dllexport)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #    define GLAPI __declspec(dllimport)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  else /* for use with static link lib build of Win32 edition only */
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #    define GLAPI extern
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  endif /* _STATIC_MESA support */
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 55,65 ----
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #    define GLAPI __declspec(dllexport)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // We always retrieve the entry points dynamically via GetProcAddress or
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // OSMesaGetProcAddress. This works around an issue where using the MSVC
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // multi-threaded runtime library, which defines _DLL.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#    define GLAPI __declspec(dllimport)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #    define GLAPI
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  else /* for use with static link lib build of Win32 edition only */
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #    define GLAPI extern
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  endif /* _STATIC_MESA support */
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 72,80 ****
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  define GLAPIENTRY
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif /* WIN32 && !CYGWIN */
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #  define PRAGMA_EXPORT_SUPPORTED		1
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #endif
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * WINDOWS: Include windows.h here to define APIENTRY.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 76,86 ----
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  define GLAPIENTRY
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif /* WIN32 && !CYGWIN */
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // Disabled this because __QUICKDRAW__ is defined on Mac and gcc does not
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // support the pragma.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#  define PRAGMA_EXPORT_SUPPORTED		1
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#endif
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * WINDOWS: Include windows.h here to define APIENTRY.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/include/GL/glext.h MesaLib/include/GL/glext.h
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/include/GL/glext.h	Fri Oct  1 15:51:28 2010
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/include/GL/glext.h	Thu Oct 14 14:50:37 2010
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 5030,5043 ****
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GL_VERSION_1_5
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* GL types for handling large vertex buffer objects */
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef ptrdiff_t GLintptr;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef ptrdiff_t GLsizeiptr;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GL_ARB_vertex_buffer_object
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* GL types for handling large vertex buffer objects */
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef ptrdiff_t GLintptrARB;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef ptrdiff_t GLsizeiptrARB;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GL_ARB_shader_objects
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 5030,5043 ----
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GL_VERSION_1_5
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* GL types for handling large vertex buffer objects */
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef signed long int GLintptr;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef signed long int GLsizeiptr;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GL_ARB_vertex_buffer_object
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* GL types for handling large vertex buffer objects */
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef signed long int GLintptrARB;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! typedef signed long int GLsizeiptrARB;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GL_ARB_shader_objects
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/include/GL/osmesa.h MesaLib/include/GL/osmesa.h
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/include/GL/osmesa.h	Thu Feb  4 16:10:39 2010
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/include/GL/osmesa.h	Thu Oct 14 14:47:08 2010
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 101,109 ****
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef struct osmesa_context *OSMesaContext;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #if defined(__BEOS__) || defined(__QUICKDRAW__)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #pragma export on
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #endif
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 101,111 ----
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef struct osmesa_context *OSMesaContext;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // Disabled this because __QUICKDRAW__ is defined on Mac and gcc does not
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // support the pragma.
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#if defined(__BEOS__) || defined(__QUICKDRAW__)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#pragma export on
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#endif
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 276,284 ****
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OSMesaColorClamp(GLboolean enable);
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #if defined(__BEOS__) || defined(__QUICKDRAW__)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #pragma export off
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #endif
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifdef __cplusplus
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 278,288 ----
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OSMesaColorClamp(GLboolean enable);
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // Disabled this because __QUICKDRAW__ is defined on Mac and gcc does not
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! // support the pragma.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#if defined(__BEOS__) || defined(__QUICKDRAW__)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#pragma export off
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! //#endif
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifdef __cplusplus
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ast_to_hir.cpp MesaLib/src/glsl/ast_to_hir.cpp
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ast_to_hir.cpp	Fri Oct  1 15:51:28 2010
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ast_to_hir.cpp	Fri Oct 22 15:28:47 2010
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 55,60 ****
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 55,61 ----
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ast.h"
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  _mesa_ast_to_hir(exec_list *instructions, struct _mesa_glsl_parse_state *state)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1615,1621 ****
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     var->pixel_center_integer = qual->pixel_center_integer;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     var->origin_upper_left = qual->origin_upper_left;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if ((qual->origin_upper_left || qual->pixel_center_integer)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!        && (strcmp(var->name, "gl_FragCoord") != 0)) {
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const char *const qual_string = (qual->origin_upper_left)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ? "origin_upper_left" : "pixel_center_integer";
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1616,1622 ----
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     var->pixel_center_integer = qual->pixel_center_integer;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     var->origin_upper_left = qual->origin_upper_left;
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if ((qual->origin_upper_left || qual->pixel_center_integer)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!        && (safe_strcmp(var->name, "gl_FragCoord") != 0)) {
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const char *const qual_string = (qual->origin_upper_left)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ? "origin_upper_left" : "pixel_center_integer";
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 2003,2009 ****
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     *     gl_MaxTextureCoords."
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     */
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    const unsigned size = unsigned(var->type->array_size());
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	    if ((strcmp("gl_TexCoord", var->name) == 0)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		&& (size > state->Const.MaxTextureCoords)) {
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       YYLTYPE loc = this->get_location();
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 2004,2010 ----
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     *     gl_MaxTextureCoords."
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     */
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    const unsigned size = unsigned(var->type->array_size());
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	    if ((safe_strcmp("gl_TexCoord", var->name) == 0)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		&& (size > state->Const.MaxTextureCoords)) {
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       YYLTYPE loc = this->get_location();
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 2022,2028 ****
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    delete var;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    var = NULL;
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 } else if (state->extensions->ARB_fragment_coord_conventions
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		    && strcmp(var->name, "gl_FragCoord") == 0
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		    && earlier->type == var->type
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		    && earlier->mode == var->mode) {
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    /* Allow redeclaration of gl_FragCoord for ARB_fcc layout
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 2023,2029 ----
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    delete var;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    var = NULL;
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 } else if (state->extensions->ARB_fragment_coord_conventions
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		    && safe_strcmp(var->name, "gl_FragCoord") == 0
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		    && earlier->type == var->type
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		    && earlier->mode == var->mode) {
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    /* Allow redeclaration of gl_FragCoord for ARB_fcc layout
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 2336,2342 ****
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /* Verify the return type of main() */
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(name, "main") == 0) {
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (! return_type->is_void()) {
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 YYLTYPE loc = this->get_location();
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 2337,2343 ----
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /* Verify the return type of main() */
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(name, "main") == 0) {
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (! return_type->is_void()) {
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 YYLTYPE loc = this->get_location();
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glcpp/glcpp-parse.c MesaLib/src/glsl/glcpp/glcpp-parse.c
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glcpp/glcpp-parse.c	Fri Oct  1 15:51:28 2010
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glcpp/glcpp-parse.c	Fri Oct 22 15:30:59 2010
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 96,106 ****
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 96,114 ----
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <stdlib.h>
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <string.h>
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <assert.h>
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ /* The #include of inttypes.h causes problems on Windows */
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #ifndef _MSC_VER
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <inttypes.h>
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ /* Windows headers do not define PRIiMAX */
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #ifdef _MSC_VER
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #define PRIiMAX "I64i"
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glcpp.h"
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/core.h" /* for struct gl_extensions */
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/mtypes.h" /* for gl_api enum */
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define glcpp_print(stream, str) stream = talloc_strdup_append(stream, str)
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define glcpp_printf(stream, fmt, args, ...) \
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 2915,2921 ****
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (i = 0, node = list->head; node; i++, node = node->next) {
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (strcmp (node->str, member) == 0) {
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			if (index)
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				*index = i;
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 2923,2929 ----
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (i = 0, node = list->head; node; i++, node = node->next) {
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (safe_strcmp (node->str, member) == 0) {
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			if (index)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				*index = i;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 2955,2961 ****
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a && node_b;
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a = node_a->next, node_b = node_b->next)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	{
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (strcmp (node_a->str, node_b->str))
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 0;
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	}
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 2963,2969 ----
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a && node_b;
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a = node_a->next, node_b = node_b->next)
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	{
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (safe_strcmp (node_a->str, node_b->str))
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 0;
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	}
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 3182,3189 ****
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case IDENTIFIER:
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case INTEGER_STRING:
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case OTHER:
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			if (strcmp (node_a->token->value.str,
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				    node_b->token->value.str))
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			{
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				return 0;
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			}
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 3190,3197 ----
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case IDENTIFIER:
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case INTEGER_STRING:
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case OTHER:
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			if (safe_strcmp (node_a->token->value.str,
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 					 node_b->token->value.str))
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			{
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				return 0;
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			}
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 3832,3838 ****
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (node = list; node; node = node->next)
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (strcmp (node->identifier, identifier) == 0)
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	return 0;
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 3840,3846 ----
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (node = list; node; node = node->next)
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (safe_strcmp (node->identifier, identifier) == 0)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	return 0;
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glcpp/glcpp-parse.y MesaLib/src/glsl/glcpp/glcpp-parse.y
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glcpp/glcpp-parse.y	Fri Oct  1 15:51:28 2010
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glcpp/glcpp-parse.y	Fri Oct 22 15:30:47 2010
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 26,36 ****
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 26,44 ----
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <stdlib.h>
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <string.h>
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <assert.h>
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ /* The #include of inttypes.h causes problems on Windows */
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #ifndef _MSC_VER
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <inttypes.h>
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ /* Windows headers do not define PRIiMAX */
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #ifdef _MSC_VER
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #define PRIiMAX "I64i"
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glcpp.h"
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/core.h" /* for struct gl_extensions */
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/mtypes.h" /* for gl_api enum */
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define glcpp_print(stream, str) stream = talloc_strdup_append(stream, str)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define glcpp_printf(stream, fmt, args, ...) \
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 590,596 ****
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (i = 0, node = list->head; node; i++, node = node->next) {
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (strcmp (node->str, member) == 0) {
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			if (index)
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				*index = i;
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 598,604 ----
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (i = 0, node = list->head; node; i++, node = node->next) {
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (safe_strcmp (node->str, member) == 0) {
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			if (index)
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				*index = i;
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 630,636 ****
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a && node_b;
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a = node_a->next, node_b = node_b->next)
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	{
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (strcmp (node_a->str, node_b->str))
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 0;
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	}
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 638,644 ----
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a && node_b;
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     node_a = node_a->next, node_b = node_b->next)
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	{
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (safe_strcmp (node_a->str, node_b->str))
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 0;
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	}
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 857,864 ****
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case IDENTIFIER:
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case INTEGER_STRING:
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case OTHER:
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			if (strcmp (node_a->token->value.str,
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				    node_b->token->value.str))
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			{
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				return 0;
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			}
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 865,872 ----
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case IDENTIFIER:
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case INTEGER_STRING:
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		case OTHER:
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			if (safe_strcmp (node_a->token->value.str,
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 					 node_b->token->value.str))
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			{
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  				return 0;
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			}
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1507,1513 ****
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (node = list; node; node = node->next)
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (strcmp (node->identifier, identifier) == 0)
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	return 0;
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1515,1521 ----
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return 0;
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	for (node = list; node; node = node->next)
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if (safe_strcmp (node->identifier, identifier) == 0)
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			return 1;
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	return 0;
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glcpp/glcpp.c MesaLib/src/glsl/glcpp/glcpp.c
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glcpp/glcpp.c	Fri Oct  1 15:51:28 2010
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glcpp/glcpp.c	Fri Oct 22 15:31:25 2010
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 29,34 ****
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 29,35 ----
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <errno.h>
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glcpp.h"
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/mtypes.h"
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extern int yydebug;
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 78,84 ****
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	char *text;
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	int fd;
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	if (filename == NULL || strcmp (filename, "-") == 0)
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return load_text_fd (ctx, STDIN_FILENO);
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	fd = open (filename, O_RDONLY);
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 79,85 ----
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	char *text;
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	int fd;
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	if (filename == NULL || safe_strcmp (filename, "-") == 0)
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return load_text_fd (ctx, STDIN_FILENO);
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	fd = open (filename, O_RDONLY);
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glcpp/glcpp.h MesaLib/src/glsl/glcpp/glcpp.h
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glcpp/glcpp.h	Fri Oct  1 15:51:28 2010
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glcpp/glcpp.h	Fri Oct 22 15:32:43 2010
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 24,30 ****
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 24,33 ----
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #ifndef GLCPP_H
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define GLCPP_H
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ /* Windows does not currently have stdint.h. */
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #ifndef _MSC_VER
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <stdint.h>
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <talloc.h>
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 49,55 ****
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 52,62 ----
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef union YYSTYPE
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #ifndef _MSC_VER
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	intmax_t ival;
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #else
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+         __int64 ival;
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	char *str;
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	string_list_t *string_list;
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	token_t *token;
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glsl_parser.cpp MesaLib/src/glsl/glsl_parser.cpp
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glsl_parser.cpp	Fri Oct  1 15:51:28 2010
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glsl_parser.cpp	Fri Oct 22 15:33:24 2010
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 107,112 ****
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 107,113 ----
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ast.h"
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_parser_extras.h"
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define YYLEX_PARAM state->scanner
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 3966,3975 ****
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	   if (state->ARB_fragment_coord_conventions_enable) {
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	      bool got_one = false;
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	      if (strcmp((yyvsp[(1) - (1)].identifier), "origin_upper_left") == 0) {
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 got_one = true;
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 (yyval.type_qualifier).q.origin_upper_left = 1;
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	      } else if (strcmp((yyvsp[(1) - (1)].identifier), "pixel_center_integer") == 0) {
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 got_one = true;
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 (yyval.type_qualifier).q.pixel_center_integer = 1;
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	      }
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 3967,3976 ----
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	   if (state->ARB_fragment_coord_conventions_enable) {
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	      bool got_one = false;
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	      if (safe_strcmp((yyvsp[(1) - (1)].identifier), "origin_upper_left") == 0) {
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 got_one = true;
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 (yyval.type_qualifier).q.origin_upper_left = 1;
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	      } else if (safe_strcmp((yyvsp[(1) - (1)].identifier), "pixel_center_integer") == 0) {
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 got_one = true;
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 (yyval.type_qualifier).q.pixel_center_integer = 1;
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	      }
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glsl_parser_extras.cpp MesaLib/src/glsl/glsl_parser_extras.cpp
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glsl_parser_extras.cpp	Fri Oct  1 15:51:28 2010
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glsl_parser_extras.cpp	Fri Oct 22 15:33:37 2010
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 35,40 ****
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 35,41 ----
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_parser.h"
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_optimization.h"
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "loop_analysis.h"
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct __GLcontextRec *ctx,
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  					       GLenum target, void *mem_ctx)
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 148,160 ****
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        extension_warn
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } ext_mode;
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(behavior, "warn") == 0) {
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_warn;
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(behavior, "require") == 0) {
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_require;
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(behavior, "enable") == 0) {
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_enable;
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(behavior, "disable") == 0) {
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_disable;
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } else {
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        _mesa_glsl_error(behavior_locp, state,
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 149,161 ----
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        extension_warn
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } ext_mode;
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(behavior, "warn") == 0) {
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_warn;
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(behavior, "require") == 0) {
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_require;
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(behavior, "enable") == 0) {
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_enable;
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(behavior, "disable") == 0) {
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ext_mode = extension_disable;
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } else {
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        _mesa_glsl_error(behavior_locp, state,
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 165,178 ****
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     bool unsupported = false;
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(name, "all") == 0) {
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if ((ext_mode == extension_enable) || (ext_mode == extension_require)) {
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 _mesa_glsl_error(name_locp, state, "Cannot %s all extensions",
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			  (ext_mode == extension_enable)
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			  ? "enable" : "require");
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return false;
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(name, "GL_ARB_draw_buffers") == 0) {
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* This extension is only supported in fragment shaders.
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         */
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (state->target != fragment_shader) {
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 166,179 ----
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     bool unsupported = false;
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(name, "all") == 0) {
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if ((ext_mode == extension_enable) || (ext_mode == extension_require)) {
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 _mesa_glsl_error(name_locp, state, "Cannot %s all extensions",
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			  (ext_mode == extension_enable)
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			  ? "enable" : "require");
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return false;
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(name, "GL_ARB_draw_buffers") == 0) {
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* This extension is only supported in fragment shaders.
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         */
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (state->target != fragment_shader) {
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 181,197 ****
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 state->ARB_draw_buffers_enable = (ext_mode != extension_disable);
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 state->ARB_draw_buffers_warn = (ext_mode == extension_warn);
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(name, "GL_ARB_fragment_coord_conventions") == 0) {
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_fragment_coord_conventions_enable =
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 (ext_mode != extension_disable);
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_fragment_coord_conventions_warn =
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 (ext_mode == extension_warn);
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsupported = !state->extensions->ARB_fragment_coord_conventions;
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(name, "GL_ARB_texture_rectangle") == 0) {
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_texture_rectangle_enable = (ext_mode != extension_disable);
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_texture_rectangle_warn = (ext_mode == extension_warn);
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(name, "GL_EXT_texture_array") == 0) {
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->EXT_texture_array_enable = (ext_mode != extension_disable);
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->EXT_texture_array_warn = (ext_mode == extension_warn);
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 182,198 ----
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 state->ARB_draw_buffers_enable = (ext_mode != extension_disable);
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 state->ARB_draw_buffers_warn = (ext_mode == extension_warn);
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(name, "GL_ARB_fragment_coord_conventions") == 0) {
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_fragment_coord_conventions_enable =
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 (ext_mode != extension_disable);
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_fragment_coord_conventions_warn =
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 (ext_mode == extension_warn);
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsupported = !state->extensions->ARB_fragment_coord_conventions;
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(name, "GL_ARB_texture_rectangle") == 0) {
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_texture_rectangle_enable = (ext_mode != extension_disable);
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->ARB_texture_rectangle_warn = (ext_mode == extension_warn);
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(name, "GL_EXT_texture_array") == 0) {
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->EXT_texture_array_enable = (ext_mode != extension_disable);
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        state->EXT_texture_array_warn = (ext_mode == extension_warn);
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/glsl_types.cpp MesaLib/src/glsl/glsl_types.cpp
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/glsl_types.cpp	Fri Oct  1 15:51:28 2010
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/glsl_types.cpp	Fri Oct 22 15:33:51 2010
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 27,32 ****
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 27,33 ----
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_symbol_table.h"
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_parser_extras.h"
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "builtin_types.h"
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  extern "C" {
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "program/hash_table.h"
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 374,380 ****
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /* Return zero is the types match (there is zero difference) or non-zero
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      * otherwise.
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      */
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(key1->name, key2->name) != 0)
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return 1;
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if (key1->length != key2->length)
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 375,381 ----
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     /* Return zero is the types match (there is zero difference) or non-zero
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      * otherwise.
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      */
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(key1->name, key2->name) != 0)
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return 1;
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if (key1->length != key2->length)
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 383,389 ****
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (unsigned i = 0; i < key1->length; i++) {
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (key1->fields.structure[i].type != key2->fields.structure[i].type)
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return 1;
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(key1->fields.structure[i].name,
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 key2->fields.structure[i].name) != 0)
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return 1;
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 384,390 ----
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (unsigned i = 0; i < key1->length; i++) {
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (key1->fields.structure[i].type != key2->fields.structure[i].type)
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return 1;
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(key1->fields.structure[i].name,
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		 key2->fields.structure[i].name) != 0)
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return 1;
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 433,439 ****
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(t->base_type == GLSL_TYPE_STRUCT);
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(t->length == num_fields);
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    assert(strcmp(t->name, name) == 0);
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return t;
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 434,440 ----
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(t->base_type == GLSL_TYPE_STRUCT);
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(t->length == num_fields);
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    assert(safe_strcmp(t->name, name) == 0);
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return t;
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 446,452 ****
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return error_type;
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (unsigned i = 0; i < this->length; i++) {
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(name, this->fields.structure[i].name) == 0)
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return this->fields.structure[i].type;
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 447,453 ----
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return error_type;
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (unsigned i = 0; i < this->length; i++) {
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(name, this->fields.structure[i].name) == 0)
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return this->fields.structure[i].type;
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 461,467 ****
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return -1;
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (unsigned i = 0; i < this->length; i++) {
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(name, this->fields.structure[i].name) == 0)
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return i;
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 462,468 ----
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return -1;
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (unsigned i = 0; i < this->length; i++) {
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(name, this->fields.structure[i].name) == 0)
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return i;
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/hir_field_selection.cpp MesaLib/src/glsl/hir_field_selection.cpp
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/hir_field_selection.cpp	Fri Oct  1 15:51:28 2010
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/hir_field_selection.cpp	Fri Oct 22 15:34:11 2010
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 26,31 ****
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 26,32 ----
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_parser_extras.h"
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ast.h"
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ir_rvalue *
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  _mesa_ast_field_selection_to_hir(const ast_expression *expr,
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 81,87 ****
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const char *method;
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        method = call->subexpressions[0]->primary_expression.identifier;
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (op->type->is_array() && strcmp(method, "length") == 0) {
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (!call->expressions.is_empty())
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    _mesa_glsl_error(&loc, state, "length method takes no arguments.");
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 82,88 ----
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const char *method;
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        method = call->subexpressions[0]->primary_expression.identifier;
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (op->type->is_array() && safe_strcmp(method, "length") == 0) {
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (!call->expressions.is_empty())
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    _mesa_glsl_error(&loc, state, "length method takes no arguments.");
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir.cpp MesaLib/src/glsl/ir.cpp
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir.cpp	Fri Oct  1 15:51:28 2010
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir.cpp	Fri Oct 22 15:34:20 2010
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 25,30 ****
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 25,31 ----
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_visitor.h"
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ir_rvalue::ir_rvalue()
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 338,344 ****
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const int operator_count = sizeof(operator_strs) / sizeof(operator_strs[0]);
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (int op = 0; op < operator_count; op++) {
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(str, operator_strs[op]) == 0)
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return (ir_expression_operation) op;
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return (ir_expression_operation) -1;
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 339,345 ----
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const int operator_count = sizeof(operator_strs) / sizeof(operator_strs[0]);
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (int op = 0; op < operator_count; op++) {
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(str, operator_strs[op]) == 0)
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return (ir_expression_operation) op;
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return (ir_expression_operation) -1;
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 878,884 ****
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const int count = sizeof(tex_opcode_strs) / sizeof(tex_opcode_strs[0]);
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (int op = 0; op < count; op++) {
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(str, tex_opcode_strs[op]) == 0)
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return (ir_texture_opcode) op;
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return (ir_texture_opcode) -1;
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 879,885 ----
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const int count = sizeof(tex_opcode_strs) / sizeof(tex_opcode_strs[0]);
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (int op = 0; op < count; op++) {
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(str, tex_opcode_strs[op]) == 0)
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return (ir_texture_opcode) op;
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return (ir_texture_opcode) -1;
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_constant_expression.cpp MesaLib/src/glsl/ir_constant_expression.cpp
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_constant_expression.cpp	Fri Oct  1 15:51:28 2010
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_constant_expression.cpp	Fri Oct 22 15:34:40 2010
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 38,43 ****
7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 38,44 ----
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_visitor.h"
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static float
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  dot(ir_constant *op0, ir_constant *op1)
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 850,880 ****
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     memset(&data, 0, sizeof(data));
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const char *callee = this->callee_name();
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(callee, "abs") == 0) {
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_abs, type, op[0], NULL);
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "all") == 0) {
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_boolean());
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (!op[0]->value.b[c])
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    return new(mem_ctx) ir_constant(false);
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(true);
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "any") == 0) {
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_boolean());
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (op[0]->value.b[c])
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    return new(mem_ctx) ir_constant(true);
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(false);
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "acos") == 0) {
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = acosf(op[0]->value.f[c]);
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "asin") == 0) {
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = asinf(op[0]->value.f[c]);
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "atan") == 0) {
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (num_parameters == 2) {
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 assert(op[1]->type->is_float());
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 851,881 ----
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     memset(&data, 0, sizeof(data));
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     const char *callee = this->callee_name();
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(callee, "abs") == 0) {
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_abs, type, op[0], NULL);
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "all") == 0) {
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_boolean());
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (!op[0]->value.b[c])
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    return new(mem_ctx) ir_constant(false);
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(true);
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "any") == 0) {
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_boolean());
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (op[0]->value.b[c])
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    return new(mem_ctx) ir_constant(true);
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(false);
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "acos") == 0) {
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = acosf(op[0]->value.f[c]);
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "asin") == 0) {
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = asinf(op[0]->value.f[c]);
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "atan") == 0) {
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (num_parameters == 2) {
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 assert(op[1]->type->is_float());
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 884,894 ****
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 for (unsigned c = 0; c < op[0]->type->components(); c++)
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[c] = atanf(op[0]->value.f[c]);
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "dFdx") == 0 || strcmp(callee, "dFdy") == 0) {
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return ir_constant::zero(mem_ctx, this->type);
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "ceil") == 0) {
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_ceil, type, op[0], NULL);
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "clamp") == 0) {
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(num_parameters == 3);
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsigned c1_inc = op[1]->type->is_scalar() ? 0 : 1;
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1;
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 885,895 ----
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 for (unsigned c = 0; c < op[0]->type->components(); c++)
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[c] = atanf(op[0]->value.f[c]);
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "dFdx") == 0 || safe_strcmp(callee, "dFdy") == 0) {
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return ir_constant::zero(mem_ctx, this->type);
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "ceil") == 0) {
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_ceil, type, op[0], NULL);
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "clamp") == 0) {
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(num_parameters == 3);
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsigned c1_inc = op[1]->type->is_scalar() ? 0 : 1;
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1;
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 913,931 ****
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "cos") == 0) {
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_cos, type, op[0], NULL);
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "cosh") == 0) {
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = coshf(op[0]->value.f[c]);
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "cross") == 0) {
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_cross, type, op[0], op[1]);
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "degrees") == 0) {
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = 180.0/M_PI * op[0]->value.f[c];
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "distance") == 0) {
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        float length_squared = 0.0;
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 914,932 ----
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "cos") == 0) {
9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_cos, type, op[0], NULL);
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "cosh") == 0) {
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = coshf(op[0]->value.f[c]);
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "cross") == 0) {
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_cross, type, op[0], op[1]);
9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "degrees") == 0) {
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = 180.0/M_PI * op[0]->value.f[c];
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "distance") == 0) {
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        float length_squared = 0.0;
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 933,941 ****
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 length_squared += t * t;
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(sqrtf(length_squared));
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "dot") == 0) {
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(dot(op[0], op[1]));
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "equal") == 0) {
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 934,942 ----
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 length_squared += t * t;
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(sqrtf(length_squared));
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "dot") == 0) {
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(dot(op[0], op[1]));
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "equal") == 0) {
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 955,976 ****
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "exp") == 0) {
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_exp, type, op[0], NULL);
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "exp2") == 0) {
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_exp2, type, op[0], NULL);
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "faceforward") == 0) {
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (dot(op[2], op[1]) < 0)
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return op[0];
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = -op[0]->value.f[c];
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "floor") == 0) {
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_floor, type, op[0], NULL);
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "fract") == 0) {
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_fract, type, op[0], NULL);
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "fwidth") == 0) {
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return ir_constant::zero(mem_ctx, this->type);
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "greaterThan") == 0) {
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 956,977 ----
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "exp") == 0) {
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_exp, type, op[0], NULL);
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "exp2") == 0) {
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_exp2, type, op[0], NULL);
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "faceforward") == 0) {
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (dot(op[2], op[1]) < 0)
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return op[0];
9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = -op[0]->value.f[c];
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "floor") == 0) {
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_floor, type, op[0], NULL);
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "fract") == 0) {
9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_fract, type, op[0], NULL);
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "fwidth") == 0) {
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return ir_constant::zero(mem_ctx, this->type);
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "greaterThan") == 0) {
9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 987,993 ****
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "greaterThanEqual") == 0) {
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 988,994 ----
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "greaterThanEqual") == 0) {
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1004,1014 ****
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "inversesqrt") == 0) {
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_rsq, type, op[0], NULL);
10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "length") == 0) {
10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(sqrtf(dot(op[0], op[0])));
10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "lessThan") == 0) {
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1005,1015 ----
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "inversesqrt") == 0) {
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_rsq, type, op[0], NULL);
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "length") == 0) {
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return new(mem_ctx) ir_constant(sqrtf(dot(op[0], op[0])));
10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "lessThan") == 0) {
10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1025,1031 ****
10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "lessThanEqual") == 0) {
10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1026,1032 ----
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "lessThanEqual") == 0) {
10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1042,1060 ****
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "log") == 0) {
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_log, type, op[0], NULL);
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "log2") == 0) {
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_log2, type, op[0], NULL);
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "matrixCompMult") == 0) {
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = op[0]->value.f[c] * op[1]->value.f[c];
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "max") == 0) {
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_max, type, op[0], op[1]);
10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "min") == 0) {
10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_min, type, op[0], op[1]);
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "mix") == 0) {
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (op[2]->type->is_float()) {
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1;
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1043,1061 ----
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "log") == 0) {
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_log, type, op[0], NULL);
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "log2") == 0) {
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_log2, type, op[0], NULL);
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "matrixCompMult") == 0) {
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = op[0]->value.f[c] * op[1]->value.f[c];
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "max") == 0) {
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_max, type, op[0], op[1]);
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "min") == 0) {
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_min, type, op[0], op[1]);
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "mix") == 0) {
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if (op[2]->type->is_float()) {
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 unsigned c2_inc = op[2]->type->is_scalar() ? 0 : 1;
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1068,1076 ****
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 for (unsigned c = 0; c < op[0]->type->components(); c++)
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[c] = op[op[2]->value.b[c] ? 1 : 0]->value.f[c];
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "mod") == 0) {
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_mod, type, op[0], op[1]);
11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "normalize") == 0) {
11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        float length = sqrtf(dot(op[0], op[0]));
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1069,1077 ----
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 for (unsigned c = 0; c < op[0]->type->components(); c++)
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[c] = op[op[2]->value.b[c] ? 1 : 0]->value.f[c];
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "mod") == 0) {
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_mod, type, op[0], op[1]);
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "normalize") == 0) {
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        float length = sqrtf(dot(op[0], op[0]));
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1079,1087 ****
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = op[0]->value.f[c] / length;
11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "not") == 0) {
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_logic_not, type, op[0], NULL);
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "notEqual") == 0) {
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1080,1088 ----
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = op[0]->value.f[c] / length;
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "not") == 0) {
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_logic_not, type, op[0], NULL);
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "notEqual") == 0) {
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1] && op[1]->type->is_vector());
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++) {
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 switch (op[0]->type->base_type) {
11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1101,1107 ****
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "outerProduct") == 0) {
11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1]->type->is_vector());
11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned m = op[0]->type->vector_elements;
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned n = op[1]->type->vector_elements;
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1102,1108 ----
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    assert(!"Should not get here.");
11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "outerProduct") == 0) {
11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_vector() && op[1]->type->is_vector());
11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned m = op[0]->type->vector_elements;
11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned n = op[1]->type->vector_elements;
11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1110,1127 ****
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[i+m*j] = op[0]->value.f[i] * op[1]->value.f[j];
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "pow") == 0) {
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_pow, type, op[0], op[1]);
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "radians") == 0) {
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = M_PI/180.0 * op[0]->value.f[c];
11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "reflect") == 0) {
11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        float dot_NI = dot(op[1], op[0]);
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = op[0]->value.f[c] - 2 * dot_NI * op[1]->value.f[c];
11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "refract") == 0) {
11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const float eta = op[2]->value.f[0];
11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const float dot_NI = dot(op[1], op[0]);
11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const float k = 1.0 - eta * eta * (1.0 - dot_NI * dot_NI);
11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1111,1128 ----
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[i+m*j] = op[0]->value.f[i] * op[1]->value.f[j];
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "pow") == 0) {
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_binop_pow, type, op[0], op[1]);
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "radians") == 0) {
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = M_PI/180.0 * op[0]->value.f[c];
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "reflect") == 0) {
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        float dot_NI = dot(op[1], op[0]);
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = op[0]->value.f[c] - 2 * dot_NI * op[1]->value.f[c];
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "refract") == 0) {
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const float eta = op[2]->value.f[0];
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const float dot_NI = dot(op[1], op[0]);
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const float k = 1.0 - eta * eta * (1.0 - dot_NI * dot_NI);
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1133,1147 ****
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			    * op[1]->value.f[c];
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "sign") == 0) {
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_sign, type, op[0], NULL);
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "sin") == 0) {
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_sin, type, op[0], NULL);
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "sinh") == 0) {
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = sinhf(op[0]->value.f[c]);
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "smoothstep") == 0) {
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(num_parameters == 3);
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[1]->type == op[0]->type);
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsigned edge_inc = op[0]->type->is_scalar() ? 0 : 1;
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1134,1148 ----
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			    * op[1]->value.f[c];
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "sign") == 0) {
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_sign, type, op[0], NULL);
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "sin") == 0) {
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_sin, type, op[0], NULL);
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "sinh") == 0) {
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = sinhf(op[0]->value.f[c]);
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "smoothstep") == 0) {
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(num_parameters == 3);
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[1]->type == op[0]->type);
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        unsigned edge_inc = op[0]->type->is_scalar() ? 0 : 1;
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 1157,1179 ****
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[c] = t * t * (3 - 2 * t);
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "sqrt") == 0) {
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_sqrt, type, op[0], NULL);
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "step") == 0) {
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* op[0] (edge) may be either a scalar or a vector */
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned c0_inc = op[0]->type->is_scalar() ? 0 : 1;
12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0, c0 = 0; c < type->components(); c0 += c0_inc, c++)
12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0 : 1.0;
12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "tan") == 0) {
12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = tanf(op[0]->value.f[c]);
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "tanh") == 0) {
12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = tanhf(op[0]->value.f[c]);
12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(callee, "transpose") == 0) {
12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_matrix());
12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned n = op[0]->type->vector_elements;
12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned m = op[0]->type->matrix_columns;
12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 1158,1180 ----
12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    data.f[c] = t * t * (3 - 2 * t);
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "sqrt") == 0) {
12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        expr = new(mem_ctx) ir_expression(ir_unop_sqrt, type, op[0], NULL);
12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "step") == 0) {
12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float() && op[1]->type->is_float());
12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        /* op[0] (edge) may be either a scalar or a vector */
12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned c0_inc = op[0]->type->is_scalar() ? 0 : 1;
12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0, c0 = 0; c < type->components(); c0 += c0_inc, c++)
12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = (op[1]->value.f[c] < op[0]->value.f[c0]) ? 0.0 : 1.0;
12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "tan") == 0) {
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = tanf(op[0]->value.f[c]);
12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "tanh") == 0) {
12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_float());
12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        for (unsigned c = 0; c < op[0]->type->components(); c++)
12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 data.f[c] = tanhf(op[0]->value.f[c]);
12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(callee, "transpose") == 0) {
12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(op[0]->type->is_matrix());
12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned n = op[0]->type->vector_elements;
12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        const unsigned m = op[0]->type->matrix_columns;
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_dead_functions.cpp MesaLib/src/glsl/ir_dead_functions.cpp
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_dead_functions.cpp	Fri Oct  1 15:51:28 2010
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_dead_functions.cpp	Fri Oct 22 15:34:54 2010
12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 31,36 ****
12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 31,37 ----
12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   #include "ir_visitor.h"
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   #include "ir_expression_flattening.h"
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   #include "glsl_types.h"
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+  #include "safe_strcmp.h"
12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   class signature_entry : public exec_node
12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   {
12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 90,96 ****
12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   {
12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      signature_entry *entry = this->get_signature_entry(ir);
12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!     if (strcmp(ir->function_name(), "main") == 0) {
12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         entry->used = true;
12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 91,97 ----
12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   {
12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      signature_entry *entry = this->get_signature_entry(ir);
13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!     if (safe_strcmp(ir->function_name(), "main") == 0) {
13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         entry->used = true;
13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_function_inlining.cpp MesaLib/src/glsl/ir_function_inlining.cpp
13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_function_inlining.cpp	Fri Oct  1 15:51:28 2010
13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_function_inlining.cpp	Fri Oct 22 15:35:58 2010
13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 27,33 ****
13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Replaces calls to functions with the body of the function.
13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #include <inttypes.h>
13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_visitor.h"
13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_function_inlining.h"
13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 27,34 ----
13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Replaces calls to functions with the body of the function.
13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /* The use of inttypes.h seems to be unnecessary and causes problems on Windows. */
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /* #include <inttypes.h> */
13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_visitor.h"
13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_function_inlining.h"
13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_lower_jumps.cpp MesaLib/src/glsl/ir_lower_jumps.cpp
13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_lower_jumps.cpp	Fri Oct  1 15:51:28 2010
13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_lower_jumps.cpp	Fri Oct 22 15:36:16 2010
13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 28,33 ****
13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 28,34 ----
13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include <string.h>
13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum jump_strength
13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 125,131 ****
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this->return_flag = 0;
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this->return_value = 0;
13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this->nesting_depth = 0;
13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       this->is_main = this->signature && (strcmp(this->signature->function_name(), "main") == 0);
13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ir_variable* get_return_flag()
13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 126,132 ----
13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this->return_flag = 0;
13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this->return_value = 0;
13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        this->nesting_depth = 0;
13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       this->is_main = this->signature && (safe_strcmp(this->signature->function_name(), "main") == 0);
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ir_variable* get_return_flag()
13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_reader.cpp MesaLib/src/glsl/ir_reader.cpp
13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_reader.cpp	Fri Oct  1 15:51:28 2010
13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_reader.cpp	Fri Oct 22 15:36:27 2010
13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 31,36 ****
13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 31,37 ----
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_parser_extras.h"
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "s_expression.h"
13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const static bool debug = false;
13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 128,134 ****
13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, expr, "expected type (array ...) or (struct ...)");
13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return NULL;
13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(type_sym->value(), "array") == 0) {
13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (list->length() != 3) {
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    ir_read_error(st, expr, "expected type (array <type> <int>)");
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    return NULL;
13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 129,135 ----
13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, expr, "expected type (array ...) or (struct ...)");
13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return NULL;
13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(type_sym->value(), "array") == 0) {
13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (list->length() != 3) {
13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    ir_read_error(st, expr, "expected type (array <type> <int>)");
13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    return NULL;
13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 150,156 ****
13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return glsl_type::get_array_instance(base_type, size->value());
13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(type_sym->value(), "struct") == 0) {
13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 assert(false); // FINISHME
13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        } else {
13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, expr, "expected (array ...) or (struct ...); "
13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 151,157 ----
13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 }
13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return glsl_type::get_array_instance(base_type, size->value());
13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(type_sym->value(), "struct") == 0) {
14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 assert(false); // FINISHME
14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        } else {
14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, expr, "expected (array ...) or (struct ...); "
14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 189,195 ****
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 continue; // not a (function ...); ignore it.
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s_symbol *tag = SX_AS_SYMBOL(sub->subexpressions.get_head());
14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (tag == NULL || strcmp(tag->value(), "function") != 0)
14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 continue; // not a (function ...); ignore it.
14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ir_function *f = read_function(st, sub, true);
14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 190,196 ----
14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 continue; // not a (function ...); ignore it.
14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s_symbol *tag = SX_AS_SYMBOL(sub->subexpressions.get_head());
14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (tag == NULL || safe_strcmp(tag->value(), "function") != 0)
14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 continue; // not a (function ...); ignore it.
14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ir_function *f = read_function(st, sub, true);
14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 233,239 ****
14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s_symbol *tag = SX_AS_SYMBOL(siglist->subexpressions.get_head());
14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (tag == NULL || strcmp(tag->value(), "signature") != 0) {
14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, siglist, "Expected (signature ...)");
14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return NULL;
14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 234,240 ----
14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s_symbol *tag = SX_AS_SYMBOL(siglist->subexpressions.get_head());
14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (tag == NULL || safe_strcmp(tag->value(), "signature") != 0) {
14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, siglist, "Expected (signature ...)");
14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return NULL;
14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 267,273 ****
14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return;
14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     s_symbol *paramtag = SX_AS_SYMBOL(paramlist->subexpressions.get_head());
14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (paramtag == NULL || strcmp(paramtag->value(), "parameters") != 0) {
14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ir_read_error(st, paramlist, "Expected (parameters ...)");
14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return;
14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 268,274 ----
14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return;
14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     s_symbol *paramtag = SX_AS_SYMBOL(paramlist->subexpressions.get_head());
14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (paramtag == NULL || safe_strcmp(paramtag->value(), "parameters") != 0) {
14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ir_read_error(st, paramlist, "Expected (parameters ...)");
14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return;
14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 364,372 ****
14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     void *ctx = st;
14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     s_symbol *symbol = SX_AS_SYMBOL(expr);
14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if (symbol != NULL) {
14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(symbol->value(), "break") == 0 && loop_ctx != NULL)
14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return new(ctx) ir_loop_jump(ir_loop_jump::jump_break);
14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(symbol->value(), "continue") == 0 && loop_ctx != NULL)
14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return new(ctx) ir_loop_jump(ir_loop_jump::jump_continue);
14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 365,373 ----
14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     void *ctx = st;
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     s_symbol *symbol = SX_AS_SYMBOL(expr);
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if (symbol != NULL) {
14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(symbol->value(), "break") == 0 && loop_ctx != NULL)
14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return new(ctx) ir_loop_jump(ir_loop_jump::jump_break);
14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(symbol->value(), "continue") == 0 && loop_ctx != NULL)
14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return new(ctx) ir_loop_jump(ir_loop_jump::jump_continue);
14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 383,399 ****
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ir_instruction *inst = NULL;
14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(tag->value(), "declare") == 0) {
14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_declaration(st, list);
14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "assign") == 0) {
14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_assignment(st, list);
14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "if") == 0) {
14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_if(st, list, loop_ctx);
14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "loop") == 0) {
14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_loop(st, list);
14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "return") == 0) {
14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_return(st, list);
14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "function") == 0) {
14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_function(st, list, false);
14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } else {
14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_rvalue(st, list);
14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 384,400 ----
14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ir_instruction *inst = NULL;
14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(tag->value(), "declare") == 0) {
14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_declaration(st, list);
15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "assign") == 0) {
15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_assignment(st, list);
15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "if") == 0) {
15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_if(st, list, loop_ctx);
15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "loop") == 0) {
15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_loop(st, list);
15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "return") == 0) {
15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_return(st, list);
15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "function") == 0) {
15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_function(st, list, false);
15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } else {
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        inst = read_rvalue(st, list);
15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 443,467 ****
15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // FINISHME: Check for duplicate/conflicting qualifiers.
15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(qualifier->value(), "centroid") == 0) {
15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->centroid = 1;
15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "invariant") == 0) {
15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->invariant = 1;
15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "uniform") == 0) {
15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_uniform;
15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "auto") == 0) {
15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_auto;
15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "in") == 0) {
15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_in;
15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "out") == 0) {
15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_out;
15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "inout") == 0) {
15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_inout;
15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "smooth") == 0) {
15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->interpolation = ir_var_smooth;
15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "flat") == 0) {
15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->interpolation = ir_var_flat;
15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (strcmp(qualifier->value(), "noperspective") == 0) {
15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->interpolation = ir_var_noperspective;
15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        } else {
15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, list, "unknown qualifier: %s", qualifier->value());
15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 444,468 ----
15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        // FINISHME: Check for duplicate/conflicting qualifiers.
15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(qualifier->value(), "centroid") == 0) {
15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->centroid = 1;
15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "invariant") == 0) {
15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->invariant = 1;
15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "uniform") == 0) {
15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_uniform;
15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "auto") == 0) {
15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_auto;
15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "in") == 0) {
15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_in;
15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "out") == 0) {
15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_out;
15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "inout") == 0) {
15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->mode = ir_var_inout;
15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "smooth") == 0) {
15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->interpolation = ir_var_smooth;
15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "flat") == 0) {
15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->interpolation = ir_var_flat;
15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       } else if (safe_strcmp(qualifier->value(), "noperspective") == 0) {
15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 var->interpolation = ir_var_noperspective;
15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        } else {
15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 ir_read_error(st, list, "unknown qualifier: %s", qualifier->value());
15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 574,586 ****
15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ir_rvalue *rvalue = read_dereference(st, list);
15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if (rvalue != NULL || st->error)
15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return rvalue;
15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    else if (strcmp(tag->value(), "swiz") == 0) {
15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_swizzle(st, list);
15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "expression") == 0) {
15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_expression(st, list);
15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "call") == 0) {
15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_call(st, list);
15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (strcmp(tag->value(), "constant") == 0) {
15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_constant(st, list);
15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } else {
15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_texture(st, list);
15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 575,587 ----
15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ir_rvalue *rvalue = read_dereference(st, list);
15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     if (rvalue != NULL || st->error)
15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return rvalue;
15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    else if (safe_strcmp(tag->value(), "swiz") == 0) {
15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_swizzle(st, list);
15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "expression") == 0) {
15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_expression(st, list);
15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "call") == 0) {
15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_call(st, list);
15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    } else if (safe_strcmp(tag->value(), "constant") == 0) {
15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_constant(st, list);
15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     } else {
15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        rvalue = read_texture(st, list);
15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 921,931 ****
15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     s_symbol *tag = SX_AS_SYMBOL(list->subexpressions.head);
15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(tag != NULL);
15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(tag->value(), "var_ref") == 0)
16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return read_var_ref(st, list);
16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(tag->value(), "array_ref") == 0)
16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return read_array_ref(st, list);
16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (strcmp(tag->value(), "record_ref") == 0)
16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return read_record_ref(st, list);
16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return NULL;
16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 922,932 ----
16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     s_symbol *tag = SX_AS_SYMBOL(list->subexpressions.head);
16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(tag != NULL);
16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(tag->value(), "var_ref") == 0)
16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return read_var_ref(st, list);
16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(tag->value(), "array_ref") == 0)
16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return read_array_ref(st, list);
16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    if (safe_strcmp(tag->value(), "record_ref") == 0)
16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return read_record_ref(st, list);
16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return NULL;
16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_structure_splitting.cpp MesaLib/src/glsl/ir_structure_splitting.cpp
16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_structure_splitting.cpp	Fri Oct  1 15:51:28 2010
16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_structure_splitting.cpp	Fri Oct 22 15:36:52 2010
16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 37,42 ****
16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 37,43 ----
16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_print_visitor.h"
16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_rvalue_visitor.h"
16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "glsl_types.h"
16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool debug = false;
16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 228,235 ****
16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     unsigned int i;
16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (i = 0; i < entry->var->type->length; i++) {
16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(deref_record->field,
16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		 entry->var->type->fields.structure[i].name) == 0)
16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 break;
16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(i != entry->var->type->length);
16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 229,236 ----
16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     unsigned int i;
16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for (i = 0; i < entry->var->type->length; i++) {
16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(deref_record->field,
16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		      entry->var->type->fields.structure[i].name) == 0)
16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 break;
16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     assert(i != entry->var->type->length);
16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/ir_validate.cpp MesaLib/src/glsl/ir_validate.cpp
16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/ir_validate.cpp	Mon Oct  4 18:58:00 2010
16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/ir_validate.cpp	Fri Oct 22 15:37:24 2010
16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 33,39 ****
16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a dereference chain.
16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #include <inttypes.h>
16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_hierarchical_visitor.h"
16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "program/hash_table.h"
16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 33,40 ----
16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * a dereference chain.
16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /* The use of inttypes.h seems to be unnecessary and causes problems on Windows. */
16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /* #include <inttypes.h> */
16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir.h"
16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_hierarchical_visitor.h"
16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "program/hash_table.h"
16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/glsl/linker.cpp MesaLib/src/glsl/linker.cpp
16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/glsl/linker.cpp	Fri Oct  1 15:51:28 2010
16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/glsl/linker.cpp	Fri Oct 22 15:38:08 2010
16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 79,84 ****
16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 79,85 ----
16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "program/hash_table.h"
16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "linker.h"
16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "ir_optimization.h"
16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #include "safe_strcmp.h"
16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Visitor that determines whether or not a variable is ever written.
16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 95,101 ****
16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     {
16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ir_variable *const var = ir->lhs->variable_referenced();
16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(name, var->name) == 0) {
16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 found = true;
16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return visit_stop;
16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 96,102 ----
16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     {
16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ir_variable *const var = ir->lhs->variable_referenced();
16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(name, var->name) == 0) {
16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 found = true;
17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return visit_stop;
17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 113,119 ****
17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (sig_param->mode == ir_var_out ||
17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     sig_param->mode == ir_var_inout) {
17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    ir_variable *var = param_rval->variable_referenced();
17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	    if (var && strcmp(name, var->name) == 0) {
17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       found = true;
17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       return visit_stop;
17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    }
17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 114,120 ----
17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 if (sig_param->mode == ir_var_out ||
17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	     sig_param->mode == ir_var_inout) {
17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    ir_variable *var = param_rval->variable_referenced();
17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	    if (var && safe_strcmp(name, var->name) == 0) {
17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       found = true;
17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       return visit_stop;
17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	    }
17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 148,154 ****
17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     virtual ir_visitor_status visit(ir_dereference_variable *ir)
17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     {
17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (strcmp(this->name, ir->var->name) == 0) {
17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 this->found = true;
17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return visit_stop;
17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 149,155 ----
17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     virtual ir_visitor_status visit(ir_dereference_variable *ir)
17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     {
17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!       if (safe_strcmp(this->name, ir->var->name) == 0) {
17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 this->found = true;
17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	 return visit_stop;
17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 876,882 ****
17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       if (!other_var)
17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		  continue;
17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	       if (strcmp(var->name, other_var->name) == 0 &&
17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		   other_var->max_array_access > size) {
17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		  size = other_var->max_array_access;
17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       }
17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 877,883 ----
17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       if (!other_var)
17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		  continue;
17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 	       if (safe_strcmp(var->name, other_var->name) == 0 &&
17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		   other_var->max_array_access > size) {
17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		  size = other_var->max_array_access;
17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  	       }
17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mapi/glapi/glapi_nop.c MesaLib/src/mapi/glapi/glapi_nop.c
17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mapi/glapi/glapi_nop.c	Fri Oct  1 15:51:28 2010
17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mapi/glapi/glapi_nop.c	Fri Oct 22 15:41:35 2010
17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 107,113 ****
17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return 0;
17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define TABLE_ENTRY(name) (_glapi_proc) NoOpGeneric
17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 107,138 ----
17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return 0;
17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /**
17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  * This is called if the user somehow calls an unassigned GL dispatch function.
17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  */
17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! static GLint
17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! NoOpUnused(void)
17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! {
17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    return NoOpGeneric();
17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! }
17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 
17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /*
17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  * It is necessary to generate custom no-op entry points at least on
17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  * Windows, where the __stdcall calling convention is used (callee
17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  * cleans the stack). This calling convention can not tolerate a
17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  * mismatch between the numbers of arguments in caller and callee.
17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  */
17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define KEYWORD1 static
17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define KEYWORD1_ALT static
17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define KEYWORD2 GLAPIENTRY
17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define NAME(func)  NoOp##func
17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define DISPATCH(func, args, msg)  NoOpGeneric();
17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(func, args, msg)  return NoOpGeneric();
17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 
17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! /*
17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  * Defines for the table of no-op entry points.
17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  */
17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define TABLE_ENTRY(name) (_glapi_proc) NoOp##name
17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/main/compiler.h MesaLib/src/mesa/main/compiler.h
17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/main/compiler.h	Fri Oct  1 15:51:28 2010
18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/main/compiler.h	Fri Oct 22 15:44:23 2010
18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 175,181 ****
18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 175,183 ----
18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  define PUBLIC __attribute__((visibility("default")))
18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  define USED __attribute__((used))
18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #else
18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ # ifndef PUBLIC
18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  define PUBLIC
18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ # endif
18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  define USED
18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/main/histogram.c MesaLib/src/mesa/main/histogram.c
18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/main/histogram.c	Mon Oct  4 18:58:00 2010
18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/main/histogram.c	Tue Oct 26 11:17:37 2010
18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 32,37 ****
18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 32,40 ----
18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "macros.h"
18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/dispatch.h"
18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #if defined(_MSC_VER)
18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #pragma optimize("", off)
18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #if FEATURE_histogram
18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/main/image.c MesaLib/src/mesa/main/image.c
18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/main/image.c	Mon Oct  4 18:58:00 2010
18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/main/image.c	Tue Oct 26 11:17:45 2010
18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 37,42 ****
18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 37,45 ----
18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "imports.h"
18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "macros.h"
18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #if defined(_MSC_VER)
18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #pragma optimize("", off)
18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * NOTE:
18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/main/mipmap.c MesaLib/src/mesa/main/mipmap.c
18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/main/mipmap.c	Fri Oct  1 15:51:28 2010
18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/main/mipmap.c	Tue Oct 26 11:17:52 2010
18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 34,40 ****
18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "texstore.h"
18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "image.h"
18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 
18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GLint
18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bytes_per_pixel(GLenum datatype, GLuint comps)
18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 34,42 ----
18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "texstore.h"
18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "image.h"
18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #if defined(_MSC_VER)
18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #pragma optimize("", off)
18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #endif
18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GLint
18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bytes_per_pixel(GLenum datatype, GLuint comps)
18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/main/querymatrix.c MesaLib/src/mesa/main/querymatrix.c
18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/main/querymatrix.c	Mon Oct  4 18:58:00 2010
18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/main/querymatrix.c	Wed Oct  6 16:36:08 2010
18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 73,79 ****
18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #elif defined(__APPLE__) || defined(__CYGWIN__) || defined(__FreeBSD__) || \
18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       (defined(__sun) && defined(__C99FEATURES__)) || defined(__MINGW32__) || \
18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!      (defined(__sun) && defined(__GNUC__))
18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* fpclassify is available. */
18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 73,80 ----
18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #elif defined(__APPLE__) || defined(__CYGWIN__) || defined(__FreeBSD__) || \
18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       (defined(__sun) && defined(__C99FEATURES__)) || defined(__MINGW32__) || \
18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!      (defined(__sun) && defined(__GNUC__)) || \
18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!      (defined(__linux) && defined(__GNUC__))
18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* fpclassify is available. */
18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/math/m_eval.c MesaLib/src/mesa/math/m_eval.c
18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/math/m_eval.c	Thu Feb  4 16:10:40 2010
18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/math/m_eval.c	Tue Oct 26 11:18:00 2010
18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 41,46 ****
18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 41,50 ----
18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "main/config.h"
18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "m_eval.h"
18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #if defined(_MSC_VER)
18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #pragma optimize("", off)
18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ 
18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GLfloat inv_tab[MAX_EVAL_ORDER];
19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mesa/swrast/s_texcombine.c MesaLib/src/mesa/swrast/s_texcombine.c
19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mesa/swrast/s_texcombine.c	Fri Oct  1 15:51:28 2010
19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mesa/swrast/s_texcombine.c	Tue Oct 26 11:01:39 2010
19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 34,39 ****
19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 34,42 ----
19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "s_context.h"
19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #include "s_texcombine.h"
19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #if defined(_MSC_VER)
19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #pragma optimize("", off)
19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)+ #endif
19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Pointer to array of float[4]
19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mapi/glapi/gen/gl_apitemp.py MesaLib/src/mapi/glapi/gen/gl_apitemp.py
19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mapi/glapi/gen/gl_apitemp.py	Mon Aug 15 09:14:29 2011
19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mapi/glapi/gen/gl_apitemp.py	Thu Aug 11 21:23:47 2011
19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 79,89 ****
19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			comma = ", "
19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- 		if f.return_type != 'void':
19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- 			dispatch = "RETURN_DISPATCH"
19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- 		else:
19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- 			dispatch = "DISPATCH"
19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- 
19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		need_proto = False
19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		if not f.is_static_entry_point(name):
19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  			need_proto = True
19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 79,84 ----
19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 97,108 ****
19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print '{'
19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if p_string == "":
19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			print '   %s(%s, (), (F, "gl%s();\\n"));' \
19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				% (dispatch, f.name, name)
19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		else:
19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			print '   %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				% (dispatch, f.name, p_string, name, t_string, o_string)
19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print '}'
19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print ''
19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return
19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 92,113 ----
19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print '{'
19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 		if f.return_type != 'void':
19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			dispatch = "RETURN_DISPATCH"
19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			if p_string == "":
19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				print '   %s(%s, %s, (), (F, "gl%s();\\n"));' \
19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 					% (dispatch, f.return_type, f.name, name)
19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			else:
19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				print '   %s(%s, %s, (%s), (F, "gl%s(%s);\\n", %s));' \
19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 					% (dispatch, f.return_type, f.name, p_string, name, t_string, o_string)
19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		else:
19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			dispatch = "DISPATCH"
19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			if p_string == "":
19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				print '   %s(%s, (), (F, "gl%s();\\n"));' \
19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 					% (dispatch, f.name, name)
19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 			else:
19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 				print '   %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! 					% (dispatch, f.name, p_string, name, t_string, o_string)
19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print '}'
19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		print ''
19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  		return
19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 120,126 ****
19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   NAME(n)  - builds the final function name (usually add "gl" prefix)
19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   DISPATCH(func, args, msg) - code to do dispatch of named function.
19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *                               msg is a printf-style debug message.
19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  *   RETURN_DISPATCH(func, args, msg) - code to do dispatch with a return value
19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Here is an example which generates the usual OpenGL functions:
19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   #define KEYWORD1
19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 125,132 ----
19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   NAME(n)  - builds the final function name (usually add "gl" prefix)
19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   DISPATCH(func, args, msg) - code to do dispatch of named function.
19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *                               msg is a printf-style debug message.
19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  *   RETURN_DISPATCH(type, func, args, msg) - code to do dispatch with a
19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!  *                                            return value of type.
19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *
19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Here is an example which generates the usual OpenGL functions:
19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   #define KEYWORD1
19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mapi/glapi/glapi_dispatch.c MesaLib/src/mapi/glapi/glapi_dispatch.c
19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mapi/glapi/glapi_dispatch.c	Mon Aug 15 09:14:30 2011
19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mapi/glapi/glapi_dispatch.c	Thu Aug 11 21:25:55 2011
19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 65,71 ****
19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     fprintf MESSAGE;				\
19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     CALL_ ## FUNC(GET_DISPATCH(), ARGS);
19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) 	\
19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     fprintf MESSAGE;				\
19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 65,71 ----
20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     fprintf MESSAGE;				\
20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(TYPE, FUNC, ARGS, MESSAGE) 	\
20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     fprintf MESSAGE;				\
20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 74,80 ****
20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define DISPATCH(FUNC, ARGS, MESSAGE)		\
20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) 	\
20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif /* logging */
20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 74,80 ----
20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define DISPATCH(FUNC, ARGS, MESSAGE)		\
20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(TYPE, FUNC, ARGS, MESSAGE) 	\
20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif /* logging */
20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)diff -c -r Mesa-7.9/src/mapi/glapi/glapi_nop.c MesaLib/src/mapi/glapi/glapi_nop.c
20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** Mesa-7.9/src/mapi/glapi/glapi_nop.c	Mon Aug 15 09:14:30 2011
20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- MesaLib/src/mapi/glapi/glapi_nop.c	Thu Aug 11 21:29:46 2011
20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 86,92 ****
20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define KEYWORD2 GLAPIENTRY
20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define NAME(func)  NoOp##func
20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define DISPATCH(func, args, msg)  Warn(#func);
20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(func, args, msg)  Warn(#func); return 0
20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 86,92 ----
20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define KEYWORD2 GLAPIENTRY
20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define NAME(func)  NoOp##func
20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define DISPATCH(func, args, msg)  Warn(#func);
20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(type, func, args, msg)  Warn(#func); return (type)0
20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 96,102 ****
20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #else
20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! static int
20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NoOpGeneric(void)
20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #if !defined(_WIN32_WCE)
20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 96,102 ----
20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #else
20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! void
20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NoOpGeneric(void)
20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #if !defined(_WIN32_WCE)
20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 104,110 ****
20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fprintf(stderr, "GL User Error: calling GL function without a rendering context\n");
20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }
20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #endif
20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)-    return 0;
20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 104,109 ----
20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 113,119 ****
20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GLint
20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NoOpUnused(void)
20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    return NoOpGeneric();
20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
20825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 112,119 ----
20835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static GLint
20845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NoOpUnused(void)
20855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
20865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    NoOpGeneric();
20875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)!    return 0;
20885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
20895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
20915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)***************
20925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** 127,133 ****
20935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define KEYWORD2 GLAPIENTRY
20945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define NAME(func)  NoOp##func
20955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define DISPATCH(func, args, msg)  NoOpGeneric();
20965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(func, args, msg)  return NoOpGeneric();
20975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
20985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
20995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Defines for the table of no-op entry points.
21005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)--- 127,133 ----
21015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define KEYWORD2 GLAPIENTRY
21025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define NAME(func)  NoOp##func
21035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #define DISPATCH(func, args, msg)  NoOpGeneric();
21045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)! #define RETURN_DISPATCH(type, func, args, msg)  NoOpGeneric(); return (type)0
21055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  
21065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /*
21075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Defines for the table of no-op entry points.
2108