Redoing the way we handle vertex shaders for the draw module.
diff --git a/src/mesa/pipe/draw/draw_private.h b/src/mesa/pipe/draw/draw_private.h
index ebef534..2f52299 100644
--- a/src/mesa/pipe/draw/draw_private.h
+++ b/src/mesa/pipe/draw/draw_private.h
@@ -46,6 +46,7 @@
 
 #include "draw_vertex.h"
 
+#include "x86/rtasm/x86sse.h"
 
 /**
  * Basic vertex info.
@@ -104,7 +105,7 @@
 
    void (*tri)( struct draw_stage *,
 		struct prim_header * );
-   
+
    void (*end)( struct draw_stage * );
 
    void (*reset_stipple_counter)( struct draw_stage * );
@@ -116,6 +117,15 @@
 #define VCACHE_OVERFLOW        4
 #define VS_QUEUE_LENGTH        (VCACHE_SIZE + VCACHE_OVERFLOW + 1)	/* can never fill up */
 
+/**
+ * Private version of the compiled vertex_shader
+ */
+struct draw_vertex_shader {
+   const struct pipe_shader_state *state;
+#if defined(__i386__) || defined(__386__)
+   struct x86_function  sse2_program;
+#endif
+};
 
 /**
  * Private context for the drawing module.
@@ -145,7 +155,7 @@
    struct pipe_viewport_state viewport;
    struct pipe_vertex_buffer vertex_buffer[PIPE_ATTRIB_MAX];
    struct pipe_vertex_element vertex_element[PIPE_ATTRIB_MAX];
-   struct pipe_shader_state vertex_shader;
+   const struct draw_vertex_shader *vertex_shader;
    struct pipe_vertex_buffer feedback_buffer[PIPE_ATTRIB_MAX];
    struct pipe_vertex_element feedback_element[PIPE_ATTRIB_MAX];