diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 6ae06bf4710..6ed7f97340e 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4487,15 +4487,25 @@ HRESULT WINAPI IWineD3DDeviceImpl_GetCurrentTexturePalette(IWineD3DDevice *ifa HRESULT WINAPI IWineD3DDeviceImpl_SetSoftwareVertexProcessing(IWineD3DDevice *iface, BOOL bSoftware) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - FIXME("(%p) : stub\n", This); + static BOOL showFixmes = TRUE; + if (showFixmes) { + FIXME("(%p) : stub\n", This); + showFixmes = FALSE; + } + + This->updateStateBlock->softwareVertexProcessing = bSoftware; return D3D_OK; } BOOL WINAPI IWineD3DDeviceImpl_GetSoftwareVertexProcessing(IWineD3DDevice *iface) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; - FIXME("(%p) : stub\n", This); - return FALSE; + static BOOL showFixmes = TRUE; + if (showFixmes) { + FIXME("(%p) : stub\n", This); + showFixmes = FALSE; + } + return This->updateStateBlock->softwareVertexProcessing; } diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c index 6c9e69f585a..5dc769ef2e7 100644 --- a/dlls/wined3d/stateblock.c +++ b/dlls/wined3d/stateblock.c @@ -367,6 +367,8 @@ should really perform a delta so that only the changes get updated*/ IWineD3DDevice_SetVertexDeclaration(pDevice, This->vertexDecl); } + IWineD3DDevice_SetSoftwareVertexProcessing(pDevice, This->softwareVertexProcessing); + /* Others + Render & Texture */ if (/*TODO: 'magic' statetype, replace with BOOL This->blockType == D3DSBT_RECORDED || */ This->blockType == D3DSBT_ALL) { for (i = 1; i <= HIGHEST_TRANSFORMSTATE; i++) { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index bebec048971..0c926fc5bc9 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -890,6 +890,8 @@ struct IWineD3DStateBlockImpl void *vertexShader; /* @TODO: Replace void * with IWineD3DVertexShader * */ + BOOL softwareVertexProcessing; + /* Stream Source */ BOOL streamIsUP; UINT streamStride[MAX_STREAMS];