Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3274785imm; Tue, 17 Jul 2018 01:54:25 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdbDU4/59iZWP2q9maYi0/eSwwttaLJX3TVDMirsBIFsQahEz8HuvM9OgmLO1dSv/1zhYvJ X-Received: by 2002:a62:3c4f:: with SMTP id j76-v6mr786538pfa.119.1531817665880; Tue, 17 Jul 2018 01:54:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531817665; cv=none; d=google.com; s=arc-20160816; b=SbYSPWmMUsCFVQzNOi2Tv58fnCwOvHkvyRen65JlOzvOZyNF5sUoinahs8fT0FUO2l jXHqsJq10dELF72oePLmWdRfnywLCIyLP9ozfwdZWp3VjnWPBZEUuFosIoSnKD3YRSZz HKSzLUh2ge1Ivf5ArvRNJte33SKjUh0eHKyjXpiLio1klVXg+Uq5Ysi64gNQPXWgTp0r Zn0HVwtOgyU+DpEuZBZmartSvuhWTbdtEEAdbmf1PcZtpgM281RZTWOt/xYQI1aHKgJH nmRCQaiSfQCHQlbtCnn14nWf9hKrP3niwV6BltLo382JzXsmmAFQxVFH+l/jC+OfwiKY kbPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=W0NmrQXoQNbnjLG/1ZoC1IPYv7PxC9Dv1n27E8Kdu4Q=; b=LOXFfaMIzAzfb0w9GdJN9t1qHjOZ9X3aG/g+qZto8NYynBcsx9RkDeJAhj0/R5ZO8l x27Xcfp9GV1MRjmMUUnpXtNzdJphG3HWbds5jeAw8S+syYY6gnyPI/rkr/8E3vIjrGIJ 7HKnInIDgd+mGPzTqKMcVhMAu/k/aNW1AtSNqGHSTj18eyHquOleu8TSvTyQuYZzVaWF mmDqjlenR1u7KhBZagATmWPyu10gDwQQNaoU/hgJ8WpdEVyh/kYBfrarojJEOXmZVKtV rKVQ8ymjyBsWBdepYYfpsXFXtHXgbNKUP7LFiIizYpRAwUOaEeH42/MWHv9fsubKwrk+ +Q8A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j67-v6si461579pfg.34.2018.07.17.01.54.10; Tue, 17 Jul 2018 01:54:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730598AbeGQJYr (ORCPT + 99 others); Tue, 17 Jul 2018 05:24:47 -0400 Received: from mail.bootlin.com ([62.4.15.54]:57589 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730511AbeGQJYr (ORCPT ); Tue, 17 Jul 2018 05:24:47 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id DE7A620733; Tue, 17 Jul 2018 10:53:12 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from localhost.localdomain (AAubervilliers-681-1-27-161.w90-88.abo.wanadoo.fr [90.88.147.161]) by mail.bootlin.com (Postfix) with ESMTPSA id 96E09207B4; Tue, 17 Jul 2018 10:53:02 +0200 (CEST) From: Paul Kocialkowski To: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Maxime Ripard , David Airlie , Chen-Yu Tsai , Thomas Petazzoni , linux-sunxi@googlegroups.com, Paul Kocialkowski Subject: [PATCH 2/2] drm/sun4i: sun4i: Introduce a quirk for lowest plane alpha support Date: Tue, 17 Jul 2018 10:52:30 +0200 Message-Id: <20180717085230.17472-2-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180717085230.17472-1-paul.kocialkowski@bootlin.com> References: <20180717085230.17472-1-paul.kocialkowski@bootlin.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Not all sunxi platforms with the first version of the Display Engine support an alpha component on the plane with the lowest z position (as in: lowest z-pos), that gets blended with the background color. In particular, the A13 is known to have this limitation. However, it was recently discovered that the A20 and A33 are capable of having alpha on their lowest plane. Thus, this introduces a specific quirk to indicate such support, per-platform. Since this was not tested on sun4i and sun6i platforms, a conservative approach is kept and this feature is not supported. Signed-off-by: Paul Kocialkowski --- drivers/gpu/drm/sun4i/sun4i_backend.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index a3cc398d4d80..cdc4a8a91ea2 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -35,6 +35,8 @@ struct sun4i_backend_quirks { /* backend <-> TCON muxing selection done in backend */ bool needs_output_muxing; + /* alpha at the lowest z position is not always supported */ + bool supports_lowest_plane_alpha; }; static void sun4i_backend_apply_color_correction(struct sunxi_engine *engine) @@ -484,6 +486,7 @@ static void sun4i_backend_atomic_begin(struct sunxi_engine *engine, static int sun4i_backend_atomic_check(struct sunxi_engine *engine, struct drm_crtc_state *crtc_state) { + struct sun4i_backend *backend = engine_to_sun4i_backend(engine); struct drm_plane_state *plane_states[SUN4I_BACKEND_NUM_LAYERS] = { 0 }; struct drm_atomic_state *state = crtc_state->state; struct drm_device *drm = state->dev; @@ -584,8 +587,9 @@ static int sun4i_backend_atomic_check(struct sunxi_engine *engine, } /* We can't have an alpha plane at the lowest position */ - if (plane_states[0]->fb->format->has_alpha || - (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)) + if ((plane_states[0]->fb->format->has_alpha || + (plane_states[0]->alpha != DRM_BLEND_ALPHA_OPAQUE)) && + !backend->quirks->supports_lowest_plane_alpha) return -EINVAL; for (i = 1; i < num_planes; i++) { @@ -970,9 +974,11 @@ static const struct sun4i_backend_quirks sun6i_backend_quirks = { static const struct sun4i_backend_quirks sun7i_backend_quirks = { .needs_output_muxing = true, + .supports_lowest_plane_alpha = true, }; static const struct sun4i_backend_quirks sun8i_a33_backend_quirks = { + .supports_lowest_plane_alpha = true, }; static const struct sun4i_backend_quirks sun9i_backend_quirks = { -- 2.17.1