summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2012-08-10 12:16:10 -0600
committerBrian Paul <[email protected]>2012-08-10 13:27:04 -0600
commit16c702ef3b9cff320c2adbfa853e00088adbf689 (patch)
tree4050aab7a74db2e53afd679f4408bd236631183b
parent3487b93cc4b8bea44f966a4f5cfd29b26dbbcff2 (diff)
softpipe: fix softpipe_delete_fs_state() failed assertion
The var!=softpipe->fs_variant assertion was failing because we weren't nulling the softpipe->fs_variant pointer when binding a new shader. Since softpipe->fs_variant depends on the current fs, it's of no use when a new FS is bound. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=53318 Note: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <[email protected]>
-rw-r--r--src/gallium/drivers/softpipe/sp_state_shader.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/softpipe/sp_state_shader.c b/src/gallium/drivers/softpipe/sp_state_shader.c
index 910d4ba11a5..1e64431344b 100644
--- a/src/gallium/drivers/softpipe/sp_state_shader.c
+++ b/src/gallium/drivers/softpipe/sp_state_shader.c
@@ -158,8 +158,10 @@ softpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
softpipe->fs = fs;
- if (fs == NULL)
- softpipe->fs_variant = NULL;
+ /* This depends on the current fragment shader and must always be
+ * re-validated before use.
+ */
+ softpipe->fs_variant = NULL;
if (state)
draw_bind_fragment_shader(softpipe->draw,