Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp1218428pxb; Tue, 1 Feb 2022 22:52:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJz0ehUecMIgHPfzxkuqtkTv3IW1i3cqQNVq+s/YOQGNcJzvyXvV+pyzKPqdQtOXJb5fdD1Q X-Received: by 2002:a17:90b:1009:: with SMTP id gm9mr6474395pjb.223.1643784773893; Tue, 01 Feb 2022 22:52:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643784773; cv=none; d=google.com; s=arc-20160816; b=Bw6Ec2BrO2p9OhqvMR9kxwHZ9nBssAqek9l2kkRTP7/Y4HbgUNUatm/xtkUm0FlLU5 r5zkBafL3kq4/TKVFjvHGPBhGFoTUuyjchpKHu1+dikux14W4kBAROkgRdroSFYbpAFf IMmu7QO+xEokFcW/uFAn3La8Hl05WE+8U1xCe7qOepziz68Bx3s2B0JNIZclOR+SzKYN SK7Bi+0vbn36yncDrNXfqXLIER4r7kznEwAg62EaOoMdy9oTppeIFJgkbqAK6PR1vceI ydTSv1MzI75XvTg/w7HG+6s3KB0rS0G+8wtMjpR+mKWJPvhGIHNCcRytz3GqxgNjZcq/ T9vQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=thQSKAMpg3vonVejk+upRRfxFVRMJlvDC8QT1+vvLTE=; b=X+cuSsI6qGGAhL0NieezBu/gBLTK4s0nJ+UbGABWOGPpBkYXTObJS9CXV5+7TaujN3 M/XxidEwvG/Jsz1IRJDUPdt3PI/G4bmf2UTzuRc50B/l2TCL/1XJgdiTK0PFaKSsMLYm eYLM7CEQ30tTNDSZ631HZLVoGswFBg7LT4m0afFAOupNfreOOSXReWr8OWKSa6SvAHnM c2SH1vl4OxtnzSEnkAXQEkXdsgnPnIV+ApFU1125qmljtWed6g3IyJriV1sa8QNkahzT rKPp5n9MBA6GJe4/cdSYxcZrrtsT4FBy2QhXZlzjl7SLvWyYniKLXbZ8jxfl8Vj6dnQL nELg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b="BjysRH1/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c11si21721775plh.322.2022.02.01.22.52.41; Tue, 01 Feb 2022 22:52:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b="BjysRH1/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236678AbiBAKg6 (ORCPT + 99 others); Tue, 1 Feb 2022 05:36:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236705AbiBAKg4 (ORCPT ); Tue, 1 Feb 2022 05:36:56 -0500 Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5D2FC06173D for ; Tue, 1 Feb 2022 02:36:56 -0800 (PST) Received: by mail-oi1-x22b.google.com with SMTP id m10so7337199oie.2 for ; Tue, 01 Feb 2022 02:36:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=thQSKAMpg3vonVejk+upRRfxFVRMJlvDC8QT1+vvLTE=; b=BjysRH1/UjWKl4SwTWns+a3iySdYESImlXYI7dzIfcW5U3YKan1zfT4PIm9Yg1CO+i UeBzRv66NeNKkAxDGEvzfZAO0hDDWZu37G4sPsJ0qidfgez8DuvVdkYwSyJc/ruD4Unm v10dtEg3+JZQA08R+oq5qhyMzzEa33iBiE/uo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=thQSKAMpg3vonVejk+upRRfxFVRMJlvDC8QT1+vvLTE=; b=WLYiEqJgdnKtFNiyxLATw9dCXZwmlv8ORUn68xCjS7A1cijEOu6ndWpukuvGWK2zmh HhKNH37zo+BqlqNRnR5IEohpNsy68WBFisH2EAHk/U4ORA4Gp2RLy0fcnfK0LX+ve6CX AuLZXAN1c7FDRQLsbtBG4iSkk0jbcZnXeU17f1Pawf7gScIG4UAKI7L9CdPY1fACaAP4 KQPr3a8s1bY02I8DGqrCiHouh/2jq7wFBi/NdhwlZdC/AIp17YEqBOgTnIfkpitWCcTU UqMvlxVSdt5bAvrCTfzkSqBnjqaMXeR7ZSfpQZvSX1Yk8MNella7KRwQjquPtN/9dezv jPcA== X-Gm-Message-State: AOAM530s3rfOIFCriBQndVueRjoxSYo6lloFZKEwC9/OzBMmgNtlhjOq xgsjrtHyfF/eu5SmqzgWoJisytxGL8KiRDQLX5Hoiw== X-Received: by 2002:a54:4803:: with SMTP id j3mr745297oij.279.1643711816234; Tue, 01 Feb 2022 02:36:56 -0800 (PST) MIME-Version: 1.0 References: <20220131210552.482606-1-daniel.vetter@ffwll.ch> <20220131210552.482606-4-daniel.vetter@ffwll.ch> <9c22b709-cbcf-6a29-a45e-5a57ba0b9c14@gmx.de> In-Reply-To: <9c22b709-cbcf-6a29-a45e-5a57ba0b9c14@gmx.de> From: Daniel Vetter Date: Tue, 1 Feb 2022 11:36:44 +0100 Message-ID: Subject: Re: [PATCH 03/21] fbcon: Restore fbcon scrolling acceleration To: Helge Deller Cc: DRI Development , Intel Graphics Development , linux-fbdev@vger.kernel.org, LKML , stable@vger.kernel.org, Claudio Suarez , Dave Airlie , Jani Nikula , Linus Torvalds , Pavel Machek , Sam Ravnborg , Greg Kroah-Hartman , Javier Martinez Canillas , Tomi Valkeinen , Geert Uytterhoeven , Thomas Zimmermann , Daniel Vetter , Sven Schnelle , Gerd Hoffmann Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 1, 2022 at 11:16 AM Helge Deller wrote: > > On 1/31/22 22:05, Daniel Vetter wrote: > > This functionally undoes 39aead8373b3 ("fbcon: Disable accelerated > > scrolling"), but behind the FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION > > option. > > you have two trivial copy-n-paste errors in this patch which still prevent the > console acceleration. Duh :-( But before we dig into details I think the big picture would be better. I honestly don't like the #ifdef pile here that much. I wonder whether your approach, also with GETVX/YRES adjusted somehow, wouldn't look cleaner? Like I said in the cover letter I got mostly distracted with fbcon locking last week, not really with this one here at all, so maybe going with your 4 (or 2 if we squash them like I did here) patches is neater? Cheers, Daniel > > > diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c > > index 2ff90061c7f3..39dc18a5de86 100644 > > --- a/drivers/video/fbdev/core/fbcon.c > > +++ b/drivers/video/fbdev/core/fbcon.c > > @@ -1125,13 +1125,15 @@ static void fbcon_init(struct vc_data *vc, int init) > > > > ops->graphics = 0; > > > > - /* > > - * No more hw acceleration for fbcon. > > - * > > - * FIXME: Garbage collect all the now dead code after sufficient time > > - * has passed. > > - */ > > +#ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION > > should be: > #ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION > > > > + if ((info->flags & FBINFO_HWACCEL_COPYAREA) && > > + !(info->flags & FBINFO_HWACCEL_DISABLED)) > > + p->scrollmode = SCROLL_MOVE; > > + else /* default to something safe */ > > + p->scrollmode = SCROLL_REDRAW; > > +#else > > p->scrollmode = SCROLL_REDRAW; > > +#endif > > > > /* > > * ++guenther: console.c:vc_allocate() relies on initializing > > @@ -1971,15 +1973,49 @@ static void updatescrollmode(struct fbcon_display *p, > > { > > struct fbcon_ops *ops = info->fbcon_par; > > int fh = vc->vc_font.height; > > + int cap = info->flags; > > + u16 t = 0; > > + int ypan = FBCON_SWAP(ops->rotate, info->fix.ypanstep, > > + info->fix.xpanstep); > > + int ywrap = FBCON_SWAP(ops->rotate, info->fix.ywrapstep, t); > > int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres); > > int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual, > > info->var.xres_virtual); > > + int good_pan = (cap & FBINFO_HWACCEL_YPAN) && > > + divides(ypan, vc->vc_font.height) && vyres > yres; > > + int good_wrap = (cap & FBINFO_HWACCEL_YWRAP) && > > + divides(ywrap, vc->vc_font.height) && > > + divides(vc->vc_font.height, vyres) && > > + divides(vc->vc_font.height, yres); > > + int reading_fast = cap & FBINFO_READS_FAST; > > + int fast_copyarea = (cap & FBINFO_HWACCEL_COPYAREA) && > > + !(cap & FBINFO_HWACCEL_DISABLED); > > + int fast_imageblit = (cap & FBINFO_HWACCEL_IMAGEBLIT) && > > + !(cap & FBINFO_HWACCEL_DISABLED); > > > > p->vrows = vyres/fh; > > if (yres > (fh * (vc->vc_rows + 1))) > > p->vrows -= (yres - (fh * vc->vc_rows)) / fh; > > if ((yres % fh) && (vyres % fh < yres % fh)) > > p->vrows--; > > + > > + if (good_wrap || good_pan) { > > + if (reading_fast || fast_copyarea) > > + p->scrollmode = good_wrap ? > > + SCROLL_WRAP_MOVE : SCROLL_PAN_MOVE; > > + else > > + p->scrollmode = good_wrap ? SCROLL_REDRAW : > > + SCROLL_PAN_REDRAW; > > + } else { > > + if (reading_fast || (fast_copyarea && !fast_imageblit)) > > + p->scrollmode = SCROLL_MOVE; > > + else > > + p->scrollmode = SCROLL_REDRAW; > > + } > > + > > +#ifndef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION > > same here... it needs to be: > #ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION > > > > + p->scrollmode = SCROLL_REDRAW; > > +#endif > > } > > > > #define PITCH(w) (((w) + 7) >> 3) > > > > still reviewing the other patches... > > Helge -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch