Blanket the ubo blocks with a binding table. Note that the resource streamer is able to fetch the constant buffers referred to by the gather table only if it is referenced by the hw-binding table generator.
Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> --- src/mesa/drivers/dri/i965/brw_context.h | 3 +++ src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 9877126..8d9adf6 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -668,6 +668,9 @@ struct brw_vs_prog_data { /** Start of hardware binding table index for uniform gather constant entries */ #define BRW_UNIFORM_GATHER_INDEX_START 16 +/** Start of hardware binding table index for UBO gather constant entries */ +#define BRW_UBO_GATHER_INDEX_START (BRW_UNIFORM_GATHER_INDEX_START + 8) + /* Note: brw_gs_prog_data_compare() must be updated when adding fields to * this struct! */ diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 85a08d5..558a816 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -853,6 +853,7 @@ brw_upload_ubo_surfaces(struct brw_context *brw, uint32_t *surf_offsets = &stage_state->surf_offset[prog_data->binding_table.ubo_start]; + bool use_gather = (brw->gather_pool.bo != NULL); for (int i = 0; i < shader->NumUniformBlocks; i++) { struct gl_uniform_buffer_binding *binding; @@ -873,6 +874,11 @@ brw_upload_ubo_surfaces(struct brw_context *brw, bo->size - binding->Offset, &surf_offsets[i], dword_pitch); + if (use_gather) { + int bt_idx = BRW_UBO_GATHER_INDEX_START + i; + gen7_update_binding_table(brw, MESA_SHADER_FRAGMENT, + bt_idx, surf_offsets[i]); + } } if (shader->NumUniformBlocks) -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev