From: Chia-I Wu Date: Wed, 10 Jul 2013 22:39:05 +0000 (+0800) Subject: ilo: correctly initialize undefined registers in fs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=29af29b8dca1c468294205a126c49084c7dcecf2;p=mesa.git ilo: correctly initialize undefined registers in fs Initialize all 4 channels of undefined registers (that is, TEMPs that are used before being assigned) in FS. --- diff --git a/src/gallium/drivers/ilo/shader/toy_tgsi.c b/src/gallium/drivers/ilo/shader/toy_tgsi.c index ad6161d5894..bf61cbbf537 100644 --- a/src/gallium/drivers/ilo/shader/toy_tgsi.c +++ b/src/gallium/drivers/ilo/shader/toy_tgsi.c @@ -2136,11 +2136,21 @@ ra_get_src(struct toy_tgsi *tgsi, struct toy_dst dst = tdst_from(src); dst.writemask = TOY_WRITEMASK_XYZW; - /* - * Always initialize registers. Otherwise, if the random value - * ends up in a VUE, FS may fail to interpolate correctly. - */ - tc_MOV(tgsi->tc, dst, tsrc_type(tsrc_imm_d(0), type)); + /* always initialize registers before use */ + if (tgsi->aos) { + tc_MOV(tgsi->tc, dst, tsrc_type(tsrc_imm_d(0), type)); + } + else { + struct toy_dst tdst[4]; + int i; + + tdst_transpose(dst, tdst); + + for (i = 0; i < 4; i++) { + tc_MOV(tgsi->tc, tdst[i], + tsrc_type(tsrc_imm_d(0), type)); + } + } } break; default: