i965: Reorganize the code in brw_upload_binding_tables.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 6 Mar 2014 23:39:50 +0000 (15:39 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 10 Mar 2014 20:05:12 +0000 (13:05 -0700)
This makes both the empty and non-empty binding table paths exit through
the bottom of the function, which gives us a place to share code.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_binding_tables.c

index b39bd10bedf64e59301a45f77ef8b5a439266036..0de5d1a073780e4ddd74e1e1accdd1e3b9951295 100644 (file)
@@ -58,27 +58,28 @@ brw_upload_binding_table(struct brw_context *brw,
    /* CACHE_NEW_*_PROG */
    struct brw_stage_prog_data *prog_data = stage_state->prog_data;
 
-   /* If there are no surfaces, skip making the binding table altogether. */
    if (prog_data->binding_table.size_bytes == 0) {
-      if (stage_state->bind_bo_offset != 0) {
-         brw->state.dirty.brw |= brw_new_binding_table;
-         stage_state->bind_bo_offset = 0;
+      /* There are no surfaces; skip making the binding table altogether. */
+      if (stage_state->bind_bo_offset == 0)
+         return;
+
+      stage_state->bind_bo_offset = 0;
+   } else {
+      /* Upload a new binding table. */
+      if (INTEL_DEBUG & DEBUG_SHADER_TIME) {
+         brw->vtbl.create_raw_surface(
+            brw, brw->shader_time.bo, 0, brw->shader_time.bo->size,
+            &stage_state->surf_offset[prog_data->binding_table.shader_time_start], true);
       }
-      return;
-   }
 
-   if (INTEL_DEBUG & DEBUG_SHADER_TIME) {
-      brw->vtbl.create_raw_surface(
-         brw, brw->shader_time.bo, 0, brw->shader_time.bo->size,
-         &stage_state->surf_offset[prog_data->binding_table.shader_time_start], true);
-   }
+      uint32_t *bind = brw_state_batch(brw, AUB_TRACE_BINDING_TABLE,
+                                       prog_data->binding_table.size_bytes, 32,
+                                       &stage_state->bind_bo_offset);
 
-   uint32_t *bind = brw_state_batch(brw, AUB_TRACE_BINDING_TABLE,
-                                    prog_data->binding_table.size_bytes, 32,
-                                    &stage_state->bind_bo_offset);
-
-   /* BRW_NEW_SURFACES and BRW_NEW_*_CONSTBUF */
-   memcpy(bind, stage_state->surf_offset, prog_data->binding_table.size_bytes);
+      /* BRW_NEW_SURFACES and BRW_NEW_*_CONSTBUF */
+      memcpy(bind, stage_state->surf_offset,
+             prog_data->binding_table.size_bytes);
+   }
 
    brw->state.dirty.brw |= brw_new_binding_table;
 }