Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/wined3d/cs.c | 11 ++---------
dlls/wined3d/surface.c | 18 ++++++++----------
dlls/wined3d/wined3d_private.h | 7 ++++---
3 files changed, 14 insertions(+), 22 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 6e0ecd174e2..480717c06a5 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -2048,15 +2048,8 @@ static void wined3d_cs_exec_blt_sub_resource(struct wined3d_cs *cs, const void *
}
else if (op->dst_resource->type == WINED3D_RTYPE_TEXTURE_2D)
{
- struct wined3d_surface *dst_surface, *src_surface;
- struct wined3d_texture *dst_texture, *src_texture;
-
- dst_texture = texture_from_resource(op->dst_resource);
- src_texture = texture_from_resource(op->src_resource);
- dst_surface = dst_texture->sub_resources[op->dst_sub_resource_idx].u.surface;
- src_surface = src_texture->sub_resources[op->src_sub_resource_idx].u.surface;
-
- if (FAILED(wined3d_surface_blt(dst_surface, &op->dst_box, src_surface,
+ if (FAILED(texture2d_blt(texture_from_resource(op->dst_resource), op->dst_sub_resource_idx,
+ &op->dst_box, texture_from_resource(op->src_resource), op->src_sub_resource_idx,
&op->src_box, op->flags, &op->fx, op->filter)))
FIXME("Blit failed.\n");
}
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 7b01cfecfd1..93a9f097a56 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3681,15 +3681,12 @@ struct wined3d_blitter *wined3d_cpu_blitter_create(void)
return blitter;
}
-HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const struct wined3d_box *dst_box,
- struct wined3d_surface *src_surface, const struct wined3d_box *src_box, DWORD flags,
- const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter)
+HRESULT texture2d_blt(struct wined3d_texture *dst_texture, unsigned int dst_sub_resource_idx,
+ const struct wined3d_box *dst_box, struct wined3d_texture *src_texture, unsigned int src_sub_resource_idx,
+ const struct wined3d_box *src_box, DWORD flags, const struct wined3d_blt_fx *fx,
+ enum wined3d_texture_filter_type filter)
{
- unsigned int dst_sub_resource_idx = surface_get_sub_resource_idx(dst_surface);
- unsigned int src_sub_resource_idx = surface_get_sub_resource_idx(src_surface);
struct wined3d_texture_sub_resource *src_sub_resource, *dst_sub_resource;
- struct wined3d_texture *dst_texture = dst_surface->container;
- struct wined3d_texture *src_texture = src_surface->container;
struct wined3d_device *device = dst_texture->resource.device;
struct wined3d_swapchain *src_swapchain, *dst_swapchain;
const struct wined3d_color_key *colour_key = NULL;
@@ -3705,9 +3702,10 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const struct wi
| WINED3D_BLT_ALPHA_TEST
| WINED3D_BLT_RAW;
- TRACE("dst_surface %p, dst_box %s, src_surface %p, src_box %s, flags %#x, fx %p, filter %s.\n",
- dst_surface, debug_box(dst_box), src_surface, debug_box(src_box),
- flags, fx, debug_d3dtexturefiltertype(filter));
+ TRACE("dst_texture %p, dst_sub_resource_idx %u, dst_box %s, src_texture %p, "
+ "src_sub_resource_idx %u, src_box %s, flags %#x, fx %p, filter %s.\n",
+ dst_texture, dst_sub_resource_idx, debug_box(dst_box), src_texture, src_sub_resource_idx,
+ debug_box(src_box), flags, fx, debug_d3dtexturefiltertype(filter));
TRACE("Usage is %s.\n", debug_d3dusage(dst_texture->resource.usage));
if (fx)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index ad37e5dae06..247e7127592 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3238,6 +3238,10 @@ static inline unsigned int wined3d_texture_get_level_pow2_height(const struct wi
return max(1, texture->pow2_height >> level);
}
+HRESULT texture2d_blt(struct wined3d_texture *dst_texture, unsigned int dst_sub_resource_idx,
+ const struct wined3d_box *dst_box, struct wined3d_texture *src_texture,
+ unsigned int src_sub_resource_idx, const struct wined3d_box *src_box, DWORD flags,
+ const struct wined3d_blt_fx *blt_fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
BOOL texture2d_load_drawable(struct wined3d_texture *texture, unsigned int sub_resource_idx,
struct wined3d_context *context) DECLSPEC_HIDDEN;
void texture2d_load_fb_texture(struct wined3d_texture *texture, unsigned int sub_resource_idx,
@@ -3344,9 +3348,6 @@ static inline unsigned int surface_get_sub_resource_idx(const struct wined3d_sur
return surface->texture_layer * surface->container->level_count + surface->texture_level;
}
-HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const struct wined3d_box *dst_box,
- struct wined3d_surface *src_surface, const struct wined3d_box *src_box, DWORD flags,
- const struct wined3d_blt_fx *blt_fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
void wined3d_surface_upload_data(struct wined3d_texture *texture, unsigned int sub_resource_idx,
const struct wined3d_gl_info *gl_info, const struct wined3d_format *format, const RECT *src_rect,
unsigned int src_pitch, const POINT *dst_point, BOOL srgb,
--
2.11.0