I don't see any reason why this patch would make a difference, but since it apparently does, I'll take a look at it and fix it. What program is that?
Bryan On 09/14/2011 07:01 AM, Marek Olšák wrote: > Bryan, > > This commit causes hardlocks on r600g (integers disabled). > > Maybe you can see better than me what's wrong. > > This is a side-by-side diff of the failing TGSI shader. The right-hand > one is from Mesa master. The left-hand one is with the commit > reverted. > http://pastebin.com/raw.php?i=QXB3SZAE > > Thanks, > Marek > > On Sat, Sep 10, 2011 at 7:36 PM, Bryan Cain <bryanca...@gmail.com> wrote: >> Since TGSI now has a UARL opcode that takes an integer as the source, it is >> no longer necessary to hack around the lack of an integer ARL opcode using >> I2F. >> UARL is only emitted when native integers are enabled; ARL is still used >> otherwise. >> >> Reviewed-by: Brian Paul <bri...@vmware.com> >> --- >> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 18 +++++++----------- >> 1 files changed, 7 insertions(+), 11 deletions(-) >> >> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> index e2857ed..05d4d33 100644 >> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp >> @@ -512,7 +512,7 @@ glsl_to_tgsi_visitor::emit(ir_instruction *ir, unsigned >> op, >> >> inst->function = NULL; >> >> - if (op == TGSI_OPCODE_ARL) >> + if (op == TGSI_OPCODE_ARL || op == TGSI_OPCODE_UARL) >> this->num_address_regs = 1; >> >> /* Update indirect addressing status used by TGSI */ >> @@ -724,16 +724,12 @@ void >> glsl_to_tgsi_visitor::emit_arl(ir_instruction *ir, >> st_dst_reg dst, st_src_reg src0) >> { >> - st_src_reg tmp = get_temp(glsl_type::float_type); >> + int op = TGSI_OPCODE_ARL; >> >> - if (src0.type == GLSL_TYPE_INT) >> - emit(NULL, TGSI_OPCODE_I2F, st_dst_reg(tmp), src0); >> - else if (src0.type == GLSL_TYPE_UINT) >> - emit(NULL, TGSI_OPCODE_U2F, st_dst_reg(tmp), src0); >> - else >> - tmp = src0; >> - >> - emit(NULL, TGSI_OPCODE_ARL, dst, tmp); >> + if (src0.type == GLSL_TYPE_INT || src0.type == GLSL_TYPE_UINT) >> + op = TGSI_OPCODE_UARL; >> + >> + emit(NULL, op, dst, src0); >> } >> >> /** >> -- >> 1.7.1 >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev >> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev