tgsi: Return 0.0 for negative constant register indices.
authorMichal Krol <michal@tungstengraphics.com>
Fri, 14 Nov 2008 12:31:06 +0000 (13:31 +0100)
committerMichal Krol <michal@tungstengraphics.com>
Tue, 18 Nov 2008 15:07:18 +0000 (16:07 +0100)
src/gallium/auxiliary/tgsi/tgsi_exec.c

index 177cf206b33701f356d9d016320da20f1b2a22d8..96567772b75b2f12732a891912ed69b8ae9e0c77 100644 (file)
@@ -947,14 +947,22 @@ fetch_src_file_channel(
       switch( file ) {
       case TGSI_FILE_CONSTANT:
          assert(mach->Consts);
-         assert(index->i[0] >= 0);
-         assert(index->i[1] >= 0);
-         assert(index->i[2] >= 0);
-         assert(index->i[3] >= 0);
-         chan->f[0] = mach->Consts[index->i[0]][swizzle];
-         chan->f[1] = mach->Consts[index->i[1]][swizzle];
-         chan->f[2] = mach->Consts[index->i[2]][swizzle];
-         chan->f[3] = mach->Consts[index->i[3]][swizzle];
+         if (index->i[0] < 0)
+            chan->f[0] = 0.0f;
+         else
+            chan->f[0] = mach->Consts[index->i[0]][swizzle];
+         if (index->i[1] < 0)
+            chan->f[1] = 0.0f;
+         else
+            chan->f[1] = mach->Consts[index->i[1]][swizzle];
+         if (index->i[2] < 0)
+            chan->f[2] = 0.0f;
+         else
+            chan->f[2] = mach->Consts[index->i[2]][swizzle];
+         if (index->i[3] < 0)
+            chan->f[3] = 0.0f;
+         else
+            chan->f[3] = mach->Consts[index->i[3]][swizzle];
          break;
 
       case TGSI_FILE_INPUT: