summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2010-07-21dri2: Remove an unused variable.Carl Worth
To quiet a compiler warning.
2010-07-21Regenerate program/lex.yy.cCarl Worth
Based on the two recent changes to program_lexer.l.
2010-07-21Avoid more warnings in flex-generated code.Carl Worth
This avoids two "function defined but not used" warnings. For the yyinput function we define YY_NO_INPUT which tells flex to simply not generate this function. For unput, we add a call to this function, but inside a while(0) so that it will quiet the warning without actually changing any functionality.
2010-07-21Avoid warnings in flex-generated code.Carl Worth
Add declarations for two functions generated in the flex ouput. It would be nicer if flex simply declared these generated functions as static, but for now we can at least avoid the warning this way.
2010-07-21glsl: Correctly handle unary plus operator.Carl Worth
Previously, any occurence of the unary plus operator would trigger a bogus type mismatch error. Fix this by making the ast_plus case look more like the ast_neg case as far as type-checking is concerned. With this change the shaders/CorrectPreprocess8.frag test in piglit now passes.
2010-07-21draw: tweak aa line width threshold and samplingBrian Paul
Set sampler max_lod to avoid sampling the 1x1 and 2x2 mipmap levels. Fixes piglit line-aa-width test, fd.o bug 29160.
2010-07-21nouveau/nvfx: Add new PIPE_CAP valuesPatrice Mandin
Signed-off-by: Patrice Mandin <patmandin@gmail.com>
2010-07-21gallivm: replace has_indirect_addressing field with indirect_files fieldBrian Paul
Instead of one big boolean indicating indirect addressing, use a bitfield indicating which register files are accessed with indirect addressing. Most shaders that use indirect addressing only use it to access the constant buffer. So no need to use an array for temporary registers in this case.
2010-07-21tgsi: added tgsi_shader_info::indirect_files fieldBrian Paul
Indicates which register files are accessed with indirect addressing.
2010-07-21gallivm: refactor code into get_indirect_offsets() functionBrian Paul
2010-07-21gallivm: added commentBrian Paul
2010-07-21gallivm: remove extraneous bracesBrian Paul
2010-07-21gallivm: no longer do indirect addressing in get_temp_ptr()Brian Paul
2010-07-21gallivm: implement correct indirect addressing of temp registersBrian Paul
As with indexing the const buffer, the ADDR reg may have totally different values for each element. Need to use a gather operation.
2010-07-21gallivm: re-org, comments for get_temp_ptr()Brian Paul
2010-07-21draw: whitespace clean-upBrian Paul
2010-07-21gallium: remove pointless bitfield restrction in pipe_vertex_elementKeith Whitwell
This used to be a somewhat packed struct, but no longer. Remove the last remaining bitfield tag.
2010-07-21gallivm: rename a var to avoid compiler warningsBrian Paul
2010-07-20gallivm: fix indirect addressing of constant bufferBrian Paul
The previous code assumed that all elements of the address register were the same. But it can vary from pixel to pixel or vertex to vertex so we must use a gather operation when dynamically indexing the constant buffer. Still need to fix this for the temporary register file...
2010-07-20gallivm: added lp_build_const_int32() helperBrian Paul
2010-07-20glsl2: glsl_type has its own talloc context, don't pass one inIan Romanick
2010-07-20linker: Do post-link lowering and optimizationIan Romanick
The lowering code should probably be moved elsewhere.
2010-07-20glsl2: Implement utility routine to talloc reparent an IR treeIan Romanick
2010-07-20glsl2: Add a constructor for _mesa_glsl_parse_stateIan Romanick
Coming changes to the handling of built-in functions necessitate this.
2010-07-20glsl2: Add and use new variable mode ir_var_temporaryIan Romanick
This is quite a large patch because breaking it into smaller pieces would result in the tree being intermitently broken. The big changes are: * Add the ir_var_temporary variable mode * Change the ir_variable constructor to take the mode as a parameter and correctly specify the mode for all ir_varables. * Change the linker to not cross validate ir_var_temporary variables. * Change the linker to pull all ir_var_temporary variables from global scope into 'main'.
2010-07-20ir_to_mesa: Validate the linked shaders as well.Eric Anholt
This caught the failure in cloning of ir_dereference_record.
2010-07-20glsl2: Check that nodes in a valid tree aren't error-type.Eric Anholt
We're good at propagating error types around, but finding when the first one was triggered can be painful if we aren't paying attention.
2010-07-20glsl2: strdup the field names used in dereference_record.Eric Anholt
Otherwise, after linking and freeing the old data, the pointer would dangle. Partial fix for glsl1-struct*.
2010-07-20glsl2: talloc the glsl_struct_field[] we use to look up structure types.Eric Anholt
Since the types are singletons across the lifetime of the compiler, repeatedly compiling a program with the same structure type defined would drop a copy of the array on the floor per compile. This is a bit tricky because the static GLSL types are not called with the talloc-based new, so we have to use the global type context, which may not be initialized yet.
2010-07-20glsl2: Don't claim a match on structure types with different field names.Eric Anholt
We regularly do lookups on the field names of the structure to find the types within the struct, so returning a structure type with bad names will lead to lots of error types being found.
2010-07-20glsl2: Add support for the .length() method on arrays.Kenneth Graunke
Fixes piglit test glsl-array-length, and provides proper error messages for negative piglit tests array-length-110.frag, array-length-unsized.frag, and array-length-args.frag.
2010-07-20glsl2: Remove incorrect assertion in the parser.Kenneth Graunke
This assertion is triggered by method calls (i.e. array.length()), where subexpressions[1] is an ast_function_call expression. Since the assertion itself had a comment saying it could be removed eventually, simply do so. Causes negative glslparser tests array-length-110.frag, array-length-args.frag, and array-length-unsized.frag to pass, but only because the length() method is not supported yet.
2010-07-20glsl2: Disallow non-constant array indexing for unsized arrays.Kenneth Graunke
Fixes piglit test unsized-array-non-const-index.vert.
2010-07-20ir_constant_expression: Remove pointless use of variable_referenced.Kenneth Graunke
ir_dereference_variable always references an ir_variable, so there's no point in calling a function and NULL-checking the result.
2010-07-20ir_constant_expression: Use "this" pointer directly.Kenneth Graunke
In ir_expression's signature, I replaced ir->operands[i] with op[i] as it is more concise; an assertion already ensures these are equal.
2010-07-20ir_constant_expression: Convert from a visitor to a virtual function.Kenneth Graunke
The constant_expression_wrapper was already the only external API, and much of the internal code used it anyway. Also, it wouldn't ever visit non-rvalue ir_instructions, so using a visitor seemed a bit unnecessary. This uses "ir_foo *ir = this;" lines to avoid code churn. These should be removed.
2010-07-20glsl2: Move constant_expression_value method to ir_rvalue.Kenneth Graunke
This prevents top-level callers from asking for the value of something that is guaranteed not to have one.
2010-07-20glcpp: Avoid accidental token pasting in preprocessed result.Carl Worth
Consider this test case: #define EMPTY int foo = 1+EMPTY+4; The expression should compile as the sequence of tokens 1, PLUS, UNARY_POSITIVE, 4. But glcpp has been failing for this case since it results in the string "1++4" which a compiler correctly sees as a syntax error, (1, POST_INCREMENT, 4). We fix this by changing any macro with an empty definition to result in a single SPACE token rather than nothing. This then gives "1+ +4" which compiles correctly. This commit does touch up the two existing test cases which already have empty macros, (to add the space to the expected result). It also adds a new test case to exercise the above scenario.
2010-07-20glcpp: Add missing include in xtalloc.cCarl Worth
Without this, the compiler was legitimately complaining about missing declarations for all of the functions being defined here.
2010-07-20glcpp: Add static keyword to several functions in the parser.Carl Worth
This quiets warnings about missing declarations otherwise.
2010-07-20glcpp: Avoid warnings in generated flex code.Carl Worth
We define the YY_NO_INPUT macro to avoid one needless function being generated. for the other needless functions, (yyunput and yy_top_state), we add a new UNREACHABLE start condition and call these functions from an action there. This doesn't change functionality at all, (since we never enter the UNREACHABLE start condition), but makes the compiler stop complaining about these two functions being defined but not used.
2010-07-20glcpp-lex: Declare some generated functions to eliminate compiler warnings.Carl Worth
It's really a bug in flex that these functions are generated with neither a declaration nor the 'static' keyword, but we can at least avoid the warnings this way.
2010-07-20glcpp: Fix support for nested #ifdef and nested #ifndefCarl Worth
Previously, if the outer #ifdef/#ifndef evaluated to false, the inner directive would not be parsed correctly, (the identifier as the subject of the #ifdef/#ifndef would inadvertently be skipped along with the other content correctly being skipped). We fix this by setting the lexing_if state in each case here. We also add a new test to the test suite to ensure that this case is tested.
2010-07-20glcpp: Support #if(expression) with no intervening space.Carl Worth
And add a test case to ensure that this works.
2010-07-20glcpp: Fix use-after-free error from #undef directive.Carl Worth
By taking advantage of the recently-added hash_table_remove function. With this change, all existing tests are now valgrind-clean.
2010-07-20hash_table: Add new hash_table_remove function.Carl Worth
To allow for the removal of a single element from a hash table.
2010-07-20glcpp: Make test suite test for valgrind cleanliness.Carl Worth
As it turns out, 4 of our current tests are not valgrind clean, (use after free errors or so), so this will be helpful for investigating and fixing those.
2010-07-20glcpp: Make test suite report final count of passed/total tests.Carl Worth
And report PASS or FAIL for each test along the way as well.
2010-07-20Build a standalone glcpp binary.Carl Worth
This is convenient for testing the preprocessor independent of the rest of mesa, (just run glcpp-test in the src/glsl/glcpp/tests).
2010-07-20glcpp: Delete copies of hash_table.c, hash_table.h, and other headers.Carl Worth
These were only ever intended to exist in the original, standalone implementation of glcpp, (with the idea of dropping them as soon as the code moved into mesa). The current build system wasn't compiling this C file, but the presence of the header files could cause problems if the two copies diverge in the future. We head those problems off by deleting al of these redundant files.