drm/i915: Handle CCS CC planes separately from CCS AUX planes
authorImre Deak <imre.deak@intel.com>
Wed, 20 Oct 2021 19:51:35 +0000 (22:51 +0300)
committerImre Deak <imre.deak@intel.com>
Thu, 21 Oct 2021 18:44:36 +0000 (21:44 +0300)
CCS CC planes are quite different from CCS AUX planes, even though we
regard the CC planes as a linear buffer having a 64 byte stride.  Thus
it's clearer to check for either CCS plane types explicitly when we need
to handle them; add the required CCS CC planes check here, while the
next patch will change all is_ccs_plane()/is_gen12_ccs_plane() checks to
consider only the CCS AUX planes.

Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211020195138.1841242-9-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_fb.c

index 387d9a3..0cc712e 100644 (file)
@@ -409,7 +409,8 @@ static bool is_semiplanar_uv_plane(const struct drm_framebuffer *fb, int color_p
 bool is_surface_linear(const struct drm_framebuffer *fb, int color_plane)
 {
        return fb->modifier == DRM_FORMAT_MOD_LINEAR ||
-              is_gen12_ccs_plane(fb, color_plane);
+              is_gen12_ccs_plane(fb, color_plane) ||
+              is_gen12_ccs_cc_plane(fb, color_plane);
 }
 
 int main_to_ccs_plane(const struct drm_framebuffer *fb, int main_plane)
@@ -502,7 +503,8 @@ intel_tile_width_bytes(const struct drm_framebuffer *fb, int color_plane)
        case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS:
        case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC:
        case I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS:
-               if (is_ccs_plane(fb, color_plane))
+               if (is_ccs_plane(fb, color_plane) ||
+                   is_gen12_ccs_cc_plane(fb, color_plane))
                        return 64;
                fallthrough;
        case I915_FORMAT_MOD_Y_TILED: