From: Samuel Pitoiset Date: Thu, 19 May 2016 22:52:26 +0000 (+0200) Subject: nv50/ir: fix SUSTx constraints on Kepler X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=70834d05cd2ac6ccceff3a8cbf7c797c6d3679ba;p=mesa.git nv50/ir: fix SUSTx constraints on Kepler To prevent out-of-bounds access and format mismatch we add a predicate on sustp, but we have to account for it when the sources are condensed because a predicate is a source. Using the range 3:6 will only condense the input data and it's always the case. This also fixes constraints when an indirect access is used. This ensures that sources are correctly aligned. Signed-off-by: Samuel Pitoiset Reviewed-by: Ilia Mirkin --- diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp index 7e8bb17fb25..30772e6363e 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp @@ -2131,9 +2131,7 @@ RegAlloc::InsertConstraintsPass::texConstraintNVE0(TexInstruction *tex) condenseDefs(tex); if (tex->op == OP_SUSTB || tex->op == OP_SUSTP) { - int n = tex->srcCount(0xff); - if (n > 4) - condenseSrcs(tex, 3, n - 1); + condenseSrcs(tex, 3, 6); } else if (isTextureOp(tex->op)) { int n = tex->srcCount(0xff, true);