On Fri, Mar 28, 2014 at 6:28 AM, Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com> wrote: > diff --git a/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp > b/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp > index a951459..492ee0d 100644 > --- a/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp > +++ b/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp > @@ -818,7 +818,7 @@ fs_instruction_scheduler::calculate_deps() > } > } > > - if (inst->reads_flag()) { > + if (inst->reads_flag() || inst->writes_accumulator) { > add_dep(last_conditional_mod[inst->flag_subreg], n);
last_conditional_mod tracks the last instructions to write f0.0 and f0.1, so we don't want to use it to also track writes to the accumulator. Add another variable schedule_node *last_accumulator_write = NULL; and use it like we do with last_conditional_mod if (inst->writes_accumulator || inst->dst.is_accumulator()) { ... } You'll need to add an is_accumulator method to the FS backend's fs_reg class, and to the vec4 backend's reg class. You can tell if a register is the accumulator if reg.file == HW_REG && reg.fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && reg.fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev