drm: add helpers to go from plane state to drm_rect

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
[seanpaul resolved conflict in drm_plane.h]
Signed-off-by: Sean Paul <seanpaul@chromium.org>
This commit is contained in:
Rob Clark 2016-11-05 11:08:08 -04:00 committed by Sean Paul
parent d8187177b0
commit 1638d30c15
4 changed files with 30 additions and 26 deletions

View File

@ -130,15 +130,8 @@ int drm_plane_helper_check_state(struct drm_plane_state *state,
unsigned int rotation = state->rotation; unsigned int rotation = state->rotation;
int hscale, vscale; int hscale, vscale;
src->x1 = state->src_x; *src = drm_plane_state_src(state);
src->y1 = state->src_y; *dst = drm_plane_state_dest(state);
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;
if (!fb) { if (!fb) {
state->visible = false; state->visible = false;

View File

@ -2824,14 +2824,8 @@ valid_fb:
plane_state->crtc_w = fb->width; plane_state->crtc_w = fb->width;
plane_state->crtc_h = fb->height; plane_state->crtc_h = fb->height;
intel_state->base.src.x1 = plane_state->src_x; intel_state->base.src = drm_plane_state_src(plane_state);
intel_state->base.src.y1 = plane_state->src_y; intel_state->base.dst = drm_plane_state_dest(plane_state);
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;
obj = intel_fb_obj(fb); obj = intel_fb_obj(fb);
if (i915_gem_object_is_tiled(obj)) if (i915_gem_object_is_tiled(obj))

View File

@ -773,15 +773,8 @@ intel_check_sprite_plane(struct drm_plane *plane,
bool can_scale; bool can_scale;
int ret; int ret;
src->x1 = state->base.src_x; *src = drm_plane_state_src(&state->base);
src->y1 = state->base.src_y; *dst = drm_plane_state_dest(&state->base);
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;
if (!fb) { if (!fb) {
state->base.visible = false; state->base.visible = false;

View File

@ -118,6 +118,30 @@ struct drm_plane_state {
struct drm_atomic_state *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 * struct drm_plane_funcs - driver plane control functions
*/ */