mesa: adjust BRK/CONT BranchTarget to always point to ENDLOOP instruction
[mesa.git] / src / mesa / shader / slang / slang_codegen.h
index 042737b2b5cc8703f97e8ca3713e703b5a2718ea..ee3be55a459a8e47c05686b0b7eeb131d3e4dff8 100644 (file)
 #define SLANG_CODEGEN_H
 
 
-#include "imports.h"
+#include "main/imports.h"
 #include "slang_compile.h"
-#include "slang_ir.h"
 
 
-extern struct slang_ir_node_ *
+#define MAX_LOOP_DEPTH 30
+
+
+typedef struct slang_assemble_ctx_
+{
+   slang_atom_pool *atoms;
+   slang_name_space space;
+   struct gl_program *program;
+   struct gl_sl_pragmas *pragmas;
+   slang_var_table *vartable;
+   slang_info_log *log;
+
+   /* 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 UseReturnFlag;
+
+   GLboolean UnresolvedRefs;
+   GLboolean EmitContReturn;
+} slang_assemble_ctx;
+
+
+extern GLuint
+_slang_sizeof_type_specifier(const slang_type_specifier *spec);
+
+extern GLboolean
 _slang_codegen_function(slang_assemble_ctx *A , struct slang_function_ *fun);
 
+extern GLboolean
+_slang_codegen_global_variable(slang_assemble_ctx *A, slang_variable *var,
+                               slang_unit_type type);
+
 
 #endif /* SLANG_CODEGEN_H */