From 4fe014cb54c88118616cc4ba83da329f3b9a2575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Mon, 7 Sep 2009 11:37:38 +0200 Subject: [PATCH] wined3d: Fix sRGB->RGB copy condition. The old condition happened to work, because SFLAG_INTEXTURE was not set(we're loading it), and neither was SFLAG_INDRAWABLE(otherwise INTEXTURE would be set too). If the fbo INDRAWABLE == INTEXTURE is replaced by INDRAWABLE == INSRGBTEX this doesn't hold true any longer because SFLAG_INDRAWABLE is set, but not used because the drawable readback is never used for fbos. --- dlls/wined3d/surface.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 7221ef0b5ec..53b969a880d 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -4851,12 +4851,18 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, D IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INSYSMEM, rect); } } else { - if((This->Flags & SFLAG_LOCATIONS) == SFLAG_INSRGBTEX) { + if((This->Flags & (SFLAG_INSRGBTEX | SFLAG_INSYSMEM)) == SFLAG_INSRGBTEX) { /* Performance warning ... */ FIXME("%p: Downloading srgb texture to reload it as rgb\n", This); IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INSYSMEM, rect); } } + if(!(This->Flags & SFLAG_INSYSMEM)) { + /* Should not happen */ + ERR("Trying to load a texture from sysmem, but SFLAG_INSYSMEM is not set\n"); + /* Lets hope we get it from somewhere... */ + IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INSYSMEM, rect); + } if (!device->isInDraw) ActivateContext(device, NULL, CTXUSAGE_RESOURCELOAD); surface_bind_and_dirtify(This, srgb);