Mesa (mesa_7_2_branch): bufmgr_fake: Copy data from card memory back to backing store when mapping.

Haihao Xiang haihao at kemper.freedesktop.org
Sat Sep 27 03:06:20 UTC 2008


Module: Mesa
Branch: mesa_7_2_branch
Commit: 75b8d0209c62e696714abf16782804c5a14159cf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=75b8d0209c62e696714abf16782804c5a14159cf

Author: Xiang, Haihao <haihao.xiang at intel.com>
Date:   Sat Sep 27 10:50:15 2008 +0800

bufmgr_fake: Copy data from card memory back to backing store when mapping.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=17705

---

 src/mesa/drivers/dri/common/dri_bufmgr_fake.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/common/dri_bufmgr_fake.c b/src/mesa/drivers/dri/common/dri_bufmgr_fake.c
index 9bf3f34..a44a4dd 100644
--- a/src/mesa/drivers/dri/common/dri_bufmgr_fake.c
+++ b/src/mesa/drivers/dri/common/dri_bufmgr_fake.c
@@ -278,9 +278,9 @@ static void free_block(dri_bufmgr_fake *bufmgr_fake, struct block *block)
       return;
 
    bo_fake = (dri_bo_fake *)block->bo;
-   if (!(bo_fake->flags & BM_NO_BACKING_STORE) && (bo_fake->card_dirty == 1)) {
+   if (!(bo_fake->flags & (BM_PINNED | BM_NO_BACKING_STORE)) && (bo_fake->card_dirty == 1)) {
      memcpy(bo_fake->backing_store, block->virtual, block->bo->size);
-     bo_fake->card_dirty = 1;
+     bo_fake->card_dirty = 0;
      bo_fake->dirty = 1;
    }
 
@@ -773,6 +773,11 @@ dri_fake_bo_map(dri_bo *bo, GLboolean write_enable)
 	 if (bo_fake->backing_store == 0)
 	    alloc_backing_store(bo);
 
+         if (bo_fake->card_dirty == 1 && bo_fake->block) {
+             memcpy(bo_fake->backing_store, bo_fake->block->virtual, bo_fake->block->bo->size);
+             bo_fake->card_dirty = 0;
+         }
+
 	 bo->virtual = bo_fake->backing_store;
       }
    }




More information about the mesa-commit mailing list