Commit d5c45330 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915: Simplify modifier lookup in watermark code



Replace the huge modifier lists in the watermark code with
a few calls to intel_fb.c.

Reviewed-by: default avatarJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221003111544.8007-7-ville.syrjala@linux.intel.com
parent 334810f8
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -300,6 +300,19 @@ static bool plane_caps_contain_all(u8 caps, u8 mask)
	return (caps & mask) == mask;
}

/**
 * intel_fb_is_tiled_modifier: Check if a modifier is a tiled modifier type
 * @modifier: Modifier to check
 *
 * Returns:
 * Returns %true if @modifier is a tiled modifier.
 */
bool intel_fb_is_tiled_modifier(u64 modifier)
{
	return plane_caps_contain_any(lookup_modifier(modifier)->plane_caps,
				      INTEL_PLANE_CAP_TILING_MASK);
}

/**
 * intel_fb_is_ccs_modifier: Check if a modifier is a CCS modifier type
 * @modifier: Modifier to check
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ struct intel_plane_state;
#define INTEL_PLANE_CAP_TILING_Yf	BIT(5)
#define INTEL_PLANE_CAP_TILING_4	BIT(6)

bool intel_fb_is_tiled_modifier(u64 modifier);
bool intel_fb_is_ccs_modifier(u64 modifier);
bool intel_fb_is_rc_ccs_cc_modifier(u64 modifier);
bool intel_fb_is_mc_ccs_modifier(u64 modifier);
+3 −19
Original line number Diff line number Diff line
@@ -1706,26 +1706,10 @@ skl_compute_wm_params(const struct intel_crtc_state *crtc_state,
		return -EINVAL;
	}

	wp->y_tiled = modifier == I915_FORMAT_MOD_Y_TILED ||
		      modifier == I915_FORMAT_MOD_4_TILED ||
		      modifier == I915_FORMAT_MOD_Yf_TILED ||
		      modifier == I915_FORMAT_MOD_Y_TILED_CCS ||
		      modifier == I915_FORMAT_MOD_Yf_TILED_CCS ||
		      modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS ||
		      modifier == I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS ||
		      modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
		      modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS ||
		      modifier == I915_FORMAT_MOD_4_TILED_DG2_MC_CCS ||
		      modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC;
	wp->x_tiled = modifier == I915_FORMAT_MOD_X_TILED;
	wp->rc_surface = modifier == I915_FORMAT_MOD_Y_TILED_CCS ||
			 modifier == I915_FORMAT_MOD_Yf_TILED_CCS ||
			 modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS ||
			 modifier == I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS ||
			 modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
			 modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS ||
			 modifier == I915_FORMAT_MOD_4_TILED_DG2_MC_CCS ||
			 modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC;
	wp->y_tiled = modifier != I915_FORMAT_MOD_X_TILED &&
		intel_fb_is_tiled_modifier(modifier);
	wp->rc_surface = intel_fb_is_ccs_modifier(modifier);
	wp->is_planar = intel_format_info_is_yuv_semiplanar(format, modifier);

	wp->width = width;