winsys/amdgpu: add CLEAR_VRAM flag to zero vram when creating bo

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29010>
This commit is contained in:
Yogesh Mohan Marimuthu 2024-10-24 11:13:32 +05:30 committed by Marge Bot
parent 468ea03c6e
commit 48ea133c97
2 changed files with 5 additions and 4 deletions

View file

@ -65,6 +65,7 @@ enum radeon_bo_flag
RADEON_FLAG_DISCARDABLE = (1 << 10),
RADEON_FLAG_WINSYS_SLAB_BACKING = (1 << 11), /* only used by the winsys */
RADEON_FLAG_GFX12_ALLOW_DCC = (1 << 12), /* allow DCC, VRAM only */
RADEON_FLAG_CLEAR_VRAM = (1 << 13),
};
static inline void
@ -918,7 +919,7 @@ static inline int radeon_get_heap_index(enum radeon_bo_domain domain, enum radeo
/* These are unsupported flags. */
/* RADEON_FLAG_DRIVER_INTERNAL is ignored. It doesn't affect allocators. */
if (flags & (RADEON_FLAG_NO_SUBALLOC | RADEON_FLAG_SPARSE |
RADEON_FLAG_DISCARDABLE))
RADEON_FLAG_DISCARDABLE | RADEON_FLAG_CLEAR_VRAM))
return -1;
int heap = 0;

View file

@ -545,8 +545,8 @@ static struct amdgpu_winsys_bo *amdgpu_create_bo(struct amdgpu_winsys *aws,
aws->info.drm_minor >= 47)
request.flags |= AMDGPU_GEM_CREATE_DISCARDABLE;
if (aws->zero_all_vram_allocs &&
(request.preferred_heap & AMDGPU_GEM_DOMAIN_VRAM))
if ((flags & RADEON_FLAG_CLEAR_VRAM) || (aws->zero_all_vram_allocs &&
(request.preferred_heap & AMDGPU_GEM_DOMAIN_VRAM)))
request.flags |= AMDGPU_GEM_CREATE_VRAM_CLEARED;
if ((flags & RADEON_FLAG_ENCRYPTED) &&
@ -1440,7 +1440,7 @@ no_slab:
bool use_reusable_pool = !(domain & RADEON_DOMAIN_DOORBELL) &&
(flags & RADEON_FLAG_NO_INTERPROCESS_SHARING) &&
!(flags & RADEON_FLAG_DISCARDABLE);
!(flags & (RADEON_FLAG_DISCARDABLE | RADEON_FLAG_CLEAR_VRAM));
if (use_reusable_pool) {
/* RADEON_FLAG_NO_SUBALLOC is irrelevant for the cache. */