Module: wine Branch: master Commit: 04ce141940598e33dbcd884e16df883d72e451f5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=04ce141940598e33dbcd884e16...
Author: Stefan Dösinger stefandoesinger@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;