When hardware-generated binding tables are enabled, use the hw-generated binding table format when uploading binding table state.
Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> --- src/mesa/drivers/dri/i965/brw_binding_tables.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_binding_tables.c b/src/mesa/drivers/dri/i965/brw_binding_tables.c index e853aac..d97b3d9 100644 --- a/src/mesa/drivers/dri/i965/brw_binding_tables.c +++ b/src/mesa/drivers/dri/i965/brw_binding_tables.c @@ -71,7 +71,12 @@ brw_upload_binding_table(struct brw_context *brw, return; stage_state->bind_bo_offset = 0; - } else { + } + + /* If resource streamer is enabled, skip manual binding table upload */ + if (!brw->hw_bt_pool.bo) { + /* CACHE_NEW_*_PROG */ + /* Upload a new binding table. */ if (INTEL_DEBUG & DEBUG_SHADER_TIME) { brw->vtbl.create_raw_surface( @@ -86,15 +91,26 @@ brw_upload_binding_table(struct brw_context *brw, /* BRW_NEW_SURFACES and BRW_NEW_*_CONSTBUF */ memcpy(bind, stage_state->surf_offset, prog_data->binding_table.size_bytes); + } else { + gen7_update_binding_table_from_array(brw, stage_state->stage, + stage_state->surf_offset, + prog_data->binding_table.size_bytes / 4); } brw->state.dirty.brw |= brw_new_binding_table; if (brw->gen >= 7) { + + if (brw->has_resource_streamer) + stage_state->bind_bo_offset = brw->hw_bt_pool.next_offset; + BEGIN_BATCH(2); OUT_BATCH(packet_name << 16 | (2 - 2)); OUT_BATCH(stage_state->bind_bo_offset); ADVANCE_BATCH(); + + if (brw->has_resource_streamer) + brw->hw_bt_pool.next_offset += bt_size; } } -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev