aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.c17
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
1066uint32_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}