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 <[email protected]>
Cc: Kenneth Graunke <[email protected]>
Cc: Chad Versace <[email protected]>
Cc: Eric Anholt <[email protected]>
Signed-off-by: Abdiel Janulgue <[email protected]>
---
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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev