Module: wine Branch: master Commit: 00a4b85fa91c4aa92d5dee69d82bd05e7d85a50e URL: http://source.winehq.org/git/wine.git/?a=commit;h=00a4b85fa91c4aa92d5dee69d8...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Mon Jan 12 10:17:50 2009 +0100
wined3d: Update the pixelshader when the texture type changes.
---
dlls/wined3d/device.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index ed343dd..ba9ab1e 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4578,8 +4578,15 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, DWORD if (NULL != This->updateStateBlock->textures[Stage]) { IWineD3DBaseTextureImpl *new = (IWineD3DBaseTextureImpl *) This->updateStateBlock->textures[Stage]; ULONG bindCount = InterlockedIncrement(&new->baseTexture.bindCount); + UINT dimensions = IWineD3DBaseTexture_GetTextureDimensions(pTexture);
IWineD3DBaseTexture_AddRef(This->updateStateBlock->textures[Stage]); + + if (!oldTexture || dimensions != IWineD3DBaseTexture_GetTextureDimensions(oldTexture)) + { + IWineD3DDeviceImpl_MarkStateDirty(This, STATE_PIXELSHADER); + } + if(oldTexture == NULL && Stage < MAX_TEXTURES) { /* The source arguments for color and alpha ops have different meanings when a NULL texture is bound, * so the COLOROP and ALPHAOP have to be dirtified.