From: Kenneth Graunke Date: Fri, 14 Nov 2014 06:50:03 +0000 (-0800) Subject: i965: Skip _mesa_load_state_parameters when there are zero parameters. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5e37a2a4a8aa9776ac17de794786479af2da2723;p=mesa.git i965: Skip _mesa_load_state_parameters when there are zero parameters. Saves a tiny bit of CPU overhead. Signed-off-by: Kenneth Graunke Reviewed-by: Matt Turner Acked-by: Eric Anholt --- 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 1cc96cf683f..4e18c7dce23 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c @@ -59,11 +59,6 @@ brw_upload_pull_constants(struct brw_context *brw, int i; uint32_t surf_index = prog_data->binding_table.pull_constants_start; - /* Updates the ParamaterValues[i] pointers for all parameters of the - * basic type of PROGRAM_STATE_VAR. - */ - _mesa_load_state_parameters(&brw->ctx, prog->Parameters); - if (!prog_data->nr_pull_params) { if (stage_state->surf_offset[surf_index]) { stage_state->surf_offset[surf_index] = 0; @@ -72,6 +67,11 @@ brw_upload_pull_constants(struct brw_context *brw, return; } + /* Updates the ParamaterValues[i] pointers for all parameters of the + * basic type of PROGRAM_STATE_VAR. + */ + _mesa_load_state_parameters(&brw->ctx, prog->Parameters); + /* CACHE_NEW_*_PROG | _NEW_PROGRAM_CONSTANTS */ uint32_t size = prog_data->nr_pull_params * 4; drm_intel_bo *const_bo = NULL; diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index 2427407c18e..1de3c261b7d 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -58,15 +58,15 @@ gen6_upload_push_constants(struct brw_context *brw, { struct gl_context *ctx = &brw->ctx; - /* Updates the ParamaterValues[i] pointers for all parameters of the - * basic type of PROGRAM_STATE_VAR. - */ - /* XXX: Should this happen somewhere before to get our state flag set? */ - _mesa_load_state_parameters(ctx, prog->Parameters); - if (prog_data->nr_params == 0) { stage_state->push_const_size = 0; } else { + /* Updates the ParamaterValues[i] pointers for all parameters of the + * basic type of PROGRAM_STATE_VAR. + */ + /* XXX: Should this happen somewhere before to get our state flag set? */ + _mesa_load_state_parameters(ctx, prog->Parameters); + gl_constant_value *param; int i;