From 0ff0a6e9bc5beabe5f5fb934e6817c4dc2181b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Wed, 20 Nov 2013 12:33:32 +0100 Subject: [PATCH] wined3d: Remove surface->dirtyRect. --- dlls/wined3d/surface.c | 47 +++------------------------------- dlls/wined3d/texture.c | 2 +- dlls/wined3d/wined3d_private.h | 3 +-- 3 files changed, 6 insertions(+), 46 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index c69b67b4799..a4c22f71031 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -850,22 +850,7 @@ static void surface_map(struct wined3d_surface *surface, const RECT *rect, DWORD } if (!(flags & (WINED3D_MAP_NO_DIRTY_UPDATE | WINED3D_MAP_READONLY))) - { - if (!rect) - surface_add_dirty_rect(surface, NULL); - else - { - struct wined3d_box b; - - b.left = rect->left; - b.top = rect->top; - b.right = rect->right; - b.bottom = rect->bottom; - b.front = 0; - b.back = 1; - surface_add_dirty_rect(surface, &b); - } - } + surface_set_dirty(surface); } static void surface_unmap(struct wined3d_surface *surface) @@ -904,18 +889,9 @@ static void surface_unmap(struct wined3d_surface *surface) } if (surface->swapchain && surface->swapchain->front_buffer == surface) - { surface_load_location(surface, surface->draw_binding); - - surface->dirtyRect.left = surface->resource.width; - surface->dirtyRect.top = surface->resource.height; - surface->dirtyRect.right = 0; - surface->dirtyRect.bottom = 0; - } else if (surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL)) - { FIXME("Depth / stencil buffer locking is not implemented.\n"); - } } static BOOL surface_is_full_rect(const struct wined3d_surface *surface, const RECT *r) @@ -2314,9 +2290,9 @@ GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) } /* Slightly inefficient way to handle multiple dirty rects but it works :) */ -void surface_add_dirty_rect(struct wined3d_surface *surface, const struct wined3d_box *dirty_rect) +void surface_set_dirty(struct wined3d_surface *surface) { - TRACE("surface %p, dirty_rect %p.\n", surface, dirty_rect); + TRACE("surface %p.\n", surface); if (!(surface->flags & SFLAG_INSYSMEM) && (surface->flags & SFLAG_INTEXTURE)) surface_load_location(surface, SFLAG_INSYSMEM); @@ -2324,21 +2300,6 @@ void surface_add_dirty_rect(struct wined3d_surface *surface, const struct wined3 surface_validate_location(surface, SFLAG_INSYSMEM); surface_invalidate_location(surface, ~SFLAG_INSYSMEM); - if (dirty_rect) - { - surface->dirtyRect.left = min(surface->dirtyRect.left, dirty_rect->left); - surface->dirtyRect.top = min(surface->dirtyRect.top, dirty_rect->top); - surface->dirtyRect.right = max(surface->dirtyRect.right, dirty_rect->right); - surface->dirtyRect.bottom = max(surface->dirtyRect.bottom, dirty_rect->bottom); - } - else - { - surface->dirtyRect.left = 0; - surface->dirtyRect.top = 0; - surface->dirtyRect.right = surface->resource.width; - surface->dirtyRect.bottom = surface->resource.height; - } - wined3d_texture_set_dirty(surface->container); } @@ -6635,7 +6596,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text surface->flags |= SFLAG_DYNLOCK; /* Mark the texture as dirty so that it gets loaded first time around. */ - surface_add_dirty_rect(surface, NULL); + surface_set_dirty(surface); list_init(&surface->renderbuffers); TRACE("surface %p, memory %p, size %u\n", diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 8bae223481c..7bafa66bb4f 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -689,7 +689,7 @@ static void texture2d_preload(struct wined3d_texture *texture, static void texture2d_sub_resource_add_dirty_region(struct wined3d_resource *sub_resource, const struct wined3d_box *dirty_region) { - surface_add_dirty_rect(surface_from_resource(sub_resource), dirty_region); + surface_set_dirty(surface_from_resource(sub_resource)); } static void texture2d_sub_resource_cleanup(struct wined3d_resource *sub_resource) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 9e67c9bb580..e56f501aaa2 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2202,7 +2202,6 @@ struct wined3d_surface GLenum texture_target; RECT lockedRect; - RECT dirtyRect; int lockCount; /* For GetDC */ @@ -2242,7 +2241,7 @@ static inline GLuint surface_get_texture_name(const struct wined3d_surface *surf ? surface->container->texture_srgb.name : surface->container->texture_rgb.name; } -void surface_add_dirty_rect(struct wined3d_surface *surface, const struct wined3d_box *dirty_rect) DECLSPEC_HIDDEN; +void surface_set_dirty(struct wined3d_surface *surface) DECLSPEC_HIDDEN; HRESULT surface_color_fill(struct wined3d_surface *s, const RECT *rect, const struct wined3d_color *color) DECLSPEC_HIDDEN; GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN;