vec4_gs_visitor::vec4_gs_visitor(const struct brw_compiler *compiler,
void *log_data,
struct brw_gs_compile *c,
- struct gl_shader_program *prog,
nir_shader *shader,
void *mem_ctx,
bool no_spills,
: vec4_visitor(compiler, log_data, &c->key.tex,
&c->prog_data.base, shader, mem_ctx,
no_spills, shader_time_index),
- shader_prog(prog),
c(c)
{
}
c->prog_data.base.dispatch_mode = DISPATCH_MODE_4X2_DUAL_OBJECT;
vec4_gs_visitor v(brw->intelScreen->compiler, brw,
- c, prog, shader->Program->nir,
+ c, shader->Program->nir,
mem_ctx, true /* no_spills */, st_index);
if (v.run()) {
return generate_assembly(brw, prog, &c->gp->program.Base,
if (brw->gen >= 7)
gs = new vec4_gs_visitor(brw->intelScreen->compiler, brw,
- c, prog, shader->Program->nir,
+ c, shader->Program->nir,
mem_ctx, false /* no_spills */,
st_index);
else
vec4_gs_visitor(const struct brw_compiler *compiler,
void *log_data,
struct brw_gs_compile *c,
- struct gl_shader_program *prog,
nir_shader *shader,
void *mem_ctx,
bool no_spills,
void emit_control_data_bits();
void set_stream_control_data_bits(unsigned stream_id);
- struct gl_shader_program *shader_prog;
-
src_reg vertex_count;
src_reg control_data_bits;
const struct brw_gs_compile * const c;
void *mem_ctx,
bool no_spills,
int shader_time_index) :
- vec4_gs_visitor(comp, log_data, c, prog, shader, mem_ctx, no_spills,
- shader_time_index) {}
+ vec4_gs_visitor(comp, log_data, c, shader, mem_ctx, no_spills,
+ shader_time_index),
+ shader_prog(prog)
+ {
+ }
protected:
virtual void emit_prolog();
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;