[Mesa-dev] [PATCH 05/10] i965/fs: Remove the param_index/param_offset indirection.

Eric Anholt eric at anholt.net
Mon Dec 24 09:53:31 PST 2012


Now that ParameterValues doesn't change across the visitor, we don't
need to go through this.
---
 src/mesa/drivers/dri/i965/brw_fs.cpp         |   34 +++-----------------------
 src/mesa/drivers/dri/i965/brw_fs.h           |    6 -----
 src/mesa/drivers/dri/i965/brw_fs_fp.cpp      |    5 ++--
 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |   11 +++------
 4 files changed, 10 insertions(+), 46 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index fcde3da..e157dc2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -815,10 +815,8 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type)
    case GLSL_TYPE_INT:
    case GLSL_TYPE_BOOL:
       for (unsigned int i = 0; i < type->vector_elements; i++) {
-	 unsigned int param = c->prog_data.nr_params++;
-
-	 this->param_index[param] = loc;
-	 this->param_offset[param] = i;
+	 c->prog_data.param[c->prog_data.nr_params++] =
+            &fp->Base.Parameters->ParameterValues[loc][i].f;
       }
       return 1;
 
@@ -874,9 +872,8 @@ fs_visitor::setup_builtin_uniform_values(ir_variable *ir)
 	    break;
 	 last_swiz = swiz;
 
-	 this->param_index[c->prog_data.nr_params] = index;
-	 this->param_offset[c->prog_data.nr_params] = swiz;
-	 c->prog_data.nr_params++;
+	 c->prog_data.param[c->prog_data.nr_params++] =
+            &fp->Base.Parameters->ParameterValues[index][swiz].f;
       }
    }
 }
@@ -1179,25 +1176,6 @@ fs_visitor::emit_math(enum opcode opcode, fs_reg dst, fs_reg src0, fs_reg src1)
    return inst;
 }
 
-/**
- * To be called after the last _mesa_add_state_reference() call, to
- * set up prog_data.param[] for assign_curb_setup() and
- * setup_pull_constants().
- */
-void
-fs_visitor::setup_paramvalues_refs()
-{
-   if (dispatch_width != 8)
-      return;
-
-   /* Set up the pointers to ParamValues now that that array is finalized. */
-   for (unsigned int i = 0; i < c->prog_data.nr_params; i++) {
-      c->prog_data.param[i] =
-	 (const float *)fp->Base.Parameters->ParameterValues[this->param_index[i]] +
-	 this->param_offset[i];
-   }
-}
-
 void
 fs_visitor::assign_curb_setup()
 {
@@ -1528,9 +1506,6 @@ fs_visitor::remove_dead_constants()
 	 if (remapped == -1)
 	    continue;
 
-	 /* We've already done setup_paramvalues_refs() so no need to worry
-	  * about param_index and param_offset.
-	  */
 	 c->prog_data.param[remapped] = c->prog_data.param[i];
       }
 
@@ -2506,7 +2481,6 @@ fs_visitor::run()
 
       split_virtual_grfs();
 
-      setup_paramvalues_refs();
       move_uniform_array_access_to_pull_constants();
       setup_pull_constants();
 
diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 75d6cf7..d801298 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -296,7 +296,6 @@ public:
    bool run();
    void setup_payload_gen4();
    void setup_payload_gen6();
-   void setup_paramvalues_refs();
    void assign_curb_setup();
    void calculate_urb_setup();
    void assign_urb_setup();
@@ -419,11 +418,6 @@ public:
    struct brw_wm_compile *c;
    unsigned int sanity_param_count;
 
-   /* Delayed setup of c->prog_data.params[] due to realloc of
-    * ParamValues[] during compile.
-    */
-   int param_index[MAX_UNIFORMS * 4];
-   int param_offset[MAX_UNIFORMS * 4];
    int param_size[MAX_UNIFORMS * 4];
 
    int *virtual_grf_sizes;
diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
index bebf059..9ca082a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
@@ -596,9 +596,8 @@ fs_visitor::setup_fp_regs()
       for (unsigned p = 0;
            p < fp->Base.Parameters->NumParameters; p++) {
          for (unsigned int i = 0; i < 4; i++) {
-            this->param_index[c->prog_data.nr_params] = p;
-            this->param_offset[c->prog_data.nr_params] = i;
-            c->prog_data.nr_params++;
+            c->prog_data.param[c->prog_data.nr_params++] =
+               &fp->Base.Parameters->ParameterValues[p][i].f;
          }
       }
    }
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 4bde6c7..d85d48b 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -1220,13 +1220,10 @@ fs_visitor::rescale_texcoord(ir_texture *ir, fs_reg coordinate,
 
       GLuint index = _mesa_add_state_reference(params,
 					       (gl_state_index *)tokens);
-
-      this->param_index[c->prog_data.nr_params] = index;
-      this->param_offset[c->prog_data.nr_params] = 0;
-      c->prog_data.nr_params++;
-      this->param_index[c->prog_data.nr_params] = index;
-      this->param_offset[c->prog_data.nr_params] = 1;
-      c->prog_data.nr_params++;
+      c->prog_data.param[c->prog_data.nr_params++] =
+         &fp->Base.Parameters->ParameterValues[index][0].f;
+      c->prog_data.param[c->prog_data.nr_params++] =
+         &fp->Base.Parameters->ParameterValues[index][1].f;
    }
 
    /* The 965 requires the EU to do the normalization of GL rectangle
-- 
1.7.10.4



More information about the mesa-dev mailing list