r600g: make LIT work properly

this is a bit of a workaround, something is wrong with the literal emits here
so we just use the trig copy function to copy the immd to a temp at start of op.

fix VP/FP LIT tests
This commit is contained in:
Dave Airlie 2010-08-31 11:57:04 +10:00
parent 24ff42e7d5
commit d3fa92584b
1 changed files with 3 additions and 8 deletions

View File

@ -1026,6 +1026,9 @@ static int tgsi_lit(struct r600_shader_ctx *ctx)
int r;
r = tgsi_split_constant(ctx, r600_src);
if (r)
return r;
r = tgsi_split_literal_constant(ctx, r600_src);
if (r)
return r;
@ -1056,14 +1059,6 @@ static int tgsi_lit(struct r600_shader_ctx *ctx)
if (r)
return r;
/* dst.z = NOP - fill Z slot */
memset(&alu, 0, sizeof(struct r600_bc_alu));
alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_NOP;
alu.dst.chan = 2;
r = r600_bc_add_alu(ctx->bc, &alu);
if (r)
return r;
/* dst.w, <- 1.0 */
memset(&alu, 0, sizeof(struct r600_bc_alu));
alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV;