summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2018-02-05 10:14:19 +1000
committerEmil Velikov <[email protected]>2018-02-28 20:14:25 +0000
commitec2b454d8686f8cd338389c1f68c26394e0f7de0 (patch)
tree0c5a38c1136386b8441c77d77566f8ff1b4bc545 /src/gallium
parentdd2ea3a3e93d48a174aa4acafd08bba10d6641a2 (diff)
r600/compute: only mark buffer/image state dirty for fragment shaders
The compute emission path always emits this currently, and emitting it on the fragment path breaks the blitter. This fixes gpu hangs in KHR-GL45.compute_shader.resource-texture Reviewed-by: Roland Scheidegger <[email protected]> Cc: <[email protected]> Signed-off-by: Dave Airlie <[email protected]> (cherry picked from commit ab5cee4c241cb360cf67101dd751e0f38637b526)
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/r600/evergreen_state.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index a3d07793666..c418497fb05 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -4059,7 +4059,8 @@ static void evergreen_set_shader_buffers(struct pipe_context *ctx,
r600_mark_atom_dirty(rctx, &rctx->cb_misc_state.atom);
}
- r600_mark_atom_dirty(rctx, &istate->atom);
+ if (shader == PIPE_SHADER_FRAGMENT)
+ r600_mark_atom_dirty(rctx, &istate->atom);
}
static void evergreen_set_shader_images(struct pipe_context *ctx,
@@ -4235,7 +4236,8 @@ static void evergreen_set_shader_images(struct pipe_context *ctx,
r600_mark_atom_dirty(rctx, &rctx->cb_misc_state.atom);
}
- r600_mark_atom_dirty(rctx, &istate->atom);
+ if (shader == PIPE_SHADER_FRAGMENT)
+ r600_mark_atom_dirty(rctx, &istate->atom);
}
void evergreen_init_state_functions(struct r600_context *rctx)