0cea8a56b627cea297e4213266b57b7a1085dcca |
|
01-May-2012 |
Eric Anholt <eric@anholt.net> |
glsl: Don't dead-code eliminiate uniforms declared in uniform blocks. This is a requirement for std140 uniform blocks, and optional for packed/shared blocks. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
d884f60861f270cdcf7d9d47765efcf1e1de30b6 |
|
20-Mar-2012 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Convert ir_call to be a statement rather than a value. Aside from ir_call, our IR is cleanly split into two classes: - Statements (typeless; used for side effects, control flow) - Values (deeply nestable, pure, typed expression trees) Unfortunately, ir_call confused all this: - For void functions, we placed ir_call directly in the instruction stream, treating it as an untyped statement. Yet, it was a subclass of ir_rvalue, and no other ir_rvalue could be used in this way. - For functions with a return value, ir_call could be placed in arbitrary expression trees. While this fit naturally with the source language, it meant that expressions might not be pure, making it difficult to transform and optimize them. To combat this, we always emitted ir_call directly in the RHS of an ir_assignment, only using a temporary variable in expression trees. Many passes relied on this assumption; the acos and atan built-ins violated it. This patch makes ir_call a statement (ir_instruction) rather than a value (ir_rvalue). Non-void calls now take a ir_dereference of a variable, and store the return value there---effectively a call and assignment rolled into one. They cannot be embedded in expressions. All expression trees are now pure, without exception. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
e3b520049675f78065eccbc25c001ea77861c129 |
|
29-Jan-2012 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Rename class variable_entry to ir_variable_refcount_entry. Exporting a publicly visible class with a generic name like "variable_entry" via ir_variable_refcount.h is kind of mean. Many IR transformers would like to define their own "variable_entry" class. If they accidentally include this header, the compiler/linker may get confused and try to instantiate the wrong variable_entry class, leading to bizarre runtime crashes. The hope is that renaming this one will allow .cpp files to safely declare and use their own file-scope "variable_entry" classes. This avoids crashes caused by converting src/glsl to automake. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-and-tested-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net>
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
1d5d67f8adac9f94715de9804adb536d9a7ec5ee |
|
21-Oct-2011 |
Ian Romanick <ian.d.romanick@intel.com> |
glsl: Add uniform_locations_assigned parameter to do_dead_code opt pass Setting this flag prevents declarations of uniforms from being removed from the IR. Since the IR is directly used by several API functions that query uniforms in shaders, uniform declarations cannot be removed after the locations have been set. However, it should still be safe to reorder the declarations (this is not tested). Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41980 Tested-by: Brian Paul <brianp@vmware.com> Reviewed-by: Bryan Cain <bryancain3@gmail.com> Cc: Vinson Lee <vlee@vmware.com> Cc: José Fonseca <jfonseca@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
497baf4e4a6a0a2f247c7bfb9bf69a2b93c2c19f |
|
10-Feb-2011 |
Ian Romanick <ian.d.romanick@intel.com> |
Use C-style system headers in C++ code to avoid issues with std:: namespace
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
61c59234f916406512b3591f46599cc29a5d8e23 |
|
04-Feb-2011 |
Vinson Lee <vlee@vmware.com> |
glsl: Add using statements for standard library functions. Standard library functions in C++ are in the std namespace. When using C++-style header files for the standard library, some compilers, such as Sun Studio, provide symbols only for the std namespace and not for the global namespace. This patch adds using statements for standard library functions. Another option could have been to prepend standard library function calls with 'std::'. This patch fixes several compilation errors with Sun Studio.
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
df883eb1575a740bf91e01cbe2eaa4dbc1f9f154 |
|
17-Nov-2010 |
Chad Versace <chad.versace@intel.com> |
glsl: Fix Doxygen tag \file in recently renamed files
/external/mesa3d/src/glsl/opt_dead_code.cpp
|
32aaf89823de11e98cb59d5ec78c66cd3e74bcd4 |
|
15-Nov-2010 |
Kenneth Graunke <kenneth@whitecape.org> |
glsl: Rename various ir_* files to lower_* and opt_*. This helps distinguish between lowering passes, optimization passes, and other compiler code.
/external/mesa3d/src/glsl/opt_dead_code.cpp
|