[PATCH 4/6] wined3d: Add a function to retrieve surface data.
Stefan Dösinger
stefan at codeweavers.com
Tue Nov 26 17:26:39 CST 2013
---
dlls/wined3d/surface.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index c8fd16a..0c211af 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2166,6 +2166,20 @@ static BOOL surface_check_block_align(struct wined3d_surface *surface, const REC
return FALSE;
}
+static void surface_get_memory(const struct wined3d_surface *surface, struct wined3d_bo_address *data)
+{
+ if (surface->flags & SFLAG_PBO)
+ {
+ data->addr = NULL;
+ data->buffer_object = surface->pbo;
+ }
+ else
+ {
+ data->addr = surface->resource.allocatedMemory;
+ data->buffer_object = 0;
+ }
+}
+
HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point,
struct wined3d_surface *src_surface, const RECT *src_rect)
{
@@ -2265,8 +2279,7 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P
surface_load_location(dst_surface, SFLAG_INTEXTURE);
wined3d_texture_bind(dst_surface->container, context, FALSE);
- data.buffer_object = src_surface->pbo;
- data.addr = src_surface->resource.allocatedMemory;
+ surface_get_memory(src_surface, &data);
src_pitch = wined3d_surface_get_pitch(src_surface);
surface_upload_data(dst_surface, gl_info, src_format, src_rect, src_pitch, dst_point, FALSE, &data);
@@ -5222,8 +5235,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
surface_remove_pbo(surface, gl_info);
}
- data.buffer_object = surface->pbo;
- data.addr = surface->resource.allocatedMemory;
+ surface_get_memory(surface, &data);
surface_upload_data(surface, gl_info, surface->resource.format, &src_rect, src_pitch, &dst_point, srgb, &data);
context_release(context);
--
1.8.3.2
More information about the wine-patches
mailing list