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