Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

drm: Replace drm_format_plane_cpp() with fb->format->cpp[]



Replace drm_format_plane_cpp(fb->pixel_format) with just
fb->format->cpp[]. Avoids the expensive format info lookup.

@@
struct drm_framebuffer *a;
struct drm_framebuffer b;
expression E;
@@
(
- drm_format_plane_cpp(a->pixel_format, E)
+ a->format->cpp[E]
|
- drm_format_plane_cpp(b.pixel_format, E)
+ b.format->cpp[E]
)

@@
struct drm_plane_state *a;
struct drm_plane_state b;
expression E;
@@
(
- drm_format_plane_cpp(a->fb->pixel_format, E)
+ a->fb->format->cpp[E]
|
- drm_format_plane_cpp(b.fb->pixel_format, E)
+ b.fb->format->cpp[E]
)

@@
struct drm_framebuffer *a;
identifier T;
expression E;
@@
  T = a->pixel_format
<+...
- drm_format_plane_cpp(T, E)
+ a->format->cpp[E]
...+>

@@
struct drm_framebuffer b;
identifier T;
expression E;
@@
  T = b.pixel_format
<+...
- drm_format_plane_cpp(T, E)
+ b.format->cpp[E]
...+>

v2: Rerun spatch due to code changes

Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Suggested-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1481751057-18123-1-git-send-email-ville.syrjala@linux.intel.com
parent 8305494e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -238,7 +238,7 @@ static void hdlcd_plane_atomic_update(struct drm_plane *plane,
	scanout_start = gem->paddr + fb->offsets[0] +
		plane->state->crtc_y * fb->pitches[0] +
		plane->state->crtc_x *
		drm_format_plane_cpp(fb->pixel_format, 0);
		fb->format->cpp[0];

	hdlcd = plane->dev->dev_private;
	hdlcd_write(hdlcd, HDLCD_REG_FB_LINE_LENGTH, fb->pitches[0]);
+1 −2
Original line number Diff line number Diff line
@@ -169,7 +169,6 @@ void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb,
	int x, int y)
{
	u32 addr = drm_fb_obj(fb)->dev_addr;
	u32 pixel_format = fb->pixel_format;
	int num_planes = fb->format->num_planes;
	int i;

@@ -178,7 +177,7 @@ void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb,

	for (i = 0; i < num_planes; i++)
		addrs[i] = addr + fb->offsets[i] + y * fb->pitches[i] +
			     x * drm_format_plane_cpp(pixel_format, i);
			     x * fb->format->cpp[i];
	for (; i < 3; i++)
		addrs[i] = 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -672,7 +672,7 @@ static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p,
		int xdiv = i ? hsub : 1;
		int ydiv = i ? vsub : 1;

		state->bpp[i] = drm_format_plane_cpp(fb->pixel_format, i);
		state->bpp[i] = fb->format->cpp[i];
		if (!state->bpp[i])
			return -EINVAL;

+8 −8
Original line number Diff line number Diff line
@@ -2275,7 +2275,7 @@ u32 intel_fb_xy_to_linear(int x, int y,
			  int plane)
{
	const struct drm_framebuffer *fb = state->base.fb;
	unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
	unsigned int cpp = fb->format->cpp[plane];
	unsigned int pitch = fb->pitches[plane];

	return y * pitch + x * cpp;
@@ -2344,7 +2344,7 @@ static u32 intel_adjust_tile_offset(int *x, int *y,
{
	const struct drm_i915_private *dev_priv = to_i915(state->base.plane->dev);
	const struct drm_framebuffer *fb = state->base.fb;
	unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
	unsigned int cpp = fb->format->cpp[plane];
	unsigned int rotation = state->base.rotation;
	unsigned int pitch = intel_fb_pitch(fb, plane, rotation);

@@ -2400,7 +2400,7 @@ static u32 _intel_compute_tile_offset(const struct drm_i915_private *dev_priv,
				      u32 alignment)
{
	uint64_t fb_modifier = fb->modifier;
	unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
	unsigned int cpp = fb->format->cpp[plane];
	u32 offset, offset_aligned;

	if (alignment)
@@ -2468,7 +2468,7 @@ u32 intel_compute_tile_offset(int *x, int *y,
static void intel_fb_offset_to_xy(int *x, int *y,
				  const struct drm_framebuffer *fb, int plane)
{
	unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
	unsigned int cpp = fb->format->cpp[plane];
	unsigned int pitch = fb->pitches[plane];
	u32 linear_offset = fb->offsets[plane];

@@ -2506,7 +2506,7 @@ intel_fill_fb_info(struct drm_i915_private *dev_priv,
		u32 offset;
		int x, y;

		cpp = drm_format_plane_cpp(format, i);
		cpp = fb->format->cpp[i];
		width = drm_format_plane_width(fb->width, format, i);
		height = drm_format_plane_height(fb->height, format, i);

@@ -2833,7 +2833,7 @@ intel_find_initial_plane_obj(struct intel_crtc *intel_crtc,
static int skl_max_plane_width(const struct drm_framebuffer *fb, int plane,
			       unsigned int rotation)
{
	int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
	int cpp = fb->format->cpp[plane];

	switch (fb->modifier) {
	case DRM_FORMAT_MOD_NONE:
@@ -2912,7 +2912,7 @@ static int skl_check_main_surface(struct intel_plane_state *plane_state)
	 * TODO: linear and Y-tiled seem fine, Yf untested,
	 */
	if (fb->modifier == I915_FORMAT_MOD_X_TILED) {
		int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
		int cpp = fb->format->cpp[0];

		while ((x + w) * cpp > fb->pitches[0]) {
			if (offset == 0) {
@@ -3278,7 +3278,7 @@ u32 skl_plane_stride(const struct drm_framebuffer *fb, int plane,
	 * linear buffers or in number of tiles for tiled buffers.
	 */
	if (drm_rotation_90_or_270(rotation)) {
		int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
		int cpp = fb->format->cpp[plane];

		stride /= intel_tile_height(dev_priv, fb->modifier, cpp);
	} else {
+21 −21
Original line number Diff line number Diff line
@@ -652,7 +652,7 @@ static void pineview_update_wm(struct intel_crtc *unused_crtc)
			&crtc->config->base.adjusted_mode;
		const struct drm_framebuffer *fb =
			crtc->base.primary->state->fb;
		int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
		int cpp = fb->format->cpp[0];
		int clock = adjusted_mode->crtc_clock;

		/* Display SR */
@@ -727,7 +727,7 @@ static bool g4x_compute_wm0(struct drm_i915_private *dev_priv,
	clock = adjusted_mode->crtc_clock;
	htotal = adjusted_mode->crtc_htotal;
	hdisplay = crtc->config->pipe_src_w;
	cpp = drm_format_plane_cpp(fb->pixel_format, 0);
	cpp = fb->format->cpp[0];

	/* Use the small buffer method to calculate plane watermark */
	entries = ((clock * cpp / 1000) * display_latency_ns) / 1000;
@@ -816,7 +816,7 @@ static bool g4x_compute_srwm(struct drm_i915_private *dev_priv,
	clock = adjusted_mode->crtc_clock;
	htotal = adjusted_mode->crtc_htotal;
	hdisplay = crtc->config->pipe_src_w;
	cpp = drm_format_plane_cpp(fb->pixel_format, 0);
	cpp = fb->format->cpp[0];

	line_time_us = max(htotal * 1000 / clock, 1);
	line_count = (latency_ns / line_time_us + 1000) / 1000;
@@ -963,7 +963,7 @@ static uint16_t vlv_compute_wm_level(struct intel_plane *plane,
	if (!state->base.visible)
		return 0;

	cpp = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
	cpp = state->base.fb->format->cpp[0];
	clock = crtc->config->base.adjusted_mode.crtc_clock;
	htotal = crtc->config->base.adjusted_mode.crtc_htotal;
	width = crtc->config->pipe_src_w;
@@ -1004,7 +1004,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)

		if (state->base.visible) {
			wm_state->num_active_planes++;
			total_rate += drm_format_plane_cpp(state->base.fb->pixel_format, 0);
			total_rate += state->base.fb->format->cpp[0];
		}
	}

@@ -1023,7 +1023,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
			continue;
		}

		rate = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
		rate = state->base.fb->format->cpp[0];
		plane->wm.fifo_size = fifo_size * rate / total_rate;
		fifo_left -= plane->wm.fifo_size;
	}
@@ -1455,7 +1455,7 @@ static void i965_update_wm(struct intel_crtc *unused_crtc)
		int clock = adjusted_mode->crtc_clock;
		int htotal = adjusted_mode->crtc_htotal;
		int hdisplay = crtc->config->pipe_src_w;
		int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
		int cpp = fb->format->cpp[0];
		unsigned long line_time_us;
		int entries;

@@ -1541,7 +1541,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
		if (IS_GEN2(dev_priv))
			cpp = 4;
		else
			cpp = drm_format_plane_cpp(fb->pixel_format, 0);
			cpp = fb->format->cpp[0];

		planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
					       wm_info, fifo_size, cpp,
@@ -1568,7 +1568,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
		if (IS_GEN2(dev_priv))
			cpp = 4;
		else
			cpp = drm_format_plane_cpp(fb->pixel_format, 0);
			cpp = fb->format->cpp[0];

		planeb_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
					       wm_info, fifo_size, cpp,
@@ -1621,7 +1621,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
		if (IS_I915GM(dev_priv) || IS_I945GM(dev_priv))
			cpp = 4;
		else
			cpp = drm_format_plane_cpp(fb->pixel_format, 0);
			cpp = fb->format->cpp[0];

		line_time_us = max(htotal * 1000 / clock, 1);

@@ -1787,7 +1787,7 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,
	if (!cstate->base.active || !pstate->base.visible)
		return 0;

	cpp = drm_format_plane_cpp(pstate->base.fb->pixel_format, 0);
	cpp = pstate->base.fb->format->cpp[0];

	method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);

@@ -1816,7 +1816,7 @@ static uint32_t ilk_compute_spr_wm(const struct intel_crtc_state *cstate,
	if (!cstate->base.active || !pstate->base.visible)
		return 0;

	cpp = drm_format_plane_cpp(pstate->base.fb->pixel_format, 0);
	cpp = pstate->base.fb->format->cpp[0];

	method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
	method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
@@ -1860,7 +1860,7 @@ static uint32_t ilk_compute_fbc_wm(const struct intel_crtc_state *cstate,
	if (!cstate->base.active || !pstate->base.visible)
		return 0;

	cpp = drm_format_plane_cpp(pstate->base.fb->pixel_format, 0);
	cpp = pstate->base.fb->format->cpp[0];

	return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->base.dst), cpp);
}
@@ -3258,13 +3258,13 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
	if (format == DRM_FORMAT_NV12) {
		if (y)  /* y-plane data rate */
			data_rate = width * height *
				drm_format_plane_cpp(format, 0);
				fb->format->cpp[0];
		else    /* uv-plane data rate */
			data_rate = (width / 2) * (height / 2) *
				drm_format_plane_cpp(format, 1);
				fb->format->cpp[1];
	} else {
		/* for packed formats */
		data_rate = width * height * drm_format_plane_cpp(format, 0);
		data_rate = width * height * fb->format->cpp[0];
	}

	down_scale_amount = skl_plane_downscale_amount(intel_pstate);
@@ -3351,9 +3351,9 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate,
	}

	if (fb->pixel_format == DRM_FORMAT_NV12 && !y)
		plane_bpp = drm_format_plane_cpp(fb->pixel_format, 1);
		plane_bpp = fb->format->cpp[1];
	else
		plane_bpp = drm_format_plane_cpp(fb->pixel_format, 0);
		plane_bpp = fb->format->cpp[0];

	if (drm_rotation_90_or_270(pstate->rotation)) {
		switch (plane_bpp) {
@@ -3613,13 +3613,13 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
	if (drm_rotation_90_or_270(pstate->rotation))
		swap(width, height);

	cpp = drm_format_plane_cpp(fb->pixel_format, 0);
	cpp = fb->format->cpp[0];
	plane_pixel_rate = skl_adjusted_plane_pixel_rate(cstate, intel_pstate);

	if (drm_rotation_90_or_270(pstate->rotation)) {
		int cpp = (fb->pixel_format == DRM_FORMAT_NV12) ?
			drm_format_plane_cpp(fb->pixel_format, 1) :
			drm_format_plane_cpp(fb->pixel_format, 0);
			fb->format->cpp[1] :
			fb->format->cpp[0];

		switch (cpp) {
		case 1:
Loading