[Mesa-stable] [PATCH 2/4] i965/miptree: Use the tiling from the modifier instead of the BO

Jason Ekstrand jason at jlekstrand.net
Fri Jan 12 01:40:51 UTC 2018


From: Jason Ekstrand <jason at jlekstrand.net>

This fixes a bug where we were taking the tiling from the BO regardless
of what the modifier said.  When we got images in from Vulkan where it
doesn't set the tiling on the BO, we would treat them as linear even
though the modifier expressly said to treat it as Y-tiled.

Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Daniel Stone <daniels at collabora.com>
---
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index a0474ef..a9c2810 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -986,7 +986,11 @@ intel_miptree_create_for_dri_image(struct brw_context *brw,
    uint32_t bo_tiling, bo_swizzle;
    brw_bo_get_tiling(image->bo, &bo_tiling, &bo_swizzle);
 
-   const enum isl_tiling tiling = isl_tiling_from_i915_tiling(bo_tiling);
+   const struct isl_drm_modifier_info *mod_info =
+      isl_drm_modifier_get_info(image->modifier);
+
+   const enum isl_tiling tiling =
+      mod_info ? mod_info->tiling : isl_tiling_from_i915_tiling(bo_tiling);
 
    if (image->planar_format && image->planar_format->nplanes > 1)
       return miptree_create_for_planar_image(brw, image, target, tiling);
@@ -1010,9 +1014,6 @@ intel_miptree_create_for_dri_image(struct brw_context *brw,
    if (!brw->ctx.TextureFormatSupported[format])
       return NULL;
 
-   const struct isl_drm_modifier_info *mod_info =
-      isl_drm_modifier_get_info(image->modifier);
-
    enum intel_miptree_create_flags mt_create_flags = 0;
 
    /* If this image comes in from a window system, we have different
-- 
2.5.0.400.gff86faf



More information about the mesa-stable mailing list