diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_object.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index b91118ccef86..3f9f3bbc4681 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c | |||
@@ -88,10 +88,20 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain) | |||
88 | if (domain & RADEON_GEM_DOMAIN_VRAM) | 88 | if (domain & RADEON_GEM_DOMAIN_VRAM) |
89 | rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | | 89 | rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | |
90 | TTM_PL_FLAG_VRAM; | 90 | TTM_PL_FLAG_VRAM; |
91 | if (domain & RADEON_GEM_DOMAIN_GTT) | 91 | if (domain & RADEON_GEM_DOMAIN_GTT) { |
92 | rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT; | 92 | if (rbo->rdev->flags & RADEON_IS_AGP) { |
93 | if (domain & RADEON_GEM_DOMAIN_CPU) | 93 | rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT; |
94 | rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; | 94 | } else { |
95 | rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT; | ||
96 | } | ||
97 | } | ||
98 | if (domain & RADEON_GEM_DOMAIN_CPU) { | ||
99 | if (rbo->rdev->flags & RADEON_IS_AGP) { | ||
100 | rbo->placements[c++] = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT; | ||
101 | } else { | ||
102 | rbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT; | ||
103 | } | ||
104 | } | ||
95 | if (!c) | 105 | if (!c) |
96 | rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; | 106 | rbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; |
97 | rbo->placement.num_placement = c; | 107 | rbo->placement.num_placement = c; |