From c1fbd8a56653b91af57a408bbcf20a760a2bd8c8 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Wed, 7 Feb 2007 17:25:13 +0100 Subject: Checkpoint commit. Flag handling and memory type selection cleanup. glxgears won't start. --- linux-core/drm_bo_move.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'linux-core/drm_bo_move.c') diff --git a/linux-core/drm_bo_move.c b/linux-core/drm_bo_move.c index abfa8f80..b4486bfe 100644 --- a/linux-core/drm_bo_move.c +++ b/linux-core/drm_bo_move.c @@ -50,26 +50,25 @@ int drm_bo_move_ttm(drm_device_t *dev, mutex_lock(&dev->struct_mutex); drm_mm_put_block(old_mem->mm_node); + old_mem->mm_node = NULL; mutex_unlock(&dev->struct_mutex); - save_flags |= DRM_BO_FLAG_CACHED; - - } else { - + DRM_FLAG_MASKED(old_mem->flags, + DRM_BO_FLAG_CACHED | DRM_BO_FLAG_MAPPABLE | + DRM_BO_FLAG_MEM_LOCAL, DRM_BO_MASK_MEMTYPE); + old_mem->mem_type = DRM_BO_MEM_LOCAL; + save_flags = old_mem->flags; + } + if (new_mem->mem_type != DRM_BO_MEM_LOCAL) { ret = drm_bind_ttm(ttm, - new_mem->flags & DRM_BO_FLAG_BIND_CACHED, + new_mem->flags & DRM_BO_FLAG_CACHED, new_mem->mm_node->start); if (ret) return ret; - - if (!(new_mem->flags & DRM_BO_FLAG_BIND_CACHED)) { - save_flags &= ~DRM_BO_FLAG_CACHED; - } - } *old_mem = *new_mem; new_mem->mm_node = NULL; old_mem->mask = save_mask; - DRM_MASK_VAL(save_flags, new_mem->flags, DRM_BO_MASK_MEM); + DRM_FLAG_MASKED(save_flags, new_mem->flags, DRM_BO_MASK_MEMTYPE); return 0; } -- cgit v1.2.3