From eafc74d7d4982a835ac43c73963dda9982652464 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Wed, 29 Jun 2011 16:47:30 -0700 Subject: [PATCH] i965/fs: Fix message register allocation in FB writes. Commit 6750226e6d915742ebf96bae2cfcdd287b85db35 bumped the base MRF to m2 instead of m0, but failed to adjust inst->mlen, which was being set to the highest MRF. Subtracting the base MRF solves the issue. Signed-off-by: Kenneth Graunke Reviewed-by: Ben Widawsky --- src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 9091014976b..cbe5cf428c5 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -1791,7 +1791,8 @@ fs_visitor::emit_fb_writes() { this->current_annotation = "FB write header"; GLboolean header_present = GL_TRUE; - int nr = 2; + int base_mrf = 2; + int nr = base_mrf; int reg_width = c->dispatch_width / 8; if (intel->gen >= 6 && @@ -1870,8 +1871,8 @@ fs_visitor::emit_fb_writes() fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->target = target; - inst->base_mrf = 2; - inst->mlen = nr; + inst->base_mrf = base_mrf; + inst->mlen = nr - base_mrf; if (target == c->key.nr_color_regions - 1) inst->eot = true; inst->header_present = header_present; @@ -1888,8 +1889,8 @@ fs_visitor::emit_fb_writes() } fs_inst *inst = emit(FS_OPCODE_FB_WRITE); - inst->base_mrf = 2; - inst->mlen = nr; + inst->base_mrf = base_mrf; + inst->mlen = nr - base_mrf; inst->eot = true; inst->header_present = header_present; } -- 2.30.2