Mesa (master): i965: Don' t emit SURFACE_STATEs for gather workarounds on Broadwell.
Kenneth Graunke
kwg at kemper.freedesktop.org
Mon Jun 23 20:33:01 UTC 2014
Module: Mesa
Branch: master
Commit: f6a99d1167b14a3ada7c1d6f41a5cc6f13290e0d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f6a99d1167b14a3ada7c1d6f41a5cc6f13290e0d
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Thu May 29 00:06:08 2014 -0700
i965: Don't emit SURFACE_STATEs for gather workarounds on Broadwell.
As far as I can tell, Broadwell doesn't need any of the SURFACE_STATE
workarounds for textureGather() bugs, so there's no need to emit
a second set of identical copies.
To keep things simple, just point the gather surface index base to the
same place as the texture surface index base.
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>
Cc: "10.2" <mesa-stable at lists.freedesktop.org>
---
src/mesa/drivers/dri/i965/brw_shader.cpp | 9 +++++++--
src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 14 ++++++++------
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
index 103c70b..2fa3ad9 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.cpp
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -763,8 +763,13 @@ backend_visitor::assign_common_binding_table_offsets(uint32_t next_binding_table
}
if (prog->UsesGather) {
- stage_prog_data->binding_table.gather_texture_start = next_binding_table_offset;
- next_binding_table_offset += num_textures;
+ if (brw->gen >= 8) {
+ stage_prog_data->binding_table.gather_texture_start =
+ stage_prog_data->binding_table.texture_start;
+ } else {
+ stage_prog_data->binding_table.gather_texture_start = next_binding_table_offset;
+ next_binding_table_offset += num_textures;
+ }
} else {
stage_prog_data->binding_table.gather_texture_start = 0xd0d0d0d0;
}
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 c9d9614..3279d3b 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -829,12 +829,14 @@ brw_update_texture_surfaces(struct brw_context *brw)
/* emit alternate set of surface state for gather. this
* allows the surface format to be overriden for only the
* gather4 messages. */
- if (vs && vs->UsesGather)
- update_stage_texture_surfaces(brw, vs, &brw->vs.base, true);
- if (gs && gs->UsesGather)
- update_stage_texture_surfaces(brw, gs, &brw->gs.base, true);
- if (fs && fs->UsesGather)
- update_stage_texture_surfaces(brw, fs, &brw->wm.base, true);
+ if (brw->gen < 8) {
+ if (vs && vs->UsesGather)
+ update_stage_texture_surfaces(brw, vs, &brw->vs.base, true);
+ if (gs && gs->UsesGather)
+ update_stage_texture_surfaces(brw, gs, &brw->gs.base, true);
+ if (fs && fs->UsesGather)
+ update_stage_texture_surfaces(brw, fs, &brw->wm.base, true);
+ }
brw->state.dirty.brw |= BRW_NEW_SURFACES;
}
More information about the mesa-commit
mailing list