gallium: need to all draw_flush() in softpipe_unmap_constant_buffers()
authorBrian <brian.paul@tungstengraphics.com>
Fri, 14 Mar 2008 00:19:47 +0000 (18:19 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 14 Mar 2008 00:19:47 +0000 (18:19 -0600)
Otherwise, we won't have our constants when we run the fragment shader.
Fixes crash in glsl tests when SP_VBUF=1.

src/gallium/drivers/softpipe/sp_draw_arrays.c

index 2049afda34f21f59ad71e13e8b421054180c9013..5b5a0fe5735b0296149b1fbf5d71d565fc618b18 100644 (file)
@@ -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);