diff options
author | Tom Stellard <[email protected]> | 2012-09-17 14:33:56 +0000 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2012-09-19 14:58:53 -0400 |
commit | 810345492eca34c2ad12728b5491a4691cc62ec2 (patch) | |
tree | 6271c62e268bbb51c4bd0b26469c08a78b5f843c /src/gallium/drivers/r600/r600_shader.c | |
parent | 3e3ca9271887ea4c8d3312d8943aefcd5e1893e0 (diff) |
r600g: Use LOOP_START_DX10 for loops
LOOP_START_DX10 ignores the LOOP_CONFIG* registers, so it is not limited
to 4096 iterations like the other LOOP_* instructions. Compute shaders
need to use this instruction, and since we aren't optimizing loops with
the LOOP_CONFIG* registers for pixel and vertex shaders, it seems like
we should just use it for everything.
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 3e746e5e2e2..8288c040a63 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -5101,7 +5101,9 @@ static int tgsi_endif(struct r600_shader_ctx *ctx) static int tgsi_bgnloop(struct r600_shader_ctx *ctx) { - r600_bytecode_add_cfinst(ctx->bc, CTX_INST(V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_NO_AL)); + /* LOOP_START_DX10 ignores the LOOP_CONFIG* registers, so it is not + * limited to 4096 iterations, like the other LOOP_* instructions. */ + r600_bytecode_add_cfinst(ctx->bc, CTX_INST(V_SQ_CF_WORD1_SQ_CF_INST_LOOP_START_DX10)); fc_pushlevel(ctx, FC_LOOP); |