#include "brw_context.h"
#include "brw_eu.h"
-#include "shader/program.h"
struct brw_vs_prog_key {
GLuint nr_userclip:4;
GLuint copy_edgeflag:1;
GLuint pad:26;
+ struct brw_fs_signature fs_signature;
};
+#define brw_vs_prog_key_size(s) (offsetof(struct brw_vs_prog_key, fs_signature) + \
+ brw_fs_signature_size(&(s)->fs_signature))
+
+
+#define MAX_IF_DEPTH 32
+#define MAX_LOOP_DEPTH 32
struct brw_vs_compile {
struct brw_compile func;
struct brw_vs_prog_key key;
struct brw_vs_prog_data prog_data;
+ struct brw_chipset chipset;
- struct brw_vertex_program *vp;
+ struct brw_vertex_shader *vp;
GLuint nr_inputs;
-
- GLuint first_output;
GLuint nr_outputs;
- GLuint first_overflow_output; /**< VERT_ATTRIB_x */
+ GLuint nr_immediates;
+ GLfloat immediate[128][4];
+
+ GLboolean copy_edgeflag;
+
+ GLuint overflow_grf_start;
+ GLuint overflow_count;
GLuint first_tmp;
GLuint last_tmp;
struct brw_reg r0;
struct brw_reg r1;
- struct brw_reg regs[PROGRAM_ADDRESS+1][128];
+ struct brw_reg regs[TGSI_FILE_COUNT][128];
struct brw_reg tmp;
struct brw_reg stack;
GLint index;
struct brw_reg reg;
} current_const[3];
+
+ struct brw_instruction *if_inst[MAX_IF_DEPTH];
+ struct brw_instruction *loop_inst[MAX_LOOP_DEPTH];
+ GLuint insn;
+ GLuint if_depth;
+ GLuint loop_depth;
+ GLuint end_offset;
+
+ struct brw_indirect stack_index;
};
+
void brw_vs_emit( struct brw_vs_compile *c );
#endif