On Fri, Jan 29, 2016 at 04:46:30PM -0200, Paulo Zanoni wrote:
> 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?

I think some tests currently depend on not having a fence for Y tiled
fbs. So this could break stuff.

> 
> Signed-off-by: Paulo Zanoni <[email protected]>
> ---
>  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
> 
> _______________________________________________
> Intel-gfx mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to