mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
drm/i915/mtl: Add MTL for remapping CCS FBs
[ Upstream commit 0da6bfe857 ]
Add support for remapping CCS FBs on MTL to remove the restriction
of the power-of-two sized stride and the 2MB surface offset alignment
for these FBs.
Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230505144005.23480-2-nirmoy.das@intel.com
Stable-dep-of: 324b70e997aa ("drm/i915: Fix ADL+ tiled plane stride when the POT stride is smaller than the original")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
52c1a67dd3
commit
de4349bdf9
@@ -1176,7 +1176,8 @@ bool intel_fb_needs_pot_stride_remap(const struct intel_framebuffer *fb)
|
|||||||
{
|
{
|
||||||
struct drm_i915_private *i915 = to_i915(fb->base.dev);
|
struct drm_i915_private *i915 = to_i915(fb->base.dev);
|
||||||
|
|
||||||
return IS_ALDERLAKE_P(i915) && intel_fb_uses_dpt(&fb->base);
|
return (IS_ALDERLAKE_P(i915) || DISPLAY_VER(i915) >= 14) &&
|
||||||
|
intel_fb_uses_dpt(&fb->base);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int intel_fb_pitch(const struct intel_framebuffer *fb, int color_plane, unsigned int rotation)
|
static int intel_fb_pitch(const struct intel_framebuffer *fb, int color_plane, unsigned int rotation)
|
||||||
@@ -1312,9 +1313,10 @@ plane_view_scanout_stride(const struct intel_framebuffer *fb, int color_plane,
|
|||||||
unsigned int tile_width,
|
unsigned int tile_width,
|
||||||
unsigned int src_stride_tiles, unsigned int dst_stride_tiles)
|
unsigned int src_stride_tiles, unsigned int dst_stride_tiles)
|
||||||
{
|
{
|
||||||
|
struct drm_i915_private *i915 = to_i915(fb->base.dev);
|
||||||
unsigned int stride_tiles;
|
unsigned int stride_tiles;
|
||||||
|
|
||||||
if (IS_ALDERLAKE_P(to_i915(fb->base.dev)))
|
if (IS_ALDERLAKE_P(i915) || DISPLAY_VER(i915) >= 14)
|
||||||
stride_tiles = src_stride_tiles;
|
stride_tiles = src_stride_tiles;
|
||||||
else
|
else
|
||||||
stride_tiles = dst_stride_tiles;
|
stride_tiles = dst_stride_tiles;
|
||||||
@@ -1520,7 +1522,8 @@ static void intel_fb_view_init(struct drm_i915_private *i915, struct intel_fb_vi
|
|||||||
memset(view, 0, sizeof(*view));
|
memset(view, 0, sizeof(*view));
|
||||||
view->gtt.type = view_type;
|
view->gtt.type = view_type;
|
||||||
|
|
||||||
if (view_type == I915_GTT_VIEW_REMAPPED && IS_ALDERLAKE_P(i915))
|
if (view_type == I915_GTT_VIEW_REMAPPED &&
|
||||||
|
(IS_ALDERLAKE_P(i915) || DISPLAY_VER(i915) >= 14))
|
||||||
view->gtt.remapped.plane_alignment = SZ_2M / PAGE_SIZE;
|
view->gtt.remapped.plane_alignment = SZ_2M / PAGE_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user