i965: Use brw_upload_binding_table() for the pixel shader as well.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 13 Sep 2013 22:27:04 +0000 (15:27 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 19 Sep 2013 17:52:57 +0000 (10:52 -0700)
This is not quite the same: brw_upload_binding_table() also has code to
early-return if there are no entries, while the existing code did not.

The PS binding table is unlikely to be empty since it will have at least
one color buffer.  If it ever is empty, early returning seems wise.

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

index 8d87786f0fac968caa4cac5a2da5ebe3a1ac9b79..a7daa0a6d0872ddf07222f785f7f1e984b1e6390 100644 (file)
@@ -862,25 +862,12 @@ const struct brw_tracked_state brw_wm_ubo_surfaces = {
 static void
 brw_upload_wm_binding_table(struct brw_context *brw)
 {
-   uint32_t *bind;
-   int i;
+   struct brw_stage_state *stage_state = &brw->wm.base;
 
-   if (INTEL_DEBUG & DEBUG_SHADER_TIME) {
-      gen7_create_shader_time_surface(brw, &brw->wm.base.surf_offset[SURF_INDEX_WM_SHADER_TIME]);
-   }
-
-   /* CACHE_NEW_WM_PROG */
-   unsigned entries = brw->wm.prog_data->binding_table_size;
-   bind = brw_state_batch(brw, AUB_TRACE_BINDING_TABLE,
-                         sizeof(uint32_t) * entries,
-                         32, &brw->wm.base.bind_bo_offset);
-
-   /* BRW_NEW_SURFACES */
-   for (i = 0; i < entries; i++) {
-      bind[i] = brw->wm.base.surf_offset[i];
-   }
-
-   brw->state.dirty.brw |= BRW_NEW_PS_BINDING_TABLE;
+   /* BRW_NEW_SURFACES and CACHE_NEW_WM_PROG */
+   brw_upload_binding_table(brw, BRW_NEW_PS_BINDING_TABLE, stage_state,
+                            brw->wm.prog_data->binding_table_size,
+                            SURF_INDEX_WM_SHADER_TIME);
 }
 
 const struct brw_tracked_state brw_wm_binding_table = {