[Intel-gfx] [PATCH igt 1/3] lib/igt_fb: also call __gem_set_tiling for Y tiling

Paulo Zanoni paulo.r.zanoni at intel.com
Fri Jan 29 10:46:30 PST 2016


The interesting thing is that if we don't do this, we still get a
Y tiled framebuffer, but there won't be a fence around it, which makes
the GTT mmaps less interesting. Is this a Kernel bug?

Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
---
 lib/igt_fb.c | 39 ++++++++++++++++++++-------------------
 1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 5f23136..efdd793 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -73,6 +73,22 @@ static struct format_desc_struct {
 #define for_each_format(f)	\
 	for (f = format_desc; f - format_desc < ARRAY_SIZE(format_desc); f++)
 
+static unsigned int fb_mod_to_obj_tiling(uint64_t fb_mod)
+{
+	switch (fb_mod) {
+	case LOCAL_DRM_FORMAT_MOD_NONE:
+		return I915_TILING_NONE;
+	case LOCAL_I915_FORMAT_MOD_X_TILED:
+		return I915_TILING_X;
+	case LOCAL_I915_FORMAT_MOD_Y_TILED:
+		return I915_TILING_Y;
+	case LOCAL_I915_FORMAT_MOD_Yf_TILED:
+		return I915_TILING_Yf;
+	default:
+		igt_assert(0);
+	}
+}
+
 static void igt_get_fb_tile_size(int fd, uint64_t tiling, int fb_bpp,
 				 unsigned *width_ret, unsigned *height_ret)
 {
@@ -191,9 +207,10 @@ static int create_bo_for_fb(int fd, int width, int height, int bpp,
 
 	gem_handle = gem_create(fd, bo_size);
 
-	if (tiling == LOCAL_I915_FORMAT_MOD_X_TILED)
-		ret = __gem_set_tiling(fd, gem_handle, I915_TILING_X,
-				       bo_stride);
+	if (tiling == LOCAL_I915_FORMAT_MOD_X_TILED ||
+	    tiling == LOCAL_I915_FORMAT_MOD_Y_TILED)
+		ret = __gem_set_tiling(fd, gem_handle,
+				      fb_mod_to_obj_tiling(tiling), bo_stride);
 
 	*stride_ret = bo_stride;
 	*size_ret = bo_size;
@@ -862,22 +879,6 @@ struct fb_blit_upload {
 	} linear;
 };
 
-static unsigned int fb_mod_to_obj_tiling(uint64_t fb_mod)
-{
-	switch (fb_mod) {
-	case LOCAL_DRM_FORMAT_MOD_NONE:
-		return I915_TILING_NONE;
-	case LOCAL_I915_FORMAT_MOD_X_TILED:
-		return I915_TILING_X;
-	case LOCAL_I915_FORMAT_MOD_Y_TILED:
-		return I915_TILING_Y;
-	case LOCAL_I915_FORMAT_MOD_Yf_TILED:
-		return I915_TILING_Yf;
-	default:
-		igt_assert(0);
-	}
-}
-
 static void destroy_cairo_surface__blit(void *arg)
 {
 	struct fb_blit_upload *blit = arg;
-- 
2.7.0.rc3



More information about the Intel-gfx mailing list