diff options
author | Deepak Sharma <Deepak.Sharma@amd.com> | 2018-05-22 18:31:23 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-05-29 14:17:35 -0400 |
commit | bda31a24dc5c03fd76832c4d672fba8355e3aa44 (patch) | |
tree | 0ee8b4309e6a5b7de95eaa96183a6eddb529351f /drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |
parent | 7bee0572e31f1f5963ecc19d55f64f384d0b155b (diff) |
drm/amdgpu: Use GTT for dumb buffer if sg display enabled (v2)
When vram size <= THRESHOLD(256M) lets use GTT for dumb buffer
allocation. As SG will be enabled with vram size <= 256M
scan out will not be an issue.
v2: Use amdgpu_display_supported_domains to get supported domain.
Signed-off-by: Deepak Sharma <Deepak.Sharma@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index 2c8e27370284..63758db5e2ea 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <drm/drmP.h> | 30 | #include <drm/drmP.h> |
31 | #include <drm/amdgpu_drm.h> | 31 | #include <drm/amdgpu_drm.h> |
32 | #include "amdgpu.h" | 32 | #include "amdgpu.h" |
33 | #include "amdgpu_display.h" | ||
33 | 34 | ||
34 | void amdgpu_gem_object_free(struct drm_gem_object *gobj) | 35 | void amdgpu_gem_object_free(struct drm_gem_object *gobj) |
35 | { | 36 | { |
@@ -749,15 +750,20 @@ int amdgpu_mode_dumb_create(struct drm_file *file_priv, | |||
749 | struct amdgpu_device *adev = dev->dev_private; | 750 | struct amdgpu_device *adev = dev->dev_private; |
750 | struct drm_gem_object *gobj; | 751 | struct drm_gem_object *gobj; |
751 | uint32_t handle; | 752 | uint32_t handle; |
753 | u32 domain = amdgpu_display_supported_domains(adev); | ||
752 | int r; | 754 | int r; |
753 | 755 | ||
754 | args->pitch = amdgpu_align_pitch(adev, args->width, | 756 | args->pitch = amdgpu_align_pitch(adev, args->width, |
755 | DIV_ROUND_UP(args->bpp, 8), 0); | 757 | DIV_ROUND_UP(args->bpp, 8), 0); |
756 | args->size = (u64)args->pitch * args->height; | 758 | args->size = (u64)args->pitch * args->height; |
757 | args->size = ALIGN(args->size, PAGE_SIZE); | 759 | args->size = ALIGN(args->size, PAGE_SIZE); |
760 | if (domain == (AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT)) { | ||
761 | domain = AMDGPU_GEM_DOMAIN_VRAM; | ||
762 | if (adev->gmc.real_vram_size <= AMDGPU_SG_THRESHOLD) | ||
763 | domain = AMDGPU_GEM_DOMAIN_GTT; | ||
764 | } | ||
758 | 765 | ||
759 | r = amdgpu_gem_object_create(adev, args->size, 0, | 766 | r = amdgpu_gem_object_create(adev, args->size, 0, domain, |
760 | AMDGPU_GEM_DOMAIN_VRAM, | ||
761 | AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED, | 767 | AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED, |
762 | false, NULL, &gobj); | 768 | false, NULL, &gobj); |
763 | if (r) | 769 | if (r) |