Mesa (master): i965: Consistently use nr_pull_params instead of NumParameters.

Eric Anholt anholt at kemper.freedesktop.org
Fri Dec 28 19:03:49 UTC 2012


Module: Mesa
Branch: master
Commit: 7e28d6c1ab101894c3a3c90bef929c34e9da6148
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e28d6c1ab101894c3a3c90bef929c34e9da6148

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Nov 21 14:30:55 2012 -0800

i965: Consistently use nr_pull_params instead of NumParameters.

NumParameters used to be an upper bound on the number of vec4s to be
uploaded, which was basically safe (unless your buffer was bound near
the top of address space *and* you array indexed outside the buffer, in
which case I think you might GPU hang).  As I migrate the driver away
from ParameterValues[], this is no longer true.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_vs_surface_state.c |    5 ++---
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |    2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c
index 3985b48..4da7eaa 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c
@@ -48,7 +48,6 @@ brw_upload_vs_pull_constants(struct brw_context *brw)
    /* BRW_NEW_VERTEX_PROGRAM */
    struct brw_vertex_program *vp =
       (struct brw_vertex_program *) brw->vertex_program;
-   const struct gl_program_parameter_list *params = vp->program.Base.Parameters;
    int i;
 
    /* Updates the ParamaterValues[i] pointers for all parameters of the
@@ -81,7 +80,7 @@ brw_upload_vs_pull_constants(struct brw_context *brw)
    }
 
    if (0) {
-      for (i = 0; i < params->NumParameters; i++) {
+      for (i = 0; i < ALIGN(brw->vs.prog_data->nr_pull_params, 4) / 4; i++) {
 	 float *row = (float *)brw->vs.const_bo->virtual + i * 4;
 	 printf("vs const surface %3d: %4.3f %4.3f %4.3f %4.3f\n",
 		i, row[0], row[1], row[2], row[3]);
@@ -92,7 +91,7 @@ brw_upload_vs_pull_constants(struct brw_context *brw)
 
    const int surf = SURF_INDEX_VERT_CONST_BUFFER;
    intel->vtbl.create_constant_surface(brw, brw->vs.const_bo, 0,
-				       params->NumParameters,
+				       ALIGN(brw->vs.prog_data->nr_pull_params, 4) / 4,
 				       &brw->vs.surf_offset[surf]);
 
    brw->state.dirty.brw |= BRW_NEW_VS_CONSTBUF;
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index 94c01cb..a2a875f 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -1026,7 +1026,7 @@ brw_upload_wm_pull_constants(struct brw_context *brw)
    drm_intel_gem_bo_unmap_gtt(brw->wm.const_bo);
 
    intel->vtbl.create_constant_surface(brw, brw->wm.const_bo, 0,
-				       params->NumParameters,
+				       ALIGN(brw->wm.prog_data->nr_pull_params, 4) / 4,
 				       &brw->wm.surf_offset[surf_index]);
 
    brw->state.dirty.brw |= BRW_NEW_SURFACES;




More information about the mesa-commit mailing list