Henri Verbeet : wined3d: Modify resource locations in wined3d_surface_blt( ) instead of the blitters.

Alexandre Julliard julliard at winehq.org
Fri Mar 17 15:19:46 CDT 2017


Module: wine
Branch: master
Commit: d85d977a354203e93d373120578dddb5e3799cdf
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d85d977a354203e93d373120578dddb5e3799cdf

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri Mar 17 13:33:19 2017 +0100

wined3d: Modify resource locations in wined3d_surface_blt() instead of the blitters.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/arb_program_shader.c |  4 ----
 dlls/wined3d/surface.c            | 11 ++++++-----
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 3f0388a..b23f2c0 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -7794,7 +7794,6 @@ static void arbfp_blit_surface(struct wined3d_device *device, enum wined3d_blit_
         struct wined3d_surface *dst_surface, const RECT *dst_rect,
         const struct wined3d_color_key *color_key, enum wined3d_texture_filter_type filter)
 {
-    unsigned int dst_sub_resource_idx = surface_get_sub_resource_idx(dst_surface);
     struct wined3d_texture *src_texture = src_surface->container;
     struct wined3d_texture *dst_texture = dst_surface->container;
     struct wined3d_color_key alpha_test_key;
@@ -7850,9 +7849,6 @@ static void arbfp_blit_surface(struct wined3d_device *device, enum wined3d_blit_
     if (wined3d_settings.strict_draw_ordering
             || (dst_texture->swapchain && (dst_texture->swapchain->front_buffer == dst_texture)))
         context->gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
-
-    wined3d_texture_validate_location(dst_texture, dst_sub_resource_idx, dst_texture->resource.draw_binding);
-    wined3d_texture_invalidate_location(dst_texture, dst_sub_resource_idx, ~dst_texture->resource.draw_binding);
 }
 
 static HRESULT arbfp_blit_color_fill(struct wined3d_device *device, struct wined3d_rendertarget_view *view,
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index f142d91..12ed35a 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2785,8 +2785,6 @@ static void ffp_blit_blit_surface(struct wined3d_device *device, enum wined3d_bl
         struct wined3d_surface *dst_surface, const RECT *dst_rect,
         const struct wined3d_color_key *color_key, enum wined3d_texture_filter_type filter)
 {
-    unsigned int dst_sub_resource_idx = surface_get_sub_resource_idx(dst_surface);
-    struct wined3d_texture *dst_texture = dst_surface->container;
     struct wined3d_texture *src_texture = src_surface->container;
     const struct wined3d_gl_info *gl_info = context->gl_info;
 
@@ -2810,9 +2808,6 @@ static void ffp_blit_blit_surface(struct wined3d_device *device, enum wined3d_bl
     /* Restore the color key parameters */
     wined3d_texture_set_color_key(src_texture, WINED3D_CKEY_SRC_BLT,
             (old_color_key_flags & WINED3D_CKEY_SRC_BLT) ? &old_blt_key : NULL);
-
-    wined3d_texture_validate_location(dst_texture, dst_sub_resource_idx, dst_texture->resource.draw_binding);
-    wined3d_texture_invalidate_location(dst_texture, dst_sub_resource_idx, ~dst_texture->resource.draw_binding);
 }
 
 const struct blit_shader ffp_blit =  {
@@ -3761,6 +3756,12 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
                 blitter->blit_surface(device, blit_op, context, src_surface,
                         src_rect, dst_surface, dst_rect, color_key, filter);
                 context_release(context);
+
+                wined3d_texture_validate_location(dst_texture, dst_sub_resource_idx,
+                        dst_texture->resource.draw_binding);
+                wined3d_texture_invalidate_location(dst_texture, dst_sub_resource_idx,
+                        ~dst_texture->resource.draw_binding);
+
                 return WINED3D_OK;
             }
         }




More information about the wine-cvs mailing list