Mesa (master): winsys/amdgpu: use VRAM for command buffers if all VRAM is visible
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Dec 9 15:52:01 UTC 2020
Module: Mesa
Branch: master
Commit: d60930c0171501de6fd453101275bad133481e0a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d60930c0171501de6fd453101275bad133481e0a
Author: Marek Olšák <marek.olsak at amd.com>
Date: Tue Dec 8 14:43:07 2020 -0500
winsys/amdgpu: use VRAM for command buffers if all VRAM is visible
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7951>
---
src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
index 632138fde01..497cb39f9e2 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
@@ -705,14 +705,23 @@ static bool amdgpu_ib_new_buffer(struct amdgpu_winsys *ws,
buffer_size = MIN2(buffer_size, max_size);
buffer_size = MAX2(buffer_size, min_size); /* min_size is more important */
+ enum radeon_bo_domain domain;
+ unsigned flags = RADEON_FLAG_NO_INTERPROCESS_SHARING;
+
+ if (cs->ring_type == RING_GFX ||
+ cs->ring_type == RING_COMPUTE ||
+ cs->ring_type == RING_DMA) {
+ domain = ws->info.all_vram_visible ? RADEON_DOMAIN_VRAM : RADEON_DOMAIN_GTT;
+ flags |= RADEON_FLAG_32BIT | RADEON_FLAG_GTT_WC;
+ } else {
+ /* UVD/VCE */
+ /* TODO: validate that UVD/VCE don't read from IBs and enable WC or even VRAM. */
+ domain = RADEON_DOMAIN_GTT;
+ }
+
pb = amdgpu_bo_create(ws, buffer_size,
ws->info.gart_page_size,
- RADEON_DOMAIN_GTT,
- RADEON_FLAG_NO_INTERPROCESS_SHARING |
- (cs->ring_type == RING_GFX ||
- cs->ring_type == RING_COMPUTE ||
- cs->ring_type == RING_DMA ?
- RADEON_FLAG_32BIT | RADEON_FLAG_GTT_WC : 0));
+ domain, flags);
if (!pb)
return false;
More information about the mesa-commit
mailing list