drm/i915: Add aliases for uapi and hw to plane_state
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Thu, 31 Oct 2019 11:26:05 +0000 (12:26 +0100)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Fri, 1 Nov 2019 13:51:21 +0000 (14:51 +0100)
Prepare to split up hw and uapi machinally, by adding a uapi and
hw alias. We will remove the base in a bit. This is a split from the
original uapi/hw patch, which did it all in one go.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191031112610.27608-7-maarten.lankhorst@linux.intel.com
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
drivers/gpu/drm/i915/display/intel_atomic_plane.c
drivers/gpu/drm/i915/display/intel_display_types.h

index 4558c0b29fc178131bf5d6bbfea23909e76bd6dd..393fb97a3dca8376d5ca2ea39108630f6fbe0849 100644 (file)
@@ -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->base);
 
        intel_state->vma = NULL;
        intel_state->flags = 0;
 
-       return state;
+       return &intel_state->base;
 }
 
 /**
@@ -110,9 +108,11 @@ 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->base);
+       kfree(plane_state);
 }
 
 unsigned int intel_plane_data_rate(const struct intel_crtc_state *crtc_state,
index dfa7bfc9c9a20556deabca9aed8923cc78bfa1c8..7f338c130ed76c33433cbd4c88caa37e8e0b1f35 100644 (file)
@@ -523,7 +523,11 @@ struct intel_atomic_state {
 };
 
 struct intel_plane_state {
-       struct drm_plane_state base;
+       union {
+               struct drm_plane_state base;
+               struct drm_plane_state uapi;
+               struct drm_plane_state hw;
+       };
        struct i915_ggtt_view view;
        struct i915_vma *vma;
        unsigned long flags;
@@ -1143,7 +1147,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 {