diff options
author | Brian Paul <[email protected]> | 2009-09-10 12:44:28 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-09-10 12:45:27 -0600 |
commit | d78a19612173eda51b93818a16a947201a785f3f (patch) | |
tree | 992fc82acbee789de3c104a040b00397fc71bd35 /src/gallium/auxiliary/tgsi/tgsi_exec.h | |
parent | c5f8594aebac4b8ba972d09ab18dabd9cc47c8e9 (diff) |
tgsi: use new tgsi_call_record to handle execution mask stacks
This fixes some issues when "return"ing from nested loops/conditionals.
Diffstat (limited to 'src/gallium/auxiliary/tgsi/tgsi_exec.h')
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_exec.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h index 3baa94dbdde..c72f76809d4 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h @@ -186,6 +186,17 @@ struct tgsi_exec_labels */ #define TGSI_EXEC_MAX_CONST_BUFFER 4096 + +/** function call/activation record */ +struct tgsi_call_record +{ + uint CondStackTop; + uint LoopStackTop; + uint ContStackTop; + uint ReturnAddr; +}; + + /** * Run-time virtual machine state for executing TGSI shader. */ @@ -249,7 +260,7 @@ struct tgsi_exec_machine int FuncStackTop; /** Function call stack for saving/restoring the program counter */ - uint CallStack[TGSI_EXEC_MAX_CALL_NESTING]; + struct tgsi_call_record CallStack[TGSI_EXEC_MAX_CALL_NESTING]; int CallStackTop; struct tgsi_full_instruction *Instructions; |