[PATCH] drm/amdgpu: optimize to drop preamble IB for old GPUs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The optimization is safe for old GPUs and can help performance.

Signed-off-by: Jiansong Chen <Jiansong.Chen@xxxxxxx>
Change-Id: Id3b1250f1fe46dddbe8498894fb97e9753b7cafe
---
 drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 6 ++++++
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
index 3a8d52a54873..c915cc439484 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
@@ -1873,6 +1873,12 @@ static void gfx_v6_0_ring_emit_ib(struct amdgpu_ring *ring,
 		amdgpu_ring_write(ring, 0);
 	}
 
+	/* drop the CE preamble IB for the same context */
+	if ((ib->flags & AMDGPU_IB_FLAG_PREAMBLE) &&
+	    !(flags & AMDGPU_HAVE_CTX_SWITCH) &&
+	    !(flags & AMDGPU_PREAMBLE_IB_PRESENT_FIRST))
+		return;
+
 	if (ib->flags & AMDGPU_IB_FLAG_CE)
 		header = PACKET3(PACKET3_INDIRECT_BUFFER_CONST, 2);
 	else
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index c35fdd2ef2d4..6d9ccae48024 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -2269,6 +2269,12 @@ static void gfx_v7_0_ring_emit_ib_gfx(struct amdgpu_ring *ring,
 		amdgpu_ring_write(ring, 0);
 	}
 
+	/* drop the CE preamble IB for the same context */
+	if ((ib->flags & AMDGPU_IB_FLAG_PREAMBLE) &&
+	    !(flags & AMDGPU_HAVE_CTX_SWITCH) &&
+	    !(flags & AMDGPU_PREAMBLE_IB_PRESENT_FIRST))
+		return;
+
 	if (ib->flags & AMDGPU_IB_FLAG_CE)
 		header = PACKET3(PACKET3_INDIRECT_BUFFER_CONST, 2);
 	else
-- 
2.25.1

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux