diff options
author | Bas Nieuwenhuizen <[email protected]> | 2010-08-29 11:19:22 +0200 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2010-08-30 09:41:02 +1000 |
commit | e77b1e777d585254db62e872a74e23351bb36f85 (patch) | |
tree | a9d275241c3afa33bc02630eb1fb92d408bb35b8 /src/gallium/drivers/r600/r600_shader.c | |
parent | b3d41844c7704a4b937f4eb5925e71f35547cd4a (diff) |
r600g: added literals where needed for POW instruction
Fixes size calculation for the bytecode buffer.
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index ebcf19c12b1..bf5f28fd9c2 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -1071,6 +1071,9 @@ static int tgsi_pow(struct r600_shader_ctx *ctx) r = r600_bc_add_alu(ctx->bc, &alu); if (r) return r; + r = r600_bc_add_literal(ctx->bc,ctx->value); + if (r) + return r; /* b * LOG2(a) */ memset(&alu, 0, sizeof(struct r600_bc_alu)); alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MUL_IEEE; @@ -1085,6 +1088,9 @@ static int tgsi_pow(struct r600_shader_ctx *ctx) r = r600_bc_add_alu(ctx->bc, &alu); if (r) return r; + r = r600_bc_add_literal(ctx->bc,ctx->value); + if (r) + return r; /* POW(a,b) = EXP2(b * LOG2(a))*/ memset(&alu, 0, sizeof(struct r600_bc_alu)); alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_EXP_IEEE; @@ -1095,6 +1101,9 @@ static int tgsi_pow(struct r600_shader_ctx *ctx) r = r600_bc_add_alu(ctx->bc, &alu); if (r) return r; + r = r600_bc_add_literal(ctx->bc,ctx->value); + if (r) + return r; return tgsi_helper_tempx_replicate(ctx); } |