Hi Thomas, I think ttm is doing somethings wrong when we validate a bo for the same mem type but with different cache flags. Here is my understanding :
(Use case i am refering too is object validate with current state GTT | CACHED validate to GTT | WC) if (!ttm_bo_mem_compat(bo->proposed_placement, &bo->mem) Is evaluate as true because cache flags are differents, For instance is it goes from UNCACHED to WC or CACHED. So ttm_bo_move_buffer get call, which call ttm_bo_handle_move_mem in there caching change will only happen if there is no ttm allocated which might not be the case if for instance we are dealing with GTT memory (so i think cache transitioning of the object is wrong and we should move ttm_tt_set_placement_caching outside the if in ttm_bo_handle_move_mem). ttm_bo_handle_move_mem will end up calling driver callback move routine which will call in radeon case the ttm_bo_move_accel_cleanup and which will create a ghost object holding the ttm memory in order to delete it at latter point (which is wrong as this memory is still needed). So shouldn't the ttm_bo_move_buffer catch this and not call device move callback but simply transition cache setup of the object ? Or do i misunderstand somethings ? Cheers, Jerome ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel