Age | Commit message (Collapse) | Author | |
---|---|---|---|
2010-09-04 | r300/compiler: allocate at least FS inputs if register allocation is disabled | Marek Olšák | |
2010-09-04 | r300g: add a new debug option which disables compiler optimizations | Marek Olšák | |
Those are: - dead-code elimination - constant folding - peephole (mainly copy propagation) - register allocation There are some bugs which I need to track down. Also fix up the descriptions of all the debug options. | |||
2010-09-04 | r300/compiler: refactor fragment shader compilation | Marek Olšák | |
This cleans up the mess in r3xx_compile_fragment_program. | |||
2010-09-04 | r300/compiler: refactor vertex shader compilation | Marek 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-04 | r300/compiler: remove a redundant parameter in rc_pair_regalloc | Marek Olšák | |
2010-09-04 | r300/compiler: remove a redundant parameter in rc_dataflow_deadcode | Marek Olšák | |
&c->Base == c. | |||
2010-09-04 | r300/compiler: use null-terminated array of transformation functions | Marek Olšák | |
I need to reduce the number of parameters of each compiler pass function. This is part of a larger cleanup. | |||
2010-09-04 | r300/compiler: add new compiler parameter max_alu_insts | Marek Olšák | |
2010-09-04 | r300/compiler: put emulate_loop_state in radeon_compiler | Marek Olšák | |
2010-08-25 | r300/compiler: implement elimination of unused constants | Marek Olšák | |
Wine likes to create a *lot* of constants, exceeding the size of the constant file in hw. | |||
2010-08-25 | r300/compiler: fail to compile if we hit hw limits or an unimplemented feature | Marek Olšák | |
i.e. relative addressing (mainly FS), saturate modifiers, exceeding the maximum number of constants. | |||
2010-08-10 | r300/compiler: Implement hardware assisted loops for vertex shaders. | Tom Stellard | |
Single loops work, but nested loops do not. | |||
2010-08-03 | r300/compiler: Always unroll loops when doing loop emulation. | Tom Stellard | |
2010-08-03 | r300/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-07-08 | r300/compiler: Add a register rename pass. | Tom Stellard | |
This pass renames register in order to make it easier for the pair scheduler to group TEX instructions together. This fixes fdo bug #28606 | |||
2010-07-06 | r300/compiler: Implement KILP opcode. | Tom Stellard | |
Signed-off-by: Marek Olšák <maraeo@gmail.com> | |||
2010-07-03 | r300/compiler: Use hardware flow control instructions for loops on r500. | Tom Stellard | |
2010-07-03 | r300/compiler: Enable hardware IF statements for r500 cards. | Tom Stellard | |
2010-07-03 | r300/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-23 | r300/compiler: emulate loops in vertex shaders | Marek Olšák | |
It is not perfect, but it is the best we got. | |||
2010-06-11 | r300/compiler: Implement simple loop emulation | Tom 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. | |||
2010-05-26 | r300/compiler: move hardware caps to the radeon_compiler base struct | Marek Olšák | |
Needed for vertex shaders too. | |||
2010-05-16 | r300/compiler: Implement simple peephole optimizer | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2010-04-19 | r300/compiler: enable branch emulation for R500 fragment programs | Marek Olšák | |
2010-04-19 | r300/compiler: Implement branch emulation for R300 fragment programs | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2010-04-16 | r300/compiler: Oops, this slipped through. | Corbin Simpson | |
2010-04-16 | r300/compiler: Split off texture fixes to their own file. | Corbin Simpson | |
Yes, I'm fully aware this generates subpar code on r500. | |||
2010-04-12 | r300/compiler: Hax around instructions limits in mirroring code. | Corbin Simpson | |
Stuff's starting to show up in arbnpot. | |||
2010-04-05 | r300/compiler: make the max number of fragment shader temporaries adjustable | Marek Olšák | |
2010-02-02 | r300compiler, r300 classic, r300g: Add support for MRTs in the frag shader. | Corbin Simpson | |
This maybe breaks the vert compiler. Hopefully not. | |||
2009-10-04 | r300/compiler: Refactor the radeon_pair code to support control flow ↵ | Nicolai Hähnle | |
instructions Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-10-04 | r300/compiler: Refactor to allow different instruction types | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-10-04 | r300/compiler: Introduce aluresult register for branch operation support | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-10-03 | r300/compiler: Introduce control flow instructions and refactor dataflow | Nicolai Hähnle | |
Note that control flow instruction support isn't actually fully functional yet. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-09-06 | r300/compiler: New dataflow structures and passes | Nicolai Hähnle | |
This replaces the old NQSSADCE code with the same functionality, but quite different design. Instead of doing a single integerated pass, we now build explicit data structures representing the dataflow. This will enable analysis of flow control instruction, and could potentially open an avenue for several dataflow based optimizations, such as peephole optimization, fusing MUL+ADD to MAD, and so on. | |||
2009-08-30 | r300: Remove all Mesa dependencies from the shader compiler | Nicolai Hähnle | |
In particular, this removes the dependency on prog_instruction, which unfortunately creates some code duplication, but also opens a path towards adding some hardware-specific things in there. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-08-27 | r300: Debug messages are written to stderr, so fflush that | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/fragprog: Move some of the attribute handling out of the compiler | Nicolai Hähnle | |
Attribute indices will probably be different in Gallium, so make the compiler independent of magic values. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/fragprog: Finally get rid of the duplicate program copy | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/fragprog: Refactor wpos rewrite to use rc_program | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/compiler: Refactor fragment program fog rewrite to use rc_program | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/compiler: Refactor rewrite_depth_out to use rc_program | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/compiler: Refactor local transforms to use rc_program | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300: Allow compiler to add constants in a cleaner way | Nicolai Hähnle | |
Adding constants is used in a number of non-native instruction rewrites, and it required us to keep copies of modified gl_programs around. This is a first step towards ending this. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/compiler: Refactor nqssadce to use rc_program | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300/compiler: Lay groundwork for better error handling | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300: Introduce rc_program and use it in radeon_pair | Nicolai Hähnle | |
The goal is to convert both Mesa and TGSI programs into an intermediate format that happens to be convenient for us. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300: Add radeon_compiler as a base for compilation-related tasks | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300: Remove GLcontext requirement from radeonLocalTransform | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> | |||
2009-07-27 | r300: Remove GLcontext requirement from radeon_nqssadce | Nicolai Hähnle | |
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com> |