diff options
author | Kenneth Graunke <[email protected]> | 2011-05-16 12:25:18 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2011-05-17 23:32:58 -0700 |
commit | 5936d96d33e767aa99f6afa92f2a6582ff04df23 (patch) | |
tree | aad8e0136c88b5f574d984ec8ae8e159980894b8 /src/mesa/drivers/dri/i965/brw_eu.h | |
parent | 774fb90db3e83d5e7326b7a72e05ce805c306b24 (diff) |
i965: Move IF stack handling into the EU abstraction layer/brw_compile.
This hides the IF stack and back-patching of IF/ELSE instructions from
each of the code generators, greatly simplifying the interface.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_eu.h')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_eu.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index a0ac17ac30c..72d50eadbce 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -117,6 +117,14 @@ struct brw_compile { bool compressed; struct brw_context *brw; + /* Control flow stacks: + * - if_stack contains IF and ELSE instructions which must be patched + * (and popped) once the matching ENDIF instruction is encountered. + */ + struct brw_instruction **if_stack; + int if_stack_depth; + int if_stack_array_size; + struct brw_glsl_label *first_label; /**< linked list of labels */ struct brw_glsl_call *first_call; /**< linked list of CALs */ }; @@ -953,12 +961,8 @@ struct brw_instruction *brw_IF(struct brw_compile *p, struct brw_instruction *gen6_IF(struct brw_compile *p, uint32_t conditional, struct brw_reg src0, struct brw_reg src1); -struct brw_instruction *brw_ELSE(struct brw_compile *p, - struct brw_instruction *if_insn); - -void brw_ENDIF(struct brw_compile *p, - struct brw_instruction *if_or_else_insn); - +void brw_ELSE(struct brw_compile *p); +void brw_ENDIF(struct brw_compile *p); /* DO/WHILE loops: */ |