drm/i915/mtl: Introduce FBC B
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 17 Aug 2022 12:26:24 +0000 (15:26 +0300)
committerJani Nikula <jani.nikula@intel.com>
Fri, 19 Aug 2022 09:38:54 +0000 (12:38 +0300)
MTL introduces a second FBC engine. The two FBC engines can
operate entirely independently, FBC A serving pipe A and
FBC B serving pipe B.

The one place where things might go a bit wrong is the CFB
allocation from stolen. We might have to consider some change
to the allocation strategy to have a better chance of both
engines being able to allocate its CFB. Maybe FBC A should
allocate bottom up and FBC B top down, or something? For the
moment the allocation strategy is DRM_MM_INSERT_BEST for both.

Cc: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220817122624.213889-1-jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_fbc.h
drivers/gpu/drm/i915/i915_pci.c

index db60143..4adb98a 100644 (file)
@@ -19,6 +19,7 @@ struct intel_plane_state;
 
 enum intel_fbc_id {
        INTEL_FBC_A,
+       INTEL_FBC_B,
 
        I915_MAX_FBCS,
 };
index 9fd788e..d8446bb 100644 (file)
@@ -1111,7 +1111,8 @@ static const struct intel_device_info pvc_info = {
 #define XE_LPDP_FEATURES       \
        XE_LPD_FEATURES,        \
        .display.ver = 14,      \
-       .display.has_cdclk_crawl = 1
+       .display.has_cdclk_crawl = 1, \
+       .display.fbc_mask = BIT(INTEL_FBC_A) | BIT(INTEL_FBC_B)
 
 __maybe_unused
 static const struct intel_device_info mtl_info = {