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