tgsi: Improve execution debugging.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 22 Feb 2013 15:34:30 +0000 (15:34 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 22 Feb 2013 16:19:58 +0000 (16:19 +0000)
- zero temps/outputs instead of copying (otherwise we won't be able to see
  the temps/outputs assignments for small shaders where nothing changes
  across big areas

- also show the inputs (as it's often impossible to infer from the rest)

Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/tgsi/tgsi_exec.c

index 1099d062dd83709e0a8779bfb2f3df8cb37a7c02..a2b2a81ddbc72a318b135afea995714d1333ee1e 100644 (file)
@@ -62,6 +62,9 @@
 #include "util/u_math.h"
 
 
+#define DEBUG_EXECUTION 0
+
+
 #define FAST_MATH 0
 
 #define TILE_TOP_LEFT     0
@@ -2456,6 +2459,23 @@ exec_declaration(struct tgsi_exec_machine *mach,
                }
             }
          }
+
+         if (DEBUG_EXECUTION) {
+            uint i, j;
+            for (i = first; i <= last; ++i) {
+               debug_printf("IN[%2u] = ", i);
+               for (j = 0; j < TGSI_NUM_CHANNELS; j++) {
+                  if (j > 0) {
+                     debug_printf("         ");
+                  }
+                  debug_printf("(%6f %u, %6f %u, %6f %u, %6f %u)\n",
+                               mach->Inputs[i].xyzw[0].f[j], mach->Inputs[i].xyzw[0].u[j],
+                               mach->Inputs[i].xyzw[1].f[j], mach->Inputs[i].xyzw[1].u[j],
+                               mach->Inputs[i].xyzw[2].f[j], mach->Inputs[i].xyzw[2].u[j],
+                               mach->Inputs[i].xyzw[3].f[j], mach->Inputs[i].xyzw[3].u[j]);
+               }
+            }
+         }
       }
    }
 
@@ -4304,9 +4324,6 @@ exec_instruction(
 }
 
 
-#define DEBUG_EXECUTION 0
-
-
 /**
  * Run TGSI interpreter.
  * \return bitmask of "alive" quad components
@@ -4351,8 +4368,10 @@ tgsi_exec_machine_run( struct tgsi_exec_machine *mach )
       struct tgsi_exec_vector outputs[PIPE_MAX_ATTRIBS];
       uint inst = 1;
 
-      memcpy(temps, mach->Temps, sizeof(temps));
-      memcpy(outputs, mach->Outputs, sizeof(outputs));
+      memset(mach->Temps, 0, sizeof(temps));
+      memset(mach->Outputs, 0, sizeof(outputs));
+      memset(temps, 0, sizeof(temps));
+      memset(outputs, 0, sizeof(outputs));
 #endif
 
       /* execute instructions, until pc is set to -1 */