summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c
AgeCommit message (Collapse)Author
2011-03-12r300/compiler: Abs doesn't cancel Negate (in the conversion to native swizzles)Marek Olšák
NOTE: This is a candidate for the 7.9 and 7.10 branches.
2011-01-29r300/compiler: Standardize the number of bits used by swizzle fieldsTom Stellard
Swizzles are now defined everywhere as a field with 12 bits that contains 4 channels worth of meaningful information. Any channel that is unused is set to RC_SWIZZLE_UNUSED. This change is necessary because rgb instructions and alpha instructions were initializing channels that would never be used (channel 3 for rgb and channels 1-3 for alpha) with 0 (aka RC_SWIZZLE_X). This made it impossible to use generic helper functions for swizzles, because sometimes a channel value of 0 meant unused and other times it meant RC_SWIZZLE_X. All hacks that tried to guess how many channels were relevant have also been removed.
2010-11-21r300/compiler: Make sure presubtract sources use supported swizzlesTom Stellard
NOTE: This is a candidate for the 7.9 branch.
2010-09-29r300/compiler: Remove declaration before code.Vinson Lee
Fixes these GCC warnings on linux-x86 build. r300_fragprog_swizzle.c: In function ‘r300_swizzle_is_native’: r300_fragprog_swizzle.c:120: warning: ISO C90 forbids mixed declarations and code r300_fragprog_swizzle.c: In function ‘r300_swizzle_split’: r300_fragprog_swizzle.c:159: warning: ISO C90 forbids mixed declarations and code
2010-09-10r300/compiler: Enable presubtract sourcesTom Stellard
The r300 compiler can now emit instructions that select from the presubtract source. A peephole optimization has been added to convert instructions like: ADD Temp[0].x, none.1, -Temp[1].x into the INV (1 - src0) presubtract operation.
2010-05-19r300/compiler: Emit 0.5 swizzle when necessary.Tom Stellard
Signed-off-by: Marek Olšák <maraeo@gmail.com>
2009-09-06r300/compiler: New dataflow structures and passesNicolai 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-30r300: Remove all Mesa dependencies from the shader compilerNicolai 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-07-27r300/compiler: Refactor nqssadce to use rc_programNicolai Hähnle
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
2009-07-27r300: Further reduce dependency between compiler and classic driverNicolai Hähnle
Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
2009-07-27r300: Detangle fragment program compiler from driver-specific structureNicolai Hähnle
This is in preparation of sharing the fragment program compiler with Gallium: Compiler code is moved into its own directory and modified so that it no longer depends on driver structures. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>