drm/komeda: Computing image enhancer internally
authorjames qian wang (Arm Technology China) <james.qian.wang@arm.com>
Mon, 8 Jul 2019 07:00:22 +0000 (08:00 +0100)
committerLiviu Dudau <Liviu.Dudau@arm.com>
Mon, 8 Jul 2019 14:05:34 +0000 (15:05 +0100)
Enable image enhancer when the input data flow is 2x+ upscaling.

Signed-off-by: james qian wang (Arm Technology China) <james.qian.wang@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190708070000.4945-1-james.qian.wang@arm.com
drivers/gpu/drm/arm/display/komeda/komeda_kms.h
drivers/gpu/drm/arm/display/komeda/komeda_pipeline_state.c
drivers/gpu/drm/arm/display/komeda/komeda_plane.c

index 0c006576a25ce1932c18c5518a882018bcfc1001..8c89fc245b83f3315140418b57ec0d3c7887dc34 100644 (file)
@@ -47,11 +47,8 @@ struct komeda_plane_state {
        /** @zlist_node: zorder list node */
        struct list_head zlist_node;
 
-       /* @img_enhancement: on/off image enhancement
-        * @layer_split: on/off layer_split
-        */
-       u8 img_enhancement : 1,
-          layer_split : 1;
+       /** @layer_split: on/off layer_split */
+       u8 layer_split : 1;
 };
 
 /**
index 972a0f25254dbb97023da1c23cd64a49c4e70a7a..950235af1e79852fa372f249d7f546d4b40c71c6 100644 (file)
@@ -806,6 +806,10 @@ void komeda_complete_data_flow_cfg(struct komeda_layer *layer,
        dflow->en_scaling = (w != dflow->out_w) || (h != dflow->out_h);
        dflow->is_yuv = fb->format->is_yuv;
 
+       /* try to enable image enhancer if data flow is a 2x+ upscaling */
+       dflow->en_img_enhancement = dflow->out_w >= 2 * w ||
+                                   dflow->out_h >= 2 * h;
+
        /* try to enable split if scaling exceed the scaler's acceptable
         * input/output range.
         */
index b1386438357b02b4a0600ef24d5c385c2cfaa6fc..c095af154216a0f8318762497d01dbfe25bd5746 100644 (file)
@@ -18,7 +18,6 @@ komeda_plane_init_data_flow(struct drm_plane_state *st,
                            struct komeda_data_flow_cfg *dflow)
 {
        struct komeda_plane *kplane = to_kplane(st->plane);
-       struct komeda_plane_state *kplane_st = to_kplane_st(st);
        struct drm_framebuffer *fb = st->fb;
        const struct komeda_format_caps *caps = to_kfb(fb)->format_caps;
        struct komeda_pipeline *pipe = kplane->layer->base.pipeline;
@@ -57,8 +56,6 @@ komeda_plane_init_data_flow(struct drm_plane_state *st,
                return -EINVAL;
        }
 
-       dflow->en_img_enhancement = !!kplane_st->img_enhancement;
-
        komeda_complete_data_flow_cfg(kplane->layer, dflow, fb);
 
        return 0;
@@ -174,8 +171,6 @@ komeda_plane_atomic_duplicate_state(struct drm_plane *plane)
 
        old = to_kplane_st(plane->state);
 
-       new->img_enhancement = old->img_enhancement;
-
        return &new->base;
 }