wined3d: Add support for VBOs to the drawing code.
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 5dcda2f..fd51dcf 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -357,9 +357,21 @@
                     int   minIndex,
                     WineDirect3DVertexStridedData *DrawPrimStrideData);
 
-void primitiveConvertToStridedData(IWineD3DDevice *iface,
-                                   WineDirect3DVertexStridedData *strided,
-                                   LONG BaseVertexIndex);
+void primitiveConvertToStridedData(IWineD3DDevice *iface, WineDirect3DVertexStridedData *strided, LONG BaseVertexIndex, BOOL *fixup);
+
+void primitiveDeclarationConvertToStridedData(
+     IWineD3DDevice *iface,
+     BOOL useVertexShaderFunction,
+     WineDirect3DVertexStridedData *strided,
+     LONG BaseVertexIndex, 
+     DWORD *fvf,
+     BOOL *fixup);
+
+void primitiveConvertFVFtoOffset(DWORD thisFVF,
+                                 DWORD stride,
+                                 BYTE *data,
+                                 WineDirect3DVertexStridedData *strided,
+                                 GLint streamVBO);
 
 DWORD get_flexible_vertex_size(DWORD d3dvtVertexType);
 
@@ -615,10 +627,24 @@
     /* WineD3DVertexBuffer specifics */
     DWORD                     fvf;
 
+    /* Vertex buffer object support */
+    GLuint                    vbo;
+    BYTE                      Flags;
+    UINT                      stream;
+
+    UINT                      dirtystart, dirtyend;
+
+    /* Last description of the buffer */
+    WineDirect3DVertexStridedData strided;
 } IWineD3DVertexBufferImpl;
 
 extern const IWineD3DVertexBufferVtbl IWineD3DVertexBuffer_Vtbl;
 
+#define VBFLAG_LOAD           0x01    /* Data is written from allocatedMemory to the VBO */
+#define VBFLAG_OPTIMIZED      0x02    /* Optimize has been called for the VB */
+#define VBFLAG_DIRTY          0x04    /* Buffer data has been modified */
+#define VBFLAG_STREAM         0x08    /* The vertex buffer is in a stream */
+#define VBFLAG_HASDESC        0x10    /* A vertex description has been found */
 
 /*****************************************************************************
  * IWineD3DIndexBuffer implementation structure (extends IWineD3DResourceImpl)
@@ -1220,7 +1246,7 @@
     extern BOOL WINAPI IWineD3DBaseTextureImpl_SetDirty(IWineD3DBaseTexture *iface, BOOL);
     extern BOOL WINAPI IWineD3DBaseTextureImpl_GetDirty(IWineD3DBaseTexture *iface);
 
-    extern BYTE* WINAPI IWineD3DVertexBufferImpl_GetMemory(IWineD3DVertexBuffer* iface, DWORD iOffset);
+    extern BYTE* WINAPI IWineD3DVertexBufferImpl_GetMemory(IWineD3DVertexBuffer* iface, DWORD iOffset, GLint *vbo);
     extern HRESULT WINAPI IWineD3DVertexBufferImpl_ReleaseMemory(IWineD3DVertexBuffer* iface);
     extern HRESULT WINAPI IWineD3DBaseTextureImpl_BindTexture(IWineD3DBaseTexture *iface);
     extern HRESULT WINAPI IWineD3DBaseTextureImpl_UnBindTexture(IWineD3DBaseTexture *iface);