Message ID | 1425547288-16131-2-git-send-email-sonika.jindal@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Mar 05, 2015 at 02:51:27PM +0530, Sonika Jindal wrote: > For primary plane, we can use the plane's state for src width and height > like sprite plane. > > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index e1b0c4d..afdc101 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3001,6 +3001,7 @@ static void skylake_update_primary_plane(struct drm_crtc *crtc, I think longer-term we need to switch this callback over to the plane callbacks and stop passing drm_crtc around. But this is a step into the right direction at least. -Daniel > int pipe = intel_crtc->pipe; > u32 plane_ctl, stride_div; > unsigned long surf_addr; > + struct drm_plane *plane; > > if (!intel_crtc->primary_enabled) { > I915_WRITE(PLANE_CTL(pipe, 0), 0); > @@ -3060,14 +3061,15 @@ static void skylake_update_primary_plane(struct drm_crtc *crtc, > MISSING_CASE(fb->modifier[0]); > } > > + plane = crtc->primary; > plane_ctl |= PLANE_CTL_PLANE_GAMMA_DISABLE; > - if (crtc->primary->state->rotation == BIT(DRM_ROTATE_180)) > + if (plane->state->rotation == BIT(DRM_ROTATE_180)) > plane_ctl |= PLANE_CTL_ROTATE_180; > > obj = intel_fb_obj(fb); > stride_div = intel_fb_stride_alignment(dev, fb->modifier[0], > fb->pixel_format); > - surf_addr = intel_plane_obj_offset(to_intel_plane(crtc->primary), obj); > + surf_addr = intel_plane_obj_offset(to_intel_plane(plane), obj); > > I915_WRITE(PLANE_CTL(pipe, 0), plane_ctl); > > @@ -3079,8 +3081,8 @@ static void skylake_update_primary_plane(struct drm_crtc *crtc, > I915_WRITE(PLANE_POS(pipe, 0), 0); > I915_WRITE(PLANE_OFFSET(pipe, 0), (y << 16) | x); > I915_WRITE(PLANE_SIZE(pipe, 0), > - (intel_crtc->config->pipe_src_h - 1) << 16 | > - (intel_crtc->config->pipe_src_w - 1)); > + ((plane->state->src_h >> 16) - 1) << 16 | > + ((plane->state->src_w >> 16) - 1)); > I915_WRITE(PLANE_STRIDE(pipe, 0), fb->pitches[0] / stride_div); > I915_WRITE(PLANE_SURF(pipe, 0), surf_addr); > > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e1b0c4d..afdc101 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3001,6 +3001,7 @@ static void skylake_update_primary_plane(struct drm_crtc *crtc, int pipe = intel_crtc->pipe; u32 plane_ctl, stride_div; unsigned long surf_addr; + struct drm_plane *plane; if (!intel_crtc->primary_enabled) { I915_WRITE(PLANE_CTL(pipe, 0), 0); @@ -3060,14 +3061,15 @@ static void skylake_update_primary_plane(struct drm_crtc *crtc, MISSING_CASE(fb->modifier[0]); } + plane = crtc->primary; plane_ctl |= PLANE_CTL_PLANE_GAMMA_DISABLE; - if (crtc->primary->state->rotation == BIT(DRM_ROTATE_180)) + if (plane->state->rotation == BIT(DRM_ROTATE_180)) plane_ctl |= PLANE_CTL_ROTATE_180; obj = intel_fb_obj(fb); stride_div = intel_fb_stride_alignment(dev, fb->modifier[0], fb->pixel_format); - surf_addr = intel_plane_obj_offset(to_intel_plane(crtc->primary), obj); + surf_addr = intel_plane_obj_offset(to_intel_plane(plane), obj); I915_WRITE(PLANE_CTL(pipe, 0), plane_ctl); @@ -3079,8 +3081,8 @@ static void skylake_update_primary_plane(struct drm_crtc *crtc, I915_WRITE(PLANE_POS(pipe, 0), 0); I915_WRITE(PLANE_OFFSET(pipe, 0), (y << 16) | x); I915_WRITE(PLANE_SIZE(pipe, 0), - (intel_crtc->config->pipe_src_h - 1) << 16 | - (intel_crtc->config->pipe_src_w - 1)); + ((plane->state->src_h >> 16) - 1) << 16 | + ((plane->state->src_w >> 16) - 1)); I915_WRITE(PLANE_STRIDE(pipe, 0), fb->pitches[0] / stride_div); I915_WRITE(PLANE_SURF(pipe, 0), surf_addr);
For primary plane, we can use the plane's state for src width and height like sprite plane. Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> --- drivers/gpu/drm/i915/intel_display.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)