summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/tgsi/core/tgsi_exec.h
diff options
context:
space:
mode:
authormichal <michal@michal-laptop.(none)>2007-08-07 15:34:11 +0100
committermichal <michal@michal-laptop.(none)>2007-08-07 15:34:46 +0100
commit4a470f63c9c3f5aeef1e10ae42eee24c772f74fc (patch)
treea5a1ee000d1fca4a865beb61f7e7ac2f8bf9ffb7 /src/mesa/pipe/tgsi/core/tgsi_exec.h
parentadf5560ea5f6955425939df7e75ce9d11ea36511 (diff)
Naive implementation of IF/ELSE/ENDIF.
Handle TGSI labels correctly. Enhance MESA opcode info queries.
Diffstat (limited to 'src/mesa/pipe/tgsi/core/tgsi_exec.h')
-rw-r--r--src/mesa/pipe/tgsi/core/tgsi_exec.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mesa/pipe/tgsi/core/tgsi_exec.h b/src/mesa/pipe/tgsi/core/tgsi_exec.h
index d2ff40cabb..b92d1b5918 100644
--- a/src/mesa/pipe/tgsi/core/tgsi_exec.h
+++ b/src/mesa/pipe/tgsi/core/tgsi_exec.h
@@ -85,6 +85,29 @@ struct tgsi_exec_labels
#define TGSI_EXEC_NUM_TEMPS (32 + 4)
#define TGSI_EXEC_NUM_ADDRS 1
+/* XXX: This is temporary */
+struct tgsi_exec_cond_regs
+{
+ struct tgsi_exec_vector TempsAddrs[TGSI_EXEC_NUM_TEMPS + TGSI_EXEC_NUM_ADDRS];
+ struct tgsi_exec_vector Outputs[2]; /* XXX: That's just enough for fragment shader only! */
+};
+
+/* XXX: This is temporary */
+struct tgsi_exec_cond_state
+{
+ struct tgsi_exec_cond_regs IfPortion;
+ struct tgsi_exec_cond_regs ElsePortion;
+ GLuint Condition;
+ GLboolean WasElse;
+};
+
+/* XXX: This is temporary */
+struct tgsi_exec_cond_stack
+{
+ struct tgsi_exec_cond_state States[8];
+ GLuint Index; /* into States[] */
+};
+
struct tgsi_exec_machine
{
/*
@@ -112,6 +135,8 @@ struct tgsi_exec_machine
GLuint Processor;
GLuint *Primitives;
+
+ struct tgsi_exec_cond_stack CondStack;
#if XXX_SSE
struct x86_function Function;
#endif