[igt-dev] [PATCH i-g-t v2] lib/igt_fb: Add a check on stride alignment for pixman conversion

Paul Kocialkowski paul.kocialkowski at bootlin.com
Thu Dec 13 13:11:11 UTC 2018


Pixman requires buffer strides the be aligned to 32-bit words in order
to create internal representations of buffers. If this condition is not
met, it will fail and IGT will not be able to report the error cause,
making it hard to debug the issue.

Add an explicit check in our code prior to calling pixman when
converting buffer so that the error can be understood if it occurs.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski at bootlin.com>
Reviewed-by: Maxime Ripard <maxime.ripard at bootlin.com>
---

Changes since v1:
* Added missing Signed-Off-By;
* Added Maxime's Reviewed-By.

 lib/igt_fb.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 2462d6ba6fab..513a66b7098e 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -1901,6 +1901,10 @@ static void convert_pixman(struct fb_convert *cvt)
 	igt_assert((src_pixman != PIXMAN_invalid) &&
 		   (dst_pixman != PIXMAN_invalid));
 
+	/* Pixman requires the stride to be aligned to 32 bits. */
+	igt_assert((cvt->src.fb->strides[0] % sizeof(uint32_t)) == 0);
+	igt_assert((cvt->dst.fb->strides[0] % sizeof(uint32_t)) == 0);
+
 	src_ptr = convert_src_get(cvt);
 
 	src_image = pixman_image_create_bits(src_pixman,
-- 
2.19.2



More information about the igt-dev mailing list