Received: by 10.223.185.116 with SMTP id b49csp1835895wrg; Thu, 15 Feb 2018 02:20:41 -0800 (PST) X-Google-Smtp-Source: AH8x2262X74JLp3mZSlWCRuLDDaXNE7zs16zXIrHBdOa5E1ksSoxY298Rjf8Gzm0+ucU6TrU2urx X-Received: by 2002:a17:902:a985:: with SMTP id bh5-v6mr2063052plb.230.1518690041092; Thu, 15 Feb 2018 02:20:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518690041; cv=none; d=google.com; s=arc-20160816; b=Qdmlsv+ub3K4HiIeZeqZDEbTZ+6HR0EzY3m1KYW4tn89WlSte+n2ckgvMqHacX5HQL mI4+td46HTFHUPI81Rh8eLSMUZnEn2jSx49cu/xa2SMXHG8LYpPP8maVl0ubT1I8nsa5 KmCyGkG6lKAznItMoVNjDP44IO1viq25eL3FJtHkG+ZhV0UZTlwguFN9/o/P+uOSjpgd WDVN8aFAvEh1TJUrK0Alkp4OdWGWzvSTzZkwX2T/ckJYJsGVTpz8+a5QSKOZQi5ypo94 IBT0HuDhUiGkYM7ao71qdDbUSv8c2AGC8xoZB1Pj+A0SBrcbHn+CS6SJ0Q1KhFnbPejL cAWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=8wJdEgjeCjI7q0Je5d9D3qQRfDAFGoJ12APny6XUGK8=; b=OaEWbef8O/rHCqnpGiEe86rU6vRTI5SwkYloz7yhLSU6q+aSeUk5YgjgDpwShua+cu tGP4UK9HWhkKhXTF8CsoYZCB3oPuHzpP4xbFH5tSlGPK95hS6fySjvKnuSqwrDBFC7lS euErgRSM3mYyW2cMI9x4ZyeUsE6d0yxl9RZrhnqmNi813joZ3sEf+CYXx59RJsZJ63jd l2FUee3oaltNYEpHxC6WftyM6Zr0S5bgmWvf/r6Y1kENv8w8ihML+gBmK687avjc2MAQ zy1FJTAfDwWv+gTGnURxBT9Lou76J5nJoH3Lu4jJx9Dhuvo4dFzYKhp8MSOOgHnGz1AE nfTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=APebN6ZH; 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 65si2821766pft.320.2018.02.15.02.20.24; Thu, 15 Feb 2018 02:20:41 -0800 (PST) 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; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=APebN6ZH; 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 S1755389AbeBOKTo (ORCPT + 99 others); Thu, 15 Feb 2018 05:19:44 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:54576 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755267AbeBOKTm (ORCPT ); Thu, 15 Feb 2018 05:19:42 -0500 Received: by mail-wm0-f68.google.com with SMTP id z81so1677238wmb.4 for ; Thu, 15 Feb 2018 02:19:41 -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=a/XIDBXTMadzV4aZaLxyvMGpUAlXwVWkTQl9K0qawSw3kTqvLilCiQBiXnM1ycHyeB FXsWHfzw+f3m2x/Y6UxqOWht6GtjEJQXgERZc1PNLK91pVv6l8MCRpXZZ/E3qucgkzhg j8Nl87zhj9PxITpXN03lrrFUyeNqI6yg5YkBx8G56dUIwnXFhktQSLtOi05t8rxMWWUq lCvSx2k18f+FJI3N6/mzQz5kCoJx6UMTMa5h2g+hWmd14LKpJ+7rKRVlR8b5bEXkhqMw 5xG2wjGFs2BcfhAKpU0gj1aL408k7U1bhrjz90B2sBZnkI2CcIguF6okjG0bxsIwLgzH vJNw== X-Gm-Message-State: APf1xPDHIjrFgq0Aj75s9nXEFcKNs97pZEkTrsrLxY7TGF7pODyPR5+6 s1zjRFYWw6SYjyRqSd+6OO8YeA== 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 Cc: Neil Armstrong , dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Michal Lazo 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 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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); } -- 2.7.4