radv/winsys: always allow GTT placements on APUs
When the VRAM size is small and the preferred heap only VRAM, the kernel tries to always honor the requested heap and it does a ton of evictions which is a disaster for performance. On APUs, VRAM and GTT have similar performance, so allow the kernel to choose the best placement (GTT or VRAM) itself. This gives a huge performance boost with Doom Eternal on RAVEN. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5665>
This commit is contained in:
parent
d1bba2eee7
commit
28c227c7ca
|
@ -379,8 +379,19 @@ radv_amdgpu_winsys_bo_create(struct radeon_winsys *_ws,
|
|||
request.alloc_size = size;
|
||||
request.phys_alignment = alignment;
|
||||
|
||||
if (initial_domain & RADEON_DOMAIN_VRAM)
|
||||
if (initial_domain & RADEON_DOMAIN_VRAM) {
|
||||
request.preferred_heap |= AMDGPU_GEM_DOMAIN_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)
|
||||
request.preferred_heap |= AMDGPU_GEM_DOMAIN_GTT;
|
||||
}
|
||||
|
||||
if (initial_domain & RADEON_DOMAIN_GTT)
|
||||
request.preferred_heap |= AMDGPU_GEM_DOMAIN_GTT;
|
||||
if (initial_domain & RADEON_DOMAIN_GDS)
|
||||
|
|
Loading…
Reference in New Issue