summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/r300/compiler/radeon_emulate_loops.c
Commit message (Collapse)AuthorAgeFilesLines
* r300c/compiler: remove the compiler tooMarek Olšák2011-10-281-522/+0
| | | | Gallium has a fork of this.
* Revert "r300/compiler: Remove obsolete compiler passes"Tom Stellard2011-04-021-0/+34
| | | | | | | This reverts commit 9f013a8233197d4a0482661cb37cfeac1a61b804. These passes are still need for non-GLSL paths like g3dvl and ARB programs.
* r300/compiler: Remove obsolete compiler passesTom Stellard2011-03-311-34/+0
| | | | | | Branch emulation and loop unrolling are done in the GLSL frontend. Transforming loops is no longer needed for fragment shaders, but it is still necessary for vertex shaders.
* r300/compiler: Move declaration before code.Vinson Lee2010-09-291-2/+3
| | | | | | Fixes this GCC warning on linux-x86 build. radeon_emulate_loops.c: In function ‘rc_emulate_loops’: radeon_emulate_loops.c:517: warning: ISO C90 forbids mixed declarations and code
* r300/compiler: Don't use rc_error() unless the error is unrecoverableTom Stellard2010-09-281-3/+3
| | | | | | https://bugs.freedesktop.org/show_bug.cgi?id=30416 NOTE: This is a candidate for the 7.9 branch.
* r300/compiler: refactor fragment shader compilationMarek Olšák2010-09-041-2/+2
| | | | This cleans up the mess in r3xx_compile_fragment_program.
* r300/compiler: refactor vertex shader compilationMarek Olšák2010-09-041-1/+1
| | | | | | First list compiler passes in an array, then run the new function rc_run_compiler. Every backend may need a different set of passes. This cleans up the mess in r3xx_compile_vertex_program.
* r300/compiler: add new compiler parameter max_alu_instsMarek Olšák2010-09-041-15/+12
|
* r300/compiler: put emulate_loop_state in radeon_compilerMarek Olšák2010-09-041-3/+4
|
* r300/compiler: Implement hardware assisted loops for vertex shaders.Tom Stellard2010-08-101-3/+5
| | | | Single loops work, but nested loops do not.
* r300/compiler: Correctly transform nested loops.Tom Stellard2010-08-101-16/+9
|
* r300/compiler: Always unroll loops when doing loop emulation.Tom Stellard2010-08-031-7/+10
|
* r300/compiler: r500 hw support for break and continue in loops.Tom Stellard2010-08-031-87/+150
| | | | | | | The BGNLOOP and ENDLOOP instructions are now being used correctly, which makes break and continue possible. The deadcode pass has been modified to handle breaks, and the compiler is more careful about which loops are unrolled.
* r300/compiler: Don't unroll loops with continue or break.Tom Stellard2010-08-031-1/+12
|
* r300/compiler: Fix loop unrollingTom Stellard2010-07-031-1/+15
|
* r300/compiler: Correctly calculate the max number of iterations for loops.Tom Stellard2010-07-031-17/+8
|
* r300/compiler: Handle loops in deadcode analysis.Tom Stellard2010-07-031-44/+16
| | | | | | | | | This also allows us to split the loop emulation into two phases. A tranformation phase which either unrolls loops or prepares them to be emulated, and the emulation phase which unrolls remaining loops until the instruction limit is reached. The second phase is completed after the deadcode analysis in order to get a more accurate count of the number of instructions in the body of loops.
* r300/compiler: Handle more complex conditionals in loops.Tom Stellard2010-06-111-71/+84
|
* r300/compiler: Fix warning.Tom Stellard2010-06-111-1/+1
|
* r300/compiler: Handle SGT and SLE at the beginning of loops.Tom Stellard2010-06-111-3/+11
|
* r300/compiler: Verify assumptions about opcode types.Tom Stellard2010-06-111-4/+33
|
* r300/compiler: Unroll loops that decrement the counter.Tom Stellard2010-06-111-49/+83
| | | | e.g. for(i=10; i>0; i--)
* r300/compiler: Unroll loops that have a constant number of iterations.Tom Stellard2010-06-111-2/+209
| | | | | This only works with for loops that increment the counter. e.g. for(i=0; i<10; i++)
* r300/compiler: Implement simple loop emulationTom Stellard2010-06-111-0/+183
The loop emulation unrolls loops as may times as possbile while still keeping the shader program below the maximum instruction limit. At this point, there are no checks for constant conditionals. This is only enabled for fragment shaders.