i965/vs: Fix debug dumping of VS push constants.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 22 Oct 2012 03:58:18 +0000 (20:58 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 25 Oct 2012 21:52:53 +0000 (14:52 -0700)
While copying the values into the batch space, we advance the param
pointer.  The debug code then tries to iterate over all the uploaded
values, starting at param...which is now the end of the uploaded data,
rather than the start.

This patch saves a pointer to the start of push constant space before
it gets altered and switches the debug code to use that.

Tested by uncommenting the code and examining the output of
glsl-vs-clamp-1.shader_test.  Previously all values appeared to be zero.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/gen6_vs_state.c

index b15bc3d86f94116442f4fb96154b4b4bb7ea01eb..0e80c27b912a179a57954428474a322db09cb4bc 100644 (file)
@@ -63,6 +63,8 @@ gen6_upload_vs_push_constants(struct brw_context *brw)
                              4 * sizeof(float),
                              32, &brw->vs.push_const_offset);
 
+      float *save_param = param;
+
       if (brw->vs.prog_data->uses_new_param_layout) {
         for (i = 0; i < brw->vs.prog_data->nr_params; i++) {
            *param = *brw->vs.prog_data->param[i];
@@ -102,7 +104,7 @@ gen6_upload_vs_push_constants(struct brw_context *brw)
       if (0) {
         printf("VS constant buffer:\n");
         for (i = 0; i < params_uploaded; i++) {
-           float *buf = param + i * 4;
+           float *buf = save_param + i * 4;
            printf("%d: %f %f %f %f\n",
                   i, buf[0], buf[1], buf[2], buf[3]);
         }