When surface_state pointing to pull constant surfaces are changed, update on-chip binding table. Same with VS ubo surface states.
Signed-off-by: Abdiel Janulgue <abdiel.janul...@linux.intel.com> --- src/mesa/drivers/dri/i965/brw_vs_surface_state.c | 10 ++++++++++ 1 file changed, 10 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 605d394..1aa5250 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_surface_state.c @@ -34,6 +34,7 @@ #include "brw_context.h" #include "brw_state.h" +#include "brw_defines.h" /* Creates a new VS constant buffer reflecting the current VS program's * constants, if needed by the VS program. @@ -94,6 +95,9 @@ brw_upload_vs_pull_constants(struct brw_context *brw) intel->vtbl.create_constant_surface(brw, brw->vs.const_bo, 0, size, &brw->vs.surf_offset[surf], false); + if (intel->is_haswell) + gen7_update_vs_binding_table(brw, surf, brw->vs.surf_offset[surf]); + brw->state.dirty.brw |= BRW_NEW_VS_CONSTBUF; } @@ -110,6 +114,8 @@ static void brw_upload_vs_ubo_surfaces(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; + struct intel_context *intel = &brw->intel; + uint32_t p, surf_offset; /* _NEW_PROGRAM */ struct gl_shader_program *prog = ctx->Shader.CurrentVertexProgram; @@ -118,6 +124,10 @@ brw_upload_vs_ubo_surfaces(struct brw_context *brw) brw_upload_ubo_surfaces(brw, prog->_LinkedShaders[MESA_SHADER_VERTEX], &brw->vs.surf_offset[SURF_INDEX_VS_UBO(0)]); + + if (intel->is_haswell) + gen7_update_vs_binding_table(brw, SURF_INDEX_VS_UBO(0), + brw->vs.surf_offset[SURF_INDEX_VS_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