diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c index 2d88af6bfc4..457067ddacb 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c @@ -109,7 +109,11 @@ void wined3d_volume_validate_location(struct wined3d_volume *volume, DWORD locat void wined3d_volume_invalidate_location(struct wined3d_volume *volume, DWORD location) { TRACE("Volume %p, clearing %s.\n", volume, wined3d_debug_location(location)); + + if (location & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB)) + wined3d_texture_set_dirty(volume->container); volume->locations &= ~location; + TRACE("new location flags are %s.\n", wined3d_debug_location(volume->locations)); } @@ -552,10 +556,7 @@ HRESULT wined3d_volume_map(struct wined3d_volume *volume, } if (!(flags & (WINED3D_MAP_NO_DIRTY_UPDATE | WINED3D_MAP_READONLY))) - { - wined3d_texture_set_dirty(texture); wined3d_volume_invalidate_location(volume, ~volume->resource.map_binding); - } volume->resource.map_count++;