Mesa (gallium-0.2): gallium: don' t range check tgsi register index for indirect accesses

Brian Paul brianp at kemper.freedesktop.org
Thu Nov 6 22:16:44 UTC 2008


Module: Mesa
Branch: gallium-0.2
Commit: 639a2b0ec853eda49e3e7150b2ed7f8f40d101af
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=639a2b0ec853eda49e3e7150b2ed7f8f40d101af

Author: Brian <brian.paul at tungstengraphics.com>
Date:   Wed Nov  5 19:26:20 2008 -0700

gallium: don't range check tgsi register index for indirect accesses

Fixes progs/vp/arl.txt test.

---

 src/gallium/auxiliary/tgsi/tgsi_sanity.c |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_sanity.c b/src/gallium/auxiliary/tgsi/tgsi_sanity.c
index 1165924..bc7b941 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_sanity.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_sanity.c
@@ -153,17 +153,21 @@ check_register_usage(
    if (!check_file_name( ctx, file ))
       return FALSE;
 
-   if (index < 0 || index > MAX_REGISTERS) {
-      report_error( ctx, "%s[%i]: Invalid index %s", file_names[file], index, name );
-      return FALSE;
-   }
-
    if (indirect_access) {
+      /* Note that 'index' is an offset relative to the value of the
+       * address register.  No range checking done here.
+       */
       if (!is_any_register_declared( ctx, file ))
          report_error( ctx, "%s: Undeclared %s register", file_names[file], name );
       ctx->regs_ind_used[file] = TRUE;
    }
    else {
+      if (index < 0 || index > MAX_REGISTERS) {
+         report_error( ctx, "%s[%i]: Invalid index %s",
+                       file_names[file], index, name );
+         return FALSE;
+      }
+
       if (!is_register_declared( ctx, file, index ))
          report_error( ctx, "%s[%d]: Undeclared %s register", file_names[file], index, name );
       ctx->regs_used[file][index / BITS_IN_REG_FLAG] |= (1 << (index % BITS_IN_REG_FLAG));




More information about the mesa-commit mailing list