diff options
author | Brian <brian.paul@tungstengraphics.com> | 2008-03-13 18:19:47 -0600 |
---|---|---|
committer | Brian <brian.paul@tungstengraphics.com> | 2008-03-13 18:19:47 -0600 |
commit | 78302c7ca30d27ef3d087deb4d1a22e83858ce4b (patch) | |
tree | ea882698d2abcf3f217320ae85b6950a2047a241 | |
parent | 34be3969505d378c5a6734a134f03d094a865c56 (diff) |
gallium: need to all draw_flush() in softpipe_unmap_constant_buffers()
Otherwise, we won't have our constants when we run the fragment shader.
Fixes crash in glsl tests when SP_VBUF=1.
-rw-r--r-- | src/gallium/drivers/softpipe/sp_draw_arrays.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/softpipe/sp_draw_arrays.c b/src/gallium/drivers/softpipe/sp_draw_arrays.c index 2049afda34..5b5a0fe573 100644 --- a/src/gallium/drivers/softpipe/sp_draw_arrays.c +++ b/src/gallium/drivers/softpipe/sp_draw_arrays.c @@ -62,6 +62,14 @@ softpipe_unmap_constant_buffers(struct softpipe_context *sp) { struct pipe_winsys *ws = sp->pipe.winsys; uint i; + + /* really need to flush all prims since the vert/frag shaders const buffers + * are going away now. + */ + draw_flush(sp->draw); + + draw_set_mapped_constant_buffer(sp->draw, NULL); + for (i = 0; i < 2; i++) { if (sp->constants[i].size) ws->buffer_unmap(ws, sp->constants[i].buffer); |