summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/compiler/radeon_emulate_loops.c
AgeCommit message (Collapse)Author
2010-09-29r300/compiler: Move declaration before code.Vinson Lee
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
2010-09-28r300/compiler: Don't use rc_error() unless the error is unrecoverableTom Stellard
https://bugs.freedesktop.org/show_bug.cgi?id=30416 NOTE: This is a candidate for the 7.9 branch.
2010-09-04r300/compiler: refactor fragment shader compilationMarek Olšák
This cleans up the mess in r3xx_compile_fragment_program.
2010-09-04r300/compiler: refactor vertex shader compilationMarek Olšák
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.
2010-09-04r300/compiler: add new compiler parameter max_alu_instsMarek Olšák
2010-09-04r300/compiler: put emulate_loop_state in radeon_compilerMarek Olšák
2010-08-10r300/compiler: Implement hardware assisted loops for vertex shaders.Tom Stellard
Single loops work, but nested loops do not.
2010-08-10r300/compiler: Correctly transform nested loops.Tom Stellard
2010-08-03r300/compiler: Always unroll loops when doing loop emulation.Tom Stellard
2010-08-03r300/compiler: r500 hw support for break and continue in loops.Tom Stellard
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.
2010-08-03r300/compiler: Don't unroll loops with continue or break.Tom Stellard
2010-07-03r300/compiler: Fix loop unrollingTom Stellard
2010-07-03r300/compiler: Correctly calculate the max number of iterations for loops.Tom Stellard
2010-07-03r300/compiler: Handle loops in deadcode analysis.Tom Stellard
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.
2010-06-11r300/compiler: Handle more complex conditionals in loops.Tom Stellard
2010-06-11r300/compiler: Fix warning.Tom Stellard
2010-06-11r300/compiler: Handle SGT and SLE at the beginning of loops.Tom Stellard
2010-06-11r300/compiler: Verify assumptions about opcode types.Tom Stellard
2010-06-11r300/compiler: Unroll loops that decrement the counter.Tom Stellard
e.g. for(i=10; i>0; i--)
2010-06-11r300/compiler: Unroll loops that have a constant number of iterations.Tom Stellard
This only works with for loops that increment the counter. e.g. for(i=0; i<10; i++)
2010-06-11r300/compiler: Implement simple loop emulationTom Stellard
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.