Mesa (master): radv/winsys: make IBs read-only for the GPU

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Mon Jan 8 20:27:10 UTC 2018


Module: Mesa
Branch: master
Commit: 0e84fc2e2b7a50e64525042a3acd4d0bd98ffcf0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e84fc2e2b7a50e64525042a3acd4d0bd98ffcf0

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Dec  5 14:28:46 2017 +0100

radv/winsys: make IBs read-only for the GPU

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index 4578a9b548..0ee56f9144 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -200,9 +200,10 @@ radv_amdgpu_cs_create(struct radeon_winsys *ws,
 
 	if (cs->ws->use_ib_bos) {
 		cs->ib_buffer = ws->buffer_create(ws, ib_size, 0,
-						RADEON_DOMAIN_GTT,
-						RADEON_FLAG_CPU_ACCESS|
-						  RADEON_FLAG_NO_INTERPROCESS_SHARING);
+						  RADEON_DOMAIN_GTT,
+						  RADEON_FLAG_CPU_ACCESS |
+						  RADEON_FLAG_NO_INTERPROCESS_SHARING |
+						  RADEON_FLAG_READ_ONLY);
 		if (!cs->ib_buffer) {
 			free(cs);
 			return NULL;
@@ -287,8 +288,9 @@ static void radv_amdgpu_cs_grow(struct radeon_winsys_cs *_cs, size_t min_size)
 
 	cs->ib_buffer = cs->ws->base.buffer_create(&cs->ws->base, ib_size, 0,
 						   RADEON_DOMAIN_GTT,
-						   RADEON_FLAG_CPU_ACCESS|
-						   RADEON_FLAG_NO_INTERPROCESS_SHARING);
+						   RADEON_FLAG_CPU_ACCESS |
+						   RADEON_FLAG_NO_INTERPROCESS_SHARING |
+						   RADEON_FLAG_READ_ONLY);
 
 	if (!cs->ib_buffer) {
 		cs->base.cdw = 0;
@@ -877,7 +879,10 @@ static int radv_amdgpu_winsys_cs_submit_sysmem(struct radeon_winsys_ctx *_ctx,
 		}
 		assert(cnt);
 
-		bo = ws->buffer_create(ws, 4 * size, 4096, RADEON_DOMAIN_GTT, RADEON_FLAG_CPU_ACCESS|RADEON_FLAG_NO_INTERPROCESS_SHARING);
+		bo = ws->buffer_create(ws, 4 * size, 4096, RADEON_DOMAIN_GTT,
+				       RADEON_FLAG_CPU_ACCESS |
+				       RADEON_FLAG_NO_INTERPROCESS_SHARING |
+				       RADEON_FLAG_READ_ONLY);
 		ptr = ws->buffer_map(bo);
 
 		if (preamble_cs) {




More information about the mesa-commit mailing list