summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
diff options
context:
space:
mode:
authorTom Stellard <tstellar@gmail.com>2010-05-27 17:14:51 -0700
committerMarek Olšák <maraeo@gmail.com>2010-06-11 22:06:58 +0200
commit622fd4d061678027d5de2c84d1c07370830c4264 (patch)
tree15eb6911bed9f7be4f66b0245962c213c9b47b9a /src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
parent108264e859b4f435e9608472dc2e388aa200183c (diff)
r300/compiler: Implement simple loop emulation
The loop emulation unrolls loops as may times as possbile while still keeping the shader program below the maximum instruction limit. At this point, there are no checks for constant conditionals. This is only enabled for fragment shaders.
Diffstat (limited to 'src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c')
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
index d593b3e81a..1dc16855dc 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c
@@ -368,6 +368,24 @@ struct rc_opcode_info rc_opcodes[MAX_RC_OPCODE] = {
.NumSrcRegs = 0
},
{
+ .Opcode = RC_OPCODE_BGNLOOP,
+ .Name = "BGNLOOP",
+ .IsFlowControl = 1,
+ .NumSrcRegs = 0
+ },
+ {
+ .Opcode = RC_OPCODE_BRK,
+ .Name = "BRK",
+ .IsFlowControl = 1,
+ .NumSrcRegs = 0
+ },
+ {
+ .Opcode = RC_OPCODE_ENDLOOP,
+ .Name = "ENDLOOP",
+ .IsFlowControl = 1,
+ .NumSrcRegs = 0,
+ },
+ {
.Opcode = RC_OPCODE_REPL_ALPHA,
.Name = "REPL_ALPHA",
.HasDstReg = 1