From: Eli Zaretskii <eliz@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: larsi@gnus.org, emacs-devel@gnu.org
Subject: Re: Tick Reduction
Date: Fri, 19 Nov 2021 21:50:39 +0200 [thread overview]
Message-ID: <83y25judps.fsf@gnu.org> (raw)
In-Reply-To: <jwvfsrs9cn1.fsf-monnier+emacs@gnu.org> (message from Stefan Monnier on Fri, 19 Nov 2021 14:24:46 -0500)
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: larsi@gnus.org, emacs-devel@gnu.org
> Date: Fri, 19 Nov 2021 14:24:46 -0500
>
> > That is only true when the window is redisplayed in its entirety, top
> > to bottom. This happens relatively rarely, because the display engine
> > tries very hard not to redisplay much more than absolutely necessary.
> > These redisplay optimizations are generally structure as follows:
> >
> > . find the beginning and the end of the part of the buffer that needs
> > to be redisplayed
> > . redisplay that part starting at its beginning and going to its end
> >
> > This could result in redisplaying just one line, for example, or all
> > lines between N and M. Which means that redisplay of a window can
> > start at some arbitrary point in the middle of the window, without
> > knowing anything about the preceding lines, except that they weren't
> > changed on the glass.
>
> IIUC this isn't quite true: the "old" glyph matrix still contains the
> rendering result of the previous lines and while it's old, it's still
> up-to-date, so we might be able to extract the alignment info we need
> from that.
The display code only assumes the current glyph matrix is up-to-date
if a set of very conservative tests succeeds. In the other cases, it
doesn't use the contents of the current glyph matrix.
And if this is not enough, let me remind you that the display engine
also includes a set of functions that "emulate" redisplay, and those
cannot use the glyph matrices at all, because they many times are used
for text that is not displayed at all.
> >> so I think we could handle the case of "align
> >> with some previous line" (with some non-trivial caveats since it means
> >> that future changes in that previous line would need to cause POS to be
> >> re-processed, which may require disabling some optimizations).
> > What you want would require every redisplay to always redraw the
> > entire window. IOW, disable _all_ redisplay optimizations.
>
> Not necessarily always: we could record dependencies between lines of
> the glyph matrix such that we only grow the set of redisplayed lines
> when it's actually needed (i.e. when the corresponding text does use
> such cross-line alignment).
Anything can be implemented: this is software, after all. All I'm
saying is that it won't be easy, not at all. And once again, the
display code tries very hard not to use the current glyph matrix
because there's no good way of knowing when it's up to date,
especially when you are in the middle of some Lisp code.
next prev parent reply other threads:[~2021-11-19 19:50 UTC|newest]
Thread overview: 167+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-18 20:37 Tick Reduction Lars Ingebrigtsen
2021-11-18 21:01 ` Perry E. Metzger
2021-11-19 5:25 ` Lars Ingebrigtsen
2021-11-18 21:23 ` Dmitry Gutov
2021-11-19 5:27 ` Lars Ingebrigtsen
2021-11-19 6:31 ` Michael Welsh Duggan
2021-11-19 6:50 ` Stefan Kangas
2021-11-19 7:05 ` Lars Ingebrigtsen
2021-11-19 8:19 ` Eli Zaretskii
2021-11-19 8:30 ` Lars Ingebrigtsen
2021-11-20 8:01 ` Eli Zaretskii
2021-11-20 9:07 ` Lars Ingebrigtsen
2021-11-21 15:11 ` Lars Ingebrigtsen
2021-11-21 17:16 ` Eli Zaretskii
2021-11-21 17:24 ` Lars Ingebrigtsen
2021-11-21 17:39 ` Eli Zaretskii
2021-11-21 18:00 ` Lars Ingebrigtsen
2021-11-21 18:15 ` Eli Zaretskii
2021-11-21 18:25 ` Lars Ingebrigtsen
2021-11-21 18:33 ` Lars Ingebrigtsen
2021-11-21 19:31 ` Eli Zaretskii
2021-11-21 19:34 ` Lars Ingebrigtsen
2021-11-21 19:36 ` Lars Ingebrigtsen
2021-11-21 19:41 ` Lars Ingebrigtsen
2021-11-21 19:49 ` Eli Zaretskii
2021-11-21 19:53 ` Lars Ingebrigtsen
2021-11-21 20:07 ` Eli Zaretskii
2021-11-21 20:17 ` Lars Ingebrigtsen
2021-11-21 20:26 ` Eli Zaretskii
2021-11-21 20:30 ` Lars Ingebrigtsen
2021-11-21 20:31 ` Lars Ingebrigtsen
2021-11-22 8:19 ` Lars Ingebrigtsen
2021-11-22 14:45 ` Eli Zaretskii
2021-11-22 14:50 ` Lars Ingebrigtsen
2021-11-22 17:21 ` Eli Zaretskii
2021-11-22 18:35 ` Stefan Monnier
2021-11-23 10:15 ` Lars Ingebrigtsen
2021-11-23 13:41 ` Eli Zaretskii
2021-11-23 13:49 ` Lars Ingebrigtsen
2021-11-23 14:19 ` Eli Zaretskii
2021-11-23 14:32 ` Lars Ingebrigtsen
2021-11-23 14:43 ` Eli Zaretskii
2021-11-24 11:07 ` Lars Ingebrigtsen
2021-11-24 14:20 ` Eli Zaretskii
2021-11-24 16:28 ` Lars Ingebrigtsen
2021-11-24 17:05 ` Eli Zaretskii
2021-11-24 17:10 ` Lars Ingebrigtsen
2021-11-24 17:41 ` Eli Zaretskii
2021-11-24 17:50 ` Lars Ingebrigtsen
2021-11-24 18:39 ` Eli Zaretskii
2021-11-24 18:44 ` Lars Ingebrigtsen
2021-11-24 19:00 ` Eli Zaretskii
2021-11-25 13:02 ` Lars Ingebrigtsen
2021-11-25 12:58 ` Lars Ingebrigtsen
2021-11-25 13:28 ` Eli Zaretskii
2021-11-25 14:29 ` Lars Ingebrigtsen
2021-11-25 15:10 ` Eli Zaretskii
2021-11-26 12:12 ` Lars Ingebrigtsen
2021-11-26 12:43 ` Eli Zaretskii
2021-11-24 18:41 ` Lars Ingebrigtsen
2021-11-24 18:53 ` Eli Zaretskii
2021-11-24 22:32 ` Yuan Fu
2021-11-25 7:34 ` Eli Zaretskii
2021-11-26 17:03 ` Yuan Fu
2021-11-26 18:41 ` Eli Zaretskii
2021-11-26 18:54 ` Yuan Fu
2021-11-26 18:57 ` Eli Zaretskii
2021-11-25 13:06 ` Lars Ingebrigtsen
2021-11-25 14:02 ` Eli Zaretskii
2021-11-25 14:07 ` Lars Ingebrigtsen
2021-11-25 14:12 ` Eli Zaretskii
2021-11-25 14:16 ` Lars Ingebrigtsen
2021-11-25 15:04 ` Eli Zaretskii
2021-11-26 12:09 ` Lars Ingebrigtsen
2021-11-26 12:56 ` Eli Zaretskii
2021-11-27 14:15 ` Lars Ingebrigtsen
2021-11-27 14:51 ` Eli Zaretskii
2021-11-29 13:40 ` Lars Ingebrigtsen
2021-11-29 13:53 ` Eli Zaretskii
2021-11-29 14:00 ` Lars Ingebrigtsen
2021-11-29 14:06 ` Eli Zaretskii
2021-11-29 14:15 ` Lars Ingebrigtsen
2021-11-29 14:17 ` Eli Zaretskii
2021-11-29 14:35 ` Eli Zaretskii
2021-11-29 15:06 ` Lars Ingebrigtsen
2021-11-24 23:10 ` Feng Shu
2021-11-25 7:42 ` Eli Zaretskii
2021-11-25 11:52 ` Lars Ingebrigtsen
2021-11-22 23:26 ` chad
2021-11-21 20:10 ` Lars Ingebrigtsen
2021-11-21 20:22 ` Eli Zaretskii
2021-11-21 20:28 ` Lars Ingebrigtsen
2021-11-21 20:41 ` Lars Ingebrigtsen
2021-11-21 21:13 ` Eli Zaretskii
2021-11-21 20:42 ` Eli Zaretskii
2021-11-21 21:12 ` Eli Zaretskii
2021-11-22 11:22 ` Lars Ingebrigtsen
2021-11-22 14:52 ` Eli Zaretskii
2021-11-22 14:55 ` Lars Ingebrigtsen
2021-11-22 18:04 ` Eli Zaretskii
2021-11-19 8:33 ` Stefan Kangas
2021-11-19 8:39 ` Lars Ingebrigtsen
2021-11-19 8:48 ` Eli Zaretskii
2021-11-19 10:00 ` Lars Ingebrigtsen
2021-11-19 10:28 ` Stefan Kangas
2021-11-19 12:41 ` Eli Zaretskii
2021-11-19 13:04 ` Stefan Kangas
2021-11-19 13:18 ` Eli Zaretskii
2021-11-19 13:41 ` Stefan Kangas
2021-11-19 13:48 ` Eli Zaretskii
2021-11-21 13:35 ` Stefan Kangas
2021-11-19 10:28 ` Stefan Kangas
2021-11-20 8:43 ` Lars Ingebrigtsen
2021-11-20 9:03 ` Eli Zaretskii
2021-11-20 9:26 ` Lars Ingebrigtsen
2021-11-20 9:51 ` Eli Zaretskii
2021-11-20 9:56 ` Lars Ingebrigtsen
2021-11-20 10:11 ` Eli Zaretskii
2021-11-21 8:57 ` Lars Ingebrigtsen
2021-11-21 9:02 ` Lars Ingebrigtsen
2021-11-21 13:36 ` Stefan Kangas
2021-11-21 19:26 ` Lars Ingebrigtsen
2021-11-21 13:54 ` Stefan Kangas
2021-11-21 15:25 ` Lars Ingebrigtsen
2021-11-21 19:28 ` Stefan Kangas
2021-11-21 19:31 ` Lars Ingebrigtsen
2021-11-22 14:57 ` Use variable-pitch face in more places Stefan Kangas
2021-11-22 15:05 ` Stefan Kangas
2021-11-22 17:22 ` Juri Linkov
2021-11-22 18:10 ` Stefan Kangas
2021-11-22 18:40 ` Juri Linkov
2021-11-23 9:56 ` Lars Ingebrigtsen
2021-11-24 9:12 ` Juri Linkov
2021-11-24 16:52 ` Lars Ingebrigtsen
2021-11-24 17:59 ` Juri Linkov
2021-11-19 7:48 ` Tick Reduction Eli Zaretskii
2021-11-19 13:41 ` Stefan Kangas
2021-11-19 11:58 ` Dmitry Gutov
2021-11-18 22:18 ` [External] : " Drew Adams
2021-11-21 10:17 ` Phil Sainty
2021-11-19 5:48 ` Lars Ingebrigtsen
2021-11-19 7:24 ` Eli Zaretskii
2021-11-19 7:28 ` Lars Ingebrigtsen
2021-11-19 8:26 ` Eli Zaretskii
2021-11-19 8:33 ` Lars Ingebrigtsen
2021-11-19 6:42 ` Eric S Fraga
2021-11-19 7:30 ` Lars Ingebrigtsen
2021-11-19 6:52 ` Stefan Kangas
2021-11-19 7:26 ` Lars Ingebrigtsen
2021-11-19 7:59 ` Stefan Kangas
2021-11-19 8:17 ` Lars Ingebrigtsen
2021-11-19 8:09 ` Eli Zaretskii
2021-11-19 8:34 ` Stefan Kangas
2021-11-19 13:58 ` Stefan Monnier
2021-11-19 14:46 ` Eli Zaretskii
2021-11-19 18:22 ` Stefan Monnier
2021-11-19 18:53 ` Eli Zaretskii
2021-11-19 19:24 ` Stefan Monnier
2021-11-19 19:50 ` Eli Zaretskii [this message]
2021-11-19 21:09 ` Stefan Monnier
2021-11-20 6:34 ` Eli Zaretskii
2021-11-20 13:11 ` Stefan Monnier
2021-11-20 13:32 ` Eli Zaretskii
2021-11-20 14:06 ` Stefan Monnier
2021-11-20 14:35 ` Eli Zaretskii
2021-11-20 15:01 ` Stefan Monnier
2021-11-20 9:00 ` Lars Ingebrigtsen
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83y25judps.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=larsi@gnus.org \
--cc=monnier@iro.umontreal.ca \
/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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).