summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/tgsi/exec/tgsi_exec.c
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2007-10-26 12:20:17 -0600
committerBrian <brian.paul@tungstengraphics.com>2007-10-26 13:10:37 -0600
commit6b30f3888e46c3981f1e4fc34c155c7539275420 (patch)
treeeefd579e38e123270b3b24d91a9d61453ec9cf0a /src/mesa/pipe/tgsi/exec/tgsi_exec.c
parent67e4b8299620db2e2f33795621b23e9827604bb1 (diff)
Initial support for immediate values in TGSI programs.
These can be evaluated at compile time. Code disabled pending clarifications of TGSI immediate data structures.
Diffstat (limited to 'src/mesa/pipe/tgsi/exec/tgsi_exec.c')
-rw-r--r--src/mesa/pipe/tgsi/exec/tgsi_exec.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mesa/pipe/tgsi/exec/tgsi_exec.c b/src/mesa/pipe/tgsi/exec/tgsi_exec.c
index 3f464372ca..42aed9bd6b 100644
--- a/src/mesa/pipe/tgsi/exec/tgsi_exec.c
+++ b/src/mesa/pipe/tgsi/exec/tgsi_exec.c
@@ -170,6 +170,7 @@ tgsi_exec_prepare( struct tgsi_exec_machine *mach )
break;
case TGSI_TOKEN_TYPE_IMMEDIATE:
+#if 0
assert( (parse.FullToken.FullImmediate.Immediate.Size - 1) % 4 == 0 );
assert( mach->ImmLimit + (parse.FullToken.FullImmediate.Immediate.Size - 1) / 4 <= 256 );
@@ -177,6 +178,16 @@ tgsi_exec_prepare( struct tgsi_exec_machine *mach )
mach->Imms[mach->ImmLimit + i / 4][i % 4] = parse.FullToken.FullImmediate.u.ImmediateFloat32[i].Float;
}
mach->ImmLimit += (parse.FullToken.FullImmediate.Immediate.Size - 1) / 4;
+#else
+ /* Add this immediate value (vector of 1,2,3,4 floats) to immediates array */
+ assert( parse.FullToken.FullImmediate.Immediate.Size <= 4 );
+ assert( mach->ImmLimit < TGSI_EXEC_NUM_IMMEDIATES );
+
+ for( i = 0; i < parse.FullToken.FullImmediate.Immediate.Size; i++ ) {
+ mach->Imms[mach->ImmLimit][i] = parse.FullToken.FullImmediate.u.ImmediateFloat32[i].Float;
+ }
+ mach->ImmLimit++;
+#endif
break;
case TGSI_TOKEN_TYPE_INSTRUCTION: