Mesa (9.2): i965/fs: Detect GRF sources in split_virtual_grfs send-from-GRF code.

Ian Romanick idr at kemper.freedesktop.org
Wed Sep 11 19:09:07 UTC 2013


Module: Mesa
Branch: 9.2
Commit: c0253baaa03a7c33d67f293511ca60567c4aeab6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0253baaa03a7c33d67f293511ca60567c4aeab6

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Aug 28 11:22:01 2013 -0700

i965/fs: Detect GRF sources in split_virtual_grfs send-from-GRF code.

It is incorrect to assume that src[0] of a SEND-from-GRF opcode is the
GRF.  For example, FS_OPCODE_UNIFORM_PULL_CONSTANT_LOAD uses src[1] for
the GRF.

To be safe, loop over all the source registers and mark any GRFs.  We
probably won't ever have more than one, but it's simpler to just check
all three rather than attempting to bail early.

Not observed to fix anything yet, but likely to.  Parallels the bug fix
in the previous commit, which actually does fix known failures.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Eric Anholt <eric at anholt.net>
Cc: mesa-stable at lists.freedesktop.org
(cherry picked from commit a35b32025011eeac01f2e5a476dbf3ac132a61b3)

---

 src/mesa/drivers/dri/i965/brw_fs.cpp |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 3986bf5..62dccc1 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -1358,7 +1358,11 @@ fs_visitor::split_virtual_grfs()
        * the send is reading the whole thing.
        */
       if (inst->is_send_from_grf()) {
-         split_grf[inst->src[0].reg] = false;
+         for (int i = 0; i < 3; i++) {
+            if (inst->src[i].file == GRF) {
+               split_grf[inst->src[i].reg] = false;
+            }
+         }
       }
    }
 




More information about the mesa-commit mailing list