wined3d: Pass a resource to wined3d_resource_free_sysmem().
This commit is contained in:
parent
261246ef21
commit
d1e44ff775
|
@ -198,9 +198,8 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This, struct wine
|
|||
}
|
||||
else
|
||||
{
|
||||
wined3d_resource_free_sysmem(This->resource.heap_memory);
|
||||
wined3d_resource_free_sysmem(&This->resource);
|
||||
This->resource.allocatedMemory = NULL;
|
||||
This->resource.heap_memory = NULL;
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
|
@ -138,7 +138,7 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *
|
|||
if (size > wined3d_device_get_available_texture_mem(device))
|
||||
{
|
||||
ERR("Out of adapter memory\n");
|
||||
wined3d_resource_free_sysmem(resource->heap_memory);
|
||||
wined3d_resource_free_sysmem(resource);
|
||||
return WINED3DERR_OUTOFVIDEOMEMORY;
|
||||
}
|
||||
adapter_adjust_memory(device->adapter, size);
|
||||
|
@ -172,9 +172,8 @@ void resource_cleanup(struct wined3d_resource *resource)
|
|||
ERR("Failed to free private data when destroying resource %p, hr = %#x.\n", resource, hr);
|
||||
}
|
||||
|
||||
wined3d_resource_free_sysmem(resource->heap_memory);
|
||||
wined3d_resource_free_sysmem(resource);
|
||||
resource->allocatedMemory = NULL;
|
||||
resource->heap_memory = NULL;
|
||||
|
||||
device_resource_released(resource->device, resource);
|
||||
}
|
||||
|
@ -360,14 +359,15 @@ BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void wined3d_resource_free_sysmem(void *mem)
|
||||
void wined3d_resource_free_sysmem(struct wined3d_resource *resource)
|
||||
{
|
||||
void **p = mem;
|
||||
void **p = resource->heap_memory;
|
||||
|
||||
if (!mem)
|
||||
if (!p)
|
||||
return;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, *(--p));
|
||||
resource->heap_memory = NULL;
|
||||
}
|
||||
|
||||
DWORD wined3d_resource_sanitize_map_flags(const struct wined3d_resource *resource, DWORD flags)
|
||||
|
|
|
@ -566,10 +566,7 @@ static void surface_load_pbo(struct wined3d_surface *surface, const struct wined
|
|||
|
||||
/* We don't need the system memory anymore and we can't even use it for PBOs. */
|
||||
if (!(surface->flags & SFLAG_CLIENT))
|
||||
{
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
surface->resource.heap_memory = NULL;
|
||||
}
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
surface->resource.allocatedMemory = NULL;
|
||||
surface->flags |= SFLAG_PBO;
|
||||
context_release(context);
|
||||
|
@ -601,9 +598,8 @@ static void surface_evict_sysmem(struct wined3d_surface *surface)
|
|||
if (surface->resource.map_count || (surface->flags & SFLAG_DONOTFREE))
|
||||
return;
|
||||
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
surface->resource.allocatedMemory = NULL;
|
||||
surface->resource.heap_memory = NULL;
|
||||
surface_invalidate_location(surface, SFLAG_INSYSMEM);
|
||||
}
|
||||
|
||||
|
@ -1611,8 +1607,7 @@ static HRESULT gdi_surface_private_setup(struct wined3d_surface *surface)
|
|||
hr = surface_create_dib_section(surface);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
surface->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
surface->resource.allocatedMemory = surface->dib.bitmap_data;
|
||||
}
|
||||
|
||||
|
@ -1671,8 +1666,7 @@ static void gdi_surface_map(struct wined3d_surface *surface, const RECT *rect, D
|
|||
ERR("Failed to create dib section, hr %#x.\n", hr);
|
||||
return;
|
||||
}
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
surface->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
surface->resource.allocatedMemory = surface->dib.bitmap_data;
|
||||
}
|
||||
}
|
||||
|
@ -2867,8 +2861,6 @@ HRESULT CDECL wined3d_surface_set_mem(struct wined3d_surface *surface, void *mem
|
|||
|
||||
if (mem && mem != surface->resource.allocatedMemory)
|
||||
{
|
||||
void *release = NULL;
|
||||
|
||||
/* Do I have to copy the old surface content? */
|
||||
if (surface->flags & SFLAG_DIBSECTION)
|
||||
{
|
||||
|
@ -2881,8 +2873,7 @@ HRESULT CDECL wined3d_surface_set_mem(struct wined3d_surface *surface, void *mem
|
|||
}
|
||||
else if (!(surface->flags & SFLAG_USERPTR))
|
||||
{
|
||||
release = surface->resource.heap_memory;
|
||||
surface->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
}
|
||||
surface->resource.allocatedMemory = mem;
|
||||
surface->flags |= SFLAG_USERPTR;
|
||||
|
@ -2894,9 +2885,6 @@ HRESULT CDECL wined3d_surface_set_mem(struct wined3d_surface *surface, void *mem
|
|||
/* For client textures OpenGL has to be notified. */
|
||||
if (surface->flags & SFLAG_CLIENT)
|
||||
surface_release_client_storage(surface);
|
||||
|
||||
/* Now free the old memory if any. */
|
||||
wined3d_resource_free_sysmem(release);
|
||||
}
|
||||
else if (surface->flags & SFLAG_USERPTR)
|
||||
{
|
||||
|
@ -3086,8 +3074,7 @@ HRESULT CDECL wined3d_surface_update_desc(struct wined3d_surface *surface,
|
|||
|
||||
surface->flags &= ~(SFLAG_LOCATIONS | SFLAG_USERPTR);
|
||||
surface->resource.allocatedMemory = NULL;
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
surface->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
|
||||
surface->resource.width = width;
|
||||
surface->resource.height = height;
|
||||
|
@ -3583,8 +3570,7 @@ HRESULT CDECL wined3d_surface_getdc(struct wined3d_surface *surface, HDC *dc)
|
|||
/* Use the DIB section from now on if we are not using a PBO. */
|
||||
if (!(surface->flags & (SFLAG_PBO | SFLAG_PIN_SYSMEM)))
|
||||
{
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
surface->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
surface->resource.allocatedMemory = surface->dib.bitmap_data;
|
||||
}
|
||||
}
|
||||
|
@ -5004,9 +4990,8 @@ static HRESULT surface_blt_special(struct wined3d_surface *dst_surface, const RE
|
|||
|
||||
if (!dst_surface->resource.map_count && !(dst_surface->flags & SFLAG_DONOTFREE))
|
||||
{
|
||||
wined3d_resource_free_sysmem(dst_surface->resource.heap_memory);
|
||||
wined3d_resource_free_sysmem(&dst_surface->resource);
|
||||
dst_surface->resource.allocatedMemory = NULL;
|
||||
dst_surface->resource.heap_memory = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6933,8 +6918,7 @@ static HRESULT surface_init(struct wined3d_surface *surface, UINT alignment, UIN
|
|||
if ((usage & WINED3DUSAGE_OWNDC) && !surface->hDC
|
||||
&& SUCCEEDED(surface_create_dib_section(surface)))
|
||||
{
|
||||
wined3d_resource_free_sysmem(surface->resource.heap_memory);
|
||||
surface->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
surface->resource.allocatedMemory = surface->dib.bitmap_data;
|
||||
}
|
||||
|
||||
|
|
|
@ -142,8 +142,7 @@ static void wined3d_volume_download_data(struct wined3d_volume *volume,
|
|||
|
||||
static void wined3d_volume_evict_sysmem(struct wined3d_volume *volume)
|
||||
{
|
||||
wined3d_resource_free_sysmem(volume->resource.heap_memory);
|
||||
volume->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&volume->resource);
|
||||
volume->resource.allocatedMemory = NULL;
|
||||
wined3d_volume_invalidate_location(volume, WINED3D_LOCATION_SYSMEM);
|
||||
}
|
||||
|
@ -702,8 +701,7 @@ static HRESULT volume_init(struct wined3d_volume *volume, struct wined3d_device
|
|||
if (pool == WINED3D_POOL_DEFAULT && usage & WINED3DUSAGE_DYNAMIC
|
||||
&& gl_info->supported[ARB_PIXEL_BUFFER_OBJECT])
|
||||
{
|
||||
wined3d_resource_free_sysmem(volume->resource.heap_memory);
|
||||
volume->resource.heap_memory = NULL;
|
||||
wined3d_resource_free_sysmem(&volume->resource);
|
||||
volume->resource.allocatedMemory = NULL;
|
||||
volume->flags |= WINED3D_VFLAG_PBO;
|
||||
}
|
||||
|
|
|
@ -1984,8 +1984,6 @@ struct wined3d_resource_ops
|
|||
void (*resource_unload)(struct wined3d_resource *resource);
|
||||
};
|
||||
|
||||
void wined3d_resource_free_sysmem(void *mem) DECLSPEC_HIDDEN;
|
||||
|
||||
struct wined3d_resource
|
||||
{
|
||||
LONG ref;
|
||||
|
@ -2025,6 +2023,7 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *
|
|||
DWORD resource_set_priority(struct wined3d_resource *resource, DWORD priority) DECLSPEC_HIDDEN;
|
||||
void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
|
||||
BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
|
||||
void wined3d_resource_free_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
|
||||
DWORD wined3d_resource_sanitize_map_flags(const struct wined3d_resource *resource,
|
||||
DWORD flags) DECLSPEC_HIDDEN;
|
||||
GLbitfield wined3d_resource_gl_map_flags(DWORD d3d_flags) DECLSPEC_HIDDEN;
|
||||
|
|
Loading…
Reference in New Issue