OSDN Git Service

i965/vs: Don't hardcode DEBUG_VS in generic vec4 code.
authorPaul Berry <stereotype441@gmail.com>
Sat, 23 Mar 2013 04:55:03 +0000 (21:55 -0700)
committerPaul Berry <stereotype441@gmail.com>
Thu, 11 Apr 2013 16:25:26 +0000 (09:25 -0700)
Since the vec4_visitor and vec4_generator classes are going to be
re-used for geometry shaders, we can't enable their debug
functionality based on (INTEL_DEBUG & DEBUG_VS) anymore.  Instead, add
a debug_flag boolean to these two classes, so that when they're
instantiated the caller can specify whether debug dumps are needed.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_vec4.cpp
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_emit.cpp
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
src/mesa/drivers/dri/i965/test_vec4_register_coalesce.cpp

index 2f8e607..b6d454f 100644 (file)
@@ -1549,7 +1549,8 @@ brw_vs_emit(struct brw_context *brw,
       return NULL;
    }
 
-   vec4_generator g(brw, prog, &c->vp->program.Base, mem_ctx);
+   vec4_generator g(brw, prog, &c->vp->program.Base, mem_ctx,
+                    INTEL_DEBUG & DEBUG_VS);
    const unsigned *generated =g.generate_assembly(&v.instructions,
                                                   final_assembly_size);
 
index 1f6c563..697ab86 100644 (file)
@@ -216,7 +216,8 @@ public:
                 struct brw_vec4_prog_data *prog_data,
                struct gl_shader_program *shader_prog,
                struct brw_shader *shader,
-               void *mem_ctx);
+               void *mem_ctx,
+                bool debug_flag);
    ~vec4_visitor();
 
    dst_reg dst_null_f()
@@ -489,6 +490,8 @@ protected:
    virtual void emit_urb_write_header(int mrf) = 0;
    virtual vec4_instruction *emit_urb_write_opcode(bool complete) = 0;
    virtual int compute_array_stride(ir_dereference_array *ir);
+
+   const bool debug_flag;
 };
 
 class vec4_vs_visitor : public vec4_visitor
@@ -532,7 +535,8 @@ public:
    vec4_generator(struct brw_context *brw,
                   struct gl_shader_program *shader_prog,
                   struct gl_program *prog,
-                  void *mem_ctx);
+                  void *mem_ctx,
+                  bool debug_flag);
    ~vec4_generator();
 
    const unsigned *generate_assembly(exec_list *insts, unsigned *asm_size);
@@ -596,6 +600,7 @@ private:
    const struct gl_program *prog;
 
    void *mem_ctx;
+   const bool debug_flag;
 };
 
 } /* namespace brw */
index 344e098..c9963bf 100644 (file)
@@ -135,8 +135,10 @@ vec4_instruction::get_src(int i)
 vec4_generator::vec4_generator(struct brw_context *brw,
                                struct gl_shader_program *shader_prog,
                                struct gl_program *prog,
-                               void *mem_ctx)
-   : brw(brw), shader_prog(shader_prog), prog(prog), mem_ctx(mem_ctx)
+                               void *mem_ctx,
+                               bool debug_flag)
+   : brw(brw), shader_prog(shader_prog), prog(prog), mem_ctx(mem_ctx),
+     debug_flag(debug_flag)
 {
    intel = &brw->intel;
 
@@ -705,7 +707,7 @@ vec4_generator::generate_code(exec_list *instructions)
    const char *last_annotation_string = NULL;
    const void *last_annotation_ir = NULL;
 
-   if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+   if (unlikely(debug_flag)) {
       if (shader) {
          printf("Native code for vertex shader %d:\n", shader_prog->Name);
       } else {
@@ -717,7 +719,7 @@ vec4_generator::generate_code(exec_list *instructions)
       vec4_instruction *inst = (vec4_instruction *)node;
       struct brw_reg src[3], dst;
 
-      if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+      if (unlikely(debug_flag)) {
         if (last_annotation_ir != inst->ir) {
            last_annotation_ir = inst->ir;
            if (last_annotation_ir) {
@@ -893,7 +895,7 @@ vec4_generator::generate_code(exec_list *instructions)
             last->header.dependency_control |= BRW_DEPENDENCY_NOTCHECKED;
       }
 
-      if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+      if (unlikely(debug_flag)) {
         brw_dump_compile(p, stdout,
                          last_native_insn_offset, p->next_insn_offset);
       }
@@ -901,7 +903,7 @@ vec4_generator::generate_code(exec_list *instructions)
       last_native_insn_offset = p->next_insn_offset;
    }
 
-   if (unlikely(INTEL_DEBUG & DEBUG_VS)) {
+   if (unlikely(debug_flag)) {
       printf("\n");
    }
 
@@ -912,7 +914,7 @@ vec4_generator::generate_code(exec_list *instructions)
     * which is often something we want to debug.  So this is here in
     * case you're doing that.
     */
-   if (0 && unlikely(INTEL_DEBUG & DEBUG_VS)) {
+   if (0 && unlikely(debug_flag)) {
       brw_dump_compile(p, stdout, 0, p->next_insn_offset);
    }
 }
index b46f589..856fbb4 100644 (file)
@@ -3037,7 +3037,9 @@ vec4_visitor::vec4_visitor(struct brw_context *brw,
                            struct brw_vec4_prog_data *prog_data,
                           struct gl_shader_program *shader_prog,
                           struct brw_shader *shader,
-                          void *mem_ctx)
+                          void *mem_ctx,
+                           bool debug_flag)
+   : debug_flag(debug_flag)
 {
    this->brw = brw;
    this->intel = &brw->intel;
@@ -3089,7 +3091,7 @@ vec4_vs_visitor::vec4_vs_visitor(struct brw_context *brw,
                                  void *mem_ctx)
    : vec4_visitor(brw, &vs_compile->base, &vs_compile->vp->program.Base,
                   &vs_compile->key.base, &vs_prog_data->base, prog, shader,
-                  mem_ctx),
+                  mem_ctx, INTEL_DEBUG & DEBUG_VS),
      vs_compile(vs_compile),
      vs_prog_data(vs_prog_data)
 {
@@ -3114,7 +3116,7 @@ vec4_visitor::fail(const char *format, ...)
 
    this->fail_msg = msg;
 
-   if (INTEL_DEBUG & DEBUG_VS) {
+   if (debug_flag) {
       fprintf(stderr, "%s",  msg);
    }
 }
index 5c00a73..71f6b1a 100644 (file)
@@ -48,7 +48,8 @@ class register_coalesce_vec4_visitor : public vec4_visitor
 public:
    register_coalesce_vec4_visitor(struct brw_context *brw,
                                   struct gl_shader_program *shader_prog)
-      : vec4_visitor(brw, NULL, NULL, NULL, NULL, shader_prog, NULL, NULL)
+      : vec4_visitor(brw, NULL, NULL, NULL, NULL, shader_prog, NULL, NULL,
+                     false)
    {
    }