X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fgen6_gs_visitor.h;h=311cf06833ca30672a0d42fd069c81414fd9db90;hb=63c313de84afa9ee65f5d98e1c843ace3a5c9f21;hp=7af6405a28202295fb0ce00f4d5094afa8c15710;hpb=c091804f4cd282bfc03b02a7ef6c72e5f42f6c76;p=mesa.git diff --git a/src/mesa/drivers/dri/i965/gen6_gs_visitor.h b/src/mesa/drivers/dri/i965/gen6_gs_visitor.h index 7af6405a282..311cf06833c 100644 --- a/src/mesa/drivers/dri/i965/gen6_gs_visitor.h +++ b/src/mesa/drivers/dri/i965/gen6_gs_visitor.h @@ -35,30 +35,53 @@ namespace brw { class gen6_gs_visitor : public vec4_gs_visitor { public: - gen6_gs_visitor(struct brw_context *brw, + gen6_gs_visitor(const struct brw_compiler *comp, + void *log_data, struct brw_gs_compile *c, + struct brw_gs_prog_data *prog_data, struct gl_shader_program *prog, + const nir_shader *shader, void *mem_ctx, - bool no_spills) : - vec4_gs_visitor(brw, c, prog, mem_ctx, no_spills) {} + bool no_spills, + int shader_time_index) : + vec4_gs_visitor(comp, log_data, c, prog_data, shader, mem_ctx, no_spills, + shader_time_index), + shader_prog(prog) + { + } protected: virtual void emit_prolog(); virtual void emit_thread_end(); - virtual void visit(ir_emit_vertex *); - virtual void visit(ir_end_primitive *); + virtual void gs_emit_vertex(int stream_id); + virtual void gs_end_primitive(); virtual void emit_urb_write_header(int mrf); virtual void emit_urb_write_opcode(bool complete, int base_mrf, int last_mrf, int urb_offset); + virtual void setup_payload(); private: + void xfb_write(); + void xfb_program(unsigned vertex, unsigned num_verts); + void xfb_setup(); + int get_vertex_output_offset_for_varying(int vertex, int varying); + + const struct gl_shader_program *shader_prog; + src_reg vertex_output; src_reg vertex_output_offset; src_reg temp; src_reg first_vertex; src_reg prim_count; + src_reg primitive_id; + + /* Transform Feedback members */ + src_reg sol_prim_written; + src_reg svbi; + src_reg max_svbi; + src_reg destination_indices; }; } /* namespace brw */