]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/display: Respect remapped plane alignment
authorTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Tue, 24 Mar 2026 08:40:16 +0000 (08:40 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 24 Mar 2026 13:29:11 +0000 (09:29 -0400)
Instead of assuming PAGE_SIZE alignment between the remapped planes
respect the value set in the struct intel_remapped_info.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Link: https://patch.msgid.link/20260324084018.20353-11-tvrtko.ursulin@igalia.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/display/xe_fb_pin.c

index ead70ee48028db3579f01e1f1a88c32564df3060..23a7ec41f01d958c8f5bc55181c2a2069c9be6c2 100644 (file)
@@ -83,9 +83,6 @@ write_dpt_remapped_tiled(struct xe_bo *bo, struct iosys_map *map,
                                         plane->dst_stride - plane->width);
        }
 
-       /* Align to next page */
-       dest = ALIGN(dest, XE_PAGE_SIZE);
-
        return dest;
 }
 
@@ -100,6 +97,18 @@ write_dpt_remapped(struct xe_bo *bo,
                const struct intel_remapped_plane_info *plane =
                                &remap_info->plane[i];
 
+               if (!plane->linear && !plane->width && !plane->height)
+                       continue;
+
+               if (dest && remap_info->plane_alignment) {
+                       const unsigned int index = dest / sizeof(u64);
+                       const unsigned int pad =
+                               ALIGN(index, remap_info->plane_alignment) -
+                               index;
+
+                       dest = write_dpt_padding(map, dest, pad);
+               }
+
                dest = write_dpt_remapped_tiled(bo, map, dest, plane);
        }
 }