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.
This commit is contained in:
parent
33ca3c0207
commit
4fe014cb54
|
@ -4851,12 +4851,18 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadLocation(IWineD3DSurface *iface, D
|
||||||
IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INSYSMEM, rect);
|
IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INSYSMEM, rect);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if((This->Flags & SFLAG_LOCATIONS) == SFLAG_INSRGBTEX) {
|
if((This->Flags & (SFLAG_INSRGBTEX | SFLAG_INSYSMEM)) == SFLAG_INSRGBTEX) {
|
||||||
/* Performance warning ... */
|
/* Performance warning ... */
|
||||||
FIXME("%p: Downloading srgb texture to reload it as rgb\n", This);
|
FIXME("%p: Downloading srgb texture to reload it as rgb\n", This);
|
||||||
IWineD3DSurfaceImpl_LoadLocation(iface, SFLAG_INSYSMEM, rect);
|
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);
|
if (!device->isInDraw) ActivateContext(device, NULL, CTXUSAGE_RESOURCELOAD);
|
||||||
surface_bind_and_dirtify(This, srgb);
|
surface_bind_and_dirtify(This, srgb);
|
||||||
|
|
Loading…
Reference in New Issue