From 625b0fe2684de462d1e7ea7fc8fcdfc8e3283949 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 17 Jun 2009 13:48:52 -0600 Subject: Revert "slang: if/else/break & if/else/continue work for unrolled loops" We should just check if the loop contains a continue/break in the _slang_can_unroll_for_loop() test function... This reverts commit 989856bde47d699d7e18798df4013fbf962e1d4b. Conflicts: src/mesa/shader/slang/slang_codegen.h --- src/mesa/shader/slang/slang_codegen.h | 1 - 1 file changed, 1 deletion(-) (limited to 'src/mesa/shader/slang/slang_codegen.h') diff --git a/src/mesa/shader/slang/slang_codegen.h b/src/mesa/shader/slang/slang_codegen.h index d80013ad34..ce6cc7cb8f 100644 --- a/src/mesa/shader/slang/slang_codegen.h +++ b/src/mesa/shader/slang/slang_codegen.h @@ -42,7 +42,6 @@ typedef struct slang_assemble_ctx_ struct slang_label_ *curFuncEndLabel; struct slang_ir_node_ *CurLoop; struct slang_function_ *CurFunction; - GLuint UnrollLoop; GLboolean UnresolvedRefs; } slang_assemble_ctx; -- cgit v1.2.3 From c20bb48d3a897fd616bf4c7d4eb67ea34475985d Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 18 Jun 2009 14:11:38 -0600 Subject: glsl: added slang_assemble_ctx::EmitContReturn field, init --- src/mesa/shader/slang/slang_codegen.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/shader/slang/slang_codegen.h') diff --git a/src/mesa/shader/slang/slang_codegen.h b/src/mesa/shader/slang/slang_codegen.h index ce6cc7cb8f..bb736585aa 100644 --- a/src/mesa/shader/slang/slang_codegen.h +++ b/src/mesa/shader/slang/slang_codegen.h @@ -43,6 +43,7 @@ typedef struct slang_assemble_ctx_ struct slang_ir_node_ *CurLoop; struct slang_function_ *CurFunction; GLboolean UnresolvedRefs; + GLboolean EmitContReturn; } slang_assemble_ctx; -- cgit v1.2.3 From 2102e301a7f218c26878deaed2d94c15cd53f292 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 23 Jun 2009 13:33:28 -0600 Subject: glsl: fix a bug involving 'continue' in 'for' loops Need to execute the for loop's increment code before we continue. Add a slang_assemble_ctx::CurLoopOper field to keep track of the containing loop and avoid the "cont if true" path in this situation. Plus, assorted clean-ups. --- src/mesa/shader/slang/slang_codegen.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/shader/slang/slang_codegen.h') diff --git a/src/mesa/shader/slang/slang_codegen.h b/src/mesa/shader/slang/slang_codegen.h index bb736585aa..64418d527b 100644 --- a/src/mesa/shader/slang/slang_codegen.h +++ b/src/mesa/shader/slang/slang_codegen.h @@ -40,6 +40,7 @@ typedef struct slang_assemble_ctx_ slang_var_table *vartable; slang_info_log *log; struct slang_label_ *curFuncEndLabel; + const slang_operation *CurLoopOper; struct slang_ir_node_ *CurLoop; struct slang_function_ *CurFunction; GLboolean UnresolvedRefs; -- cgit v1.2.3 From f652f15e6dad86bfc7a027978a9b67d00202259c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 25 Jun 2009 09:50:37 -0600 Subject: glsl: rework loop nesting code --- src/mesa/shader/slang/slang_codegen.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/mesa/shader/slang/slang_codegen.h') diff --git a/src/mesa/shader/slang/slang_codegen.h b/src/mesa/shader/slang/slang_codegen.h index 64418d527b..fb4fe64ace 100644 --- a/src/mesa/shader/slang/slang_codegen.h +++ b/src/mesa/shader/slang/slang_codegen.h @@ -31,6 +31,9 @@ #include "slang_compile.h" +#define MAX_LOOP_DEPTH 30 + + typedef struct slang_assemble_ctx_ { slang_atom_pool *atoms; @@ -40,8 +43,11 @@ typedef struct slang_assemble_ctx_ slang_var_table *vartable; slang_info_log *log; struct slang_label_ *curFuncEndLabel; - const slang_operation *CurLoopOper; - struct slang_ir_node_ *CurLoop; + + const slang_operation *LoopOperStack[MAX_LOOP_DEPTH]; + struct slang_ir_node_ *LoopIRStack[MAX_LOOP_DEPTH]; + GLuint LoopDepth; + struct slang_function_ *CurFunction; GLboolean UnresolvedRefs; GLboolean EmitContReturn; -- cgit v1.2.3 From ddf64be2587024e5cc36cf623c544f7ef926755a Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 25 Jun 2009 10:20:21 -0600 Subject: glsl: comments, field reordering --- src/mesa/shader/slang/slang_codegen.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/mesa/shader/slang/slang_codegen.h') diff --git a/src/mesa/shader/slang/slang_codegen.h b/src/mesa/shader/slang/slang_codegen.h index fb4fe64ace..2b55b52121 100644 --- a/src/mesa/shader/slang/slang_codegen.h +++ b/src/mesa/shader/slang/slang_codegen.h @@ -42,13 +42,16 @@ typedef struct slang_assemble_ctx_ struct gl_sl_pragmas *pragmas; slang_var_table *vartable; slang_info_log *log; - struct slang_label_ *curFuncEndLabel; + /* current loop stack */ const slang_operation *LoopOperStack[MAX_LOOP_DEPTH]; struct slang_ir_node_ *LoopIRStack[MAX_LOOP_DEPTH]; GLuint LoopDepth; + /* current function */ struct slang_function_ *CurFunction; + struct slang_label_ *curFuncEndLabel; + GLboolean UnresolvedRefs; GLboolean EmitContReturn; } slang_assemble_ctx; -- cgit v1.2.3 From 2ae297c318faf29219ae00778d6bd115735a2f27 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 25 Jun 2009 11:12:26 -0600 Subject: glsl: fix assorted regressions related to early-return-removal --- src/mesa/shader/slang/slang_codegen.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mesa/shader/slang/slang_codegen.h') diff --git a/src/mesa/shader/slang/slang_codegen.h b/src/mesa/shader/slang/slang_codegen.h index 2b55b52121..ee3be55a45 100644 --- a/src/mesa/shader/slang/slang_codegen.h +++ b/src/mesa/shader/slang/slang_codegen.h @@ -51,6 +51,7 @@ typedef struct slang_assemble_ctx_ /* current function */ struct slang_function_ *CurFunction; struct slang_label_ *curFuncEndLabel; + GLboolean UseReturnFlag; GLboolean UnresolvedRefs; GLboolean EmitContReturn; -- cgit v1.2.3