Stefan Dösinger : wined3d: Pass the user pointer strided structure via the device implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jan 3 05:37:29 CST 2007


Module: wine
Branch: master
Commit: 04ce141940598e33dbcd884e16df883d72e451f5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=04ce141940598e33dbcd884e16df883d72e451f5

Author: Stefan Dösinger <stefandoesinger at gmx.at>
Date:   Tue Jan  2 21:13:28 2007 +0100

wined3d: Pass the user pointer strided structure via the device implementation.

---

 dlls/wined3d/device.c          |   12 +++++++-----
 dlls/wined3d/drawprim.c        |    7 +++----
 dlls/wined3d/wined3d_private.h |    4 ++--
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 5a9fd22..7c31f66 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4699,7 +4699,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
     if(StartVertex - This->stateBlock->baseVertexIndex < 0) ERR("Drawing negative\n");
     /* Account for the loading offset due to index buffers. Instead of reloading all sources correct it with the startvertex parameter */
     drawPrimitive(iface, PrimitiveType, PrimitiveCount, StartVertex - This->stateBlock->baseVertexIndex, 0/* NumVertices */, -1 /* indxStart */,
-                  0 /* indxSize */, NULL /* indxData */, 0 /* minIndex */, NULL);
+                  0 /* indxSize */, NULL /* indxData */, 0 /* minIndex */);
     return WINED3D_OK;
 }
 
@@ -4728,7 +4728,7 @@ static HRESULT  WINAPI  IWineD3DDeviceIm
     }
 
     drawPrimitive(iface, PrimitiveType, primCount, 0, NumVertices, startIndex,
-                   idxStride, ((IWineD3DIndexBufferImpl *) pIB)->resource.allocatedMemory, minIndex, NULL);
+                   idxStride, ((IWineD3DIndexBufferImpl *) pIB)->resource.allocatedMemory, minIndex);
 
     return WINED3D_OK;
 }
@@ -4753,7 +4753,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
     This->stateBlock->streamIsUP = TRUE;
 
     drawPrimitive(iface, PrimitiveType, PrimitiveCount, -This->stateBlock->baseVertexIndex /* start vertex */, 0  /* NumVertices */,
-                  0 /* indxStart*/, 0 /* indxSize*/, NULL /* indxData */, 0 /* indxMin */, NULL);
+                  0 /* indxStart*/, 0 /* indxSize*/, NULL /* indxData */, 0 /* indxMin */);
 
     /* MSDN specifies stream zero settings must be set to NULL */
     This->stateBlock->streamStride[0] = 0;
@@ -4800,7 +4800,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
     /* Set to 0 as per msdn. Do it now due to the stream source loading during drawPrimitive */
     This->stateBlock->baseVertexIndex = 0;
 
-    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0 /* vertexStart */, NumVertices, 0 /* indxStart */, idxStride, pIndexData, MinVertexIndex, NULL);
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0 /* vertexStart */, NumVertices, 0 /* indxStart */, idxStride, pIndexData, MinVertexIndex);
 
     /* MSDN specifies stream zero settings and index buffer must be set to NULL */
     This->stateBlock->streamSource[0] = NULL;
@@ -4819,7 +4819,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl
      */
     IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
     This->stateBlock->baseVertexIndex = 0;
-    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0, 0, 0, 0, NULL, 0, DrawPrimStrideData);
+    This->up_strided = DrawPrimStrideData;
+    drawPrimitive(iface, PrimitiveType, PrimitiveCount, 0, 0, 0, 0, NULL, 0);
+    This->up_strided = NULL;
     return WINED3D_OK;
 }
  /* Yet another way to update a texture, some apps use this to load default textures instead of using surface/texture lock/unlock */
diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index b3cdb34..5dfc15b 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -1936,8 +1936,7 @@ void drawPrimitive(IWineD3DDevice *iface
                    long  StartIdx,
                    short idxSize,
                    const void *idxData,
-                   int   minIndex,
-                   WineDirect3DVertexStridedData *DrawPrimStrideData) {
+                   int   minIndex) {
 
     IWineD3DDeviceImpl           *This = (IWineD3DDeviceImpl *)iface;
     BOOL                          useVertexShaderFunction = FALSE;
@@ -1991,12 +1990,12 @@ void drawPrimitive(IWineD3DDevice *iface
     }
     This->depth_copy_state = WINED3D_DCS_INITIAL;
 
-    if(DrawPrimStrideData) {
+    if(This->up_strided) {
 
         /* Note: this is a ddraw fixed-function code path */
 
         TRACE("================ Strided Input ===================\n");
-		memcpy(&This->strided_streams, DrawPrimStrideData, sizeof(This->strided_streams));
+		memcpy(&This->strided_streams, This->up_strided, sizeof(This->strided_streams));
         drawPrimitiveTraceDataLocations(&This->strided_streams);
         fixup = FALSE;
     }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 37f4664..9ca13c1 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -382,8 +382,7 @@ void drawPrimitive(IWineD3DDevice *iface
                     long  StartIdx,
                     short idxBytes,
                     const void *idxData,
-                    int   minIndex,
-                    WineDirect3DVertexStridedData *DrawPrimStrideData);
+                    int   minIndex);
 
 void primitiveConvertToStridedData(IWineD3DDevice *iface, WineDirect3DVertexStridedData *strided, BOOL *fixup);
 
@@ -669,6 +668,7 @@ typedef struct IWineD3DDeviceImpl
 
     /* Stream source management */
     WineDirect3DVertexStridedData strided_streams;
+    WineDirect3DVertexStridedData *up_strided;
 
 } IWineD3DDeviceImpl;
 




More information about the wine-cvs mailing list