On Monday, November 02, 2015 04:29:22 PM Matt Turner wrote: > The test (file == BAD_FILE) works on registers for which the constructor > has not run because BAD_FILE is zero. The next commit will move > BAD_FILE in the enum so that it's no longer zero. > --- > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 10 +++++++++- > src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 3 +++ > src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 9 +++++++++ > 3 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index 7eeff93..611347c 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -260,6 +260,10 @@ void > fs_visitor::nir_emit_system_values() > { > nir_system_values = ralloc_array(mem_ctx, fs_reg, SYSTEM_VALUE_MAX); > + for (unsigned i = 0; i < SYSTEM_VALUE_MAX; i++) { > + nir_system_values[i].file = BAD_FILE;
How about we do this instead: nir_system_values[i] = fs_reg(); That way, they're properly constructed using the default constructor, which would not only set BAD_FILE, but properly initialize everything, so we don't have to revisit this if we make other changes in fs_reg(). Similarly below. That patch would get a: Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> > + } > + > nir_foreach_overload(nir, overload) { > assert(strcmp(overload->function->name, "main") == 0); > assert(overload->impl); > @@ -270,7 +274,11 @@ fs_visitor::nir_emit_system_values() > void > fs_visitor::nir_emit_impl(nir_function_impl *impl) > { > - nir_locals = reralloc(mem_ctx, nir_locals, fs_reg, impl->reg_alloc); > + nir_locals = ralloc_array(mem_ctx, fs_reg, impl->reg_alloc); > + for (unsigned i = 0; i < impl->reg_alloc; i++) { > + nir_locals[i].file = BAD_FILE; > + } > + > foreach_list_typed(nir_register, reg, node, &impl->registers) { > unsigned array_elems = > reg->num_array_elems == 0 ? 1 : reg->num_array_elems; > diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > index 1e46f9a..ef6e19a 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp > @@ -1157,6 +1157,9 @@ fs_visitor::init() > memset(&this->payload, 0, sizeof(this->payload)); > memset(this->outputs, 0, sizeof(this->outputs)); > memset(this->output_components, 0, sizeof(this->output_components)); > + for (unsigned i = 0; i < ARRAY_SIZE(this->outputs); i++) { > + this->outputs[i].file = BAD_FILE; > + } > this->source_depth_to_render_target = false; > this->runtime_check_aads_emit = false; > this->first_non_payload_grf = 0; > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > index 8ca8ddb..bdb3d02 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > @@ -106,6 +106,9 @@ void > vec4_visitor::nir_setup_system_values() > { > nir_system_values = ralloc_array(mem_ctx, dst_reg, SYSTEM_VALUE_MAX); > + for (unsigned i = 0; i < SYSTEM_VALUE_MAX; i++) { > + nir_system_values[i].file = BAD_FILE; > + } > > nir_foreach_overload(nir, overload) { > assert(strcmp(overload->function->name, "main") == 0); > @@ -118,6 +121,9 @@ void > vec4_visitor::nir_setup_inputs() > { > nir_inputs = ralloc_array(mem_ctx, src_reg, nir->num_inputs); > + for (unsigned i = 0; i < nir->num_inputs; i++) { > + nir_inputs[i].file = BAD_FILE; > + } > > nir_foreach_variable(var, &nir->inputs) { > int offset = var->data.driver_location; > @@ -148,6 +154,9 @@ void > vec4_visitor::nir_emit_impl(nir_function_impl *impl) > { > nir_locals = ralloc_array(mem_ctx, dst_reg, impl->reg_alloc); > + for (unsigned i = 0; i < impl->reg_alloc; i++) { > + nir_locals[i].file = BAD_FILE; > + } > > foreach_list_typed(nir_register, reg, node, &impl->registers) { > unsigned array_elems = >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev