i965: Skip _mesa_load_state_parameters when there are zero parameters.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 14 Nov 2014 06:50:03 +0000 (22:50 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 20 Nov 2014 09:56:54 +0000 (01:56 -0800)
Saves a tiny bit of CPU overhead.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Acked-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_vs_surface_state.c
src/mesa/drivers/dri/i965/gen6_vs_state.c

index 1cc96cf683f9213bcd058d69d8a0d690462988f8..4e18c7dce236a8396f5e359abcdebc859e3388b4 100644 (file)
@@ -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;
index 2427407c18ef59a1734ffaaca03944db41afc200..1de3c261b7d9c3b4194c5a6ba251853526bddabf 100644 (file)
@@ -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;