Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/mesa/drivers/dri/i965/brw_fs.cpp | 15 ------------- src/mesa/drivers/dri/i965/brw_fs.h | 4 ---- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 3 --- src/mesa/drivers/dri/i965/brw_shader.cpp | 25 +++++++++++++++++++++ src/mesa/drivers/dri/i965/brw_shader.h | 6 +++++ src/mesa/drivers/dri/i965/brw_vec4.cpp | 4 ++-- src/mesa/drivers/dri/i965/brw_vec4.h | 4 ---- .../drivers/dri/i965/brw_vec4_reg_allocate.cpp | 2 +- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 26 ++-------------------- 9 files changed, 36 insertions(+), 53 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 5de6b95..f073e12 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -841,21 +841,6 @@ fs_visitor::implied_mrf_writes(fs_inst *inst) } } -int -fs_visitor::virtual_grf_alloc(int size) -{ - if (virtual_grf_array_size <= virtual_grf_count) { - if (virtual_grf_array_size == 0) - virtual_grf_array_size = 16; - else - virtual_grf_array_size *= 2; - virtual_grf_sizes = reralloc(mem_ctx, virtual_grf_sizes, int, - virtual_grf_array_size); - } - virtual_grf_sizes[virtual_grf_count] = size; - return virtual_grf_count++; -} - /** Fixed HW reg constructor. */ fs_reg::fs_reg(enum register_file file, int reg) { diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index f430862..d1d2018 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -252,7 +252,6 @@ public: unsigned dispatch_width); fs_reg *variable_storage(ir_variable *var); - int virtual_grf_alloc(int size); void import_uniforms(fs_visitor *v); void visit(ir_variable *ir); @@ -492,9 +491,6 @@ public: int *param_size; - int *virtual_grf_sizes; - int virtual_grf_count; - int virtual_grf_array_size; int *virtual_grf_start; int *virtual_grf_end; brw::fs_live_variables *live_intervals; diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index e74b28e..b78a8d2 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -2983,9 +2983,6 @@ fs_visitor::fs_visitor(struct brw_context *brw, this->current_annotation = NULL; this->base_ir = NULL; - this->virtual_grf_sizes = NULL; - this->virtual_grf_count = 0; - this->virtual_grf_array_size = 0; this->virtual_grf_start = NULL; this->virtual_grf_end = NULL; this->live_intervals = NULL; diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp index fba347a..e55e998 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.cpp +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp @@ -561,6 +561,9 @@ backend_emitter::backend_emitter(struct brw_context *brw, void *mem_ctx, failed(false), stage_name(stage_name), debug_flag(debug_flag), + virtual_grf_sizes(0), + virtual_grf_count(0), + virtual_grf_array_size(0), virtual_grf_reg_count(0), virtual_grf_reg_map(NULL) { @@ -601,6 +604,28 @@ backend_emitter::fail(const char *format, ...) va_end(va); } +int +backend_emitter::virtual_grf_alloc(int size, bool use_map) +{ + if (virtual_grf_array_size <= virtual_grf_count) { + if (virtual_grf_array_size == 0) + virtual_grf_array_size = 16; + else + virtual_grf_array_size *= 2; + virtual_grf_sizes = reralloc(mem_ctx, virtual_grf_sizes, int, + virtual_grf_array_size); + if (use_map) + virtual_grf_reg_map = reralloc(mem_ctx, virtual_grf_reg_map, int, + virtual_grf_array_size); + } + if (use_map) { + virtual_grf_reg_map[virtual_grf_count] = virtual_grf_reg_count; + virtual_grf_reg_count += size; + } + virtual_grf_sizes[virtual_grf_count] = size; + return virtual_grf_count++; +} + bool backend_instruction::is_tex() const { diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h index 8c9b646..54157fd 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.h +++ b/src/mesa/drivers/dri/i965/brw_shader.h @@ -112,6 +112,8 @@ protected: public: + int virtual_grf_alloc(int size, bool use_map = false); + struct brw_context * const brw; struct gl_context * const ctx; @@ -134,6 +136,10 @@ public: const char * const stage_name; const bool debug_flag; + int *virtual_grf_sizes; + int virtual_grf_count; + int virtual_grf_array_size; + /** * This is the size to be used for an array with an element per * reg_offset diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 041f9e6..cba499a 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1228,9 +1228,9 @@ vec4_visitor::split_virtual_grfs() if (!split_grf[i]) continue; - new_virtual_grf[i] = virtual_grf_alloc(1); + new_virtual_grf[i] = virtual_grf_alloc(1, true); for (int j = 2; j < this->virtual_grf_sizes[i]; j++) { - int reg = virtual_grf_alloc(1); + int reg = virtual_grf_alloc(1, true); assert(reg == new_virtual_grf[i] + j - 1); (void) reg; } diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index db5f417..dbf445f 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -327,9 +327,6 @@ public: const void *base_ir; const char *current_annotation; - int *virtual_grf_sizes; - int virtual_grf_count; - int virtual_grf_array_size; int first_non_payload_grf; int *virtual_grf_start; int *virtual_grf_end; @@ -388,7 +385,6 @@ public: bool run(void); - int virtual_grf_alloc(int size); void setup_uniform_clipplane_values(); void setup_uniform_values(ir_variable *ir); void setup_builtin_uniform_values(ir_variable *ir); diff --git a/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp index 349c031..b939c8d 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp @@ -341,7 +341,7 @@ vec4_visitor::spill_reg(int spill_reg_nr) for (unsigned int i = 0; i < 3; i++) { if (inst->src[i].file == GRF && inst->src[i].reg == spill_reg_nr) { src_reg spill_reg = inst->src[i]; - inst->src[i].reg = virtual_grf_alloc(1); + inst->src[i].reg = virtual_grf_alloc(1, true); dst_reg temp = dst_reg(inst->src[i]); /* Only read the necessary channels, to avoid overwriting the rest diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index f7355b8..e324d76 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -597,31 +597,12 @@ type_size(const struct glsl_type *type) return 0; } -int -vec4_visitor::virtual_grf_alloc(int size) -{ - if (virtual_grf_array_size <= virtual_grf_count) { - if (virtual_grf_array_size == 0) - virtual_grf_array_size = 16; - else - virtual_grf_array_size *= 2; - virtual_grf_sizes = reralloc(mem_ctx, virtual_grf_sizes, int, - virtual_grf_array_size); - virtual_grf_reg_map = reralloc(mem_ctx, virtual_grf_reg_map, int, - virtual_grf_array_size); - } - virtual_grf_reg_map[virtual_grf_count] = virtual_grf_reg_count; - virtual_grf_reg_count += size; - virtual_grf_sizes[virtual_grf_count] = size; - return virtual_grf_count++; -} - src_reg::src_reg(class vec4_visitor *v, const struct glsl_type *type) { init(); this->file = GRF; - this->reg = v->virtual_grf_alloc(type_size(type)); + this->reg = v->virtual_grf_alloc(type_size(type), true); if (type->is_array() || type->is_record()) { this->swizzle = BRW_SWIZZLE_NOOP; @@ -637,7 +618,7 @@ dst_reg::dst_reg(class vec4_visitor *v, const struct glsl_type *type) init(); this->file = GRF; - this->reg = v->virtual_grf_alloc(type_size(type)); + this->reg = v->virtual_grf_alloc(type_size(type), true); if (type->is_array() || type->is_record()) { this->writemask = WRITEMASK_XYZW; @@ -3382,9 +3363,6 @@ vec4_visitor::vec4_visitor(struct brw_context *brw, this->virtual_grf_start = NULL; this->virtual_grf_end = NULL; - this->virtual_grf_sizes = NULL; - this->virtual_grf_count = 0; - this->virtual_grf_array_size = 0; this->live_intervals_valid = false; this->uniforms = 0; -- 1.8.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev