Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | glsl: overhaul 'return' statement handling | Brian Paul | 2009-06-26 | 3 | -215/+212 |
| | | | | | | | A new node type (SLANG_OPER_RETURN_INLINED) is used to denote 'return' statements inside inlined functions which need special handling. All glean glsl1 tests pass for EmitContReturn=FALSE and TRUE. | ||||
* | glsl: predicate assignments according to __returnFlag | Brian Paul | 2009-06-26 | 1 | -4/+29 |
| | | | | Fixes glean "function with early return (3)" case (when EmitContReturn=FALSE). | ||||
* | glsl: added slang_variable::is_global field | Brian Paul | 2009-06-26 | 1 | -0/+1 |
| | |||||
* | glsl: silence a problem warning | Brian Paul | 2009-06-26 | 1 | -1/+2 |
| | |||||
* | glsl: code refactoring for return statements | Brian Paul | 2009-06-26 | 1 | -70/+88 |
| | |||||
* | glsl: fix assorted regressions related to early-return-removal | Brian Paul | 2009-06-26 | 2 | -14/+35 |
| | |||||
* | glsl: comments, field reordering | Brian Paul | 2009-06-26 | 1 | -1/+4 |
| | |||||
* | glsl: rework loop nesting code | Brian Paul | 2009-06-26 | 2 | -41/+87 |
| | |||||
* | glsl: remove test for loop unrolling when we hit conditional cont/break | Brian Paul | 2009-06-26 | 1 | -4/+0 |
| | | | | | This is no longer needed since we added the new _slang_loop_contains_continue_or_break() function/test. | ||||
* | glsl: checkpoint: predicate __retVal = expr with __returnFlag | Brian Paul | 2009-06-26 | 1 | -26/+60 |
| | | | | The glean "function with early return (1)" test passes now. | ||||
* | glsl: use new helper functions in _slang_gen_logical_and/or() | Brian Paul | 2009-06-26 | 1 | -15/+9 |
| | |||||
* | glsl: add comments | Brian Paul | 2009-06-26 | 1 | -0/+3 |
| | |||||
* | glsl: checkpoint: replace 'return' with __returnFlag=true; | Brian Paul | 2009-06-26 | 1 | -7/+68 |
| | | | | Needed for "remove early returns" transformation. | ||||
* | glsl: fix up scoping for parent/children in slang_operation_copy() | Brian Paul | 2009-06-26 | 1 | -0/+9 |
| | | | | This will need more testing, but no regressions seen so far. | ||||
* | glsl: fix uninitialized var in _slang_gen_for_without_continue() | Brian Paul | 2009-06-26 | 1 | -1/+1 |
| | |||||
* | glsl: added slang_operation_free_children() | Brian Paul | 2009-06-26 | 2 | -0/+17 |
| | |||||
* | glsl: added slang_oper_num_children() helper | Brian Paul | 2009-06-26 | 1 | -0/+7 |
| | |||||
* | glsl: check-point: declare _returnFlag | Brian Paul | 2009-06-26 | 1 | -0/+33 |
| | |||||
* | glsl: added slang_operation_insert_child() | Brian Paul | 2009-06-26 | 2 | -0/+23 |
| | |||||
* | glsl: use slang_generate_declaration() to consolidate some code | Brian Paul | 2009-06-26 | 1 | -31/+37 |
| | |||||
* | glsl: remove obsolete comment | Brian Paul | 2009-06-26 | 1 | -3/+0 |
| | |||||
* | glsl: implement _slang_gen_while_without_continue() | Brian Paul | 2009-06-26 | 1 | -82/+115 |
| | |||||
* | glsl: fix a bug involving 'continue' in 'for' loops | Brian Paul | 2009-06-26 | 2 | -23/+44 |
| | | | | | | | | Need to execute the for loop's increment code before we continue. Add a slang_assemble_ctx::CurLoopOper field to keep track of the containing loop and avoid the "cont if true" path in this situation. Plus, assorted clean-ups. | ||||
* | glsl: added slang_oper_child_const() | Brian Paul | 2009-06-26 | 1 | -0/+8 |
| | |||||
* | glsl: use _slang_loop_contains_continue_or_break() to check for unrolling | Brian Paul | 2009-06-26 | 1 | -5/+36 |
| | | | | The previous test failed for nested loops. | ||||
* | glsl: use new _slang_loop_contains_continue() helper function | Brian Paul | 2009-06-26 | 1 | -5/+126 |
| | |||||
* | glsl: implement continue->break translation for do-while loops | Brian Paul | 2009-06-26 | 1 | -15/+219 |
| | |||||
* | glsl: added slang_operation_literal_int/bool() helper functions | Brian Paul | 2009-06-26 | 1 | -0/+26 |
| | |||||
* | glsl: don't allocate 0-length children array in slang_operation_copy() | Brian Paul | 2009-06-26 | 1 | -6/+7 |
| | |||||
* | glsl: remove debug code, misc clean-up | Brian Paul | 2009-06-26 | 1 | -5/+0 |
| | |||||
* | glsl: implement continue->break transformation for for-loops | Brian Paul | 2009-06-26 | 1 | -3/+167 |
| | |||||
* | glsl: added slang_operation_add_children() and slang_oper_child() helpers | Brian Paul | 2009-06-26 | 2 | -0/+25 |
| | |||||
* | glsl: added slang_assemble_ctx::EmitContReturn field, init | Brian Paul | 2009-06-26 | 2 | -0/+4 |
| | |||||
* | glsl: don't unroll loops containing continue/break | Brian Paul | 2009-06-26 | 1 | -0/+6 |
| | | | | Just search the AST in _slang_can_unroll_for_loop(). | ||||
* | Revert "slang: if/else/break & if/else/continue work for unrolled loops" | Brian Paul | 2009-06-26 | 2 | -38/+7 |
| | | | | | | | | | | | We should just check if the loop contains a continue/break in the _slang_can_unroll_for_loop() test function... This reverts commit 989856bde47d699d7e18798df4013fbf962e1d4b. Conflicts: src/mesa/shader/slang/slang_codegen.h | ||||
* | glsl: Added gl_shader_state::EmitContReturn field | Brian Paul | 2009-06-26 | 1 | -0/+1 |
| | | | | | | | This is the start of a glsl-continue-return feature branch to support a GLSL code generator option for 'continue' and 'return' statements. Some targets don't support CONT or RET statements so we'll need to try to generate code that does not use them... | ||||
* | mesa: rename MAX_VERTEX_ATTRIBS to MAX_VERTEX_GENERIC_ATTRIBS | Brian Paul | 2009-06-22 | 1 | -4/+4 |
| | | | | | | Be clearer that this is the number of generic vertex program/shader attributes, not counting the legacy attributes (pos, normal, color, etc). (cherry picked from commit 4a95185c9f30c2de7a03bb1a0653f51b53b1111d) | ||||
* | glsl: fix warnings, update comments, s/TRUE/GL_TRUE/ | Brian Paul | 2009-06-10 | 1 | -3/+4 |
| | | | | (cherry picked from master, commit 7fdd64ab29576e607434fb8c82ddfa61e8ea6aa8) | ||||
* | glsl: Handle continuation characters in preprocessor. | Brian Paul | 2009-06-10 | 1 | -1/+67 |
| | | | | (cherry picked from master, commit cc22620e4b11425997f3bc1fc70f4c88cec22d2e) | ||||
* | glsl: Fix symbol replacement handling in preprocessor. | Brian Paul | 2009-06-10 | 1 | -13/+15 |
| | | | | (cherry picked from master, commit d9617deb008b75f4a605a30408aeb1948139c33e) | ||||
* | glsl: Expand nested preprocessor macros. | Brian Paul | 2009-06-09 | 1 | -1/+14 |
| | | | | (cherry picked from master, commit ef8caec29ae73bb2bbeb48f0578d839ef29348cd) | ||||
* | glsl: Fix preprocessor define argument parsing for dead sections. | Brian Paul | 2009-06-08 | 1 | -4/+4 |
| | | | | (cherry picked from master, commit 19a54d9f1055c366fd77026dd67007a8d5921f58) | ||||
* | mesa: better error message for invalid texture unit index | Brian Paul | 2009-06-08 | 1 | -1/+4 |
| | |||||
* | mesa: more complete fix for transform_invarient glitches | Keith Whitwell | 2009-05-08 | 1 | -2/+117 |
| | | | | | | Add a new flag mvp_with_dp4 in the context, and use that to switch both ffvertex.c and programopt.c vertex transformation code to either DP4 or MUL/MAD implementations. | ||||
* | mesa: added _mesa_check_soa_dependencies() function | Brian Paul | 2009-04-29 | 2 | -0/+53 |
| | | | | | This function will check an instruction to see if there's data dependencies between the dst and src registers if executed in an SOA manner. | ||||
* | Avoid a segfault in shader compilation | Robert Ellison | 2009-04-27 | 1 | -0/+6 |
| | | | | | | | | | | If a shader reaches an out-of-memory condition while adding a new function (reallocating the function list), a segfault will occur during cleanup (because the num_functions field is non-zero, but the functions pointer is NULL). This fixes that segfault by zeroing out the num_functions field if reallocation fails. | ||||
* | mesa: Fix buffer overflow when parsing generic vertex attributes. | Brian Paul | 2009-04-22 | 1 | -3/+9 |
| | |||||
* | mesa: new _NEW_PROGRAM_CONSTANTS flag | Brian Paul | 2009-04-21 | 3 | -9/+7 |
| | | | | | | | | | | | | | | | This state flag will be used to indicate that vertex/fragment program constants have changed. _NEW_PROGRAM will be used to indicate changes to the vertex/fragment shader itself, or misc related state. _NEW_PROGRAM_CONSTANTS is also set whenever a program parameter that's tracking GL state has changed. For example, if the projection matrix is in the parameter list, calling glFrustum() will cause _NEW_PROGRAM_CONSTANTS to be set. This will let to remove the need for dynamic state atoms in some drivers. For now, we still set _NEW_PROGRAM in all the places we used to. We'll no longer set _NEW_PROGRAM in glUniform() after drivers/etc have been updated. | ||||
* | mesa: print internal.current[i] attrib | Brian Paul | 2009-04-21 | 1 | -2/+7 |
| | |||||
* | mesa: print parameter list dirty state flag mask | Brian Paul | 2009-04-21 | 1 | -0/+1 |
| |