compiler: Print resulting data structs
authorCody Northrop <cody@lunarg.com>
Mon, 29 Sep 2014 17:30:59 +0000 (11:30 -0600)
committerCourtney Goeltzenleuchter <courtney@LunarG.com>
Fri, 31 Oct 2014 21:29:13 +0000 (15:29 -0600)
icd/intel/compiler/pipeline/pipeline_compiler_interface.cpp

index a41ec7017a40394eb016013485a3237039f41787..2e057c28302272190015000d716296ca6fb57e7b 100644 (file)
@@ -108,8 +108,78 @@ static void hexdump(FILE *fp, void *ptr, int buflen) {
         fprintf(fp,"   ");
     fprintf(fp,"\n");
   }
+
+  fflush(fp);
 }
 
+static void fs_data_dump(FILE *fp, struct brw_wm_prog_data* data)
+{
+    fprintf(fp, "\n=== begin brw_wm_prog_data ===\n");
+
+    //brw_stage_prog_data base;
+    fprintf(fp, "data->base.binding_table.size_bytes = %u\n",
+                 data->base.binding_table.size_bytes);
+    fprintf(fp, "data->base.binding_table.pull_constants_start = %u\n",
+                 data->base.binding_table.pull_constants_start);
+    fprintf(fp, "data->base.binding_table.texture_start = %u\n",
+                 data->base.binding_table.texture_start);
+    fprintf(fp, "data->base.binding_table.gather_texture_start = %u\n",
+                 data->base.binding_table.gather_texture_start);
+    fprintf(fp, "data->base.binding_table.ubo_start = %u\n",
+                 data->base.binding_table.ubo_start);
+    fprintf(fp, "data->base.binding_table.abo_start = %u\n",
+                 data->base.binding_table.abo_start);
+    fprintf(fp, "data->base.binding_table.shader_time_start = %u\n",
+                 data->base.binding_table.shader_time_start);
+
+    fprintf(fp, "data->base.nr_params = %u\n",
+                 data->base.nr_params);
+    fprintf(fp, "data->base.nr_pull_params = %u\n",
+                 data->base.nr_pull_params);
+
+    // invalid pointers
+    //data->base.param;
+    //data->base.pull_param;
+
+    fprintf(fp, "data->curb_read_length = %u\n",
+                 data->curb_read_length);
+    fprintf(fp, "data->num_varying_inputs = %u\n",
+                 data->num_varying_inputs);
+
+    fprintf(fp, "data->first_curbe_grf = %u\n",
+                 data->first_curbe_grf);
+    fprintf(fp, "data->first_curbe_grf_16 = %u\n",
+                 data->first_curbe_grf_16);
+    fprintf(fp, "data->reg_blocks = %u\n",
+                 data->reg_blocks);
+    fprintf(fp, "data->reg_blocks_16 = %u\n",
+                 data->reg_blocks_16);
+    fprintf(fp, "data->total_scratch = %u\n",
+                 data->total_scratch);
+    fprintf(fp, "data->binding_table.render_target_start = %u\n",
+                 data->binding_table.render_target_start);
+
+    fprintf(fp, "data->dual_src_blend = %s\n",
+                 data->dual_src_blend ? "true" : "false");
+    fprintf(fp, "data->uses_pos_offset = %s\n",
+                 data->uses_pos_offset ? "true" : "false");
+    fprintf(fp, "data->uses_omask = %s\n",
+                 data->uses_omask ? "true" : "false");
+    fprintf(fp, "data->prog_offset_16 = %u\n",
+                 data->prog_offset_16);
+
+    fprintf(fp, "data->barycentric_interp_modes = %u\n",
+                 data->barycentric_interp_modes);
+
+    for (int i = 0; i < VARYING_SLOT_MAX; ++i) {
+        fprintf(fp, "data->urb_setup[%i] = %i\n",
+                  i, data->urb_setup[i]);
+    }
+
+    fprintf(fp, "=== end brw_wm_prog_data ===\n");
+
+    fflush(fp);
+}
 
 extern "C" {
 
@@ -153,6 +223,10 @@ XGL_RESULT intel_pipeline_shader_compile(struct intel_pipeline_shader *pipe_shad
             memcpy(pipe_shader->pCode, get_wm_program(brw->shader_prog), pipe_shader->codeSize);
 
             struct brw_wm_prog_data *data = get_wm_prog_data(brw->shader_prog);
+
+            // print out the supporting structures generated by the BE compile:
+            fs_data_dump(stdout, data);
+
             pipe_shader->surface_count = data->base.binding_table.size_bytes / 4;
             pipe_shader->urb_grf_start = data->first_curbe_grf;
             pipe_shader->in_count      = data->num_varying_inputs;
@@ -166,10 +240,10 @@ XGL_RESULT intel_pipeline_shader_compile(struct intel_pipeline_shader *pipe_shad
             pipe_shader->sampler_count = shader->sampler_count;
 
 
-            fprintf(stderr,"\nISA generated by compiler:\n");
-            fprintf(stderr,"ISA size: %i\n", pipe_shader->codeSize);
-            hexdump(stderr, pipe_shader->pCode, pipe_shader->codeSize);
-            fflush(stderr);
+            fprintf(stdout,"\nISA generated by compiler:\n");
+            fprintf(stdout,"ISA size: %i\n", pipe_shader->codeSize);
+            hexdump(stdout, pipe_shader->pCode, pipe_shader->codeSize);
+            fflush(stdout);
         }
 
             break;
@@ -203,10 +277,10 @@ XGL_RESULT intel_pipeline_shader_compile(struct intel_pipeline_shader *pipe_shad
             pipe_shader->barycentric_interps = shader->barycentric_interps;
 
 
-            fprintf(stderr,"\nISA generated by compiler:\n");
-            fprintf(stderr,"ISA size: %i\n", pipe_shader->codeSize);
-            hexdump(stderr, pipe_shader->pCode, pipe_shader->codeSize);
-            fflush(stderr);
+            fprintf(stdout,"\nISA generated by compiler:\n");
+            fprintf(stdout,"ISA size: %i\n", pipe_shader->codeSize);
+            hexdump(stdout, pipe_shader->pCode, pipe_shader->codeSize);
+            fflush(stdout);
         }
             break;