From: Rob Clark Date: Sat, 29 Mar 2014 18:32:38 +0000 (-0400) Subject: freedreno/a3xx/compiler: avoid negative register ids X-Git-Tag: upstream/10.3~2871 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=83808a90bea75598a279ae45d96e55c562ad58e4;p=platform%2Fupstream%2Fmesa.git freedreno/a3xx/compiler: avoid negative register ids In some cases, we need a register to be assigned up to three components before the base. Since we can't have negative register #'s, just shift everything up. May increase register usage for trivial shaders, but I don't think we are shader limited in those cases. A proper solution is going to require a better register assignment algorithm (which is on the TODO list), this is just a hack to get us by until then. Signed-off-by: Rob Clark --- diff --git a/src/gallium/drivers/freedreno/a3xx/ir3_ra.c b/src/gallium/drivers/freedreno/a3xx/ir3_ra.c index d926483..4e48ede 100644 --- a/src/gallium/drivers/freedreno/a3xx/ir3_ra.c +++ b/src/gallium/drivers/freedreno/a3xx/ir3_ra.c @@ -104,8 +104,8 @@ static int output_base(struct ir3_ra_ctx *ctx) */ if (ctx->type == SHADER_FRAGMENT) { if (ctx->half_precision) - return ctx->frag_face ? 1 : 0; - return ctx->frag_coord ? 6 : 2; + return ctx->frag_face ? 4 : 3; + return ctx->frag_coord ? 8 : 4; } return 0; }