Commit 07579ed1 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/nouveau/kms/nv50: Use drm_mode_get_hv_timing() to populate plane clip rectangle

Use drm_mode_get_hv_timing() to fill out the plane clip rectangle.

No functional changes as the code already uses crtc_state->mode
to populate the clip, which is also what drm_mode_get_hv_timing()
uses.

Once everyone agrees on this we can move the clip handling into
drm_atomic_helper_check_plane_state().

Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171123190502.28449-11-ville.syrjala@linux.intel.comReviewed-by: default avatarThierry Reding <treding@nvidia.com>
parent e489c795
...@@ -228,8 +228,6 @@ struct nv50_wndw_atom { ...@@ -228,8 +228,6 @@ struct nv50_wndw_atom {
struct drm_plane_state state; struct drm_plane_state state;
u8 interval; u8 interval;
struct drm_rect clip;
struct { struct {
u32 handle; u32 handle;
u16 offset:12; u16 offset:12;
...@@ -840,10 +838,6 @@ nv50_wndw_atomic_check_acquire(struct nv50_wndw *wndw, ...@@ -840,10 +838,6 @@ nv50_wndw_atomic_check_acquire(struct nv50_wndw *wndw,
int ret; int ret;
NV_ATOMIC(drm, "%s acquire\n", wndw->plane.name); NV_ATOMIC(drm, "%s acquire\n", wndw->plane.name);
asyw->clip.x1 = 0;
asyw->clip.y1 = 0;
asyw->clip.x2 = asyh->state.mode.hdisplay;
asyw->clip.y2 = asyh->state.mode.vdisplay;
asyw->image.w = fb->base.width; asyw->image.w = fb->base.width;
asyw->image.h = fb->base.height; asyw->image.h = fb->base.height;
...@@ -1141,10 +1135,15 @@ static int ...@@ -1141,10 +1135,15 @@ static int
nv50_curs_acquire(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw, nv50_curs_acquire(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw,
struct nv50_head_atom *asyh) struct nv50_head_atom *asyh)
{ {
struct drm_rect clip = {};
int ret; int ret;
if (asyh->state.enable)
drm_mode_get_hv_timing(&asyh->state.mode,
&clip.x2, &clip.y2);
ret = drm_atomic_helper_check_plane_state(&asyw->state, &asyh->state, ret = drm_atomic_helper_check_plane_state(&asyw->state, &asyh->state,
&asyw->clip, &clip,
DRM_PLANE_HELPER_NO_SCALING, DRM_PLANE_HELPER_NO_SCALING,
DRM_PLANE_HELPER_NO_SCALING, DRM_PLANE_HELPER_NO_SCALING,
true, true); true, true);
...@@ -1428,13 +1427,18 @@ nv50_base_acquire(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw, ...@@ -1428,13 +1427,18 @@ nv50_base_acquire(struct nv50_wndw *wndw, struct nv50_wndw_atom *asyw,
struct nv50_head_atom *asyh) struct nv50_head_atom *asyh)
{ {
const struct drm_framebuffer *fb = asyw->state.fb; const struct drm_framebuffer *fb = asyw->state.fb;
struct drm_rect clip = {};
int ret; int ret;
if (!fb->format->depth) if (!fb->format->depth)
return -EINVAL; return -EINVAL;
if (asyh->state.enable)
drm_mode_get_hv_timing(&asyh->state.mode,
&clip.x2, &clip.y2);
ret = drm_atomic_helper_check_plane_state(&asyw->state, &asyh->state, ret = drm_atomic_helper_check_plane_state(&asyw->state, &asyh->state,
&asyw->clip, &clip,
DRM_PLANE_HELPER_NO_SCALING, DRM_PLANE_HELPER_NO_SCALING,
DRM_PLANE_HELPER_NO_SCALING, DRM_PLANE_HELPER_NO_SCALING,
false, true); false, true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment