summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/state_tracker/st_atom.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c
index 4bef3423b07..abbbd4d45a3 100644
--- a/src/mesa/state_tracker/st_atom.c
+++ b/src/mesa/state_tracker/st_atom.c
@@ -198,7 +198,15 @@ void st_validate_state( struct st_context *st, enum st_pipeline pipeline )
}
st->compute_shader_may_be_dirty = false;
- pipeline_mask = ST_PIPELINE_COMPUTE_STATE_MASK;
+
+ /*
+ * We add the ST_NEW_FB_STATE bit here as well, because glBindFramebuffer
+ * acts as a barrier that breaks feedback loops between the framebuffer
+ * and textures bound to the framebuffer, even when those textures are
+ * accessed by compute shaders; so we must inform the driver of new
+ * framebuffer state.
+ */
+ pipeline_mask = ST_PIPELINE_COMPUTE_STATE_MASK | ST_NEW_FB_STATE;
break;
}