Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] lib/igt_fb/xe: use engine copy where available
@ 2023-10-16 13:48 Juha-Pekka Heikkila
  2023-10-16 19:00 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Juha-Pekka Heikkila @ 2023-10-16 13:48 UTC (permalink / raw)
  To: igt-dev

On Xe driver there seems to be some problems with blitter while copying
framebuffers. Switch to use engine copy instead of blitter copy
where possible at least until blitter path is fixed.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 lib/igt_fb.c | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index e82393909..0ff610dc2 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -2502,12 +2502,17 @@ static bool block_copy_ok(const struct igt_fb *fb)
 
 static bool blitter_ok(const struct igt_fb *fb)
 {
+	int devid;
+
 	if (!is_intel_device(fb->fd))
 		return false;
 
+	devid = intel_get_drm_devid(fb->fd);
+
 	if ((is_ccs_modifier(fb->modifier) &&
-	     !HAS_FLATCCS(intel_get_drm_devid(fb->fd))) ||
-	     is_gen12_mc_ccs_modifier(fb->modifier))
+	     !HAS_FLATCCS(devid)) ||
+	     is_gen12_mc_ccs_modifier(fb->modifier) ||
+	     (is_xe_device(fb->fd) && igt_get_render_copyfunc(devid)))
 		return false;
 
 	for (int i = 0; i < fb->num_planes; i++) {
@@ -2538,15 +2543,20 @@ static bool blitter_ok(const struct igt_fb *fb)
 
 static bool use_enginecopy(const struct igt_fb *fb)
 {
+	int devid;
+
 	if (!is_intel_device(fb->fd))
 		return false;
 
 	if (blitter_ok(fb))
 		return false;
 
+	devid = intel_get_drm_devid(fb->fd);
+
 	return fb->modifier == I915_FORMAT_MOD_Yf_TILED ||
-	       (!HAS_FLATCCS(intel_get_drm_devid(fb->fd)) && is_ccs_modifier(fb->modifier)) ||
-	       is_gen12_mc_ccs_modifier(fb->modifier);
+	       (!HAS_FLATCCS(devid) && is_ccs_modifier(fb->modifier)) ||
+	       is_gen12_mc_ccs_modifier(fb->modifier) ||
+	       (is_xe_device(fb->fd) && igt_get_render_copyfunc(devid));
 }
 
 static bool use_blitter(const struct igt_fb *fb)
@@ -3052,7 +3062,12 @@ static void free_linear_mapping(struct fb_blit_upload *blit)
 		igt_nouveau_delete_bo(&linear->fb);
 	} else if (is_xe_device(fd)) {
 		gem_munmap(linear->map, linear->fb.size);
-		blitcopy(fb, &linear->fb);
+
+		if (blit->ibb)
+			copy_with_engine(blit, fb, &linear->fb);
+		else
+			blitcopy(fb, &linear->fb);
+
 		gem_close(fd, linear->fb.gem_handle);
 	} else {
 		gem_munmap(linear->map, linear->fb.size);
@@ -3132,7 +3147,10 @@ static void setup_linear_mapping(struct fb_blit_upload *blit)
 
 		linear->map = igt_nouveau_mmap_bo(&linear->fb, PROT_READ | PROT_WRITE);
 	} else if (is_xe_device(fd)) {
-		blitcopy(&linear->fb, fb);
+		if (blit->ibb)
+			copy_with_engine(blit, &linear->fb, fb);
+		else
+			blitcopy(&linear->fb, fb);
 
 		linear->map = xe_bo_mmap_ext(fd, linear->fb.gem_handle,
 					     linear->fb.size, PROT_READ | PROT_WRITE);
-- 
2.34.1

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-10-18 13:51 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-16 13:48 [igt-dev] [PATCH i-g-t] lib/igt_fb/xe: use engine copy where available Juha-Pekka Heikkila
2023-10-16 19:00 ` [igt-dev] ✗ GitLab.Pipeline: warning for " Patchwork
2023-10-16 19:28 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
2023-10-16 19:31 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
2023-10-17  0:08 ` [igt-dev] ✓ CI.xeBAT: success for lib/igt_fb/xe: use engine copy where available (rev2) Patchwork
2023-10-17  0:13 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
2023-10-17  5:58 ` [igt-dev] ✓ Fi.CI.BAT: success for lib/igt_fb/xe: use engine copy where available (rev3) Patchwork
2023-10-17  6:20 ` [igt-dev] ✓ CI.xeBAT: " Patchwork
2023-10-17  6:44 ` [igt-dev] [PATCH i-g-t] lib/igt_fb/xe: use engine copy where available Zbigniew Kempczyński
2023-10-17  7:08   ` Juha-Pekka Heikkila
2023-10-18 12:57     ` Maarten Lankhorst
2023-10-18 13:51       ` Juha-Pekka Heikkila
2023-10-17  7:49 ` [igt-dev] ✗ Fi.CI.IGT: failure for lib/igt_fb/xe: use engine copy where available (rev3) Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox