[Mesa-dev] [PATCH 1/5] winsys/amdgpu: always allow GTT placements on APUs

Christian König ckoenig.leichtzumerken at gmail.com
Thu Mar 22 15:35:26 UTC 2018


Reviewed-by: Christian König <christian.koenig at amd.com>

Am 22.03.2018 um 16:03 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
>   src/gallium/winsys/amdgpu/drm/amdgpu_bo.c | 12 +++++-------
>   1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
> index 7740b46b7b9..22b5a73143d 100644
> --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
> +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c
> @@ -402,28 +402,26 @@ static struct amdgpu_winsys_bo *amdgpu_create_bo(struct amdgpu_winsys *ws,
>                             heap);
>      }
>      request.alloc_size = size;
>      request.phys_alignment = alignment;
>   
>      if (initial_domain & RADEON_DOMAIN_VRAM)
>         request.preferred_heap |= AMDGPU_GEM_DOMAIN_VRAM;
>      if (initial_domain & RADEON_DOMAIN_GTT)
>         request.preferred_heap |= AMDGPU_GEM_DOMAIN_GTT;
>   
> -   /* If VRAM is just stolen system memory, allow both VRAM and
> -    * GTT, whichever has free space. If a buffer is evicted from
> -    * VRAM to GTT, it will stay there.
> -    *
> -    * DRM 3.6.0 has good BO move throttling, so we can allow VRAM-only
> -    * placements even with a low amount of stolen VRAM.
> +   /* Since VRAM and GTT have almost the same performance on APUs, we could
> +    * just set GTT. However, in order to decrease GTT(RAM) usage, which is
> +    * shared with the OS, allow VRAM placements too. The idea is not to use
> +    * VRAM usefully, but to use it so that it's not unused and wasted.
>       */
> -   if (!ws->info.has_dedicated_vram && ws->info.drm_minor < 6)
> +   if (!ws->info.has_dedicated_vram)
>         request.preferred_heap |= AMDGPU_GEM_DOMAIN_GTT;
>   
>      if (flags & RADEON_FLAG_NO_CPU_ACCESS)
>         request.flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
>      if (flags & RADEON_FLAG_GTT_WC)
>         request.flags |= AMDGPU_GEM_CREATE_CPU_GTT_USWC;
>      if (flags & RADEON_FLAG_NO_INTERPROCESS_SHARING &&
>          ws->info.has_local_buffers)
>         request.flags |= AMDGPU_GEM_CREATE_VM_ALWAYS_VALID;
>   



More information about the mesa-dev mailing list