From patchwork Thu Feb 15 10:19:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neil Armstrong X-Patchwork-Id: 10220813 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6BF8160600 for ; Thu, 15 Feb 2018 10:20:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 587112910C for ; Thu, 15 Feb 2018 10:20:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4D57C29115; Thu, 15 Feb 2018 10:20:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7B07A29117 for ; Thu, 15 Feb 2018 10:20:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=HVYE9kNTfhr8jecTTW82hbPLgbXcLufWe9rb7ClSEkg=; b=A3u rlpC2X3eBaxfEF14aHZXGMDTSe82laswylQDV5w8Bh007AgUYrxNJx2Gj2vXHRrF9UcWyO43f7S0b TJciHFEpYeBOjDu6HoBym8X8edXgnVrZhJBH2UOqXXFDrFcKmo+ImbxlRKai6YCnv6FveG9+E1M63 VSVXZ2F+W2a8sa0oR1qbUNBvRUvRHGSn95W58w7kfrgLuZsFsxQetJt4AiWuq7EX1BNqiTo/qEFw8 rdR/jbcYMasgV3lyNKtBrqRbHY0lW0qc/s5lMI33x+toBPJeGYz7Cs93EE2FnUUfQNP5MZixt0G7i aUUyVdAJS8g8o3hOTyY+KeCizfuNQ0g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1emGe3-0003zS-HI; Thu, 15 Feb 2018 10:20:03 +0000 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1emGds-0003pK-S6 for linux-arm-kernel@lists.infradead.org; Thu, 15 Feb 2018 10:19:54 +0000 Received: by mail-wm0-x243.google.com with SMTP id j199so15759975wmj.2 for ; Thu, 15 Feb 2018 02:19:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=8wJdEgjeCjI7q0Je5d9D3qQRfDAFGoJ12APny6XUGK8=; b=APebN6ZHnLDOW8YwmQ6rtFoXg+mXqPYl0B2WMV0rW0sDi1trsQoPw8/JFDMj/5eJ92 Fy017efBYLeKICazmhCp2Vs8ZESh80lPxYfQnPhXkhIPAQUxSTgV/ifl3goxjLCea1P6 /hBBYPnkLubif4JLSfjlxrcEV/PJVKwB72+FRoaRFtJpK9pxjDnKRxdENUsiuAD23VpD cj4OgdQNTMLFLqt1N2WVu7ZJIjO6mbzpajhdiPEGEVDQGCWVj2/AjEq1kvD25RBXSBPz BX+4Y9Rnn/KHlytOiJTkr+JbOhxv8GhQ1UnpXA0sLQWzYetBFdChMMOMzVubtGJO+rP4 cnCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=8wJdEgjeCjI7q0Je5d9D3qQRfDAFGoJ12APny6XUGK8=; b=EO9s8iaTnJgNsMovrUeFOZ0xaKKc5WLzVb64smNmg/l9qrtV8wJTOub2TrV/f5Rn0r gR/RDogIvVTBbO2CKhSwWcVTHiqdNUvV34wRP1rGFFASS4mIJJbhoA1Y31BJOmIoHh8o wB8FEMt2tDX4fHtncncUzxygsa9LTLCV4WzrsvLO0P7RaXHg5iUjQbuxmkqWrx3zzrw/ BY2PuU2sunfzZ7VuRmMMDeZ+AhrvejFE/7lBOvFVSARZo4MFY8f1SMFPWKJnacD2/pFS TpeIgi62LSR9uqBKnGzMA6F+rRSXoD18czbbCzt8xuOb7gxklPWLgnFaseSvXikL8fb+ U50Q== X-Gm-Message-State: APf1xPAjH7hoZrVu9U2cAhOnjQwiyb6vkXj/L9sOQAVYPYrJ8geAztdP W0NxaDDXcEmDkvOLTqEOmtwAIA== X-Google-Smtp-Source: AH8x2266K+vNSSYeORoz3Gj9BL6nNhPJsmA8/SAQy3ak8oziU85UOFGuBeaC4MuBei8MrGrUhMF6og== X-Received: by 10.28.46.22 with SMTP id u22mr1572646wmu.47.1518689980651; Thu, 15 Feb 2018 02:19:40 -0800 (PST) Received: from bender.baylibre.local ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id 2sm14413310wra.58.2018.02.15.02.19.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 15 Feb 2018 02:19:40 -0800 (PST) From: Neil Armstrong To: airlied@linux.ie Subject: [PATCH] drm/meson: fix vsync buffer update Date: Thu, 15 Feb 2018 11:19:36 +0100 Message-Id: <1518689976-23292-1-git-send-email-narmstrong@baylibre.com> X-Mailer: git-send-email 2.7.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180215_021952_946853_08A06EE4 X-CRM114-Status: GOOD ( 14.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Neil Armstrong , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Michal Lazo , linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP The plane buffer address/stride/height was incorrectly updated in the plane_atomic_update operation instead of the vsync irq. This patch delays this operation in the vsync irq along with the other plane delayed setup. This issue was masked using legacy framebuffer and X11 modesetting, but is clearly visible using gbm rendering when buffer is submitted late after vblank, like using software decoding and OpenGL rendering in Kodi. With this patch, tearing and other artifacts disappears completely. Cc: Michal Lazo Fixes: bbbe775ec5b5 ("drm: Add support for Amlogic Meson Graphic Controller") Signed-off-by: Neil Armstrong Acked-by: Daniel Vetter --- drivers/gpu/drm/meson/meson_crtc.c | 6 ++++++ drivers/gpu/drm/meson/meson_drv.h | 3 +++ drivers/gpu/drm/meson/meson_plane.c | 7 +++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_crtc.c b/drivers/gpu/drm/meson/meson_crtc.c index 5155f01..0552020 100644 --- a/drivers/gpu/drm/meson/meson_crtc.c +++ b/drivers/gpu/drm/meson/meson_crtc.c @@ -36,6 +36,7 @@ #include "meson_venc.h" #include "meson_vpp.h" #include "meson_viu.h" +#include "meson_canvas.h" #include "meson_registers.h" /* CRTC definition */ @@ -192,6 +193,11 @@ void meson_crtc_irq(struct meson_drm *priv) } else meson_vpp_disable_interlace_vscaler_osd1(priv); + meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, + priv->viu.osd1_addr, priv->viu.osd1_stride, + priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, + MESON_CANVAS_BLKMODE_LINEAR); + /* Enable OSD1 */ writel_bits_relaxed(VPP_OSD1_POSTBLEND, VPP_OSD1_POSTBLEND, priv->io_base + _REG(VPP_MISC)); diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h index 5e8b392..8450d6ac 100644 --- a/drivers/gpu/drm/meson/meson_drv.h +++ b/drivers/gpu/drm/meson/meson_drv.h @@ -43,6 +43,9 @@ struct meson_drm { bool osd1_commit; uint32_t osd1_ctrl_stat; uint32_t osd1_blk0_cfg[5]; + uint32_t osd1_addr; + uint32_t osd1_stride; + uint32_t osd1_height; } viu; struct { diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c index d0a6ac8..27bd350 100644 --- a/drivers/gpu/drm/meson/meson_plane.c +++ b/drivers/gpu/drm/meson/meson_plane.c @@ -164,10 +164,9 @@ static void meson_plane_atomic_update(struct drm_plane *plane, /* Update Canvas with buffer address */ gem = drm_fb_cma_get_gem_obj(fb, 0); - meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, - gem->paddr, fb->pitches[0], - fb->height, MESON_CANVAS_WRAP_NONE, - MESON_CANVAS_BLKMODE_LINEAR); + priv->viu.osd1_addr = gem->paddr; + priv->viu.osd1_stride = fb->pitches[0]; + priv->viu.osd1_height = fb->height; spin_unlock_irqrestore(&priv->drm->event_lock, flags); }