[igt-dev] [PATCH i-g-t 3/4] lib/rendercopy: separate intel clear color functions

Juha-Pekka Heikkila juhapekka.heikkila at gmail.com
Tue Sep 27 19:11:42 UTC 2022


separate dg2 style ccs clear color from generic gen12 clear color
same way as how they're separate on rendercopy.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
 lib/intel_batchbuffer.c |  8 +++++++-
 lib/rendercopy.h        |  4 ++++
 lib/rendercopy_gen9.c   | 45 +++++++++++++++++++++++------------------
 3 files changed, 36 insertions(+), 21 deletions(-)

diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index ef1b59477..bb2503bbd 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -1166,7 +1166,13 @@ igt_vebox_copyfunc_t igt_get_vebox_copyfunc(int devid)
 
 igt_render_clearfunc_t igt_get_render_clearfunc(int devid)
 {
-	return IS_GEN12(devid) ? gen12_render_clearfunc : NULL;
+	if (IS_DG2(devid)) {
+		return gen12p71_render_clearfunc;
+	} else if (IS_GEN12(devid)) {
+		return gen12_render_clearfunc;
+	} else {
+		return NULL;
+	}
 }
 
 /**
diff --git a/lib/rendercopy.h b/lib/rendercopy.h
index 3e984a141..480fdee8d 100644
--- a/lib/rendercopy.h
+++ b/lib/rendercopy.h
@@ -23,6 +23,10 @@ static inline void emit_vertex_normalized(struct intel_bb *ibb,
 	intel_bb_out(ibb, u.ui);
 }
 
+void gen12p71_render_clearfunc(struct intel_bb *ibb,
+			       struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
+			       unsigned int width, unsigned int height,
+			       const float clear_color[4]);
 void gen12_render_clearfunc(struct intel_bb *ibb,
 			    struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
 			    unsigned int width, unsigned int height,
diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index ae0f775ac..d74f1c999 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -1254,24 +1254,29 @@ void gen12_render_clearfunc(struct intel_bb *ibb,
 			    unsigned int width, unsigned int height,
 			    const float clear_color[4])
 {
-	if (!HAS_4TILE(ibb->devid)) {
-		struct aux_pgtable_info pgtable_info = { };
-
-		gen12_aux_pgtable_init(&pgtable_info, ibb, NULL, dst);
-
-		_gen9_render_op(ibb, NULL, 0, 0,
-				width, height, dst, dst_x, dst_y,
-				pgtable_info.pgtable_buf,
-				clear_color,
-				gen12_render_copy,
-				sizeof(gen12_render_copy));
-		gen12_aux_pgtable_cleanup(ibb, &pgtable_info);
-	} else {
-			_gen9_render_op(ibb, NULL, 0, 0,
-					width, height, dst, dst_x, dst_y,
-					NULL,
-					clear_color,
-					gen12p71_render_copy,
-					sizeof(gen12p71_render_copy));
-	}
+	struct aux_pgtable_info pgtable_info = { };
+
+	gen12_aux_pgtable_init(&pgtable_info, ibb, NULL, dst);
+
+	_gen9_render_op(ibb, NULL, 0, 0,
+			width, height, dst, dst_x, dst_y,
+			pgtable_info.pgtable_buf,
+			clear_color,
+			gen12_render_copy,
+			sizeof(gen12_render_copy));
+	gen12_aux_pgtable_cleanup(ibb, &pgtable_info);
+}
+
+void gen12p71_render_clearfunc(struct intel_bb *ibb,
+			       struct intel_buf *dst,
+			       unsigned int dst_x, unsigned int dst_y,
+			       unsigned int width, unsigned int height,
+			       const float clear_color[4])
+{
+	_gen9_render_op(ibb, NULL, 0, 0,
+			width, height, dst, dst_x, dst_y,
+			NULL,
+			clear_color,
+			gen12p71_render_copy,
+			sizeof(gen12p71_render_copy));
 }
-- 
2.37.3



More information about the igt-dev mailing list