When surface_state pointing to pull constant surfaces are changed, update on-chip binding table. Same with VS ubo surface states.
v3: Include support for geometry shaders constant buffers in brw_upload_vec4_pull_constants. The previous patch failed to address this. Cc: Paul Berry <stereotype...@gmail.com> Cc: Kenneth Graunke <kenn...@whitecape.org> Cc: Chad Versace <chad.vers...@linux.intel.com> Cc: Eric Anholt <e...@anholt.net> Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> --- src/mesa/drivers/dri/i965/brw_vs_surface_state.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c index 2c5d06f..cf06e0e 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c @@ -87,6 +87,21 @@ brw_upload_vec4_pull_constants(struct brw_context *brw, const int surf = SURF_INDEX_VEC4_CONST_BUFFER; brw->vtbl.create_constant_surface(brw, stage_state->const_bo, 0, size, &stage_state->surf_offset[surf], false); + if (brw->has_resource_streamer) { + switch(brw_new_constbuf) { + case BRW_NEW_VS_CONSTBUF: + gen7_update_binding_table(brw, STAGE_VERTEX_SHADER, + surf, stage_state->surf_offset[surf]); + break; + case BRW_NEW_GS_CONSTBUF: + gen7_update_binding_table(brw, STAGE_GEOMETRY_SHADER, + surf, stage_state->surf_offset[surf]); + break; + default: + assert(!"unrecognized new constant buffer"); + break; + } + } brw->state.dirty.brw |= brw_new_constbuf; } @@ -138,6 +153,11 @@ brw_upload_vs_ubo_surfaces(struct brw_context *brw) brw_upload_ubo_surfaces(brw, prog->_LinkedShaders[MESA_SHADER_VERTEX], &stage_state->surf_offset[SURF_INDEX_VEC4_UBO(0)]); + if (brw->has_resource_streamer) { + gen7_update_binding_table(brw, STAGE_VERTEX_SHADER, + SURF_INDEX_VEC4_UBO(0), + stage_state->surf_offset[SURF_INDEX_VEC4_UBO(0)]); + } } const struct brw_tracked_state brw_vs_ubo_surfaces = { -- 1.7.9.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev