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

Commit 1638d30c authored by Rob Clark's avatar Rob Clark Committed by Sean Paul
Browse files

drm: add helpers to go from plane state to drm_rect



Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
[seanpaul resolved conflict in drm_plane.h]
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
parent d8187177
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -130,15 +130,8 @@ int drm_plane_helper_check_state(struct drm_plane_state *state,
	unsigned int rotation = state->rotation;
	int hscale, vscale;

	src->x1 = state->src_x;
	src->y1 = state->src_y;
	src->x2 = state->src_x + state->src_w;
	src->y2 = state->src_y + state->src_h;

	dst->x1 = state->crtc_x;
	dst->y1 = state->crtc_y;
	dst->x2 = state->crtc_x + state->crtc_w;
	dst->y2 = state->crtc_y + state->crtc_h;
	*src = drm_plane_state_src(state);
	*dst = drm_plane_state_dest(state);

	if (!fb) {
		state->visible = false;
+2 −8
Original line number Diff line number Diff line
@@ -2824,14 +2824,8 @@ intel_find_initial_plane_obj(struct intel_crtc *intel_crtc,
	plane_state->crtc_w = fb->width;
	plane_state->crtc_h = fb->height;

	intel_state->base.src.x1 = plane_state->src_x;
	intel_state->base.src.y1 = plane_state->src_y;
	intel_state->base.src.x2 = plane_state->src_x + plane_state->src_w;
	intel_state->base.src.y2 = plane_state->src_y + plane_state->src_h;
	intel_state->base.dst.x1 = plane_state->crtc_x;
	intel_state->base.dst.y1 = plane_state->crtc_y;
	intel_state->base.dst.x2 = plane_state->crtc_x + plane_state->crtc_w;
	intel_state->base.dst.y2 = plane_state->crtc_y + plane_state->crtc_h;
	intel_state->base.src = drm_plane_state_src(plane_state);
	intel_state->base.dst = drm_plane_state_dest(plane_state);

	obj = intel_fb_obj(fb);
	if (i915_gem_object_is_tiled(obj))
+2 −9
Original line number Diff line number Diff line
@@ -773,15 +773,8 @@ intel_check_sprite_plane(struct drm_plane *plane,
	bool can_scale;
	int ret;

	src->x1 = state->base.src_x;
	src->y1 = state->base.src_y;
	src->x2 = state->base.src_x + state->base.src_w;
	src->y2 = state->base.src_y + state->base.src_h;

	dst->x1 = state->base.crtc_x;
	dst->y1 = state->base.crtc_y;
	dst->x2 = state->base.crtc_x + state->base.crtc_w;
	dst->y2 = state->base.crtc_y + state->base.crtc_h;
	*src = drm_plane_state_src(&state->base);
	*dst = drm_plane_state_dest(&state->base);

	if (!fb) {
		state->base.visible = false;
+24 −0
Original line number Diff line number Diff line
@@ -118,6 +118,30 @@ struct drm_plane_state {
	struct drm_atomic_state *state;
};

static inline struct drm_rect
drm_plane_state_src(const struct drm_plane_state *state)
{
	struct drm_rect src = {
		.x1 = state->src_x,
		.y1 = state->src_y,
		.x2 = state->src_x + state->src_w,
		.y2 = state->src_y + state->src_h,
	};
	return src;
}

static inline struct drm_rect
drm_plane_state_dest(const struct drm_plane_state *state)
{
	struct drm_rect dest = {
		.x1 = state->crtc_x,
		.y1 = state->crtc_y,
		.x2 = state->crtc_x + state->crtc_w,
		.y2 = state->crtc_y + state->crtc_h,
	};
	return dest;
}

/**
 * struct drm_plane_funcs - driver plane control functions
 */