The vec4_visitor functions don't use any VS specific data from vec4_visitor::vp. So rename it to just "p" and change its type from struct gl_vertex_program * to struct gl_program *. This will allow the code to be re-used for geometry shaders. --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 7 +++---- src/mesa/drivers/dri/i965/brw_vec4.h | 2 +- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 8 ++++---- src/mesa/drivers/dri/i965/brw_vec4_vp.cpp | 6 +++--- 4 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index c58fb44..7eac6c9 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1363,8 +1363,7 @@ void vec4_visitor::emit_shader_time_write(enum shader_time_shader_type type, src_reg value) { - int shader_time_index = brw_get_shader_time_index(brw, prog, &vp->Base, - type); + int shader_time_index = brw_get_shader_time_index(brw, prog, p, type); dst_reg dst = dst_reg(this, glsl_type::get_array_instance(glsl_type::vec4_type, 2)); @@ -1385,7 +1384,7 @@ vec4_visitor::emit_shader_time_write(enum shader_time_shader_type type, bool vec4_visitor::run() { - sanity_param_count = vp->Base.Parameters->NumParameters; + sanity_param_count = p->Parameters->NumParameters; if (INTEL_DEBUG & DEBUG_SHADER_TIME) emit_shader_time_begin(); @@ -1469,7 +1468,7 @@ vec4_visitor::run() * _mesa_associate_uniform_storage() would point to freed memory. Make * sure that didn't happen. */ - assert(sanity_param_count == vp->Base.Parameters->NumParameters); + assert(sanity_param_count == p->Parameters->NumParameters); return !failed; } diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index 8f130e1..a9d99b1 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -226,7 +226,7 @@ public: return dst_reg(retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); } - struct gl_vertex_program *vp; + struct gl_program *p; struct brw_vs_compile *c; struct brw_vs_prog_data *prog_data; unsigned int sanity_param_count; diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index ca1cfe8..a7cfc9e 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -676,9 +676,9 @@ vec4_visitor::setup_builtin_uniform_values(ir_variable *ir) * ParameterValues directly, since unlike brw_fs.cpp, we never * add new state references during compile. */ - int index = _mesa_add_state_reference(this->vp->Base.Parameters, + int index = _mesa_add_state_reference(this->p->Parameters, (gl_state_index *)slots[i].tokens); - float *values = &this->vp->Base.Parameters->ParameterValues[index][0].f; + float *values = &this->p->Parameters->ParameterValues[index][0].f; this->uniform_vector_size[this->uniforms] = 0; /* Add each of the unique swizzled channels of the element. @@ -2077,7 +2077,7 @@ vec4_visitor::visit(ir_call *ir) void vec4_visitor::visit(ir_texture *ir) { - int sampler = _mesa_get_sampler_uniform_value(ir->sampler, prog, &vp->Base); + int sampler = _mesa_get_sampler_uniform_value(ir->sampler, prog, p); /* Should be lowered by do_lower_texture_projection */ assert(!ir->projector); @@ -2993,7 +2993,7 @@ vec4_visitor::vec4_visitor(struct brw_context *brw, memset(this->output_reg_annotation, 0, sizeof(this->output_reg_annotation)); this->c = c; - this->vp = &c->vp->program; + this->p = &c->vp->program.Base; this->prog_data = &c->prog_data; this->variable_ht = hash_table_ctor(0, diff --git a/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp b/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp index 1acdd52..fc3a878 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_vp.cpp @@ -84,8 +84,8 @@ vec4_visitor::emit_vertex_program_code() src_reg one = src_reg(this, glsl_type::float_type); emit(MOV(dst_reg(one), src_reg(1.0f))); - for (unsigned int insn = 0; insn < vp->Base.NumInstructions; insn++) { - const struct prog_instruction *vpi = &vp->Base.Instructions[insn]; + for (unsigned int insn = 0; insn < p->NumInstructions; insn++) { + const struct prog_instruction *vpi = &p->Instructions[insn]; base_ir = vpi; dst_reg dst; @@ -423,7 +423,7 @@ void vec4_visitor::setup_vp_regs() { /* PROGRAM_TEMPORARY */ - int num_temp = vp->Base.NumTemporaries; + int num_temp = p->NumTemporaries; vp_temp_regs = rzalloc_array(mem_ctx, src_reg, num_temp); for (int i = 0; i < num_temp; i++) vp_temp_regs[i] = src_reg(this, glsl_type::vec4_type); -- 1.8.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev