From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
linux-fbdev@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
Daniel Vetter <daniel.vetter@ffwll.ch>,
Helge Deller <deller@gmx.de>,
stable@vger.kernel.org, Claudio Suarez <cssk@net-c.es>,
Dave Airlie <airlied@gmail.com>,
Jani Nikula <jani.nikula@linux.intel.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Pavel Machek <pavel@ucw.cz>, Sam Ravnborg <sam@ravnborg.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Javier Martinez Canillas <javierm@redhat.com>,
Tomi Valkeinen <tomi.valkeinen@ti.com>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Daniel Vetter <daniel.vetter@intel.com>,
Sven Schnelle <svens@stackframe.org>,
Gerd Hoffmann <kraxel@redhat.com>
Subject: [PATCH 03/21] fbcon: Restore fbcon scrolling acceleration
Date: Mon, 31 Jan 2022 22:05:34 +0100 [thread overview]
Message-ID: <20220131210552.482606-4-daniel.vetter@ffwll.ch> (raw)
In-Reply-To: <20220131210552.482606-1-daniel.vetter@ffwll.ch>
This functionally undoes 39aead8373b3 ("fbcon: Disable accelerated
scrolling"), but behind the FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION
option.
References: https://lore.kernel.org/dri-devel/feea8303-2b83-fc36-972c-4fc8ad723bde@gmx.de/
Fixes: 39aead8373b3 ("fbcon: Disable accelerated scrolling")
Cc: Helge Deller <deller@gmx.de>
Cc: <stable@vger.kernel.org> # v5.11+
Cc: Claudio Suarez <cssk@net-c.es>
Cc: Dave Airlie <airlied@gmail.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Fbdev development list <linux-fbdev@vger.kernel.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: DRI Development <dri-devel@lists.freedesktop.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Claudio Suarez <cssk@net-c.es>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Sven Schnelle <svens@stackframe.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/video/fbdev/core/fbcon.c | 48 ++++++++++++++++++++++++++++----
1 file changed, 42 insertions(+), 6 deletions(-)
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
+ 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
+ p->scrollmode = SCROLL_REDRAW;
+#endif
}
#define PITCH(w) (((w) + 7) >> 3)
--
2.33.0
next prev parent reply other threads:[~2022-01-31 21:06 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-31 21:05 [PATCH 00/21] some fbcon patches, mostly locking Daniel Vetter
2022-01-31 21:05 ` [PATCH 01/21] MAINTAINERS: Add entry for fbdev core Daniel Vetter
2022-02-01 10:19 ` Thomas Zimmermann
2022-02-01 10:45 ` Greg Kroah-Hartman
2022-02-01 10:32 ` Helge Deller
2022-02-01 14:01 ` Javier Martinez Canillas
2022-02-01 14:47 ` Jani Nikula
2022-02-01 14:54 ` Geert Uytterhoeven
2022-02-01 20:47 ` Dave Airlie
2022-02-02 11:10 ` Daniel Stone
2022-02-02 11:18 ` Tomi Valkeinen
2022-02-02 11:31 ` Maxime Ripard
2022-02-02 13:48 ` Alex Deucher
2022-02-03 20:25 ` Sam Ravnborg
2022-02-08 14:12 ` Daniel Vetter
2022-01-31 21:05 ` [PATCH 02/21] fbcon: Resurrect fbcon accelerated scrolling code Daniel Vetter
2022-01-31 21:05 ` Daniel Vetter [this message]
2022-02-01 10:16 ` [PATCH 03/21] fbcon: Restore fbcon scrolling acceleration Helge Deller
2022-02-01 10:17 ` Helge Deller
2022-02-01 10:36 ` Daniel Vetter
2022-02-01 11:01 ` Helge Deller
2022-02-01 13:45 ` Daniel Vetter
2022-02-01 14:52 ` Helge Deller
2022-02-01 16:30 ` Daniel Vetter
2022-01-31 21:05 ` [PATCH 04/21] fbcon: delete a few unneeded forward decl Daniel Vetter
2022-02-03 20:30 ` Sam Ravnborg
2022-02-04 10:00 ` Geert Uytterhoeven
2022-01-31 21:05 ` [PATCH 05/21] fbcon: Introduce wrapper for console->fb_info lookup Daniel Vetter
2022-02-03 21:25 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 06/21] fbcon: delete delayed loading code Daniel Vetter
2022-02-03 20:45 ` Sam Ravnborg
2022-02-08 13:42 ` Daniel Vetter
2022-02-08 18:09 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 07/21] fbdev/sysfs: Fix locking Daniel Vetter
2022-02-03 21:27 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 08/21] fbcon: Use delayed work for cursor Daniel Vetter
2022-01-31 21:05 ` [PATCH 09/21] fbcon: Replace FBCON_FLAGS_INIT with a boolean Daniel Vetter
2022-02-01 10:37 ` Thomas Zimmermann
2022-02-03 13:47 ` Geert Uytterhoeven
2022-02-03 21:30 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 10/21] fb: Delete fb_info->queue Daniel Vetter
2022-02-03 21:31 ` Sam Ravnborg
2022-02-08 13:46 ` Daniel Vetter
2022-02-08 18:22 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 11/21] fbcon: Extract fbcon_open/release helpers Daniel Vetter
2022-02-03 21:15 ` Sam Ravnborg
2022-02-03 21:32 ` Sam Ravnborg
2022-02-08 13:48 ` Daniel Vetter
2022-02-08 18:24 ` Sam Ravnborg
2022-02-08 19:51 ` [Intel-gfx] " Daniel Vetter
2022-01-31 21:05 ` [PATCH 12/21] fbcon: Ditch error handling for con2fb_release_oldinfo Daniel Vetter
2022-02-03 21:16 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 13/21] fbcon: move more common code into fb_open() Daniel Vetter
2022-01-31 23:31 ` [Intel-gfx] " kernel test robot
2022-02-04 19:35 ` Sam Ravnborg
2022-02-08 13:53 ` Daniel Vetter
2022-02-08 18:25 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 14/21] fbcon: use lock_fb_info in fbcon_open/release Daniel Vetter
2022-02-04 19:39 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 15/21] fbcon: Consistently protect deferred_takeover with console_lock() Daniel Vetter
2022-02-04 19:45 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 16/21] fbcon: Move console_lock for register/unlink/unregister Daniel Vetter
2022-02-04 19:54 ` Sam Ravnborg
2022-02-08 13:56 ` Daniel Vetter
2022-01-31 21:05 ` [PATCH 17/21] fbcon: Move more code into fbcon_release Daniel Vetter
2022-02-04 19:55 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 18/21] fbcon: untangle fbcon_exit Daniel Vetter
2022-02-04 20:06 ` Sam Ravnborg
2022-02-08 13:58 ` Daniel Vetter
2022-02-08 18:27 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 19/21] fbcon: Maintain a private array of fb_info Daniel Vetter
2022-02-04 20:15 ` Sam Ravnborg
2022-02-08 14:03 ` Daniel Vetter
2022-02-08 18:55 ` Sam Ravnborg
2022-01-31 21:05 ` [PATCH 20/21] Revert "fbdev: Prevent probing generic drivers if a FB is already registered" Daniel Vetter
2022-01-31 21:05 ` [PATCH 21/21] fbdev: Make registered_fb[] private to fbmem.c Daniel Vetter
2022-02-01 8:13 ` [Intel-gfx] " kernel test robot
2022-02-04 8:30 ` Geert Uytterhoeven
2022-02-08 14:04 ` Daniel Vetter
2022-02-08 20:59 ` Daniel Vetter
2022-02-08 19:00 ` Sam Ravnborg
2022-02-08 20:56 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220131210552.482606-4-daniel.vetter@ffwll.ch \
--to=daniel.vetter@ffwll.ch \
--cc=airlied@gmail.com \
--cc=cssk@net-c.es \
--cc=daniel.vetter@intel.com \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=javierm@redhat.com \
--cc=kraxel@redhat.com \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=sam@ravnborg.org \
--cc=stable@vger.kernel.org \
--cc=svens@stackframe.org \
--cc=tomi.valkeinen@ti.com \
--cc=torvalds@linux-foundation.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®