OSDN Git Service

drm/vc4: Allow scaling on cursor plane
authorBoris Brezillon <boris.brezillon@bootlin.com>
Fri, 30 Nov 2018 09:02:53 +0000 (10:02 +0100)
committerBoris Brezillon <boris.brezillon@bootlin.com>
Fri, 30 Nov 2018 09:34:54 +0000 (10:34 +0100)
Now that async update has been reworked to allow scaled planes to be
updated asynchronously when the scaling params do not change, we can
remove the NO_SCALING constraint on cursor planes.

Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20181130090254.594-5-boris.brezillon@bootlin.com
drivers/gpu/drm/vc4/vc4_plane.c

index a2dea26..1b8a0a3 100644 (file)
@@ -260,14 +260,12 @@ static u32 vc4_get_scl_field(struct drm_plane_state *state, int plane)
 
 static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state)
 {
-       struct drm_plane *plane = state->plane;
        struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
        struct drm_framebuffer *fb = state->fb;
        struct drm_gem_cma_object *bo = drm_fb_cma_get_gem_obj(fb, 0);
        u32 subpixel_src_mask = (1 << 16) - 1;
        u32 format = fb->format->format;
        int num_planes = fb->format->num_planes;
-       int min_scale = 1, max_scale = INT_MAX;
        struct drm_crtc_state *crtc_state;
        u32 h_subsample, v_subsample;
        int i, ret;
@@ -279,21 +277,8 @@ static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state)
                return -EINVAL;
        }
 
-       /* No configuring scaling on the cursor plane, since it gets
-        * non-vblank-synced updates, and scaling requires LBM changes which
-        * have to be vblank-synced.
-        */
-       if (plane->type == DRM_PLANE_TYPE_CURSOR) {
-               min_scale = DRM_PLANE_HELPER_NO_SCALING;
-               max_scale = DRM_PLANE_HELPER_NO_SCALING;
-       } else {
-               min_scale = 1;
-               max_scale = INT_MAX;
-       }
-
-       ret = drm_atomic_helper_check_plane_state(state, crtc_state,
-                                                 min_scale, max_scale,
-                                                 true, true);
+       ret = drm_atomic_helper_check_plane_state(state, crtc_state, 1,
+                                                 INT_MAX, true, true);
        if (ret)
                return ret;