void basetexture_unload(IWineD3DBaseTexture *iface) { IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface; IWineD3DDeviceImpl *device = This->resource.device; struct wined3d_context *context = NULL; if (This->baseTexture.texture_rgb.name || This->baseTexture.texture_srgb.name) { context = context_acquire(device, NULL); } if(This->baseTexture.texture_rgb.name) { gltexture_delete(&This->baseTexture.texture_rgb); } if(This->baseTexture.texture_srgb.name) { gltexture_delete(&This->baseTexture.texture_srgb); } if (context) context_release(context); This->baseTexture.texture_rgb.dirty = TRUE; This->baseTexture.texture_srgb.dirty = TRUE; resource_unload((IWineD3DResourceImpl *)This); }
/* Do not call while under the GL lock. */ static void WINAPI IWineD3DVolumeImpl_UnLoad(IWineD3DVolume *iface) { TRACE("iface %p.\n", iface); /* The whole content is shadowed on This->resource.allocatedMemory, and * the texture name is managed by the VolumeTexture container. */ resource_unload((IWineD3DResourceImpl *)iface); }
/* Do not call while under the GL lock. */ static void volume_unload(struct wined3d_resource *resource) { TRACE("texture %p.\n", resource); /* The whole content is shadowed on This->resource.allocatedMemory, and * the texture name is managed by the VolumeTexture container. */ resource_unload(resource); }
static void volume_unload(struct wined3d_resource *resource) { struct wined3d_volume *volume = volume_from_resource(resource); struct wined3d_device *device = volume->resource.device; struct wined3d_context *context; if (volume->resource.pool == WINED3D_POOL_DEFAULT) ERR("Unloading DEFAULT pool volume.\n"); TRACE("texture %p.\n", resource); if (volume_prepare_system_memory(volume)) { context = context_acquire(device, NULL); wined3d_volume_load_location(volume, context, WINED3D_LOCATION_SYSMEM); context_release(context); wined3d_volume_invalidate_location(volume, ~WINED3D_LOCATION_SYSMEM); } else { ERR("Out of memory when unloading volume %p.\n", volume); wined3d_volume_validate_location(volume, WINED3D_LOCATION_DISCARDED); wined3d_volume_invalidate_location(volume, ~WINED3D_LOCATION_DISCARDED); } if (volume->pbo) { /* Should not happen because only dynamic default pool volumes * have a buffer, and those are not evicted by device_evit_managed_resources * and must be freed before a non-ex device reset. */ ERR("Unloading a volume with a buffer\n"); wined3d_volume_free_pbo(volume); } /* The texture name is managed by the container. */ volume->flags &= ~(WINED3D_VFLAG_ALLOCATED | WINED3D_VFLAG_SRGB_ALLOCATED | WINED3D_VFLAG_CLIENT_STORAGE); resource_unload(resource); }
void basetexture_unload(IWineD3DBaseTextureImpl *texture) { IWineD3DDeviceImpl *device = texture->resource.device; struct wined3d_context *context = NULL; if (texture->baseTexture.texture_rgb.name || texture->baseTexture.texture_srgb.name) { context = context_acquire(device, NULL); } if (texture->baseTexture.texture_rgb.name) gltexture_delete(&texture->baseTexture.texture_rgb); if (texture->baseTexture.texture_srgb.name) gltexture_delete(&texture->baseTexture.texture_srgb); if (context) context_release(context); basetexture_set_dirty(texture, TRUE); resource_unload(&texture->resource); }
static void wined3d_texture_unload(struct wined3d_texture *texture) { struct wined3d_device *device = texture->resource.device; struct wined3d_context *context = NULL; if (texture->texture_rgb.name || texture->texture_srgb.name) { context = context_acquire(device, NULL); } if (texture->texture_rgb.name) gltexture_delete(context->gl_info, &texture->texture_rgb); if (texture->texture_srgb.name) gltexture_delete(context->gl_info, &texture->texture_srgb); if (context) context_release(context); wined3d_texture_set_dirty(texture, TRUE); resource_unload(&texture->resource); }