Mesa (master): i965: Reorganize the code in brw_upload_binding_tables.

Kenneth Graunke kwg at kemper.freedesktop.org
Mon Mar 10 20:07:55 UTC 2014


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Mar  6 15:39:50 2014 -0800

i965: Reorganize the code in brw_upload_binding_tables.

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 at whitecape.org>
Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/mesa/drivers/dri/i965/brw_binding_tables.c |   35 ++++++++++++------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_binding_tables.c b/src/mesa/drivers/dri/i965/brw_binding_tables.c
index b39bd10..0de5d1a 100644
--- a/src/mesa/drivers/dri/i965/brw_binding_tables.c
+++ b/src/mesa/drivers/dri/i965/brw_binding_tables.c
@@ -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;
 }




More information about the mesa-commit mailing list