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

Commit ce54d85a authored by Sonika Jindal's avatar Sonika Jindal Committed by Daniel Vetter
Browse files

drm/i915: Updating plane parameters for primary plane in setplane



This unifies how the primary plane functions work with how the sprite
functions works, which allows us to reuse them to update primary plane
properties.

v2: Moving setting of plane members in the end to take care of failure cases and
not-visible cases (Matt).

Signed-off-by: default avatarSonika Jindal <sonika.jindal@intel.com>
Acked-by: default avatarMatt Roper <matthew.d.roper@intel.com>
[danvet: Add a real commit message.]
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 6689c167
Loading
Loading
Loading
Loading
+31 −7
Original line number Diff line number Diff line
@@ -11584,6 +11584,21 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
		.x2 = intel_crtc->active ? intel_crtc->config.pipe_src_w : 0,
		.y2 = intel_crtc->active ? intel_crtc->config.pipe_src_h : 0,
	};
	const struct {
		int crtc_x, crtc_y;
		unsigned int crtc_w, crtc_h;
		uint32_t src_x, src_y, src_w, src_h;
	} orig = {
		.crtc_x = crtc_x,
		.crtc_y = crtc_y,
		.crtc_w = crtc_w,
		.crtc_h = crtc_h,
		.src_x = src_x,
		.src_y = src_y,
		.src_w = src_w,
		.src_h = src_h,
	};
	struct intel_plane *intel_plane = to_intel_plane(plane);
	bool visible;
	int ret;

@@ -11658,15 +11673,24 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,

		mutex_unlock(&dev->struct_mutex);

		return 0;
	}

	} else {
		ret = intel_pipe_set_base(crtc, src.x1, src.y1, fb);
		if (ret)
			return ret;

		if (!intel_crtc->primary_enabled)
			intel_enable_primary_hw_plane(plane, crtc);
	}

	intel_plane->crtc_x = orig.crtc_x;
	intel_plane->crtc_y = orig.crtc_y;
	intel_plane->crtc_w = orig.crtc_w;
	intel_plane->crtc_h = orig.crtc_h;
	intel_plane->src_x = orig.src_x;
	intel_plane->src_y = orig.src_y;
	intel_plane->src_w = orig.src_w;
	intel_plane->src_h = orig.src_h;
	intel_plane->obj = obj;

	return 0;
}