draw: cope with binding NULL vertex shader (on context delete, for instance)
authorKeith Whitwell <keith@tungstengraphics.com>
Sun, 9 Mar 2008 20:17:02 +0000 (20:17 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Sun, 9 Mar 2008 20:23:05 +0000 (20:23 +0000)
src/gallium/auxiliary/draw/draw_vertex_shader.c

index 1e95355..133418b 100644 (file)
@@ -110,13 +110,20 @@ draw_bind_vertex_shader(struct draw_context *draw,
                         struct draw_vertex_shader *dvs)
 {
    draw_do_flush( draw, DRAW_FLUSH_STATE_CHANGE );
+   
+   if (dvs) 
+   {
+      draw->vertex_shader = dvs;
+      draw->num_vs_outputs = dvs->info.num_outputs;
 
-   draw->vertex_shader = dvs;
-   draw->num_vs_outputs = dvs->info.num_outputs;
+      tgsi_exec_machine_init(&draw->machine);
 
-   tgsi_exec_machine_init(&draw->machine);
-
-   dvs->prepare( dvs, draw );
+      dvs->prepare( dvs, draw );
+   }
+   else {
+      draw->vertex_shader = NULL;
+      draw->num_vs_outputs = 0;
+   }
 }