i965/fs: Unify the param pointer allocation for FP/non-FP.
authorEric Anholt <eric@anholt.net>
Thu, 8 Nov 2012 22:02:22 +0000 (14:02 -0800)
committerEric Anholt <eric@anholt.net>
Sat, 17 Nov 2012 20:39:27 +0000 (12:39 -0800)
Now that we're using the new backend, we may actually put things into push
constants if you have too many uniform values uploaded.  Also, correctly
account for texture rectangle params and drop the old special case for the
0.0/1.0 params from the old backend.

src/mesa/drivers/dri/i965/brw_wm.c

index 2c9a6a07fbc2ce687f417c9d00e838fe9e420db6..e2d16db51ac9180882f5681777e3bc66dfe86a99 100644 (file)
@@ -221,22 +221,16 @@ bool do_wm_prog(struct brw_context *brw,
     * prog_data associated with the compiled program, and which will be freed
     * by the state cache.
     */
+   int param_count;
    if (fs) {
-      int param_count = fs->num_uniform_components;
-      /* The backend also sometimes adds params for texture size. */
-      param_count += 2 * BRW_MAX_TEX_UNIT;
-
-      c->prog_data.param = rzalloc_array(NULL, const float *, param_count);
-      c->prog_data.pull_param = rzalloc_array(NULL, const float *, param_count);
+      param_count = fs->num_uniform_components;
    } else {
-      /* brw_wm_pass0.c will also add references to 0.0 and 1.0 which are
-       * uploaded as push parameters.
-       */
-      int param_count = (fp->program.Base.Parameters->NumParameters + 2) * 4;
-      c->prog_data.param = rzalloc_array(NULL, const float *, param_count);
-      /* The old backend never does pull constants. */
-      c->prog_data.pull_param = NULL;
+      param_count = fp->program.Base.Parameters->NumParameters * 4;
    }
+   /* The backend also sometimes adds params for texture size. */
+   param_count += 2 * BRW_MAX_TEX_UNIT;
+   c->prog_data.param = rzalloc_array(NULL, const float *, param_count);
+   c->prog_data.pull_param = rzalloc_array(NULL, const float *, param_count);
 
    memcpy(&c->key, key, sizeof(*key));