ChangeSet ID: 20281 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/09/19 09:30:34 Modified files: dlls/wined3d : stateblock.c device.c Log message: Oliver Stieber Stop vertex shader constants from being set at the same time as the vertex shader when a stateblock is applied. Patch: http://cvs.winehq.org/patch.py?id=20281 Old revision New revision Changes Path 1.21 1.22 +3 -1 wine/dlls/wined3d/stateblock.c 1.78 1.79 +1 -0 wine/dlls/wined3d/device.c Index: wine/dlls/wined3d/stateblock.c diff -u -p wine/dlls/wined3d/stateblock.c:1.21 wine/dlls/wined3d/stateblock.c:1.22 --- wine/dlls/wined3d/stateblock.c:1.21 Mon May 20 06:44:23 2013 +++ wine/dlls/wined3d/stateblock.c Mon May 20 06:44:23 2013 @@ -346,12 +346,14 @@ should really perform a delta so that on toDo = toDo->next; } - if (This->changed.vertexShader) { + if (This->set.vertexShader && This->changed.vertexShader) { IWineD3DDevice_SetVertexShader(pDevice, This->vertexShader); /* TODO: Vertex Shader Constants */ +#if 0 /* FIXME: This isn't the correct place to set vs constants (The Fur demo fails) */ IWineD3DDevice_SetVertexShaderConstantB(pDevice, 0 , This->vertexShaderConstantB , MAX_VSHADER_CONSTANTS); IWineD3DDevice_SetVertexShaderConstantI(pDevice, 0 , This->vertexShaderConstantI , MAX_VSHADER_CONSTANTS); IWineD3DDevice_SetVertexShaderConstantF(pDevice, 0 , This->vertexShaderConstantF , MAX_VSHADER_CONSTANTS); +#endif } } Index: wine/dlls/wined3d/device.c diff -u -p wine/dlls/wined3d/device.c:1.78 wine/dlls/wined3d/device.c:1.79 --- wine/dlls/wined3d/device.c:1.78 Mon May 20 06:44:23 2013 +++ wine/dlls/wined3d/device.c Mon May 20 06:44:23 2013 @@ -3635,6 +3635,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_GetVer return D3D_OK; } +/* FIXME: Vertex shaders don't work properly with stateblocks */ #define GET_SHADER_CONSTANT(_vertexshaderconstant, _count, _sizecount) \ int count = min(_count, MAX_VSHADER_CONSTANTS - (StartRegister + 1)); \ if (NULL == pConstantData || count < 0 /* || _count != count */ ) \