r300/compiler: Print immediate values after "dead constants" pass
authorTom Stellard <tstellar@gmail.com>
Mon, 27 Sep 2010 05:16:19 +0000 (22:16 -0700)
committerTom Stellard <tstellar@gmail.com>
Tue, 28 Sep 2010 06:17:11 +0000 (23:17 -0700)
src/mesa/drivers/dri/r300/compiler/radeon_code.c
src/mesa/drivers/dri/r300/compiler/radeon_code.h
src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c

index 0eab18c344da79271959f475262c48e114175ee3..6842fb873bc0dafd62a77132431b6d2c91200e67 100644 (file)
@@ -28,6 +28,7 @@
 #include "radeon_code.h"
 
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
 
 #include "radeon_program.h"
@@ -171,3 +172,16 @@ unsigned rc_constants_add_immediate_scalar(struct rc_constant_list * c, float da
 
        return rc_constants_add(c, &constant);
 }
+
+void rc_constants_print(struct rc_constant_list * c)
+{
+       unsigned int i;
+       for(i = 0; i < c->Count; i++) {
+               if (c->Constants[i].Type == RC_CONSTANT_IMMEDIATE) {
+                       float * values = c->Constants[i].u.Immediate;
+                       fprintf(stderr, "CONST[%u] = "
+                               "{ %10.4f %10.4f %10.4f %10.4f }\n",
+                               i, values[0],values[1], values[2], values[3]);
+               }
+       }
+}
index 2dd9c5e4bd393d12d7fbe7770602d73cd2e97841..cfb6df2cd796c4375b195c617b17f1a2cb7d81aa 100644 (file)
@@ -90,6 +90,7 @@ unsigned rc_constants_add(struct rc_constant_list * c, struct rc_constant * cons
 unsigned rc_constants_add_state(struct rc_constant_list * c, unsigned state1, unsigned state2);
 unsigned rc_constants_add_immediate_vec4(struct rc_constant_list * c, const float * data);
 unsigned rc_constants_add_immediate_scalar(struct rc_constant_list * c, float data, unsigned * swizzle);
+void rc_constants_print(struct rc_constant_list * c);
 
 /**
  * Compare functions.
index d111319d3d980bad0fcc4d091db9e2e5a5d43489..2e0e4ef898cb26ec48fb16e3d93fb7709fd004c1 100644 (file)
@@ -146,4 +146,7 @@ void rc_remove_unused_constants(struct radeon_compiler *c, void *user)
 
         free(const_used);
         free(inv_remap_table);
+
+       if (c->Debug)
+               rc_constants_print(&c->Program.Constants);
 }