diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index 6b7f653..8c49d0f 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -56,7 +56,7 @@
     object->lpVtbl = &Direct3D8_Vtbl;
     object->direct3d8 = object;
     object->ref = 1;
-    object->WineD3D = WineDirect3DCreate(SDKVersion, 8);
+    object->WineD3D = WineDirect3DCreate(SDKVersion, 8, (IUnknown *)object);
 
     TRACE("SDKVersion = %x, Created Direct3D object @ %p, WineObj @ %p\n", SDKVersion, object, object->WineD3D);
 
diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c
index 6e2b6fb..ed70421 100644
--- a/dlls/d3d8/directx.c
+++ b/dlls/d3d8/directx.c
@@ -583,7 +583,7 @@
     localParameters.Flags                          = &pPresentationParameters->Flags;                      
     localParameters.FullScreen_RefreshRateInHz     = &pPresentationParameters->FullScreen_RefreshRateInHz; 
     localParameters.PresentationInterval           = &pPresentationParameters->FullScreen_PresentationInterval;    /* Renamed in dx9 */
-    IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &localParameters, &object->WineD3DDevice);
+    IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &localParameters, &object->WineD3DDevice, (IUnknown *)object);
 
     /** use StateBlock Factory here, for creating the startup stateBlock */
     object->StateBlock = NULL;
diff --git a/dlls/d3d9/d3d9_main.c b/dlls/d3d9/d3d9_main.c
index 7edb9bd..a80424a 100644
--- a/dlls/d3d9/d3d9_main.c
+++ b/dlls/d3d9/d3d9_main.c
@@ -43,7 +43,7 @@
 
     object->lpVtbl = &Direct3D9_Vtbl;
     object->ref = 1;
-    object->WineD3D = WineDirect3DCreate(SDKVersion, 9);
+    object->WineD3D = WineDirect3DCreate(SDKVersion, 9, (IUnknown *)object);
 
     TRACE("SDKVersion = %x, Created Direct3D object @ %p, WineObj @ %p\n", SDKVersion, object, object->WineD3D);
 
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index 487972a..a1bc220 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -606,35 +606,20 @@
 }
 
 HRESULT  WINAPI  IDirect3DDevice9Impl_SetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9* pStreamData, UINT OffsetInBytes, UINT Stride) {
-    IDirect3DVertexBuffer9 *oldSrc;
     IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
-
-    oldSrc = This->StateBlock->stream_source[StreamNumber];
-    TRACE("(%p) : StreamNo: %d, OldStream (%p), NewStream (%p), NewStride %d\n", This, StreamNumber, oldSrc, pStreamData, Stride);
-
-    This->UpdateStateBlock->Changed.stream_source[StreamNumber] = TRUE;
-    This->UpdateStateBlock->Set.stream_source[StreamNumber] = TRUE;
-    This->UpdateStateBlock->stream_stride[StreamNumber] = Stride;
-    This->UpdateStateBlock->stream_source[StreamNumber] = pStreamData;
-
-    /* Handle recording of state blocks */
-    if (This->isRecordingState) {
-        TRACE("Recording... not performing anything\n");
-        return D3D_OK;
-    }
-
-    if (oldSrc != NULL) IDirect3DVertexBuffer9Impl_Release(oldSrc);
-    if (pStreamData != NULL) IDirect3DVertexBuffer9Impl_AddRef(pStreamData);
-    return D3D_OK;
+    return IWineD3DDevice_SetStreamSource(This->WineD3DDevice, StreamNumber, 
+                                          pStreamData==NULL ? NULL:((IDirect3DVertexBuffer9Impl *)pStreamData)->wineD3DVertexBuffer, 
+                                          OffsetInBytes, Stride);
 }
 
 HRESULT  WINAPI  IDirect3DDevice9Impl_GetStreamSource(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, IDirect3DVertexBuffer9** pStream, UINT* OffsetInBytes, UINT* pStride) {
     IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
-    TRACE("(%p) : StreamNo: %d, Stream (%p), Stride %d\n", This, StreamNumber, This->StateBlock->stream_source[StreamNumber], This->StateBlock->stream_stride[StreamNumber]);
-    *pStream = This->StateBlock->stream_source[StreamNumber];
-    *pStride = This->StateBlock->stream_stride[StreamNumber];
-    IDirect3DVertexBuffer9Impl_AddRef((LPDIRECT3DVERTEXBUFFER9) *pStream);
-    return D3D_OK;
+    IWineD3DVertexBuffer *retStream = NULL;
+    HRESULT rc = D3D_OK;
+
+    rc = IWineD3DDevice_GetStreamSource(This->WineD3DDevice, StreamNumber, (IWineD3DVertexBuffer **)&retStream, OffsetInBytes, pStride);
+    if (rc == D3D_OK && NULL != *pStream) IWineD3DVertexBuffer_GetParent(retStream, (IUnknown **)pStream);
+    return rc;
 }
 
 HRESULT  WINAPI  IDirect3DDevice9Impl_SetStreamSourceFreq(LPDIRECT3DDEVICE9 iface, UINT StreamNumber, UINT Divider) {
diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c
index 126e965..0935f94 100644
--- a/dlls/d3d9/directx.c
+++ b/dlls/d3d9/directx.c
@@ -191,7 +191,7 @@
     localParameters.Flags                          = &pPresentationParameters->Flags;                      
     localParameters.FullScreen_RefreshRateInHz     = &pPresentationParameters->FullScreen_RefreshRateInHz; 
     localParameters.PresentationInterval           = &pPresentationParameters->PresentationInterval;       
-    IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &localParameters, &object->WineD3DDevice);
+    IWineD3D_CreateDevice(This->WineD3D, Adapter, DeviceType, hFocusWindow, BehaviourFlags, &localParameters, &object->WineD3DDevice, (IUnknown *)object);
 
     FIXME("(%p) : incomplete stub\n", This);
     return D3D_OK;
diff --git a/dlls/d3d9/vertexbuffer.c b/dlls/d3d9/vertexbuffer.c
index 908c537..dff7926 100644
--- a/dlls/d3d9/vertexbuffer.c
+++ b/dlls/d3d9/vertexbuffer.c
@@ -147,7 +147,7 @@
     object->lpVtbl = &Direct3DVertexBuffer9_Vtbl;
     object->ref = 1;
     object->device = This;
-    IWineD3DDevice_CreateVertexBuffer(This->WineD3DDevice, Size, Usage, FVF, Pool, &(object->wineD3DVertexBuffer), pSharedHandle);
+    IWineD3DDevice_CreateVertexBuffer(This->WineD3DDevice, Size, Usage, FVF, Pool, &(object->wineD3DVertexBuffer), pSharedHandle, (IUnknown *)object);
     *ppVertexBuffer = (LPDIRECT3DVERTEXBUFFER9) object;
 
     return D3D_OK;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 3ebeb9d..df8d565 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -34,8 +34,16 @@
 /**********************************************************
  * IWineD3DDevice implementation follows
  **********************************************************/
+HRESULT WINAPI IWineD3DDeviceImpl_GetParent(IWineD3DDevice *iface, IUnknown **pParent) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+    *pParent = This->parent;
+    IUnknown_AddRef(This->parent);
+    return D3D_OK;
+}
+
 HRESULT WINAPI IWineD3DDeviceImpl_CreateVertexBuffer(IWineD3DDevice *iface, UINT Size, DWORD Usage, 
-                             DWORD FVF, D3DPOOL Pool, IWineD3DVertexBuffer** ppVertexBuffer, HANDLE *sharedHandle) {
+                             DWORD FVF, D3DPOOL Pool, IWineD3DVertexBuffer** ppVertexBuffer, HANDLE *sharedHandle,
+                             IUnknown *parent) {
 
     IWineD3DVertexBufferImpl *object;
     IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
@@ -44,6 +52,8 @@
     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DVertexBufferImpl));
     object->lpVtbl                = &IWineD3DVertexBuffer_Vtbl;
     object->resource.wineD3DDevice= iface;
+    IWineD3DDevice_AddRef(iface);
+    object->resource.parent       = parent;
     object->resource.resourceType = D3DRTYPE_VERTEXBUFFER;
     object->resource.ref          = 1;
     object->allocatedMemory       = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Size);
@@ -58,7 +68,7 @@
     return D3D_OK;
 }
 
-HRESULT WINAPI IWineD3DDeviceImpl_CreateStateBlock(IWineD3DDevice* iface, D3DSTATEBLOCKTYPE Type, IWineD3DStateBlock** ppStateBlock) {
+HRESULT WINAPI IWineD3DDeviceImpl_CreateStateBlock(IWineD3DDevice* iface, D3DSTATEBLOCKTYPE Type, IWineD3DStateBlock** ppStateBlock, IUnknown *parent) {
   
     IWineD3DDeviceImpl     *This = (IWineD3DDeviceImpl *)iface;
     IWineD3DStateBlockImpl *object;
@@ -67,6 +77,8 @@
     object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DStateBlockImpl));
     object->lpVtbl        = &IWineD3DStateBlock_Vtbl;
     object->wineD3DDevice = iface;
+    IWineD3DDevice_AddRef(iface);
+    object->parent        = parent;
     object->ref           = 1;
     object->blockType     = Type;
     *ppStateBlock         = (IWineD3DStateBlock *)object;
@@ -109,6 +121,46 @@
     return D3D_OK;
 }
 
+/*****
+ * Get / Set Stream Source
+ *****/
+HRESULT WINAPI IWineD3DDeviceImpl_SetStreamSource(IWineD3DDevice *iface, UINT StreamNumber,IWineD3DVertexBuffer* pStreamData, UINT OffsetInBytes, UINT Stride) {
+    IWineD3DDeviceImpl       *This = (IWineD3DDeviceImpl *)iface;
+    IWineD3DVertexBuffer     *oldSrc;
+
+    oldSrc = This->stateBlock->stream_source[StreamNumber];
+    TRACE("(%p) : StreamNo: %d, OldStream (%p), NewStream (%p), NewStride %d\n", This, StreamNumber, oldSrc, pStreamData, Stride);
+
+    This->updateStateBlock->changed.stream_source[StreamNumber] = TRUE;
+    This->updateStateBlock->set.stream_source[StreamNumber]     = TRUE;
+    This->updateStateBlock->stream_stride[StreamNumber]         = Stride;
+    This->updateStateBlock->stream_source[StreamNumber]         = pStreamData;
+    This->updateStateBlock->stream_offset[StreamNumber]         = OffsetInBytes;
+
+    /* Handle recording of state blocks */
+    if (This->isRecordingState) {
+        TRACE("Recording... not performing anything\n");
+        return D3D_OK;
+    }
+
+    /* Not recording... */
+    if (oldSrc != NULL) IWineD3DVertexBuffer_Release(oldSrc);
+    if (pStreamData != NULL) IWineD3DVertexBuffer_AddRef(pStreamData);
+
+    return D3D_OK;
+}
+
+HRESULT WINAPI IWineD3DDeviceImpl_GetStreamSource(IWineD3DDevice *iface, UINT StreamNumber,IWineD3DVertexBuffer** pStream, UINT *pOffset, UINT* pStride) {
+    IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
+
+    TRACE("(%p) : StreamNo: %d, Stream (%p), Stride %d\n", This, StreamNumber, This->stateBlock->stream_source[StreamNumber], This->stateBlock->stream_stride[StreamNumber]);
+    *pStream = This->stateBlock->stream_source[StreamNumber];
+    *pStride = This->stateBlock->stream_stride[StreamNumber];
+    *pOffset = This->stateBlock->stream_offset[StreamNumber];
+    IWineD3DVertexBuffer_AddRef(*pStream); /* We have created a new reference to the VB */
+    return D3D_OK;
+}
+
 /**********************************************************
  * IUnknown parts follows
  **********************************************************/
@@ -130,6 +182,7 @@
     TRACE("(%p) : Releasing from %ld\n", This, This->ref);
     ref = InterlockedDecrement(&This->ref);
     if (ref == 0) {
+        IWineD3DStateBlock_Release((IWineD3DStateBlock *)This->stateBlock);
         IWineD3D_Release(This->WineD3D);
         HeapFree(GetProcessHeap(), 0, This);
     }
@@ -145,8 +198,11 @@
     IWineD3DDeviceImpl_QueryInterface,
     IWineD3DDeviceImpl_AddRef,
     IWineD3DDeviceImpl_Release,
+    IWineD3DDeviceImpl_GetParent,
     IWineD3DDeviceImpl_CreateVertexBuffer,
     IWineD3DDeviceImpl_CreateStateBlock,
     IWineD3DDeviceImpl_SetFVF,
-    IWineD3DDeviceImpl_GetFVF
+    IWineD3DDeviceImpl_GetFVF,
+    IWineD3DDeviceImpl_SetStreamSource,
+    IWineD3DDeviceImpl_GetStreamSource
 };
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 2b11579..546e39b 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1310,7 +1310,7 @@
    and fields being inserted in the middle, a new structure is used in place    */
 HRESULT  WINAPI  IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow,
                                            DWORD BehaviourFlags, WINED3DPRESENT_PARAMETERS* pPresentationParameters,
-                                                            IWineD3DDevice** ppReturnedDeviceInterface) {
+                                           IWineD3DDevice** ppReturnedDeviceInterface, IUnknown *parent) {
 
     HWND                whichHWND;
     HDC                 hDc;
@@ -1337,6 +1337,7 @@
     object->ref     = 1;
     object->WineD3D = iface;
     IWineD3D_AddRef(object->WineD3D);
+    object->parent  = parent;
     
     TRACE("(%p)->(Adptr:%d, DevType: %x, FocusHwnd: %p, BehFlags: %lx, PresParms: %p, RetDevInt: %p)\n", This, Adapter, DeviceType,
           hFocusWindow, BehaviourFlags, pPresentationParameters, ppReturnedDeviceInterface);
@@ -1468,7 +1469,8 @@
     /* Creating the startup stateBlock - Note Special Case: 0 => Don't fill in yet! */
     IWineD3DDevice_CreateStateBlock((IWineD3DDevice *)object, 
                                     (D3DSTATEBLOCKTYPE) 0, 
-                                    (IWineD3DStateBlock **)&object->stateBlock); 
+                                    (IWineD3DStateBlock **)&object->stateBlock,
+                                    NULL);   /* Note: No parent needed for initial internal stateblock */
     object->updateStateBlock = object->stateBlock;
 
     /* Setup surfaces for the backbuffer, frontbuffer and depthstencil buffer */
@@ -1581,6 +1583,13 @@
     return D3D_OK;
 }
 
+HRESULT WINAPI IWineD3DImpl_GetParent(IWineD3D *iface, IUnknown **pParent) {
+    IWineD3DImpl *This = (IWineD3DImpl *)iface;
+    IUnknown_AddRef(This->parent);
+    *pParent = This->parent;
+    return D3D_OK;
+}
+
 /**********************************************************
  * IUnknown parts follows
  **********************************************************/
@@ -1614,6 +1623,7 @@
     IWineD3DImpl_QueryInterface,
     IWineD3DImpl_AddRef,
     IWineD3DImpl_Release,
+    IWineD3DImpl_GetParent,
     IWineD3DImpl_GetAdapterCount,
     IWineD3DImpl_RegisterSoftwareDevice,
     IWineD3DImpl_GetAdapterMonitor,
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index 3bca025..e52d9f8 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -45,6 +45,7 @@
     TRACE("(%p) : Releasing from %ld\n", This, This->resource.ref);
     ref = InterlockedDecrement(&This->resource.ref);
     if (ref == 0) {
+        IWineD3DDevice_Release(This->resource.wineD3DDevice);
         HeapFree(GetProcessHeap(), 0, This);
     }
     return ref;
@@ -97,11 +98,20 @@
     return This->resource.resourceType;
 }
 
+HRESULT WINAPI IWineD3DResourceImpl_GetParent(IWineD3DResource *iface, IUnknown **pParent) {
+    IWineD3DResourceImpl *This = (IWineD3DResourceImpl *)iface;
+    IUnknown_AddRef(This->resource.parent);
+    *pParent = This->resource.parent;
+    return D3D_OK;
+}
+
+
 IWineD3DResourceVtbl IWineD3DResource_Vtbl =
 {
     IWineD3DResourceImpl_QueryInterface,
     IWineD3DResourceImpl_AddRef,
     IWineD3DResourceImpl_Release,
+    IWineD3DResourceImpl_GetParent,
     IWineD3DResourceImpl_GetDevice,
     IWineD3DResourceImpl_SetPrivateData,
     IWineD3DResourceImpl_GetPrivateData,
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 754e1f8..d483b0d 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -24,6 +24,13 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3d);
 
+HRESULT WINAPI IWineD3DStateBlockImpl_GetParent(IWineD3DStateBlock *iface, IUnknown **pParent) {
+    IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
+    IUnknown_AddRef(This->parent);
+    *pParent = This->parent;
+    return D3D_OK;
+}
+
 HRESULT WINAPI IWineD3DStateBlockImpl_InitStartupStateBlock(IWineD3DStateBlock* iface) {
     IWineD3DStateBlockImpl *This = (IWineD3DStateBlockImpl *)iface;
 
@@ -56,7 +63,10 @@
     ULONG ref;
     TRACE("(%p) : Releasing from %ld\n", This, This->ref);
     ref = InterlockedDecrement(&This->ref);
-    if (ref == 0) HeapFree(GetProcessHeap(), 0, This);
+    if (ref == 0) {
+        IWineD3DDevice_Release(This->wineD3DDevice);
+        HeapFree(GetProcessHeap(), 0, This);
+    }
     return ref;
 }
 
@@ -69,5 +79,6 @@
     IWineD3DStateBlockImpl_QueryInterface,
     IWineD3DStateBlockImpl_AddRef,
     IWineD3DStateBlockImpl_Release,
+    IWineD3DStateBlockImpl_GetParent,
     IWineD3DStateBlockImpl_InitStartupStateBlock
 };
diff --git a/dlls/wined3d/vertexbuffer.c b/dlls/wined3d/vertexbuffer.c
index c8439b5..579e3e7 100644
--- a/dlls/wined3d/vertexbuffer.c
+++ b/dlls/wined3d/vertexbuffer.c
@@ -38,6 +38,7 @@
 ULONG WINAPI IWineD3DVertexBufferImpl_AddRef(IWineD3DVertexBuffer *iface) {
     IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *)iface;
     TRACE("(%p) : AddRef increasing from %ld\n", This, This->resource.ref);
+    IUnknown_AddRef(This->resource.parent);
     return InterlockedIncrement(&This->resource.ref);
 }
 
@@ -48,7 +49,10 @@
     ref = InterlockedDecrement(&This->resource.ref);
     if (ref == 0) {
         if (NULL != This->allocatedMemory) HeapFree(GetProcessHeap(), 0, This->allocatedMemory);
+        IWineD3DDevice_Release(This->resource.wineD3DDevice);
         HeapFree(GetProcessHeap(), 0, This);
+    } else {
+        IUnknown_Release(This->resource.parent);  /* Released the reference to the d3dx VB */
     }
     return ref;
 }
@@ -88,6 +92,9 @@
     return IWineD3DResource_GetType((IWineD3DResource *)iface);
 }
 
+HRESULT WINAPI IWineD3DVertexBufferImpl_GetParent(IWineD3DVertexBuffer *iface, IUnknown **pParent) {
+    return IWineD3DResource_GetParent((IWineD3DResource *)iface, pParent);
+}
 
 /* ******************************************************
    IWineD3DVertexBuffer IWineD3DVertexBuffer parts follow
@@ -122,6 +129,7 @@
     IWineD3DVertexBufferImpl_QueryInterface,
     IWineD3DVertexBufferImpl_AddRef,
     IWineD3DVertexBufferImpl_Release,
+    IWineD3DVertexBufferImpl_GetParent,
     IWineD3DVertexBufferImpl_GetDevice,
     IWineD3DVertexBufferImpl_SetPrivateData,
     IWineD3DVertexBufferImpl_GetPrivateData,
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
index 617158d..aee3c8d 100644
--- a/dlls/wined3d/wined3d_main.c
+++ b/dlls/wined3d/wined3d_main.c
@@ -32,11 +32,12 @@
 int vs_mode = VS_HW;   /* Hardware by default */
 int ps_mode = PS_NONE; /* Disabled by default */
 
-IWineD3D* WINAPI WineDirect3DCreate(UINT SDKVersion, UINT dxVersion) {
+IWineD3D* WINAPI WineDirect3DCreate(UINT SDKVersion, UINT dxVersion, IUnknown *parent) {
     IWineD3DImpl* object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IWineD3DImpl));
     object->lpVtbl = &IWineD3D_Vtbl;
     object->dxVersion = dxVersion;
     object->ref = 1;
+    object->parent = parent;
 
     TRACE("Created WineD3D object @ %p for d3d%d support\n", object, dxVersion);
 
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 977a510..b6da14a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -26,6 +26,7 @@
 #include <stdarg.h>
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+#define COBJMACROS
 #include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
@@ -98,6 +99,7 @@
     DWORD                   ref;     /* Note: Ref counting not required */
 
     /* WineD3D Information */
+    IUnknown               *parent;
     UINT                    dxVersion;
 
     /* GL Information */
@@ -117,6 +119,7 @@
     DWORD                   ref;     /* Note: Ref counting not required */
 
     /* WineD3D Information  */
+    IUnknown               *parent;  /* TODO - to be a new interface eventually */
     IWineD3D               *WineD3D;
 
     /* X and GL Information */
@@ -159,6 +162,7 @@
     DWORD                   ref;     /* Note: Ref counting not required */
 
     /* WineD3DResource Information */
+    IUnknown               *parent;
     IWineD3DDevice         *wineD3DDevice;
     D3DRESOURCETYPE         resourceType;
 
@@ -200,6 +204,7 @@
 /*   to resolve everything we need, so doing it manually for now */
 typedef struct SAVEDSTATES {
         BOOL                      fvf;
+        BOOL                      stream_source[MAX_STREAMS];
 } SAVEDSTATES;
 
 struct IWineD3DStateBlockImpl
@@ -209,6 +214,7 @@
     DWORD                     ref;     /* Note: Ref counting not required */
     
     /* IWineD3DStateBlock information */
+    IUnknown                 *parent;
     IWineD3DDevice           *wineD3DDevice;
     D3DSTATEBLOCKTYPE         blockType;
 
@@ -219,6 +225,10 @@
     /* Drawing - Vertex Shader or FVF related */
     DWORD                     fvf;
 
+    /* Stream Source */
+    UINT                      stream_stride[MAX_STREAMS];
+    UINT                      stream_offset[MAX_STREAMS];
+    IWineD3DVertexBuffer     *stream_source[MAX_STREAMS];
 };
 
 extern IWineD3DStateBlockVtbl IWineD3DStateBlock_Vtbl;
diff --git a/include/wine/wined3d_interface.h b/include/wine/wined3d_interface.h
index 60f38d6..944d310 100644
--- a/include/wine/wined3d_interface.h
+++ b/include/wine/wined3d_interface.h
@@ -88,6 +88,7 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3D methods ***/
+    STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
     STDMETHOD_(UINT,GetAdapterCount)(THIS) PURE;
     STDMETHOD(RegisterSoftwareDevice)(THIS_ void * pInitializeFunction) PURE;
     STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
@@ -101,7 +102,7 @@
     STDMETHOD(CheckDeviceFormat)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, D3DFORMAT  AdapterFormat, DWORD  Usage, D3DRESOURCETYPE  RType, D3DFORMAT  CheckFormat) PURE;
     STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat) PURE;
     STDMETHOD(GetDeviceCaps)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType, void * pCaps) PURE;
-    STDMETHOD(CreateDevice)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType,HWND  hFocusWindow, DWORD  BehaviorFlags, WINED3DPRESENT_PARAMETERS * pPresentationParameters, IWineD3DDevice ** ppReturnedDeviceInterface) PURE;
+    STDMETHOD(CreateDevice)(THIS_ UINT  Adapter, D3DDEVTYPE  DeviceType,HWND  hFocusWindow, DWORD  BehaviorFlags, WINED3DPRESENT_PARAMETERS * pPresentationParameters, IWineD3DDevice ** ppReturnedDeviceInterface, IUnknown *parent) PURE;
 };
 #undef INTERFACE
 
@@ -111,6 +112,7 @@
 #define IWineD3D_AddRef(p)                                (p)->lpVtbl->AddRef(p)
 #define IWineD3D_Release(p)                               (p)->lpVtbl->Release(p)
 /*** IWineD3D methods ***/
+#define IWineD3D_GetParent(p,a)                           (p)->lpVtbl->GetParent(p,a)
 #define IWineD3D_GetAdapterCount(p)                       (p)->lpVtbl->GetAdapterCount(p)
 #define IWineD3D_RegisterSoftwareDevice(p,a)              (p)->lpVtbl->RegisterSoftwareDevice(p,a)
 #define IWineD3D_GetAdapterMonitor(p,a)                   (p)->lpVtbl->GetAdapterMonitor(p,a)
@@ -124,11 +126,11 @@
 #define IWineD3D_CheckDeviceFormat(p,a,b,c,d,e,f)         (p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
 #define IWineD3D_CheckDeviceFormatConversion(p,a,b,c,d)   (p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
 #define IWineD3D_GetDeviceCaps(p,a,b,c)                   (p)->lpVtbl->GetDeviceCaps(p,a,b,c)
-#define IWineD3D_CreateDevice(p,a,b,c,d,e,f)              (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#define IWineD3D_CreateDevice(p,a,b,c,d,e,f,g)            (p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f,g)
 #endif
 
 /* Define the main WineD3D entrypoint */
-IWineD3D* WINAPI WineDirect3DCreate(UINT SDKVersion, UINT dxVersion);
+IWineD3D* WINAPI WineDirect3DCreate(UINT SDKVersion, UINT dxVersion, IUnknown *parent);
 
 /*****************************************************************************
  * WineD3DDevice interface 
@@ -141,10 +143,13 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3D methods ***/
-    STDMETHOD(CreateVertexBuffer)(THIS_ UINT  Length,DWORD  Usage,DWORD  FVF,D3DPOOL  Pool,IWineD3DVertexBuffer **ppVertexBuffer, HANDLE *sharedHandle) PURE;
-    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IWineD3DStateBlock **ppStateBlock) PURE;
+    STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
+    STDMETHOD(CreateVertexBuffer)(THIS_ UINT  Length,DWORD  Usage,DWORD  FVF,D3DPOOL  Pool,IWineD3DVertexBuffer **ppVertexBuffer, HANDLE *sharedHandle, IUnknown *parent) PURE;
+    STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE Type, IWineD3DStateBlock **ppStateBlock, IUnknown *parent) PURE;
     STDMETHOD(SetFVF)(THIS_ DWORD  fvf) PURE;
     STDMETHOD(GetFVF)(THIS_ DWORD * pfvf) PURE;
+    STDMETHOD(SetStreamSource)(THIS_ UINT  StreamNumber,IWineD3DVertexBuffer * pStreamData,UINT Offset,UINT  Stride) PURE;
+    STDMETHOD(GetStreamSource)(THIS_ UINT  StreamNumber,IWineD3DVertexBuffer ** ppStreamData,UINT *pOffset, UINT * pStride) PURE;
 };
 #undef INTERFACE
 
@@ -154,10 +159,13 @@
 #define IWineD3DDevice_AddRef(p)                                (p)->lpVtbl->AddRef(p)
 #define IWineD3DDevice_Release(p)                               (p)->lpVtbl->Release(p)
 /*** IWineD3DDevice methods ***/
-#define IWineD3DDevice_CreateVertexBuffer(p,a,b,c,d,e,f)        (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
-#define IWineD3DDevice_CreateStateBlock(p,a,b)                  (p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IWineD3DDevice_GetParent(p,a)                           (p)->lpVtbl->GetParent(p,a)
+#define IWineD3DDevice_CreateVertexBuffer(p,a,b,c,d,e,f,g)      (p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f,g)
+#define IWineD3DDevice_CreateStateBlock(p,a,b,c)                (p)->lpVtbl->CreateStateBlock(p,a,b,c)
 #define IWineD3DDevice_SetFVF(p,a)                              (p)->lpVtbl->SetFVF(p,a)
 #define IWineD3DDevice_GetFVF(p,a)                              (p)->lpVtbl->GetFVF(p,a)
+#define IWineD3DDevice_SetStreamSource(p,a,b,c,d)               (p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IWineD3DDevice_GetStreamSource(p,a,b,c,d)               (p)->lpVtbl->GetStreamSource(p,a,b,c,d)
 #endif
 
 /*****************************************************************************
@@ -171,6 +179,7 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3DResource methods ***/
+    STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
     STDMETHOD(GetDevice)(THIS_ IWineD3DDevice ** ppDevice) PURE;
     STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
     STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
@@ -188,6 +197,7 @@
 #define IWineD3DResource_AddRef(p)                    (p)->lpVtbl->AddRef(p)
 #define IWineD3DResource_Release(p)                   (p)->lpVtbl->Release(p)
 /*** IWineD3DResource methods ***/
+#define IWineD3DResource_GetParent(p,a)               (p)->lpVtbl->GetParent(p,a)
 #define IWineD3DResource_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
 #define IWineD3DResource_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
 #define IWineD3DResource_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
@@ -209,6 +219,7 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3DResource methods ***/
+    STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
     STDMETHOD(GetDevice)(THIS_ IWineD3DDevice ** ppDevice) PURE;
     STDMETHOD(SetPrivateData)(THIS_ REFGUID  refguid, CONST void * pData, DWORD  SizeOfData, DWORD  Flags) PURE;
     STDMETHOD(GetPrivateData)(THIS_ REFGUID  refguid, void * pData, DWORD * pSizeOfData) PURE;
@@ -230,6 +241,7 @@
 #define IWineD3DVertexBuffer_AddRef(p)                    (p)->lpVtbl->AddRef(p)
 #define IWineD3DVertexBuffer_Release(p)                   (p)->lpVtbl->Release(p)
 /*** IWineD3DResource methods ***/
+#define IWineD3DVertexBuffer_GetParent(p,a)               (p)->lpVtbl->GetParent(p,a)
 #define IWineD3DVertexBuffer_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
 #define IWineD3DVertexBuffer_SetPrivateData(p,a,b,c,d)    (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
 #define IWineD3DVertexBuffer_GetPrivateData(p,a,b,c)      (p)->lpVtbl->GetPrivateData(p,a,b,c)
@@ -255,6 +267,7 @@
     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3DStateBlock methods ***/
+    STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
     STDMETHOD(InitStartupStateBlock)(THIS) PURE;
 };
 #undef INTERFACE
@@ -265,6 +278,7 @@
 #define IWineD3DStateBlock_AddRef(p)                            (p)->lpVtbl->AddRef(p)
 #define IWineD3DStateBlock_Release(p)                           (p)->lpVtbl->Release(p)
 /*** IWineD3DStateBlock methods ***/
+#define IWineD3DStateBlock_GetParent(p,a)                       (p)->lpVtbl->GetParent(p,a)
 #define IWineD3DStateBlock_InitStartupStateBlock(p)             (p)->lpVtbl->InitStartupStateBlock(p)
 #endif
 
