wined3d: Pass the user pointer strided structure via the device implementation.
This commit is contained in:
parent
71631f7638
commit
04ce141940
|
@ -4699,7 +4699,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_DrawPrimitive(IWineD3DDevice *iface, WI
|
||||||
if(StartVertex - This->stateBlock->baseVertexIndex < 0) ERR("Drawing negative\n");
|
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 */
|
/* 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 */,
|
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;
|
return WINED3D_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4728,7 +4728,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_DrawIndexedPrimitive(IWineD3DDevice *
|
||||||
}
|
}
|
||||||
|
|
||||||
drawPrimitive(iface, PrimitiveType, primCount, 0, NumVertices, startIndex,
|
drawPrimitive(iface, PrimitiveType, primCount, 0, NumVertices, startIndex,
|
||||||
idxStride, ((IWineD3DIndexBufferImpl *) pIB)->resource.allocatedMemory, minIndex, NULL);
|
idxStride, ((IWineD3DIndexBufferImpl *) pIB)->resource.allocatedMemory, minIndex);
|
||||||
|
|
||||||
return WINED3D_OK;
|
return WINED3D_OK;
|
||||||
}
|
}
|
||||||
|
@ -4753,7 +4753,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_DrawPrimitiveUP(IWineD3DDevice *iface,
|
||||||
This->stateBlock->streamIsUP = TRUE;
|
This->stateBlock->streamIsUP = TRUE;
|
||||||
|
|
||||||
drawPrimitive(iface, PrimitiveType, PrimitiveCount, -This->stateBlock->baseVertexIndex /* start vertex */, 0 /* NumVertices */,
|
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 */
|
/* MSDN specifies stream zero settings must be set to NULL */
|
||||||
This->stateBlock->streamStride[0] = 0;
|
This->stateBlock->streamStride[0] = 0;
|
||||||
|
@ -4800,7 +4800,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_DrawIndexedPrimitiveUP(IWineD3DDevice *
|
||||||
/* Set to 0 as per msdn. Do it now due to the stream source loading during drawPrimitive */
|
/* Set to 0 as per msdn. Do it now due to the stream source loading during drawPrimitive */
|
||||||
This->stateBlock->baseVertexIndex = 0;
|
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 */
|
/* MSDN specifies stream zero settings and index buffer must be set to NULL */
|
||||||
This->stateBlock->streamSource[0] = NULL;
|
This->stateBlock->streamSource[0] = NULL;
|
||||||
|
@ -4819,7 +4819,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_DrawPrimitiveStrided (IWineD3DDevice *i
|
||||||
*/
|
*/
|
||||||
IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
|
IWineD3DDeviceImpl_MarkStateDirty(This, STATE_VDECL);
|
||||||
This->stateBlock->baseVertexIndex = 0;
|
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;
|
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 */
|
/* Yet another way to update a texture, some apps use this to load default textures instead of using surface/texture lock/unlock */
|
||||||
|
|
|
@ -1936,8 +1936,7 @@ void drawPrimitive(IWineD3DDevice *iface,
|
||||||
long StartIdx,
|
long StartIdx,
|
||||||
short idxSize,
|
short idxSize,
|
||||||
const void *idxData,
|
const void *idxData,
|
||||||
int minIndex,
|
int minIndex) {
|
||||||
WineDirect3DVertexStridedData *DrawPrimStrideData) {
|
|
||||||
|
|
||||||
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
|
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
|
||||||
BOOL useVertexShaderFunction = FALSE;
|
BOOL useVertexShaderFunction = FALSE;
|
||||||
|
@ -1991,12 +1990,12 @@ void drawPrimitive(IWineD3DDevice *iface,
|
||||||
}
|
}
|
||||||
This->depth_copy_state = WINED3D_DCS_INITIAL;
|
This->depth_copy_state = WINED3D_DCS_INITIAL;
|
||||||
|
|
||||||
if(DrawPrimStrideData) {
|
if(This->up_strided) {
|
||||||
|
|
||||||
/* Note: this is a ddraw fixed-function code path */
|
/* Note: this is a ddraw fixed-function code path */
|
||||||
|
|
||||||
TRACE("================ Strided Input ===================\n");
|
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);
|
drawPrimitiveTraceDataLocations(&This->strided_streams);
|
||||||
fixup = FALSE;
|
fixup = FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,8 +382,7 @@ void drawPrimitive(IWineD3DDevice *iface,
|
||||||
long StartIdx,
|
long StartIdx,
|
||||||
short idxBytes,
|
short idxBytes,
|
||||||
const void *idxData,
|
const void *idxData,
|
||||||
int minIndex,
|
int minIndex);
|
||||||
WineDirect3DVertexStridedData *DrawPrimStrideData);
|
|
||||||
|
|
||||||
void primitiveConvertToStridedData(IWineD3DDevice *iface, WineDirect3DVertexStridedData *strided, BOOL *fixup);
|
void primitiveConvertToStridedData(IWineD3DDevice *iface, WineDirect3DVertexStridedData *strided, BOOL *fixup);
|
||||||
|
|
||||||
|
@ -669,6 +668,7 @@ typedef struct IWineD3DDeviceImpl
|
||||||
|
|
||||||
/* Stream source management */
|
/* Stream source management */
|
||||||
WineDirect3DVertexStridedData strided_streams;
|
WineDirect3DVertexStridedData strided_streams;
|
||||||
|
WineDirect3DVertexStridedData *up_strided;
|
||||||
|
|
||||||
} IWineD3DDeviceImpl;
|
} IWineD3DDeviceImpl;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue