We split plane_state into hw and uapi, this will allow us to
make bigjoiner work without rewriting the entire atomic_check and
plane programming to be bigjoienr aware.

This results in a cleaner bigjoiner implementation than if we use
a separate plane_state.

The only exception is intel_legacy_cursor_update, but that uses
the drm_plane_state directly, correctly.

spatch and guidelines below, keep in mind get_crtc_from_states()
needs access to uapi, because plane_state is not copied yet.

struct drm_plane_state {
        // derived state and fixed state, safe to use intel_plane_state->uapi:
        struct drm_rect src, dst;
        bool visible;

        struct drm_plane *plane;
        struct drm_crtc_commit *commit;
        struct drm_atomic_state *state;
        struct dma_fence fence;

        // HW properties, must use intel_plane_state->hw

        struct drm_crtc *crtc;
        struct drm_framebuffer *fb;

        u16 alpha;
        uint16_t pixel_blend_mode;
        unsigned int rotation;
        enum drm_color_encoding color_encoding;
        enum drm_color_range color_range;
};

@@
struct intel_plane_state *T;
@@
-T->base.src
+T->uapi.src

@@
struct intel_plane_state *T;
@@
-T->base.dst
+T->uapi.dst

@@
struct intel_plane_state *T;
@@
-T->base.visible
+T->uapi.visible

@@
struct intel_plane_state *T;
@@
-T->base.plane
+T->uapi.plane

@@
struct intel_plane_state *T;
@@
-T->base.commit
+T->uapi.commit

@@
struct intel_plane_state *T;
@@
-T->base.state
+T->uapi.state

@@
struct intel_plane_state *T;
@@
-T->base.fence
+T->uapi.fence

// HW members, properties

@@
struct intel_plane_state *T;
@@
-T->base.crtc
+T->hw.crtc

@@
struct intel_plane_state *T;
@@
-T->base.fb
+T->hw.fb

@@
struct intel_plane_state *T;
@@
-T->base.alpha
+T->hw.alpha

@@
struct intel_plane_state *T;
@@
-T->base.pixel_blend_mode
+T->hw.pixel_blend_mode

@@
struct intel_plane_state *T;
@@
-T->base.rotation
+T->hw.rotation

@@
struct intel_plane_state *T;
@@
-T->base.color_encoding
+T->hw.color_encoding

@@
struct intel_plane_state *T;
@@
-T->base.color_range
+T->hw.color_range

Signed-off-by: Maarten Lankhorst <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_atomic.c   |   8 +-
 .../gpu/drm/i915/display/intel_atomic_plane.c |  52 +--
 drivers/gpu/drm/i915/display/intel_display.c  | 378 +++++++++---------
 .../drm/i915/display/intel_display_types.h    |   7 +-
 drivers/gpu/drm/i915/display/intel_fbc.c      |  20 +-
 drivers/gpu/drm/i915/display/intel_overlay.c  |   4 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   | 190 ++++-----
 drivers/gpu/drm/i915/intel_pm.c               |  93 ++---
 8 files changed, 379 insertions(+), 373 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c 
b/drivers/gpu/drm/i915/display/intel_atomic.c
index 266d0ce9d03d..4783d7ff4fcf 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic.c
@@ -296,10 +296,10 @@ static void intel_atomic_setup_scaler(struct 
intel_crtc_scaler_state *scaler_sta
                return;
 
        /* set scaler mode */
-       if (plane_state && plane_state->base.fb &&
-           plane_state->base.fb->format->is_yuv &&
-           plane_state->base.fb->format->num_planes > 1) {
-               struct intel_plane *plane = 
to_intel_plane(plane_state->base.plane);
+       if (plane_state && plane_state->hw.fb &&
+           plane_state->hw.fb->format->is_yuv &&
+           plane_state->hw.fb->format->num_planes > 1) {
+               struct intel_plane *plane = 
to_intel_plane(plane_state->uapi.plane);
                if (IS_GEN(dev_priv, 9) &&
                    !IS_GEMINILAKE(dev_priv)) {
                        mode = SKL_PS_SCALER_MODE_NV12;
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c 
b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index ca82167d4ce3..01937896d69c 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -56,7 +56,7 @@ struct intel_plane *intel_plane_alloc(void)
                return ERR_PTR(-ENOMEM);
        }
 
-       __drm_atomic_helper_plane_reset(&plane->base, &plane_state->base);
+       __drm_atomic_helper_plane_reset(&plane->base, &plane_state->uapi);
        plane_state->scaler_id = -1;
 
        return plane;
@@ -80,22 +80,20 @@ void intel_plane_free(struct intel_plane *plane)
 struct drm_plane_state *
 intel_plane_duplicate_state(struct drm_plane *plane)
 {
-       struct drm_plane_state *state;
        struct intel_plane_state *intel_state;
 
-       intel_state = kmemdup(plane->state, sizeof(*intel_state), GFP_KERNEL);
+       intel_state = to_intel_plane_state(plane->state);
+       intel_state = kmemdup(intel_state, sizeof(*intel_state), GFP_KERNEL);
 
        if (!intel_state)
                return NULL;
 
-       state = &intel_state->base;
-
-       __drm_atomic_helper_plane_duplicate_state(plane, state);
+       __drm_atomic_helper_plane_duplicate_state(plane, &intel_state->uapi);
 
        intel_state->vma = NULL;
        intel_state->flags = 0;
 
-       return state;
+       return &intel_state->uapi;
 }
 
 /**
@@ -110,18 +108,20 @@ void
 intel_plane_destroy_state(struct drm_plane *plane,
                          struct drm_plane_state *state)
 {
-       WARN_ON(to_intel_plane_state(state)->vma);
+       struct intel_plane_state *plane_state = to_intel_plane_state(state);
+       WARN_ON(plane_state->vma);
 
-       drm_atomic_helper_plane_destroy_state(plane, state);
+       __drm_atomic_helper_plane_destroy_state(&plane_state->uapi);
+       kfree(plane_state);
 }
 
 unsigned int intel_plane_data_rate(const struct intel_crtc_state *crtc_state,
                                   const struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        unsigned int cpp;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        cpp = fb->format->cpp[0];
@@ -143,17 +143,17 @@ int intel_plane_atomic_check_with_state(const struct 
intel_crtc_state *old_crtc_
                                        const struct intel_plane_state 
*old_plane_state,
                                        struct intel_plane_state 
*new_plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(new_plane_state->base.plane);
-       const struct drm_framebuffer *fb = new_plane_state->base.fb;
+       struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane);
+       const struct drm_framebuffer *fb = new_plane_state->hw.fb;
        int ret;
 
        new_crtc_state->active_planes &= ~BIT(plane->id);
        new_crtc_state->nv12_planes &= ~BIT(plane->id);
        new_crtc_state->c8_planes &= ~BIT(plane->id);
        new_crtc_state->data_rate[plane->id] = 0;
-       new_plane_state->base.visible = false;
+       new_plane_state->uapi.visible = false;
 
-       if (!new_plane_state->base.crtc && !old_plane_state->base.crtc)
+       if (!new_plane_state->hw.crtc && !old_plane_state->hw.crtc)
                return 0;
 
        ret = plane->check_plane(new_crtc_state, new_plane_state);
@@ -161,18 +161,18 @@ int intel_plane_atomic_check_with_state(const struct 
intel_crtc_state *old_crtc_
                return ret;
 
        /* FIXME pre-g4x don't work like this */
-       if (new_plane_state->base.visible)
+       if (new_plane_state->uapi.visible)
                new_crtc_state->active_planes |= BIT(plane->id);
 
-       if (new_plane_state->base.visible &&
+       if (new_plane_state->uapi.visible &&
            drm_format_info_is_yuv_semiplanar(fb->format))
                new_crtc_state->nv12_planes |= BIT(plane->id);
 
-       if (new_plane_state->base.visible &&
+       if (new_plane_state->uapi.visible &&
            fb->format->format == DRM_FORMAT_C8)
                new_crtc_state->c8_planes |= BIT(plane->id);
 
-       if (new_plane_state->base.visible || old_plane_state->base.visible)
+       if (new_plane_state->uapi.visible || old_plane_state->uapi.visible)
                new_crtc_state->update_planes |= BIT(plane->id);
 
        new_crtc_state->data_rate[plane->id] =
@@ -186,11 +186,11 @@ static struct intel_crtc *
 get_crtc_from_states(const struct intel_plane_state *old_plane_state,
                     const struct intel_plane_state *new_plane_state)
 {
-       if (new_plane_state->base.crtc)
-               return to_intel_crtc(new_plane_state->base.crtc);
+       if (new_plane_state->uapi.crtc)
+               return to_intel_crtc(new_plane_state->uapi.crtc);
 
-       if (old_plane_state->base.crtc)
-               return to_intel_crtc(old_plane_state->base.crtc);
+       if (old_plane_state->uapi.crtc)
+               return to_intel_crtc(old_plane_state->uapi.crtc);
 
        return NULL;
 }
@@ -210,7 +210,7 @@ static int intel_plane_atomic_check(struct drm_plane 
*_plane,
        const struct intel_crtc_state *old_crtc_state;
        struct intel_crtc_state *new_crtc_state;
 
-       new_plane_state->base.visible = false;
+       new_plane_state->uapi.visible = false;
        if (!crtc)
                return 0;
 
@@ -319,7 +319,7 @@ void skl_update_planes_on_crtc(struct intel_atomic_state 
*state,
                struct intel_plane_state *new_plane_state =
                        intel_atomic_get_new_plane_state(state, plane);
 
-               if (new_plane_state->base.visible) {
+               if (new_plane_state->uapi.visible) {
                        intel_update_plane(plane, new_crtc_state, 
new_plane_state);
                } else if (new_plane_state->planar_slave) {
                        struct intel_plane *master =
@@ -359,7 +359,7 @@ void i9xx_update_planes_on_crtc(struct intel_atomic_state 
*state,
                    !(update_mask & BIT(plane->id)))
                        continue;
 
-               if (new_plane_state->base.visible)
+               if (new_plane_state->uapi.visible)
                        intel_update_plane(plane, new_crtc_state, 
new_plane_state);
                else
                        intel_disable_plane(plane, new_crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index c2debb402844..0ee542840c70 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -2056,7 +2056,7 @@ static unsigned int intel_surf_alignment(const struct 
drm_framebuffer *fb,
 
 static bool intel_plane_uses_fence(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
 
        return INTEL_GEN(dev_priv) < 4 ||
@@ -2192,7 +2192,7 @@ u32 intel_fb_xy_to_linear(int x, int y,
                          const struct intel_plane_state *state,
                          int color_plane)
 {
-       const struct drm_framebuffer *fb = state->base.fb;
+       const struct drm_framebuffer *fb = state->hw.fb;
        unsigned int cpp = fb->format->cpp[color_plane];
        unsigned int pitch = state->color_plane[color_plane].stride;
 
@@ -2293,8 +2293,8 @@ static u32 intel_plane_adjust_aligned_offset(int *x, int 
*y,
                                             int color_plane,
                                             u32 old_offset, u32 new_offset)
 {
-       return intel_adjust_aligned_offset(x, y, state->base.fb, color_plane,
-                                          state->base.rotation,
+       return intel_adjust_aligned_offset(x, y, state->hw.fb, color_plane,
+                                          state->hw.rotation,
                                           
state->color_plane[color_plane].stride,
                                           old_offset, new_offset);
 }
@@ -2368,10 +2368,10 @@ static u32 intel_plane_compute_aligned_offset(int *x, 
int *y,
                                              const struct intel_plane_state 
*state,
                                              int color_plane)
 {
-       struct intel_plane *intel_plane = to_intel_plane(state->base.plane);
+       struct intel_plane *intel_plane = to_intel_plane(state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(intel_plane->base.dev);
-       const struct drm_framebuffer *fb = state->base.fb;
-       unsigned int rotation = state->base.rotation;
+       const struct drm_framebuffer *fb = state->hw.fb;
+       unsigned int rotation = state->hw.rotation;
        int pitch = state->color_plane[color_plane].stride;
        u32 alignment;
 
@@ -2556,9 +2556,9 @@ intel_fb_stride_alignment(const struct drm_framebuffer 
*fb, int color_plane)
 
 bool intel_plane_can_remap(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int i;
 
        /* We don't want to deal with remapping with cursors */
@@ -2596,16 +2596,16 @@ bool intel_plane_can_remap(const struct 
intel_plane_state *plane_state)
 
 static bool intel_plane_needs_remap(const struct intel_plane_state 
*plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        u32 stride, max_stride;
 
        /*
         * No remapping for invisible planes since we don't have
         * an actual source viewport to remap.
         */
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return false;
 
        if (!intel_plane_can_remap(plane_state))
@@ -2791,11 +2791,11 @@ static void
 intel_plane_remap_gtt(struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       struct drm_framebuffer *fb = plane_state->base.fb;
+               to_i915(plane_state->uapi.plane->dev);
+       struct drm_framebuffer *fb = plane_state->hw.fb;
        struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
        struct intel_rotation_info *info = &plane_state->view.rotated;
-       unsigned int rotation = plane_state->base.rotation;
+       unsigned int rotation = plane_state->hw.rotation;
        int i, num_planes = fb->format->num_planes;
        unsigned int tile_size = intel_tile_size(dev_priv);
        unsigned int src_x, src_y;
@@ -2806,20 +2806,20 @@ intel_plane_remap_gtt(struct intel_plane_state 
*plane_state)
        plane_state->view.type = drm_rotation_90_or_270(rotation) ?
                I915_GGTT_VIEW_ROTATED : I915_GGTT_VIEW_REMAPPED;
 
-       src_x = plane_state->base.src.x1 >> 16;
-       src_y = plane_state->base.src.y1 >> 16;
-       src_w = drm_rect_width(&plane_state->base.src) >> 16;
-       src_h = drm_rect_height(&plane_state->base.src) >> 16;
+       src_x = plane_state->uapi.src.x1 >> 16;
+       src_y = plane_state->uapi.src.y1 >> 16;
+       src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
 
        WARN_ON(is_ccs_modifier(fb->modifier));
 
        /* Make src coordinates relative to the viewport */
-       drm_rect_translate(&plane_state->base.src,
+       drm_rect_translate(&plane_state->uapi.src,
                           -(src_x << 16), -(src_y << 16));
 
        /* Rotate src coordinates to match rotated GTT view */
        if (drm_rotation_90_or_270(rotation))
-               drm_rect_rotate(&plane_state->base.src,
+               drm_rect_rotate(&plane_state->uapi.src,
                                src_w << 16, src_h << 16,
                                DRM_MODE_ROTATE_270);
 
@@ -2904,8 +2904,8 @@ static int
 intel_plane_compute_gtt(struct intel_plane_state *plane_state)
 {
        const struct intel_framebuffer *fb =
-               to_intel_framebuffer(plane_state->base.fb);
-       unsigned int rotation = plane_state->base.rotation;
+               to_intel_framebuffer(plane_state->hw.fb);
+       unsigned int rotation = plane_state->hw.rotation;
        int i, num_planes;
 
        if (!fb)
@@ -2942,7 +2942,7 @@ intel_plane_compute_gtt(struct intel_plane_state 
*plane_state)
 
        /* Rotate src coordinates to match rotated GTT view */
        if (drm_rotation_90_or_270(rotation))
-               drm_rect_rotate(&plane_state->base.src,
+               drm_rect_rotate(&plane_state->uapi.src,
                                fb->base.width << 16, fb->base.height << 16,
                                DRM_MODE_ROTATE_270);
 
@@ -3110,9 +3110,9 @@ intel_set_plane_visible(struct intel_crtc_state 
*crtc_state,
                        struct intel_plane_state *plane_state,
                        bool visible)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
 
-       plane_state->base.visible = visible;
+       plane_state->uapi.visible = visible;
 
        if (visible)
                crtc_state->uapi.plane_mask |= drm_plane_mask(&plane->base);
@@ -3207,7 +3207,7 @@ intel_find_initial_plane_obj(struct intel_crtc 
*intel_crtc,
                        continue;
 
                if (intel_plane_ggtt_offset(state) == plane_config->base) {
-                       fb = state->base.fb;
+                       fb = state->hw.fb;
                        drm_framebuffer_get(fb);
                        goto valid_fb;
                }
@@ -3225,11 +3225,11 @@ intel_find_initial_plane_obj(struct intel_crtc 
*intel_crtc,
        return;
 
 valid_fb:
-       intel_state->base.rotation = plane_config->rotation;
+       intel_state->hw.rotation = plane_config->rotation;
        intel_fill_fb_ggtt_view(&intel_state->view, fb,
-                               intel_state->base.rotation);
+                               intel_state->hw.rotation);
        intel_state->color_plane[0].stride =
-               intel_fb_pitch(fb, 0, intel_state->base.rotation);
+               intel_fb_pitch(fb, 0, intel_state->hw.rotation);
 
        mutex_lock(&dev->struct_mutex);
        intel_state->vma =
@@ -3259,8 +3259,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 = drm_plane_state_src(plane_state);
-       intel_state->base.dst = drm_plane_state_dest(plane_state);
+       intel_state->uapi.src = drm_plane_state_src(plane_state);
+       intel_state->uapi.dst = drm_plane_state_dest(plane_state);
 
        if (plane_config->tiling)
                dev_priv->preserve_bios_swizzle = true;
@@ -3358,7 +3358,7 @@ static int icl_max_plane_height(void)
 static bool skl_check_main_ccs_coordinates(struct intel_plane_state 
*plane_state,
                                           int main_x, int main_y, u32 
main_offset)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int hsub = fb->format->hsub;
        int vsub = fb->format->vsub;
        int aux_x = plane_state->color_plane[1].x;
@@ -3395,13 +3395,13 @@ static bool skl_check_main_ccs_coordinates(struct 
intel_plane_state *plane_state
 
 static int skl_check_main_surface(struct intel_plane_state *plane_state)
 {
-       struct drm_i915_private *dev_priv = 
to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
-       int x = plane_state->base.src.x1 >> 16;
-       int y = plane_state->base.src.y1 >> 16;
-       int w = drm_rect_width(&plane_state->base.src) >> 16;
-       int h = drm_rect_height(&plane_state->base.src) >> 16;
+       struct drm_i915_private *dev_priv = 
to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
+       int x = plane_state->uapi.src.x1 >> 16;
+       int y = plane_state->uapi.src.y1 >> 16;
+       int w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       int h = drm_rect_height(&plane_state->uapi.src) >> 16;
        int max_width;
        int max_height;
        u32 alignment, offset, aux_offset = plane_state->color_plane[1].offset;
@@ -3484,23 +3484,23 @@ static int skl_check_main_surface(struct 
intel_plane_state *plane_state)
         * Put the final coordinates back so that the src
         * coordinate checks will see the right values.
         */
-       drm_rect_translate(&plane_state->base.src,
-                          (x << 16) - plane_state->base.src.x1,
-                          (y << 16) - plane_state->base.src.y1);
+       drm_rect_translate(&plane_state->uapi.src,
+                          (x << 16) - plane_state->uapi.src.x1,
+                          (y << 16) - plane_state->uapi.src.y1);
 
        return 0;
 }
 
 static int skl_check_nv12_aux_surface(struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        int max_width = skl_max_plane_width(fb, 1, rotation);
        int max_height = 4096;
-       int x = plane_state->base.src.x1 >> 17;
-       int y = plane_state->base.src.y1 >> 17;
-       int w = drm_rect_width(&plane_state->base.src) >> 17;
-       int h = drm_rect_height(&plane_state->base.src) >> 17;
+       int x = plane_state->uapi.src.x1 >> 17;
+       int y = plane_state->uapi.src.y1 >> 17;
+       int w = drm_rect_width(&plane_state->uapi.src) >> 17;
+       int h = drm_rect_height(&plane_state->uapi.src) >> 17;
        u32 offset;
 
        intel_add_fb_offsets(&x, &y, plane_state, 1);
@@ -3522,9 +3522,9 @@ static int skl_check_nv12_aux_surface(struct 
intel_plane_state *plane_state)
 
 static int skl_check_ccs_aux_surface(struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       int src_x = plane_state->base.src.x1 >> 16;
-       int src_y = plane_state->base.src.y1 >> 16;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       int src_x = plane_state->uapi.src.x1 >> 16;
+       int src_y = plane_state->uapi.src.y1 >> 16;
        int hsub = fb->format->hsub;
        int vsub = fb->format->vsub;
        int x = src_x / hsub;
@@ -3543,14 +3543,14 @@ static int skl_check_ccs_aux_surface(struct 
intel_plane_state *plane_state)
 
 int skl_check_plane_surface(struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int ret;
 
        ret = intel_plane_compute_gtt(plane_state);
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        /*
@@ -3627,9 +3627,9 @@ static u32 i9xx_plane_ctl(const struct intel_crtc_state 
*crtc_state,
                          const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+               to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        u32 dspcntr;
 
        dspcntr = DISPLAY_PLANE_ENABLE;
@@ -3681,7 +3681,7 @@ static u32 i9xx_plane_ctl(const struct intel_crtc_state 
*crtc_state,
 int i9xx_check_plane_surface(struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
+               to_i915(plane_state->uapi.plane->dev);
        int src_x, src_y;
        u32 offset;
        int ret;
@@ -3690,11 +3690,11 @@ int i9xx_check_plane_surface(struct intel_plane_state 
*plane_state)
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
-       src_x = plane_state->base.src.x1 >> 16;
-       src_y = plane_state->base.src.y1 >> 16;
+       src_x = plane_state->uapi.src.x1 >> 16;
+       src_y = plane_state->uapi.src.y1 >> 16;
 
        intel_add_fb_offsets(&src_x, &src_y, plane_state, 0);
 
@@ -3708,15 +3708,15 @@ int i9xx_check_plane_surface(struct intel_plane_state 
*plane_state)
         * Put the final coordinates back so that the src
         * coordinate checks will see the right values.
         */
-       drm_rect_translate(&plane_state->base.src,
-                          (src_x << 16) - plane_state->base.src.x1,
-                          (src_y << 16) - plane_state->base.src.y1);
+       drm_rect_translate(&plane_state->uapi.src,
+                          (src_x << 16) - plane_state->uapi.src.x1,
+                          (src_y << 16) - plane_state->uapi.src.y1);
 
        /* HSW/BDW do this automagically in hardware */
        if (!IS_HASWELL(dev_priv) && !IS_BROADWELL(dev_priv)) {
-               unsigned int rotation = plane_state->base.rotation;
-               int src_w = drm_rect_width(&plane_state->base.src) >> 16;
-               int src_h = drm_rect_height(&plane_state->base.src) >> 16;
+               unsigned int rotation = plane_state->hw.rotation;
+               int src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+               int src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
 
                if (rotation & DRM_MODE_ROTATE_180) {
                        src_x += src_w - 1;
@@ -3753,14 +3753,14 @@ static int
 i9xx_plane_check(struct intel_crtc_state *crtc_state,
                 struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        int ret;
 
        ret = chv_plane_check_rotation(plane_state);
        if (ret)
                return ret;
 
-       ret = drm_atomic_helper_check_plane_state(&plane_state->base,
+       ret = drm_atomic_helper_check_plane_state(&plane_state->uapi,
                                                  &crtc_state->uapi,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
@@ -3773,7 +3773,7 @@ i9xx_plane_check(struct intel_crtc_state *crtc_state,
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        ret = intel_plane_check_src_coordinates(plane_state);
@@ -3794,10 +3794,10 @@ static void i9xx_update_plane(struct intel_plane *plane,
        u32 linear_offset;
        int x = plane_state->color_plane[0].x;
        int y = plane_state->color_plane[0].y;
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_y = plane_state->base.dst.y1;
-       int crtc_w = drm_rect_width(&plane_state->base.dst);
-       int crtc_h = drm_rect_height(&plane_state->base.dst);
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_y = plane_state->uapi.dst.y1;
+       int crtc_w = drm_rect_width(&plane_state->uapi.dst);
+       int crtc_h = drm_rect_height(&plane_state->uapi.dst);
        unsigned long irqflags;
        u32 dspaddr_offset;
        u32 dspcntr;
@@ -3967,8 +3967,8 @@ static unsigned int skl_plane_stride_mult(const struct 
drm_framebuffer *fb,
 u32 skl_plane_stride(const struct intel_plane_state *plane_state,
                     int color_plane)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        u32 stride = plane_state->color_plane[color_plane].stride;
 
        if (color_plane >= fb->format->num_planes)
@@ -4037,10 +4037,10 @@ static u32 skl_plane_ctl_format(u32 pixel_format)
 
 static u32 skl_plane_ctl_alpha(const struct intel_plane_state *plane_state)
 {
-       if (!plane_state->base.fb->format->has_alpha)
+       if (!plane_state->hw.fb->format->has_alpha)
                return PLANE_CTL_ALPHA_DISABLE;
 
-       switch (plane_state->base.pixel_blend_mode) {
+       switch (plane_state->hw.pixel_blend_mode) {
        case DRM_MODE_BLEND_PIXEL_NONE:
                return PLANE_CTL_ALPHA_DISABLE;
        case DRM_MODE_BLEND_PREMULTI:
@@ -4048,17 +4048,17 @@ static u32 skl_plane_ctl_alpha(const struct 
intel_plane_state *plane_state)
        case DRM_MODE_BLEND_COVERAGE:
                return PLANE_CTL_ALPHA_HW_PREMULTIPLY;
        default:
-               MISSING_CASE(plane_state->base.pixel_blend_mode);
+               MISSING_CASE(plane_state->hw.pixel_blend_mode);
                return PLANE_CTL_ALPHA_DISABLE;
        }
 }
 
 static u32 glk_plane_color_ctl_alpha(const struct intel_plane_state 
*plane_state)
 {
-       if (!plane_state->base.fb->format->has_alpha)
+       if (!plane_state->hw.fb->format->has_alpha)
                return PLANE_COLOR_ALPHA_DISABLE;
 
-       switch (plane_state->base.pixel_blend_mode) {
+       switch (plane_state->hw.pixel_blend_mode) {
        case DRM_MODE_BLEND_PIXEL_NONE:
                return PLANE_COLOR_ALPHA_DISABLE;
        case DRM_MODE_BLEND_PREMULTI:
@@ -4066,7 +4066,7 @@ static u32 glk_plane_color_ctl_alpha(const struct 
intel_plane_state *plane_state
        case DRM_MODE_BLEND_COVERAGE:
                return PLANE_COLOR_ALPHA_HW_PREMULTIPLY;
        default:
-               MISSING_CASE(plane_state->base.pixel_blend_mode);
+               MISSING_CASE(plane_state->hw.pixel_blend_mode);
                return PLANE_COLOR_ALPHA_DISABLE;
        }
 }
@@ -4151,9 +4151,9 @@ u32 skl_plane_ctl(const struct intel_crtc_state 
*crtc_state,
                  const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+               to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
        u32 plane_ctl;
 
@@ -4163,10 +4163,10 @@ u32 skl_plane_ctl(const struct intel_crtc_state 
*crtc_state,
                plane_ctl |= skl_plane_ctl_alpha(plane_state);
                plane_ctl |= PLANE_CTL_PLANE_GAMMA_DISABLE;
 
-               if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
+               if (plane_state->hw.color_encoding == DRM_COLOR_YCBCR_BT709)
                        plane_ctl |= PLANE_CTL_YUV_TO_RGB_CSC_FORMAT_BT709;
 
-               if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
+               if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
                        plane_ctl |= PLANE_CTL_YUV_RANGE_CORRECTION_DISABLE;
        }
 
@@ -4207,21 +4207,21 @@ u32 glk_plane_color_ctl(const struct intel_crtc_state 
*crtc_state,
                        const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+               to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        u32 plane_color_ctl = 0;
 
        plane_color_ctl |= PLANE_COLOR_PLANE_GAMMA_DISABLE;
        plane_color_ctl |= glk_plane_color_ctl_alpha(plane_state);
 
        if (fb->format->is_yuv && !icl_is_hdr_plane(dev_priv, plane->id)) {
-               if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
+               if (plane_state->hw.color_encoding == DRM_COLOR_YCBCR_BT709)
                        plane_color_ctl |= 
PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
                else
                        plane_color_ctl |= 
PLANE_COLOR_CSC_MODE_YUV601_TO_RGB709;
 
-               if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
+               if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
                        plane_color_ctl |= 
PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE;
        } else if (fb->format->is_yuv) {
                plane_color_ctl |= PLANE_COLOR_INPUT_CSC_ENABLE;
@@ -5504,11 +5504,11 @@ static int skl_update_scaler_plane(struct 
intel_crtc_state *crtc_state,
                                   struct intel_plane_state *plane_state)
 {
        struct intel_plane *intel_plane =
-               to_intel_plane(plane_state->base.plane);
+               to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(intel_plane->base.dev);
-       struct drm_framebuffer *fb = plane_state->base.fb;
+       struct drm_framebuffer *fb = plane_state->hw.fb;
        int ret;
-       bool force_detach = !fb || !plane_state->base.visible;
+       bool force_detach = !fb || !plane_state->uapi.visible;
        bool need_scaler = false;
 
        /* Pre-gen11 and SDR planes always need a scaler for planar formats. */
@@ -5519,10 +5519,10 @@ static int skl_update_scaler_plane(struct 
intel_crtc_state *crtc_state,
        ret = skl_update_scaler(crtc_state, force_detach,
                                drm_plane_index(&intel_plane->base),
                                &plane_state->scaler_id,
-                               drm_rect_width(&plane_state->base.src) >> 16,
-                               drm_rect_height(&plane_state->base.src) >> 16,
-                               drm_rect_width(&plane_state->base.dst),
-                               drm_rect_height(&plane_state->base.dst),
+                               drm_rect_width(&plane_state->uapi.src) >> 16,
+                               drm_rect_height(&plane_state->uapi.src) >> 16,
+                               drm_rect_width(&plane_state->uapi.dst),
+                               drm_rect_height(&plane_state->uapi.dst),
                                fb ? fb->format : NULL, need_scaler);
 
        if (ret || plane_state->scaler_id < 0)
@@ -5940,7 +5940,7 @@ static void intel_pre_plane_update(struct 
intel_crtc_state *old_crtc_state,
                 * So disable underrun reporting before all the planes get 
disabled.
                 */
                if (IS_GEN(dev_priv, 2) && old_primary_state->visible &&
-                   (modeset || !new_primary_state->base.visible))
+                   (modeset || !new_primary_state->uapi.visible))
                        intel_set_cpu_fifo_underrun_reporting(dev_priv, 
crtc->pipe, false);
        }
 
@@ -6027,7 +6027,7 @@ static void intel_crtc_disable_planes(struct 
intel_atomic_state *state,
 
                intel_disable_plane(plane, new_crtc_state);
 
-               if (old_plane_state->base.visible)
+               if (old_plane_state->uapi.visible)
                        fb_bits |= plane->frontbuffer_bit;
        }
 
@@ -7025,7 +7025,7 @@ static void intel_crtc_disable_noatomic(struct drm_crtc 
*crtc,
                const struct intel_plane_state *plane_state =
                        to_intel_plane_state(plane->base.state);
 
-               if (plane_state->base.visible)
+               if (plane_state->uapi.visible)
                        intel_plane_disable_noatomic(intel_crtc, plane);
        }
 
@@ -10537,8 +10537,8 @@ static bool haswell_get_pipe_config(struct intel_crtc 
*crtc,
 static u32 intel_cursor_base(const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+               to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        const struct drm_i915_gem_object *obj = intel_fb_obj(fb);
        u32 base;
 
@@ -10551,17 +10551,17 @@ static u32 intel_cursor_base(const struct 
intel_plane_state *plane_state)
 
        /* ILK+ do this automagically */
        if (HAS_GMCH(dev_priv) &&
-           plane_state->base.rotation & DRM_MODE_ROTATE_180)
-               base += (drm_rect_height(&plane_state->base.dst) *
-                        drm_rect_width(&plane_state->base.dst) - 1) * 
fb->format->cpp[0];
+           plane_state->hw.rotation & DRM_MODE_ROTATE_180)
+               base += (drm_rect_height(&plane_state->uapi.dst) *
+                        drm_rect_width(&plane_state->uapi.dst) - 1) * 
fb->format->cpp[0];
 
        return base;
 }
 
 static u32 intel_cursor_position(const struct intel_plane_state *plane_state)
 {
-       int x = plane_state->base.dst.x1;
-       int y = plane_state->base.dst.y1;
+       int x = plane_state->uapi.dst.x1;
+       int y = plane_state->uapi.dst.y1;
        u32 pos = 0;
 
        if (x < 0) {
@@ -10582,9 +10582,9 @@ static u32 intel_cursor_position(const struct 
intel_plane_state *plane_state)
 static bool intel_cursor_size_ok(const struct intel_plane_state *plane_state)
 {
        const struct drm_mode_config *config =
-               &plane_state->base.plane->dev->mode_config;
-       int width = drm_rect_width(&plane_state->base.dst);
-       int height = drm_rect_height(&plane_state->base.dst);
+               &plane_state->uapi.plane->dev->mode_config;
+       int width = drm_rect_width(&plane_state->uapi.dst);
+       int height = drm_rect_height(&plane_state->uapi.dst);
 
        return width > 0 && width <= config->cursor_width &&
                height > 0 && height <= config->cursor_height;
@@ -10600,11 +10600,11 @@ static int intel_cursor_check_surface(struct 
intel_plane_state *plane_state)
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
-       src_x = plane_state->base.src.x1 >> 16;
-       src_y = plane_state->base.src.y1 >> 16;
+       src_x = plane_state->uapi.src.x1 >> 16;
+       src_y = plane_state->uapi.src.y1 >> 16;
 
        intel_add_fb_offsets(&src_x, &src_y, plane_state, 0);
        offset = intel_plane_compute_aligned_offset(&src_x, &src_y,
@@ -10623,7 +10623,7 @@ static int intel_cursor_check_surface(struct 
intel_plane_state *plane_state)
 static int intel_check_cursor(struct intel_crtc_state *crtc_state,
                              struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int ret;
 
        if (fb && fb->modifier != DRM_FORMAT_MOD_LINEAR) {
@@ -10631,7 +10631,7 @@ static int intel_check_cursor(struct intel_crtc_state 
*crtc_state,
                return -EINVAL;
        }
 
-       ret = drm_atomic_helper_check_plane_state(&plane_state->base,
+       ret = drm_atomic_helper_check_plane_state(&plane_state->uapi,
                                                  &crtc_state->uapi,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
@@ -10640,14 +10640,14 @@ static int intel_check_cursor(struct intel_crtc_state 
*crtc_state,
                return ret;
 
        /* Use the unclipped src/dst rectangles, which we program to hw */
-       plane_state->base.src = drm_plane_state_src(&plane_state->base);
-       plane_state->base.dst = drm_plane_state_dest(&plane_state->base);
+       plane_state->uapi.src = drm_plane_state_src(&plane_state->uapi);
+       plane_state->uapi.dst = drm_plane_state_dest(&plane_state->uapi);
 
        ret = intel_cursor_check_surface(plane_state);
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        ret = intel_plane_check_src_coordinates(plane_state);
@@ -10685,7 +10685,7 @@ static u32 i845_cursor_ctl(const struct 
intel_crtc_state *crtc_state,
 
 static bool i845_cursor_size_ok(const struct intel_plane_state *plane_state)
 {
-       int width = drm_rect_width(&plane_state->base.dst);
+       int width = drm_rect_width(&plane_state->uapi.dst);
 
        /*
         * 845g/865g are only limited by the width of their cursors,
@@ -10697,7 +10697,7 @@ static bool i845_cursor_size_ok(const struct 
intel_plane_state *plane_state)
 static int i845_check_cursor(struct intel_crtc_state *crtc_state,
                             struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int ret;
 
        ret = intel_check_cursor(crtc_state, plane_state);
@@ -10711,12 +10711,12 @@ static int i845_check_cursor(struct intel_crtc_state 
*crtc_state,
        /* Check for which cursor types we support */
        if (!i845_cursor_size_ok(plane_state)) {
                DRM_DEBUG("Cursor dimension %dx%d not supported\n",
-                         drm_rect_width(&plane_state->base.dst),
-                         drm_rect_height(&plane_state->base.dst));
+                         drm_rect_width(&plane_state->uapi.dst),
+                         drm_rect_height(&plane_state->uapi.dst));
                return -EINVAL;
        }
 
-       WARN_ON(plane_state->base.visible &&
+       WARN_ON(plane_state->uapi.visible &&
                plane_state->color_plane[0].stride != fb->pitches[0]);
 
        switch (fb->pitches[0]) {
@@ -10744,9 +10744,9 @@ static void i845_update_cursor(struct intel_plane 
*plane,
        u32 cntl = 0, base = 0, pos = 0, size = 0;
        unsigned long irqflags;
 
-       if (plane_state && plane_state->base.visible) {
-               unsigned int width = drm_rect_width(&plane_state->base.src);
-               unsigned int height = drm_rect_height(&plane_state->base.dst);
+       if (plane_state && plane_state->uapi.visible) {
+               unsigned int width = drm_rect_width(&plane_state->uapi.src);
+               unsigned int height = drm_rect_height(&plane_state->uapi.dst);
 
                cntl = plane_state->ctl |
                        i845_cursor_ctl_crtc(crtc_state);
@@ -10842,13 +10842,13 @@ static u32 i9xx_cursor_ctl(const struct 
intel_crtc_state *crtc_state,
                           const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
+               to_i915(plane_state->uapi.plane->dev);
        u32 cntl = 0;
 
        if (IS_GEN(dev_priv, 6) || IS_IVYBRIDGE(dev_priv))
                cntl |= MCURSOR_TRICKLE_FEED_DISABLE;
 
-       switch (drm_rect_width(&plane_state->base.dst)) {
+       switch (drm_rect_width(&plane_state->uapi.dst)) {
        case 64:
                cntl |= MCURSOR_MODE_64_ARGB_AX;
                break;
@@ -10859,11 +10859,11 @@ static u32 i9xx_cursor_ctl(const struct 
intel_crtc_state *crtc_state,
                cntl |= MCURSOR_MODE_256_ARGB_AX;
                break;
        default:
-               MISSING_CASE(drm_rect_width(&plane_state->base.dst));
+               MISSING_CASE(drm_rect_width(&plane_state->uapi.dst));
                return 0;
        }
 
-       if (plane_state->base.rotation & DRM_MODE_ROTATE_180)
+       if (plane_state->hw.rotation & DRM_MODE_ROTATE_180)
                cntl |= MCURSOR_ROTATE_180;
 
        return cntl;
@@ -10872,9 +10872,9 @@ static u32 i9xx_cursor_ctl(const struct 
intel_crtc_state *crtc_state,
 static bool i9xx_cursor_size_ok(const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       int width = drm_rect_width(&plane_state->base.dst);
-       int height = drm_rect_height(&plane_state->base.dst);
+               to_i915(plane_state->uapi.plane->dev);
+       int width = drm_rect_width(&plane_state->uapi.dst);
+       int height = drm_rect_height(&plane_state->uapi.dst);
 
        if (!intel_cursor_size_ok(plane_state))
                return false;
@@ -10896,7 +10896,7 @@ static bool i9xx_cursor_size_ok(const struct 
intel_plane_state *plane_state)
         * cursors.
         */
        if (HAS_CUR_FBC(dev_priv) &&
-           plane_state->base.rotation & DRM_MODE_ROTATE_0) {
+           plane_state->hw.rotation & DRM_MODE_ROTATE_0) {
                if (height < 8 || height > width)
                        return false;
        } else {
@@ -10910,9 +10910,9 @@ static bool i9xx_cursor_size_ok(const struct 
intel_plane_state *plane_state)
 static int i9xx_check_cursor(struct intel_crtc_state *crtc_state,
                             struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum pipe pipe = plane->pipe;
        int ret;
 
@@ -10927,19 +10927,19 @@ static int i9xx_check_cursor(struct intel_crtc_state 
*crtc_state,
        /* Check for which cursor types we support */
        if (!i9xx_cursor_size_ok(plane_state)) {
                DRM_DEBUG("Cursor dimension %dx%d not supported\n",
-                         drm_rect_width(&plane_state->base.dst),
-                         drm_rect_height(&plane_state->base.dst));
+                         drm_rect_width(&plane_state->uapi.dst),
+                         drm_rect_height(&plane_state->uapi.dst));
                return -EINVAL;
        }
 
-       WARN_ON(plane_state->base.visible &&
+       WARN_ON(plane_state->uapi.visible &&
                plane_state->color_plane[0].stride != fb->pitches[0]);
 
        if (fb->pitches[0] !=
-           drm_rect_width(&plane_state->base.dst) * fb->format->cpp[0]) {
+           drm_rect_width(&plane_state->uapi.dst) * fb->format->cpp[0]) {
                DRM_DEBUG_KMS("Invalid cursor stride (%u) (cursor width %d)\n",
                              fb->pitches[0],
-                             drm_rect_width(&plane_state->base.dst));
+                             drm_rect_width(&plane_state->uapi.dst));
                return -EINVAL;
        }
 
@@ -10954,7 +10954,7 @@ static int i9xx_check_cursor(struct intel_crtc_state 
*crtc_state,
         * Refuse the put the cursor into that compromised position.
         */
        if (IS_CHERRYVIEW(dev_priv) && pipe == PIPE_C &&
-           plane_state->base.visible && plane_state->base.dst.x1 < 0) {
+           plane_state->uapi.visible && plane_state->uapi.dst.x1 < 0) {
                DRM_DEBUG_KMS("CHV cursor C not allowed to straddle the left 
screen edge\n");
                return -EINVAL;
        }
@@ -10973,9 +10973,9 @@ static void i9xx_update_cursor(struct intel_plane 
*plane,
        u32 cntl = 0, base = 0, pos = 0, fbc_ctl = 0;
        unsigned long irqflags;
 
-       if (plane_state && plane_state->base.visible) {
-               unsigned width = drm_rect_width(&plane_state->base.dst);
-               unsigned height = drm_rect_height(&plane_state->base.dst);
+       if (plane_state && plane_state->uapi.visible) {
+               unsigned width = drm_rect_width(&plane_state->uapi.dst);
+               unsigned height = drm_rect_height(&plane_state->uapi.dst);
 
                cntl = plane_state->ctl |
                        i9xx_cursor_ctl_crtc(crtc_state);
@@ -11513,18 +11513,18 @@ static bool intel_wm_need_update(const struct 
intel_plane_state *cur,
                                 struct intel_plane_state *new)
 {
        /* Update watermarks on tiling or size changes. */
-       if (new->base.visible != cur->base.visible)
+       if (new->uapi.visible != cur->uapi.visible)
                return true;
 
-       if (!cur->base.fb || !new->base.fb)
+       if (!cur->hw.fb || !new->hw.fb)
                return false;
 
-       if (cur->base.fb->modifier != new->base.fb->modifier ||
-           cur->base.rotation != new->base.rotation ||
-           drm_rect_width(&new->base.src) != drm_rect_width(&cur->base.src) ||
-           drm_rect_height(&new->base.src) != drm_rect_height(&cur->base.src) 
||
-           drm_rect_width(&new->base.dst) != drm_rect_width(&cur->base.dst) ||
-           drm_rect_height(&new->base.dst) != drm_rect_height(&cur->base.dst))
+       if (cur->hw.fb->modifier != new->hw.fb->modifier ||
+           cur->hw.rotation != new->hw.rotation ||
+           drm_rect_width(&new->uapi.src) != drm_rect_width(&cur->uapi.src) ||
+           drm_rect_height(&new->uapi.src) != drm_rect_height(&cur->uapi.src) 
||
+           drm_rect_width(&new->uapi.dst) != drm_rect_width(&cur->uapi.dst) ||
+           drm_rect_height(&new->uapi.dst) != drm_rect_height(&cur->uapi.dst))
                return true;
 
        return false;
@@ -11532,10 +11532,10 @@ static bool intel_wm_need_update(const struct 
intel_plane_state *cur,
 
 static bool needs_scaling(const struct intel_plane_state *state)
 {
-       int src_w = drm_rect_width(&state->base.src) >> 16;
-       int src_h = drm_rect_height(&state->base.src) >> 16;
-       int dst_w = drm_rect_width(&state->base.dst);
-       int dst_h = drm_rect_height(&state->base.dst);
+       int src_w = drm_rect_width(&state->uapi.src) >> 16;
+       int src_h = drm_rect_height(&state->uapi.src) >> 16;
+       int dst_w = drm_rect_width(&state->uapi.dst);
+       int dst_h = drm_rect_height(&state->uapi.dst);
 
        return (src_w != dst_w || src_h != dst_h);
 }
@@ -11546,7 +11546,7 @@ int intel_plane_atomic_calc_changes(const struct 
intel_crtc_state *old_crtc_stat
                                    struct intel_plane_state *plane_state)
 {
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        bool mode_changed = needs_modeset(crtc_state);
        bool was_crtc_enabled = old_crtc_state->hw.active;
@@ -11560,8 +11560,8 @@ int intel_plane_atomic_calc_changes(const struct 
intel_crtc_state *old_crtc_stat
                        return ret;
        }
 
-       was_visible = old_plane_state->base.visible;
-       visible = plane_state->base.visible;
+       was_visible = old_plane_state->uapi.visible;
+       visible = plane_state->uapi.visible;
 
        if (!was_crtc_enabled && WARN_ON(was_visible))
                was_visible = false;
@@ -11577,7 +11577,7 @@ int intel_plane_atomic_calc_changes(const struct 
intel_crtc_state *old_crtc_stat
         * only combine the results from all planes in the current place?
         */
        if (!is_crtc_enabled) {
-               plane_state->base.visible = visible = false;
+               plane_state->uapi.visible = visible = false;
                crtc_state->active_planes &= ~BIT(plane->id);
                crtc_state->data_rate[plane->id] = 0;
        }
@@ -11736,7 +11736,7 @@ static int icl_check_nv12_planes(struct 
intel_crtc_state *crtc_state)
                        continue;
 
                plane_state->planar_linked_plane = NULL;
-               if (plane_state->planar_slave && !plane_state->base.visible) {
+               if (plane_state->planar_slave && !plane_state->uapi.visible) {
                        crtc_state->active_planes &= ~BIT(plane->id);
                        crtc_state->update_planes |= BIT(plane->id);
                }
@@ -12075,14 +12075,14 @@ static const char *output_formats(enum 
intel_output_format format)
 
 static void intel_dump_plane_state(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        struct drm_format_name_buf format_name;
 
        if (!fb) {
                DRM_DEBUG_KMS("[PLANE:%d:%s] fb: [NOFB], visible: %s\n",
                              plane->base.base.id, plane->base.name,
-                             yesno(plane_state->base.visible));
+                             yesno(plane_state->uapi.visible));
                return;
        }
 
@@ -12090,13 +12090,13 @@ static void intel_dump_plane_state(const struct 
intel_plane_state *plane_state)
                      plane->base.base.id, plane->base.name,
                      fb->base.id, fb->width, fb->height,
                      drm_get_format_name(fb->format->format, &format_name),
-                     yesno(plane_state->base.visible));
+                     yesno(plane_state->uapi.visible));
        DRM_DEBUG_KMS("\trotation: 0x%x, scaler: %d\n",
-                     plane_state->base.rotation, plane_state->scaler_id);
-       if (plane_state->base.visible)
+                     plane_state->hw.rotation, plane_state->scaler_id);
+       if (plane_state->uapi.visible)
                DRM_DEBUG_KMS("\tsrc: " DRM_RECT_FP_FMT " dst: " DRM_RECT_FMT 
"\n",
-                             DRM_RECT_FP_ARG(&plane_state->base.src),
-                             DRM_RECT_ARG(&plane_state->base.dst));
+                             DRM_RECT_FP_ARG(&plane_state->uapi.src),
+                             DRM_RECT_ARG(&plane_state->uapi.dst));
 }
 
 static void intel_dump_pipe_config(const struct intel_crtc_state *pipe_config,
@@ -13253,7 +13253,7 @@ intel_verify_planes(struct intel_atomic_state *state)
        for_each_new_intel_plane_in_state(state, plane,
                                          plane_state, i)
                assert_plane(plane, plane_state->planar_slave ||
-                            plane_state->base.visible);
+                            plane_state->uapi.visible);
 }
 
 static void
@@ -14247,8 +14247,8 @@ static void intel_atomic_track_fbs(struct 
intel_atomic_state *state)
 
        for_each_oldnew_intel_plane_in_state(state, plane, old_plane_state,
                                             new_plane_state, i)
-               
intel_frontbuffer_track(to_intel_frontbuffer(old_plane_state->base.fb),
-                                       
to_intel_frontbuffer(new_plane_state->base.fb),
+               
intel_frontbuffer_track(to_intel_frontbuffer(old_plane_state->hw.fb),
+                                       
to_intel_frontbuffer(new_plane_state->hw.fb),
                                        plane->frontbuffer_bit);
 }
 
@@ -14405,9 +14405,9 @@ static void add_rps_boost_after_vblank(struct drm_crtc 
*crtc,
 
 static int intel_plane_pin_fb(struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       struct drm_framebuffer *fb = plane_state->base.fb;
+       struct drm_framebuffer *fb = plane_state->hw.fb;
        struct i915_vma *vma;
 
        if (plane->id == PLANE_CURSOR &&
@@ -14472,9 +14472,9 @@ intel_prepare_plane_fb(struct drm_plane *plane,
        struct intel_plane_state *new_plane_state =
                to_intel_plane_state(_new_plane_state);
        struct intel_atomic_state *intel_state =
-               to_intel_atomic_state(new_plane_state->base.state);
+               to_intel_atomic_state(new_plane_state->uapi.state);
        struct drm_i915_private *dev_priv = to_i915(plane->dev);
-       struct drm_framebuffer *fb = new_plane_state->base.fb;
+       struct drm_framebuffer *fb = new_plane_state->hw.fb;
        struct drm_i915_gem_object *obj = intel_fb_obj(fb);
        struct drm_i915_gem_object *old_obj = intel_fb_obj(plane->state->fb);
        int ret;
@@ -14505,9 +14505,9 @@ intel_prepare_plane_fb(struct drm_plane *plane,
                }
        }
 
-       if (new_plane_state->base.fence) { /* explicit fencing */
+       if (new_plane_state->uapi.fence) { /* explicit fencing */
                ret = i915_sw_fence_await_dma_fence(&intel_state->commit_ready,
-                                                   new_plane_state->base.fence,
+                                                   new_plane_state->uapi.fence,
                                                    I915_FENCE_TIMEOUT,
                                                    GFP_KERNEL);
                if (ret < 0)
@@ -14537,7 +14537,7 @@ intel_prepare_plane_fb(struct drm_plane *plane,
        fb_obj_bump_render_priority(obj);
        intel_frontbuffer_flush(obj->frontbuffer, ORIGIN_DIRTYFB);
 
-       if (!new_plane_state->base.fence) { /* implicit fencing */
+       if (!new_plane_state->uapi.fence) { /* implicit fencing */
                struct dma_fence *fence;
 
                ret = 
i915_sw_fence_await_reservation(&intel_state->commit_ready,
@@ -14549,11 +14549,13 @@ intel_prepare_plane_fb(struct drm_plane *plane,
 
                fence = dma_resv_get_excl_rcu(obj->base.resv);
                if (fence) {
-                       add_rps_boost_after_vblank(new_plane_state->base.crtc, 
fence);
+                       add_rps_boost_after_vblank(new_plane_state->hw.crtc,
+                                                  fence);
                        dma_fence_put(fence);
                }
        } else {
-               add_rps_boost_after_vblank(new_plane_state->base.crtc, 
new_plane_state->base.fence);
+               add_rps_boost_after_vblank(new_plane_state->hw.crtc,
+                                          new_plane_state->uapi.fence);
        }
 
        /*
@@ -14588,7 +14590,7 @@ intel_cleanup_plane_fb(struct drm_plane *plane,
        struct intel_plane_state *old_plane_state =
                to_intel_plane_state(_old_plane_state);
        struct intel_atomic_state *intel_state =
-               to_intel_atomic_state(old_plane_state->base.state);
+               to_intel_atomic_state(old_plane_state->uapi.state);
        struct drm_i915_private *dev_priv = to_i915(plane->dev);
 
        if (intel_state->rps_interactive) {
@@ -16531,7 +16533,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc,
                        const struct intel_plane_state *plane_state =
                                to_intel_plane_state(plane->base.state);
 
-                       if (plane_state->base.visible &&
+                       if (plane_state->uapi.visible &&
                            plane->base.type != DRM_PLANE_TYPE_PRIMARY)
                                intel_plane_disable_noatomic(crtc, plane);
                }
@@ -16873,7 +16875,7 @@ static void intel_modeset_readout_hw_state(struct 
drm_device *dev)
                         * FIXME don't have the fb yet, so can't
                         * use intel_plane_data_rate() :(
                         */
-                       if (plane_state->base.visible)
+                       if (plane_state->uapi.visible)
                                crtc_state->data_rate[plane->id] =
                                        4 * crtc_state->pixel_rate;
                }
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 9401915bc93a..c6c49aa8c172 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -515,7 +515,10 @@ struct intel_atomic_state {
 };
 
 struct intel_plane_state {
-       struct drm_plane_state base;
+       union {
+               struct drm_plane_state uapi;
+               struct drm_plane_state hw;
+       };
        struct i915_ggtt_view view;
        struct i915_vma *vma;
        unsigned long flags;
@@ -1124,7 +1127,7 @@ struct cxsr_latency {
 #define to_intel_encoder(x) container_of(x, struct intel_encoder, base)
 #define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base)
 #define to_intel_plane(x) container_of(x, struct intel_plane, base)
-#define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base)
+#define to_intel_plane_state(x) container_of(x, struct intel_plane_state, uapi)
 #define intel_fb_obj(x) ((x) ? to_intel_bo((x)->obj[0]) : NULL)
 
 struct intel_hdmi {
diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c 
b/drivers/gpu/drm/i915/display/intel_fbc.c
index c6cc3775f3b8..92c7eb243559 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -430,7 +430,7 @@ static bool multiple_pipes_ok(struct intel_crtc *crtc,
        if (!no_fbc_on_multiple_pipes(dev_priv))
                return true;
 
-       if (plane_state->base.visible)
+       if (plane_state->uapi.visible)
                fbc->visible_pipes_mask |= (1 << pipe);
        else
                fbc->visible_pipes_mask &= ~(1 << pipe);
@@ -662,7 +662,7 @@ static void intel_fbc_update_state_cache(struct intel_crtc 
*crtc,
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        struct intel_fbc *fbc = &dev_priv->fbc;
        struct intel_fbc_state_cache *cache = &fbc->state_cache;
-       struct drm_framebuffer *fb = plane_state->base.fb;
+       struct drm_framebuffer *fb = plane_state->hw.fb;
 
        cache->vma = NULL;
        cache->flags = 0;
@@ -671,20 +671,20 @@ static void intel_fbc_update_state_cache(struct 
intel_crtc *crtc,
        if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
                cache->crtc.hsw_bdw_pixel_rate = crtc_state->pixel_rate;
 
-       cache->plane.rotation = plane_state->base.rotation;
+       cache->plane.rotation = plane_state->hw.rotation;
        /*
         * Src coordinates are already rotated by 270 degrees for
         * the 90/270 degree plane rotation cases (to match the
         * GTT mapping), hence no need to account for rotation here.
         */
-       cache->plane.src_w = drm_rect_width(&plane_state->base.src) >> 16;
-       cache->plane.src_h = drm_rect_height(&plane_state->base.src) >> 16;
-       cache->plane.visible = plane_state->base.visible;
+       cache->plane.src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       cache->plane.src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
+       cache->plane.visible = plane_state->uapi.visible;
        cache->plane.adjusted_x = plane_state->color_plane[0].x;
        cache->plane.adjusted_y = plane_state->color_plane[0].y;
-       cache->plane.y = plane_state->base.src.y1 >> 16;
+       cache->plane.y = plane_state->uapi.src.y1 >> 16;
 
-       cache->plane.pixel_blend_mode = plane_state->base.pixel_blend_mode;
+       cache->plane.pixel_blend_mode = plane_state->hw.pixel_blend_mode;
 
        if (!cache->plane.visible)
                return;
@@ -1047,12 +1047,12 @@ void intel_fbc_choose_crtc(struct drm_i915_private 
*dev_priv,
         * to pipe or plane A. */
        for_each_new_intel_plane_in_state(state, plane, plane_state, i) {
                struct intel_crtc_state *crtc_state;
-               struct intel_crtc *crtc = to_intel_crtc(plane_state->base.crtc);
+               struct intel_crtc *crtc = to_intel_crtc(plane_state->hw.crtc);
 
                if (!plane->has_fbc)
                        continue;
 
-               if (!plane_state->base.visible)
+               if (!plane_state->uapi.visible)
                        continue;
 
                crtc_state = intel_atomic_get_new_crtc_state(state, crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c 
b/drivers/gpu/drm/i915/display/intel_overlay.c
index 5efef9babadb..b27a1e8a83f9 100644
--- a/drivers/gpu/drm/i915/display/intel_overlay.c
+++ b/drivers/gpu/drm/i915/display/intel_overlay.c
@@ -669,8 +669,8 @@ static void update_colorkey(struct intel_overlay *overlay,
        if (overlay->color_key_enabled)
                flags |= DST_KEY_ENABLE;
 
-       if (state->base.visible)
-               format = state->base.fb->format->format;
+       if (state->uapi.visible)
+               format = state->hw.fb->format->format;
 
        switch (format) {
        case DRM_FORMAT_C8:
diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c 
b/drivers/gpu/drm/i915/display/intel_sprite.c
index 526a9366b682..ce193367b96b 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -240,9 +240,9 @@ void intel_pipe_update_end(struct intel_crtc_state 
*new_crtc_state)
 
 int intel_plane_check_stride(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        u32 stride, max_stride;
 
        /*
@@ -252,7 +252,7 @@ int intel_plane_check_stride(const struct intel_plane_state 
*plane_state)
         * kick in due the plane being invisible.
         */
        if (intel_plane_can_remap(plane_state) &&
-           !plane_state->base.visible)
+           !plane_state->uapi.visible)
                return 0;
 
        /* FIXME other color planes? */
@@ -272,10 +272,10 @@ int intel_plane_check_stride(const struct 
intel_plane_state *plane_state)
 
 int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       struct drm_rect *src = &plane_state->base.src;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       struct drm_rect *src = &plane_state->uapi.src;
        u32 src_x, src_y, src_w, src_h, hsub, vsub;
-       bool rotated = drm_rotation_90_or_270(plane_state->base.rotation);
+       bool rotated = drm_rotation_90_or_270(plane_state->hw.rotation);
 
        /*
         * Hardware doesn't handle subpixel coordinates.
@@ -349,24 +349,24 @@ skl_program_scaler(struct intel_plane *plane,
                   const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum pipe pipe = plane->pipe;
        int scaler_id = plane_state->scaler_id;
        const struct intel_scaler *scaler =
                &crtc_state->scaler_state.scalers[scaler_id];
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_y = plane_state->base.dst.y1;
-       u32 crtc_w = drm_rect_width(&plane_state->base.dst);
-       u32 crtc_h = drm_rect_height(&plane_state->base.dst);
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_y = plane_state->uapi.dst.y1;
+       u32 crtc_w = drm_rect_width(&plane_state->uapi.dst);
+       u32 crtc_h = drm_rect_height(&plane_state->uapi.dst);
        u16 y_hphase, uv_rgb_hphase;
        u16 y_vphase, uv_rgb_vphase;
        int hscale, vscale;
 
-       hscale = drm_rect_calc_hscale(&plane_state->base.src,
-                                     &plane_state->base.dst,
+       hscale = drm_rect_calc_hscale(&plane_state->uapi.src,
+                                     &plane_state->uapi.dst,
                                      0, INT_MAX);
-       vscale = drm_rect_calc_vscale(&plane_state->base.src,
-                                     &plane_state->base.dst,
+       vscale = drm_rect_calc_vscale(&plane_state->uapi.src,
+                                     &plane_state->uapi.dst,
                                      0, INT_MAX);
 
        /* TODO: handle sub-pixel coordinates */
@@ -495,10 +495,10 @@ icl_program_input_csc(struct intel_plane *plane,
        };
        const u16 *csc;
 
-       if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
-               csc = input_csc_matrix[plane_state->base.color_encoding];
+       if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
+               csc = input_csc_matrix[plane_state->hw.color_encoding];
        else
-               csc = input_csc_matrix_lr[plane_state->base.color_encoding];
+               csc = input_csc_matrix_lr[plane_state->hw.color_encoding];
 
        I915_WRITE_FW(PLANE_INPUT_CSC_COEFF(pipe, plane_id, 0), ROFF(csc[0]) |
                      GOFF(csc[1]));
@@ -512,7 +512,7 @@ icl_program_input_csc(struct intel_plane *plane,
 
        I915_WRITE_FW(PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 0),
                      PREOFF_YUV_TO_RGB_HI);
-       if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
+       if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
                I915_WRITE_FW(PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 1), 0);
        else
                I915_WRITE_FW(PLANE_INPUT_CSC_PREOFF(pipe, plane_id, 1),
@@ -537,15 +537,15 @@ skl_program_plane(struct intel_plane *plane,
        u32 surf_addr = plane_state->color_plane[color_plane].offset;
        u32 stride = skl_plane_stride(plane_state, color_plane);
        u32 aux_stride = skl_plane_stride(plane_state, 1);
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_y = plane_state->base.dst.y1;
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_y = plane_state->uapi.dst.y1;
        u32 x = plane_state->color_plane[color_plane].x;
        u32 y = plane_state->color_plane[color_plane].y;
-       u32 src_w = drm_rect_width(&plane_state->base.src) >> 16;
-       u32 src_h = drm_rect_height(&plane_state->base.src) >> 16;
+       u32 src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       u32 src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
        struct intel_plane *linked = plane_state->planar_linked_plane;
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       u8 alpha = plane_state->base.alpha >> 8;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       u8 alpha = plane_state->hw.alpha >> 8;
        u32 plane_color_ctl = 0;
        unsigned long irqflags;
        u32 keymsk, keymax;
@@ -719,9 +719,9 @@ static void i9xx_plane_linear_gamma(u16 gamma[8])
 static void
 chv_update_csc(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum plane_id plane_id = plane->id;
        /*
         * |r|   | c0 c1 c2 |   |cr|
@@ -747,7 +747,7 @@ chv_update_csc(const struct intel_plane_state *plane_state)
                            0, 4096,  7601,
                },
        };
-       const s16 *csc = csc_matrix[plane_state->base.color_encoding];
+       const s16 *csc = csc_matrix[plane_state->hw.color_encoding];
 
        /* Seems RGB data bypasses the CSC always */
        if (!fb->format->is_yuv)
@@ -778,15 +778,15 @@ chv_update_csc(const struct intel_plane_state 
*plane_state)
 static void
 vlv_update_clrc(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum pipe pipe = plane->pipe;
        enum plane_id plane_id = plane->id;
        int contrast, brightness, sh_scale, sh_sin, sh_cos;
 
        if (fb->format->is_yuv &&
-           plane_state->base.color_range == DRM_COLOR_YCBCR_LIMITED_RANGE) {
+           plane_state->hw.color_range == DRM_COLOR_YCBCR_LIMITED_RANGE) {
                /*
                 * Expand limited range to full range:
                 * Contrast is applied first and is used to expand Y range.
@@ -827,8 +827,8 @@ static u32 vlv_sprite_ctl_crtc(const struct 
intel_crtc_state *crtc_state)
 static u32 vlv_sprite_ctl(const struct intel_crtc_state *crtc_state,
                          const struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
        u32 sprctl;
 
@@ -873,7 +873,7 @@ static u32 vlv_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
                return 0;
        }
 
-       if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
+       if (plane_state->hw.color_encoding == DRM_COLOR_YCBCR_BT709)
                sprctl |= SP_YUV_FORMAT_BT709;
 
        if (fb->modifier == I915_FORMAT_MOD_X_TILED)
@@ -893,9 +893,9 @@ static u32 vlv_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
 
 static void vlv_update_gamma(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum pipe pipe = plane->pipe;
        enum plane_id plane_id = plane->id;
        u16 gamma[8];
@@ -927,10 +927,10 @@ vlv_update_plane(struct intel_plane *plane,
        u32 sprsurf_offset = plane_state->color_plane[0].offset;
        u32 linear_offset;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_y = plane_state->base.dst.y1;
-       u32 crtc_w = drm_rect_width(&plane_state->base.dst);
-       u32 crtc_h = drm_rect_height(&plane_state->base.dst);
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_y = plane_state->uapi.dst.y1;
+       u32 crtc_w = drm_rect_width(&plane_state->uapi.dst);
+       u32 crtc_h = drm_rect_height(&plane_state->uapi.dst);
        u32 x = plane_state->color_plane[0].x;
        u32 y = plane_state->color_plane[0].y;
        unsigned long irqflags;
@@ -1037,9 +1037,9 @@ static u32 ivb_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
                          const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+               to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
        u32 sprctl;
 
@@ -1074,10 +1074,10 @@ static u32 ivb_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
 
        sprctl |= SPRITE_INT_GAMMA_DISABLE;
 
-       if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
+       if (plane_state->hw.color_encoding == DRM_COLOR_YCBCR_BT709)
                sprctl |= SPRITE_YUV_TO_RGB_CSC_FORMAT_BT709;
 
-       if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
+       if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
                sprctl |= SPRITE_YUV_RANGE_CORRECTION_DISABLE;
 
        if (fb->modifier == I915_FORMAT_MOD_X_TILED)
@@ -1107,7 +1107,7 @@ static void ivb_sprite_linear_gamma(u16 gamma[18])
 
 static void ivb_update_gamma(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        enum pipe pipe = plane->pipe;
        u16 gamma[18];
@@ -1143,14 +1143,14 @@ ivb_update_plane(struct intel_plane *plane,
        u32 sprsurf_offset = plane_state->color_plane[0].offset;
        u32 linear_offset;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_y = plane_state->base.dst.y1;
-       u32 crtc_w = drm_rect_width(&plane_state->base.dst);
-       u32 crtc_h = drm_rect_height(&plane_state->base.dst);
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_y = plane_state->uapi.dst.y1;
+       u32 crtc_w = drm_rect_width(&plane_state->uapi.dst);
+       u32 crtc_h = drm_rect_height(&plane_state->uapi.dst);
        u32 x = plane_state->color_plane[0].x;
        u32 y = plane_state->color_plane[0].y;
-       u32 src_w = drm_rect_width(&plane_state->base.src) >> 16;
-       u32 src_h = drm_rect_height(&plane_state->base.src) >> 16;
+       u32 src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       u32 src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
        u32 sprctl, sprscale = 0;
        unsigned long irqflags;
 
@@ -1271,9 +1271,9 @@ static u32 g4x_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
                          const struct intel_plane_state *plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+               to_i915(plane_state->uapi.plane->dev);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
        u32 dvscntr;
 
@@ -1306,10 +1306,10 @@ static u32 g4x_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
                return 0;
        }
 
-       if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
+       if (plane_state->hw.color_encoding == DRM_COLOR_YCBCR_BT709)
                dvscntr |= DVS_YUV_FORMAT_BT709;
 
-       if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
+       if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
                dvscntr |= DVS_YUV_RANGE_CORRECTION_DISABLE;
 
        if (fb->modifier == I915_FORMAT_MOD_X_TILED)
@@ -1328,9 +1328,9 @@ static u32 g4x_sprite_ctl(const struct intel_crtc_state 
*crtc_state,
 
 static void g4x_update_gamma(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum pipe pipe = plane->pipe;
        u16 gamma[8];
        int i;
@@ -1360,9 +1360,9 @@ static void ilk_sprite_linear_gamma(u16 gamma[17])
 
 static void ilk_update_gamma(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum pipe pipe = plane->pipe;
        u16 gamma[17];
        int i;
@@ -1396,14 +1396,14 @@ g4x_update_plane(struct intel_plane *plane,
        u32 dvssurf_offset = plane_state->color_plane[0].offset;
        u32 linear_offset;
        const struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_y = plane_state->base.dst.y1;
-       u32 crtc_w = drm_rect_width(&plane_state->base.dst);
-       u32 crtc_h = drm_rect_height(&plane_state->base.dst);
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_y = plane_state->uapi.dst.y1;
+       u32 crtc_w = drm_rect_width(&plane_state->uapi.dst);
+       u32 crtc_h = drm_rect_height(&plane_state->uapi.dst);
        u32 x = plane_state->color_plane[0].x;
        u32 y = plane_state->color_plane[0].y;
-       u32 src_w = drm_rect_width(&plane_state->base.src) >> 16;
-       u32 src_h = drm_rect_height(&plane_state->base.src) >> 16;
+       u32 src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       u32 src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
        u32 dvscntr, dvsscale = 0;
        unsigned long irqflags;
 
@@ -1511,9 +1511,9 @@ static int
 g4x_sprite_check_scaling(struct intel_crtc_state *crtc_state,
                         struct intel_plane_state *plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       const struct drm_rect *src = &plane_state->base.src;
-       const struct drm_rect *dst = &plane_state->base.dst;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       const struct drm_rect *src = &plane_state->uapi.src;
+       const struct drm_rect *dst = &plane_state->uapi.dst;
        int src_x, src_w, src_h, crtc_w, crtc_h;
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
@@ -1572,13 +1572,13 @@ static int
 g4x_sprite_check(struct intel_crtc_state *crtc_state,
                 struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        int min_scale = DRM_PLANE_HELPER_NO_SCALING;
        int max_scale = DRM_PLANE_HELPER_NO_SCALING;
        int ret;
 
-       if (intel_fb_scalable(plane_state->base.fb)) {
+       if (intel_fb_scalable(plane_state->hw.fb)) {
                if (INTEL_GEN(dev_priv) < 7) {
                        min_scale = 1;
                        max_scale = 16 << 16;
@@ -1588,7 +1588,7 @@ g4x_sprite_check(struct intel_crtc_state *crtc_state,
                }
        }
 
-       ret = drm_atomic_helper_check_plane_state(&plane_state->base,
+       ret = drm_atomic_helper_check_plane_state(&plane_state->uapi,
                                                  &crtc_state->uapi,
                                                  min_scale, max_scale,
                                                  true, true);
@@ -1599,7 +1599,7 @@ g4x_sprite_check(struct intel_crtc_state *crtc_state,
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        ret = intel_plane_check_src_coordinates(plane_state);
@@ -1620,9 +1620,9 @@ g4x_sprite_check(struct intel_crtc_state *crtc_state,
 
 int chv_plane_check_rotation(const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       unsigned int rotation = plane_state->base.rotation;
+       unsigned int rotation = plane_state->hw.rotation;
 
        /* CHV ignores the mirror bit when the rotate bit is set :( */
        if (IS_CHERRYVIEW(dev_priv) &&
@@ -1645,7 +1645,7 @@ vlv_sprite_check(struct intel_crtc_state *crtc_state,
        if (ret)
                return ret;
 
-       ret = drm_atomic_helper_check_plane_state(&plane_state->base,
+       ret = drm_atomic_helper_check_plane_state(&plane_state->uapi,
                                                  &crtc_state->uapi,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
@@ -1657,7 +1657,7 @@ vlv_sprite_check(struct intel_crtc_state *crtc_state,
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        ret = intel_plane_check_src_coordinates(plane_state);
@@ -1672,10 +1672,10 @@ vlv_sprite_check(struct intel_crtc_state *crtc_state,
 static int skl_plane_check_fb(const struct intel_crtc_state *crtc_state,
                              const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
        struct drm_format_name_buf format_name;
 
        if (!fb)
@@ -1747,9 +1747,9 @@ static int skl_plane_check_dst_coordinates(const struct 
intel_crtc_state *crtc_s
                                           const struct intel_plane_state 
*plane_state)
 {
        struct drm_i915_private *dev_priv =
-               to_i915(plane_state->base.plane->dev);
-       int crtc_x = plane_state->base.dst.x1;
-       int crtc_w = drm_rect_width(&plane_state->base.dst);
+               to_i915(plane_state->uapi.plane->dev);
+       int crtc_x = plane_state->uapi.dst.x1;
+       int crtc_w = drm_rect_width(&plane_state->uapi.dst);
        int pipe_src_w = crtc_state->pipe_src_w;
 
        /*
@@ -1775,9 +1775,9 @@ static int skl_plane_check_dst_coordinates(const struct 
intel_crtc_state *crtc_s
 
 static int skl_plane_check_nv12_rotation(const struct intel_plane_state 
*plane_state)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
-       unsigned int rotation = plane_state->base.rotation;
-       int src_w = drm_rect_width(&plane_state->base.src) >> 16;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
+       unsigned int rotation = plane_state->hw.rotation;
+       int src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
 
        /* Display WA #1106 */
        if (drm_format_info_is_yuv_semiplanar(fb->format) && src_w & 3 &&
@@ -1793,9 +1793,9 @@ static int skl_plane_check_nv12_rotation(const struct 
intel_plane_state *plane_s
 static int skl_plane_check(struct intel_crtc_state *crtc_state,
                           struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int min_scale = DRM_PLANE_HELPER_NO_SCALING;
        int max_scale = DRM_PLANE_HELPER_NO_SCALING;
        int ret;
@@ -1810,7 +1810,7 @@ static int skl_plane_check(struct intel_crtc_state 
*crtc_state,
                max_scale = skl_max_scale(crtc_state, fb->format);
        }
 
-       ret = drm_atomic_helper_check_plane_state(&plane_state->base,
+       ret = drm_atomic_helper_check_plane_state(&plane_state->uapi,
                                                  &crtc_state->uapi,
                                                  min_scale, max_scale,
                                                  true, true);
@@ -1821,7 +1821,7 @@ static int skl_plane_check(struct intel_crtc_state 
*crtc_state,
        if (ret)
                return ret;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        ret = skl_plane_check_dst_coordinates(crtc_state, plane_state);
@@ -1837,8 +1837,8 @@ static int skl_plane_check(struct intel_crtc_state 
*crtc_state,
                return ret;
 
        /* HW only has 8 bits pixel precision, disable plane if invisible */
-       if (!(plane_state->base.alpha >> 8))
-               plane_state->base.visible = false;
+       if (!(plane_state->hw.alpha >> 8))
+               plane_state->uapi.visible = false;
 
        plane_state->ctl = skl_plane_ctl(crtc_state, plane_state);
 
@@ -1857,7 +1857,7 @@ static bool has_dst_key_in_primary_plane(struct 
drm_i915_private *dev_priv)
 static void intel_plane_set_ckey(struct intel_plane_state *plane_state,
                                 const struct drm_intel_sprite_colorkey *set)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        struct drm_intel_sprite_colorkey *key = &plane_state->ckey;
 
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 4c9359981c24..33d8fc4a60aa 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -795,7 +795,7 @@ static int intel_wm_num_levels(struct drm_i915_private 
*dev_priv)
 static bool intel_wm_plane_visible(const struct intel_crtc_state *crtc_state,
                                   const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
 
        /* FIXME check the 'enable' instead */
        if (!crtc_state->hw.active)
@@ -810,9 +810,9 @@ static bool intel_wm_plane_visible(const struct 
intel_crtc_state *crtc_state,
         * around this problem with the watermark code.
         */
        if (plane->id == PLANE_CURSOR)
-               return plane_state->base.fb != NULL;
+               return plane_state->hw.fb != NULL;
        else
-               return plane_state->base.visible;
+               return plane_state->uapi.visible;
 }
 
 static struct intel_crtc *single_enabled_crtc(struct drm_i915_private 
*dev_priv)
@@ -1084,7 +1084,7 @@ static u16 g4x_compute_wm(const struct intel_crtc_state 
*crtc_state,
                          const struct intel_plane_state *plane_state,
                          int level)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
@@ -1097,7 +1097,7 @@ static u16 g4x_compute_wm(const struct intel_crtc_state 
*crtc_state,
        if (!intel_wm_plane_visible(crtc_state, plane_state))
                return 0;
 
-       cpp = plane_state->base.fb->format->cpp[0];
+       cpp = plane_state->hw.fb->format->cpp[0];
 
        /*
         * Not 100% sure which way ELK should go here as the
@@ -1117,7 +1117,7 @@ static u16 g4x_compute_wm(const struct intel_crtc_state 
*crtc_state,
        clock = adjusted_mode->crtc_clock;
        htotal = adjusted_mode->crtc_htotal;
 
-       width = drm_rect_width(&plane_state->base.dst);
+       width = drm_rect_width(&plane_state->uapi.dst);
 
        if (plane->id == PLANE_CURSOR) {
                wm = intel_wm_method2(clock, htotal, width, cpp, latency);
@@ -1183,7 +1183,7 @@ static u32 ilk_compute_fbc_wm(const struct 
intel_crtc_state *crtc_state,
 static bool g4x_raw_plane_wm_compute(struct intel_crtc_state *crtc_state,
                                     const struct intel_plane_state 
*plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        int num_levels = intel_wm_num_levels(to_i915(plane->base.dev));
        enum plane_id plane_id = plane->id;
        bool dirty = false;
@@ -1317,8 +1317,8 @@ static int g4x_compute_pipe_wm(struct intel_crtc_state 
*crtc_state)
        for_each_oldnew_intel_plane_in_state(state, plane,
                                             old_plane_state,
                                             new_plane_state, i) {
-               if (new_plane_state->base.crtc != &crtc->base &&
-                   old_plane_state->base.crtc != &crtc->base)
+               if (new_plane_state->hw.crtc != &crtc->base &&
+                   old_plane_state->hw.crtc != &crtc->base)
                        continue;
 
                if (g4x_raw_plane_wm_compute(crtc_state, new_plane_state))
@@ -1590,7 +1590,7 @@ static u16 vlv_compute_wm_level(const struct 
intel_crtc_state *crtc_state,
                                const struct intel_plane_state *plane_state,
                                int level)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
        const struct drm_display_mode *adjusted_mode =
                &crtc_state->hw.adjusted_mode;
@@ -1602,7 +1602,7 @@ static u16 vlv_compute_wm_level(const struct 
intel_crtc_state *crtc_state,
        if (!intel_wm_plane_visible(crtc_state, plane_state))
                return 0;
 
-       cpp = plane_state->base.fb->format->cpp[0];
+       cpp = plane_state->hw.fb->format->cpp[0];
        clock = adjusted_mode->crtc_clock;
        htotal = adjusted_mode->crtc_htotal;
        width = crtc_state->pipe_src_w;
@@ -1760,7 +1760,7 @@ static bool vlv_raw_plane_wm_set(struct intel_crtc_state 
*crtc_state,
 static bool vlv_raw_plane_wm_compute(struct intel_crtc_state *crtc_state,
                                     const struct intel_plane_state 
*plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
        enum plane_id plane_id = plane->id;
        int num_levels = intel_wm_num_levels(to_i915(plane->base.dev));
        int level;
@@ -1838,8 +1838,8 @@ static int vlv_compute_pipe_wm(struct intel_crtc_state 
*crtc_state)
        for_each_oldnew_intel_plane_in_state(state, plane,
                                             old_plane_state,
                                             new_plane_state, i) {
-               if (new_plane_state->base.crtc != &crtc->base &&
-                   old_plane_state->base.crtc != &crtc->base)
+               if (new_plane_state->hw.crtc != &crtc->base &&
+                   old_plane_state->hw.crtc != &crtc->base)
                        continue;
 
                if (vlv_raw_plane_wm_compute(crtc_state, new_plane_state))
@@ -2484,7 +2484,7 @@ static u32 ilk_compute_pri_wm(const struct 
intel_crtc_state *crtc_state,
        if (!intel_wm_plane_visible(crtc_state, plane_state))
                return 0;
 
-       cpp = plane_state->base.fb->format->cpp[0];
+       cpp = plane_state->hw.fb->format->cpp[0];
 
        method1 = ilk_wm_method1(crtc_state->pixel_rate, cpp, mem_value);
 
@@ -2493,7 +2493,7 @@ static u32 ilk_compute_pri_wm(const struct 
intel_crtc_state *crtc_state,
 
        method2 = ilk_wm_method2(crtc_state->pixel_rate,
                                 crtc_state->hw.adjusted_mode.crtc_htotal,
-                                drm_rect_width(&plane_state->base.dst),
+                                drm_rect_width(&plane_state->uapi.dst),
                                 cpp, mem_value);
 
        return min(method1, method2);
@@ -2516,12 +2516,12 @@ static u32 ilk_compute_spr_wm(const struct 
intel_crtc_state *crtc_state,
        if (!intel_wm_plane_visible(crtc_state, plane_state))
                return 0;
 
-       cpp = plane_state->base.fb->format->cpp[0];
+       cpp = plane_state->hw.fb->format->cpp[0];
 
        method1 = ilk_wm_method1(crtc_state->pixel_rate, cpp, mem_value);
        method2 = ilk_wm_method2(crtc_state->pixel_rate,
                                 crtc_state->hw.adjusted_mode.crtc_htotal,
-                                drm_rect_width(&plane_state->base.dst),
+                                drm_rect_width(&plane_state->uapi.dst),
                                 cpp, mem_value);
        return min(method1, method2);
 }
@@ -2542,11 +2542,11 @@ static u32 ilk_compute_cur_wm(const struct 
intel_crtc_state *crtc_state,
        if (!intel_wm_plane_visible(crtc_state, plane_state))
                return 0;
 
-       cpp = plane_state->base.fb->format->cpp[0];
+       cpp = plane_state->hw.fb->format->cpp[0];
 
        return ilk_wm_method2(crtc_state->pixel_rate,
                              crtc_state->hw.adjusted_mode.crtc_htotal,
-                             drm_rect_width(&plane_state->base.dst),
+                             drm_rect_width(&plane_state->uapi.dst),
                              cpp, mem_value);
 }
 
@@ -2560,9 +2560,10 @@ static u32 ilk_compute_fbc_wm(const struct 
intel_crtc_state *crtc_state,
        if (!intel_wm_plane_visible(crtc_state, plane_state))
                return 0;
 
-       cpp = plane_state->base.fb->format->cpp[0];
+       cpp = plane_state->hw.fb->format->cpp[0];
 
-       return ilk_wm_fbc(pri_val, drm_rect_width(&plane_state->base.dst), cpp);
+       return ilk_wm_fbc(pri_val, drm_rect_width(&plane_state->uapi.dst),
+                         cpp);
 }
 
 static unsigned int
@@ -3106,10 +3107,10 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state 
*crtc_state)
 
        pipe_wm->pipe_enabled = crtc_state->hw.active;
        if (sprstate) {
-               pipe_wm->sprites_enabled = sprstate->base.visible;
-               pipe_wm->sprites_scaled = sprstate->base.visible &&
-                       (drm_rect_width(&sprstate->base.dst) != 
drm_rect_width(&sprstate->base.src) >> 16 ||
-                        drm_rect_height(&sprstate->base.dst) != 
drm_rect_height(&sprstate->base.src) >> 16);
+               pipe_wm->sprites_enabled = sprstate->uapi.visible;
+               pipe_wm->sprites_scaled = sprstate->uapi.visible &&
+                       (drm_rect_width(&sprstate->uapi.dst) != 
drm_rect_width(&sprstate->uapi.src) >> 16 ||
+                        drm_rect_height(&sprstate->uapi.dst) != 
drm_rect_height(&sprstate->uapi.src) >> 16);
        }
 
        usable_level = max_level;
@@ -4056,10 +4057,10 @@ skl_plane_downscale_amount(const struct 
intel_crtc_state *crtc_state,
         *
         * n.b., src is 16.16 fixed point, dst is whole integer.
         */
-       src_w = drm_rect_width(&plane_state->base.src) >> 16;
-       src_h = drm_rect_height(&plane_state->base.src) >> 16;
-       dst_w = drm_rect_width(&plane_state->base.dst);
-       dst_h = drm_rect_height(&plane_state->base.dst);
+       src_w = drm_rect_width(&plane_state->uapi.src) >> 16;
+       src_h = drm_rect_height(&plane_state->uapi.src) >> 16;
+       dst_w = drm_rect_width(&plane_state->uapi.dst);
+       dst_h = drm_rect_height(&plane_state->uapi.dst);
 
        fp_w_ratio = div_fixed16(src_w, dst_w);
        fp_h_ratio = div_fixed16(src_h, dst_h);
@@ -4125,11 +4126,11 @@ int skl_check_pipe_max_pixel_rate(struct intel_crtc 
*intel_crtc,
                if (!intel_wm_plane_visible(crtc_state, plane_state))
                        continue;
 
-               if (WARN_ON(!plane_state->base.fb))
+               if (WARN_ON(!plane_state->hw.fb))
                        return -EINVAL;
 
                plane_downscale = skl_plane_downscale_amount(crtc_state, 
plane_state);
-               bpp = plane_state->base.fb->format->cpp[0] * 8;
+               bpp = plane_state->hw.fb->format->cpp[0] * 8;
                if (bpp == 64)
                        plane_downscale = mul_fixed16(plane_downscale,
                                                      fp_9_div_8);
@@ -4161,14 +4162,14 @@ skl_plane_relative_data_rate(const struct 
intel_crtc_state *crtc_state,
                             const struct intel_plane_state *plane_state,
                             int color_plane)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        u32 data_rate;
        u32 width = 0, height = 0;
        uint_fixed_16_16_t down_scale_amount;
        u64 rate;
 
-       if (!plane_state->base.visible)
+       if (!plane_state->uapi.visible)
                return 0;
 
        if (plane->id == PLANE_CURSOR)
@@ -4183,8 +4184,8 @@ skl_plane_relative_data_rate(const struct 
intel_crtc_state *crtc_state,
         * the 90/270 degree plane rotation cases (to match the
         * GTT mapping), hence no need to account for rotation here.
         */
-       width = drm_rect_width(&plane_state->base.src) >> 16;
-       height = drm_rect_height(&plane_state->base.src) >> 16;
+       width = drm_rect_width(&plane_state->uapi.src) >> 16;
+       height = drm_rect_height(&plane_state->uapi.src) >> 16;
 
        /* UV plane does 1/2 pixel sub-sampling */
        if (color_plane == 1) {
@@ -4683,7 +4684,7 @@ skl_compute_plane_wm_params(const struct intel_crtc_state 
*crtc_state,
                            const struct intel_plane_state *plane_state,
                            struct skl_wm_params *wp, int color_plane)
 {
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        int width;
 
        /*
@@ -4691,11 +4692,11 @@ skl_compute_plane_wm_params(const struct 
intel_crtc_state *crtc_state,
         * the 90/270 degree plane rotation cases (to match the
         * GTT mapping), hence no need to account for rotation here.
         */
-       width = drm_rect_width(&plane_state->base.src) >> 16;
+       width = drm_rect_width(&plane_state->uapi.src) >> 16;
 
        return skl_compute_wm_params(crtc_state, width,
                                     fb->format, fb->modifier,
-                                    plane_state->base.rotation,
+                                    plane_state->hw.rotation,
                                     skl_adjusted_plane_pixel_rate(crtc_state, 
plane_state),
                                     wp, color_plane);
 }
@@ -4973,8 +4974,8 @@ static int skl_build_plane_wm_uv(struct intel_crtc_state 
*crtc_state,
 static int skl_build_plane_wm(struct intel_crtc_state *crtc_state,
                              const struct intel_plane_state *plane_state)
 {
-       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
-       const struct drm_framebuffer *fb = plane_state->base.fb;
+       struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
+       const struct drm_framebuffer *fb = plane_state->hw.fb;
        enum plane_id plane_id = plane->id;
        int ret;
 
@@ -4999,7 +5000,7 @@ static int skl_build_plane_wm(struct intel_crtc_state 
*crtc_state,
 static int icl_build_plane_wm(struct intel_crtc_state *crtc_state,
                              const struct intel_plane_state *plane_state)
 {
-       enum plane_id plane_id = to_intel_plane(plane_state->base.plane)->id;
+       enum plane_id plane_id = to_intel_plane(plane_state->uapi.plane)->id;
        int ret;
 
        /* Watermarks calculated in master */
@@ -5007,7 +5008,7 @@ static int icl_build_plane_wm(struct intel_crtc_state 
*crtc_state,
                return 0;
 
        if (plane_state->planar_linked_plane) {
-               const struct drm_framebuffer *fb = plane_state->base.fb;
+               const struct drm_framebuffer *fb = plane_state->hw.fb;
                enum plane_id y_plane_id = plane_state->planar_linked_plane->id;
 
                WARN_ON(!intel_wm_plane_visible(crtc_state, plane_state));
@@ -6032,7 +6033,7 @@ void g4x_wm_sanitize(struct drm_i915_private *dev_priv)
                enum plane_id plane_id = plane->id;
                int level;
 
-               if (plane_state->base.visible)
+               if (plane_state->uapi.visible)
                        continue;
 
                for (level = 0; level < 3; level++) {
@@ -6187,7 +6188,7 @@ void vlv_wm_sanitize(struct drm_i915_private *dev_priv)
                enum plane_id plane_id = plane->id;
                int level;
 
-               if (plane_state->base.visible)
+               if (plane_state->uapi.visible)
                        continue;
 
                for (level = 0; level < wm_state->num_levels; level++) {
-- 
2.23.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to