diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 6a9e46ae7f0a..5e4e1bd90383 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |||
@@ -703,11 +703,7 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain, | |||
703 | /* This assumes only APU display buffers are pinned with (VRAM|GTT). | 703 | /* This assumes only APU display buffers are pinned with (VRAM|GTT). |
704 | * See function amdgpu_display_supported_domains() | 704 | * See function amdgpu_display_supported_domains() |
705 | */ | 705 | */ |
706 | if (domain == (AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT)) { | 706 | domain = amdgpu_bo_get_preferred_pin_domain(adev, domain); |
707 | domain = AMDGPU_GEM_DOMAIN_VRAM; | ||
708 | if (adev->gmc.real_vram_size <= AMDGPU_SG_THRESHOLD) | ||
709 | domain = AMDGPU_GEM_DOMAIN_GTT; | ||
710 | } | ||
711 | 707 | ||
712 | if (bo->pin_count) { | 708 | if (bo->pin_count) { |
713 | uint32_t mem_type = bo->tbo.mem.mem_type; | 709 | uint32_t mem_type = bo->tbo.mem.mem_type; |
@@ -1066,3 +1062,14 @@ u64 amdgpu_bo_gpu_offset(struct amdgpu_bo *bo) | |||
1066 | 1062 | ||
1067 | return bo->tbo.offset; | 1063 | return bo->tbo.offset; |
1068 | } | 1064 | } |
1065 | |||
1066 | uint32_t amdgpu_bo_get_preferred_pin_domain(struct amdgpu_device *adev, | ||
1067 | uint32_t domain) | ||
1068 | { | ||
1069 | if (domain == (AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT)) { | ||
1070 | domain = AMDGPU_GEM_DOMAIN_VRAM; | ||
1071 | if (adev->gmc.real_vram_size <= AMDGPU_SG_THRESHOLD) | ||
1072 | domain = AMDGPU_GEM_DOMAIN_GTT; | ||
1073 | } | ||
1074 | return domain; | ||
1075 | } | ||