diff options
author | Corbin Simpson <[email protected]> | 2009-02-23 04:25:29 -0800 |
---|---|---|
committer | Corbin Simpson <[email protected]> | 2009-02-23 04:37:58 -0800 |
commit | f72e77791116eda427438f9d9e895de71123c334 (patch) | |
tree | da9841f8e3a4e4b66aa4cc5471b5a3c5ef6ad634 /src/gallium | |
parent | 763714d9009147478ab8265390678f91af70f952 (diff) |
r300-gallium: Decode passthrough shader for r300.
Looks pretty sane.
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/r300/r300_reg.h | 15 | ||||
-rw-r--r-- | src/gallium/drivers/r300/r300_state_shader.h | 17 |
2 files changed, 26 insertions, 6 deletions
diff --git a/src/gallium/drivers/r300/r300_reg.h b/src/gallium/drivers/r300/r300_reg.h index be26b13b0b0..8888b39a2f9 100644 --- a/src/gallium/drivers/r300/r300_reg.h +++ b/src/gallium/drivers/r300/r300_reg.h @@ -1796,6 +1796,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_ALU_DSTC_OUTPUT_X (1 << 26) # define R300_ALU_DSTC_OUTPUT_Y (1 << 27) # define R300_ALU_DSTC_OUTPUT_Z (1 << 28) +# define R300_ALU_DSTC_OUTPUT_XYZ (7 << 26) +# define R300_RGB_ADDR0(x) ((x) << 0) +# define R300_RGB_ADDR1(x) ((x) << 6) +# define R300_RGB_ADDR2(x) ((x) << 12) #define R300_US_ALU_ALPHA_ADDR_0 0x47C0 # define R300_ALU_SRC0A_SHIFT 0 @@ -1813,6 +1817,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_ALU_DSTA_REG (1 << 23) # define R300_ALU_DSTA_OUTPUT (1 << 24) # define R300_ALU_DSTA_DEPTH (1 << 27) +# define R300_ALPHA_ADDR0(x) ((x) << 0) +# define R300_ALPHA_ADDR1(x) ((x) << 6) +# define R300_ALPHA_ADDR2(x) ((x) << 12) #define R300_US_ALU_RGB_INST_0 0x48C0 # define R300_ALU_ARGC_SRC0C_XYZ 0 @@ -1847,6 +1854,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_ALU_ARGC_SRC0CA_WZY 29 # define R300_ALU_ARGC_SRC1CA_WZY 30 # define R300_ALU_ARGC_SRC2CA_WZY 31 +# define R300_RGB_SWIZA(x) ((x) << 0) +# define R300_RGB_SWIZB(x) ((x) << 7) +# define R300_RGB_SWIZC(x) ((x) << 14) # define R300_ALU_ARG0C_SHIFT 0 # define R300_ALU_ARG0C_MASK (31 << 0) @@ -1910,10 +1920,13 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_ALU_ARGA_SRCP_Y 13 # define R300_ALU_ARGA_SRCP_Z 14 # define R300_ALU_ARGA_SRCP_W 15 - # define R300_ALU_ARGA_ZERO 16 # define R300_ALU_ARGA_ONE 17 # define R300_ALU_ARGA_HALF 18 +# define R300_ALPHA_SWIZA(x) ((x) << 0) +# define R300_ALPHA_SWIZB(x) ((x) << 7) +# define R300_ALPHA_SWIZC(x) ((x) << 14) + # define R300_ALU_ARG0A_SHIFT 0 # define R300_ALU_ARG0A_MASK (31 << 0) # define R300_ALU_ARG0A_NOP (0 << 5) diff --git a/src/gallium/drivers/r300/r300_state_shader.h b/src/gallium/drivers/r300/r300_state_shader.h index 1d5d9ee943b..73025b2dcc4 100644 --- a/src/gallium/drivers/r300/r300_state_shader.h +++ b/src/gallium/drivers/r300/r300_state_shader.h @@ -47,11 +47,18 @@ static const struct r300_fragment_shader r300_passthrough_fragment_shader = { .indirections = 1, .shader.stack_size = 2, - /* XXX decode these */ - .instructions[0].alu_rgb_inst = 0x50A80, - .instructions[0].alu_rgb_inst = 0x1C000000, - .instructions[0].alu_alpha_inst = 0x40889, - .instructions[0].alu_alpha_inst = 0x1000000, + .instructions[0].alu_rgb_inst = R300_RGB_SWIZA(R300_ALU_ARGC_SRC0C_XYZ) | + R300_RGB_SWIZB(R300_ALU_ARGC_ONE) | + R300_RGB_SWIZC(R300_ALU_ARGC_ZERO) | + R300_ALU_OUTC_MAD, + .instructions[0].alu_rgb_addr = R300_RGB_ADDR0(0) | R300_RGB_ADDR1(0) | + R300_RGB_ADDR2(0) | R300_ALU_DSTC_OUTPUT_XYZ, + .instructions[0].alu_alpha_inst = R300_ALPHA_SWIZA(R300_ALU_ARGA_SRC0A) | + R300_ALPHA_SWIZB(R300_ALU_ARGA_ONE) | + R300_ALPHA_SWIZC(R300_ALU_ARGA_ZERO) | + R300_ALU_OUTA_MAD, + .instructions[0].alu_alpha_addr = R300_ALPHA_ADDR0(0) | + R300_ALPHA_ADDR1(0) | R300_ALPHA_ADDR2(0) | R300_ALU_DSTA_OUTPUT, }; static const struct r500_fragment_shader r500_passthrough_fragment_shader = { |