Commit 35bdc004 authored by H. Verbeet's avatar H. Verbeet Committed by Alexandre Julliard

wined3d: Set the surface location to SFLAG_INSYSMEM for depth stencils on Reset.

parent 3687207a
......@@ -7048,8 +7048,12 @@ static void updateSurfaceDesc(IWineD3DSurfaceImpl *surface, WINED3DPRESENT_PARAM
surface->resource.allocatedMemory = NULL;
surface->resource.heapMemory = NULL;
surface->resource.size = IWineD3DSurface_GetPitch((IWineD3DSurface *) surface) * surface->pow2Width;
/* INDRAWABLE is a sane place for implicit targets / depth stencil after the reset */
IWineD3DSurface_ModifyLocation((IWineD3DSurface *) surface, SFLAG_INDRAWABLE, TRUE);
/* INDRAWABLE is a sane place for implicit targets after the reset, INSYSMEM is more appropriate for depth stencils. */
if (surface->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) {
IWineD3DSurface_ModifyLocation((IWineD3DSurface *) surface, SFLAG_INSYSMEM, TRUE);
} else {
IWineD3DSurface_ModifyLocation((IWineD3DSurface *) surface, SFLAG_INDRAWABLE, TRUE);
}
}
static HRESULT WINAPI reset_unload_resources(IWineD3DResource *resource, void *data) {
......
......@@ -572,7 +572,11 @@ static void WINAPI IWineD3DSurfaceImpl_UnLoad(IWineD3DSurface *iface) {
* uninitialized drawable. That's pointless and we'd have to allocate the texture /
* sysmem copy here.
*/
IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, TRUE);
if (This->resource.usage & WINED3DUSAGE_DEPTHSTENCIL) {
IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE);
} else {
IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, TRUE);
}
} else {
/* Load the surface into system memory */
IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment