=?UTF-8?Q?Stefan=20D=C3=B6singer=20?=: wined3d: Remove surface_init_sysmem.

Alexandre Julliard julliard at winehq.org
Thu Jan 16 14:52:27 CST 2014


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Wed Jan 15 22:02:16 2014 +0100

wined3d: Remove surface_init_sysmem.

---

 dlls/wined3d/surface.c |   40 +++++++++++++++-------------------------
 1 file changed, 15 insertions(+), 25 deletions(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 586358a..ec9f586 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1295,24 +1295,6 @@ static void surface_remove_pbo(struct wined3d_surface *surface, const struct win
     surface_invalidate_location(surface, SFLAG_INBUFFER);
 }
 
-static BOOL surface_init_sysmem(struct wined3d_surface *surface)
-{
-    if (surface->user_memory)
-        return TRUE;
-
-    if (surface->resource.heap_memory)
-    {
-        memset(surface->resource.heap_memory, 0, surface->resource.size);
-    }
-    else if (!wined3d_resource_allocate_sysmem(&surface->resource))
-    {
-        ERR("Failed to allocate system memory.\n");
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
 static void surface_unload(struct wined3d_resource *resource)
 {
     struct wined3d_surface *surface = surface_from_resource(resource);
@@ -1334,7 +1316,8 @@ static void surface_unload(struct wined3d_resource *resource)
          * but we can't set the sysmem INDRAWABLE because when we're rendering the swapchain
          * or the depth stencil into an FBO the texture or render buffer will be removed
          * and all flags get lost */
-        surface_init_sysmem(surface);
+        surface_prepare_system_memory(surface);
+        memset(surface->resource.heap_memory, 0, surface->resource.size);
         surface_validate_location(surface, SFLAG_INSYSMEM);
         surface_invalidate_location(surface, ~SFLAG_INSYSMEM);
 
@@ -2682,6 +2665,7 @@ HRESULT CDECL wined3d_surface_update_desc(struct wined3d_surface *surface,
     UINT resource_size = wined3d_format_calculate_size(format, device->surface_alignment, width, height, 1);
     BOOL create_dib = FALSE;
     HRESULT hr;
+    DWORD valid_location = 0;
 
     TRACE("surface %p, width %u, height %u, format %s, multisample_type %#x, multisample_quality %u.\n",
             surface, width, height, debug_d3dformat(format_id), multisample_type, multisample_type);
@@ -2734,7 +2718,10 @@ HRESULT CDECL wined3d_surface_update_desc(struct wined3d_surface *surface,
 
     surface->user_memory = mem;
     if (surface->user_memory)
+    {
         surface->map_binding = SFLAG_INUSERMEM;
+        valid_location = SFLAG_INUSERMEM;
+    }
     surface->pitch = pitch;
     surface->resource.format = format;
     surface->resource.multisample_type = multisample_type;
@@ -2758,14 +2745,17 @@ HRESULT CDECL wined3d_surface_update_desc(struct wined3d_surface *surface,
             ERR("Failed to create dib section, hr %#x.\n", hr);
             return hr;
         }
+        if (!valid_location)
+            valid_location = SFLAG_INDIB;
     }
-    if (!surface_init_sysmem(surface))
-        return E_OUTOFMEMORY;
 
-    if (surface->map_binding == SFLAG_INBUFFER)
-        surface_validate_location(surface, SFLAG_INSYSMEM);
-    else
-        surface_validate_location(surface, surface->map_binding);
+    if (!valid_location)
+    {
+        surface_prepare_system_memory(surface);
+        valid_location = SFLAG_INSYSMEM;
+    }
+
+    surface_validate_location(surface, valid_location);
 
     return WINED3D_OK;
 }




More information about the wine-cvs mailing list