460 Commits

Author SHA1 Message Date
Mitchell Hashimoto
c51682a5c2 renderer: match no-ID OSC8 in contiguous chunks 2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
925ad5b45c renderer: match multiple lines for osc8 2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
041c779512 renderer: matchSet matches OSC8 2024-07-05 21:40:39 -07:00
Mitchell Hashimoto
af132a3838 Merge pull request #1872 from qwerasd205/various-performance
Various Performance Changes
2024-06-23 09:51:21 -07:00
Mitchell Hashimoto
71353d016e coretext shaper owns CFReleaseThread, works on both Metal and OpenGL now 2024-06-22 20:42:59 -07:00
Mitchell Hashimoto
4325dc51bc font: coretext shaper owns the cf release pool 2024-06-22 20:32:24 -07:00
Mitchell Hashimoto
3038cb4979 Move CFReleaseThread to os package 2024-06-22 20:15:59 -07:00
Mitchell Hashimoto
6f43c01b76 renderer/opengl: invert cursor cell text when glyph is constrained
Fixes #1867
2024-06-18 14:59:49 -07:00
Qwerasd
3f3db4896b add CFReleasePool handling to OpenGL renderer 2024-06-14 02:07:17 -04:00
Qwerasd
626ec2b5ac perf: introduce CFReleaseThread for running CoreFoundation releases
Some CoreFoundation objects, such as those produced by CoreText, have
expensive callbacks that run when they are released. By offloading the
CFRelease calls to another thread, we can avoid important threads being
blocked by unexpectedly expensive callbacks.

This commit also changes the way that the coretext shaper's run iterator
builds its string. Rather than using a CFMutableString, an ArrayList of
unichars is built which is passed to CFStringCreateWithCharactersNoCopy,
which is a lot more efficient since it avoids all the CoreFoundation
overhead.
2024-06-14 01:43:02 -04:00
Qwerasd
db2cefb668 misc: improve rebuildCells time logging 2024-06-10 12:20:49 -04:00
Mitchell Hashimoto
a502089582 renderer/opengl: don't append assume capacity
Fixes #1815
2024-06-03 20:55:11 -07:00
Jan200101
94a7166028 terminal: support using the bright palette for bold text 2024-05-25 16:58:19 +02:00
Mitchell Hashimoto
06bcbe868f renderer: kitty image with y offset should stretch image
Fixes #1784

This was just a misunderstanding of the "spec." When both a y offset
into the image is specified and a height, the image should be stretched.
I mistakingly thought that the image should be offset (even with this
misunderstanding there was a data corruption bug).

This resolves the issue and output matches Kitty.
2024-05-22 15:40:31 -04:00
Qwerasd
ac5725d582 fix(renderer): rebuild font grid and reset shaper cache on hot reload
When hot reloading config with a new font, shaper cache data needs to be
invalidated and the font grid needs to be rebuilt. This change just
makes that happen on all config reloads since it's a rare action so it's
not a performance concern.
2024-05-10 09:39:07 -07:00
Mitchell Hashimoto
61fd7f7fbf renderer/metal: reset cells when font size changes to avoid blank
Fixes #1743
2024-05-09 09:48:08 -07:00
Qwerasd
7e9bdb84a8 renderer/Metal: cell Contents asserts 2024-05-07 21:19:22 -04:00
Qwerasd
c801e28c39 renderer/Metal: cell Contents tests 2024-05-07 21:13:50 -04:00
Qwerasd
4f26eb203b renderer/Metal: cell Contents cleanup
Cleaned up naming, some logic changes, added comments.
2024-05-07 20:46:20 -04:00
Qwerasd
adf211f5d5 renderer/Metal: ArrayList cell Contents rows
This will allow for unlimited glyphs per row, eliminating the issue run in to with multi-substitution glyphs and combining characters which can result in more glyphs in a row than there are columns.
2024-05-07 19:19:06 -04:00
Qwerasd
dafabe3296 renderer/Metal: improve cell contents tracking
Previous version prevented multiple glyphs from belonging to the same coordinate, which broke quite a few things. This implementation fixes that (and may be more efficient too). Needs clean-up.
2024-05-07 19:19:06 -04:00
Mitchell Hashimoto
165c2d9056 renderer/metal: rebuild full screen when viewport changes 2024-05-07 10:22:12 -07:00
Mitchell Hashimoto
a84314befe renderer/metal: disable bandaid 2024-05-07 09:51:45 -07:00
Mitchell Hashimoto
c2c8660c62 renderer/metal: disable dirty tracking temporarily
While #1731 is not fixed.
2024-05-07 07:26:59 -07:00
Mitchell Hashimoto
4c39739a26 renderer/metal: rebuild all cells on resize 2024-05-06 20:51:55 -07:00
Mitchell Hashimoto
26300447e4 renderer/metal: reset screen dirty flags
I introduced screen dirty flags fairly late, and never reset them. As a
result, dirty tracking basically gets disabled as soon as selection
changes in any form. This happens frequently because _unsetting_
selection also resets selection which happens for various events.
2024-05-06 18:31:26 -07:00
Mitchell Hashimoto
8fdf6b4b64 renderer: add window-vsync option (defaults to false) 2024-05-05 10:18:15 -07:00
Mitchell Hashimoto
ca9689be46 renderer/metal: API to handle macOS display ID changing 2024-05-04 19:40:58 -07:00
Mitchell Hashimoto
6b3cb69101 renderer/metal: clean up some unnecessary state around rebuilds 2024-05-04 19:06:43 -07:00
Mitchell Hashimoto
0836aa7318 renderer: add comment why we have dead code 2024-05-04 14:50:15 -07:00
Mitchell Hashimoto
c56e016ab3 renderer: remove 10ms delay on repaint 2024-05-04 14:50:15 -07:00
Mitchell Hashimoto
b00e7009d7 renderer/metal: do not update frames if cells don't change 2024-05-04 14:50:13 -07:00
Mitchell Hashimoto
92caea6948 renderer/metal: remove unnecessary logs 2024-05-04 14:49:50 -07:00
Mitchell Hashimoto
ac813c9244 renderer/metal: stop/start display link on occlusion 2024-05-04 14:49:50 -07:00
Mitchell Hashimoto
6ae1784f4b renderer/metal: stop display link when we lose focus 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
a40ffad218 renderer/metal: setup display link 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
fe7ff998c9 renderer: move our constant draw timer up to 120fps
Our renderers can now handle it
2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
caaf6a496f renderer: add draw now async wakeup 2024-05-04 14:49:48 -07:00
Mitchell Hashimoto
7c9ce0af73 terminal: Screen selection marks dirty 2024-05-01 20:41:53 -07:00
Mitchell Hashimoto
22702b6941 renderer/metal: re-enable triple buffer 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
b166ca7e30 renderer/Metal: only rebuild rows that are dirty 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
4f2ee95ecd renderer/metal: docs 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
bc0e4c6d8f renderer/metal: don't log 2024-05-01 19:49:50 -07:00
Mitchell Hashimoto
74236d2db6 renderer/metal: log some cache info 2024-05-01 19:49:22 -07:00
Mitchell Hashimoto
406824bcd4 renderer/opengl: use shaper cache 2024-05-01 19:43:48 -07:00
Mitchell Hashimoto
d7de26ef58 renderer/metal: integrate shaping cache 2024-05-01 19:01:08 -07:00
Mitchell Hashimoto
d15b5e3e49 renderer/metal: skip frame update if our cell buffer is too small
See the comment in the diff for when this can happen.
2024-04-29 12:28:17 -07:00
Mitchell Hashimoto
cbc1ec73ed renderer/metal: only delete values from the same array 2024-04-28 14:38:36 -07:00
Mitchell Hashimoto
71b90bb2e0 renderer/metal: font changes needs to reset cell contents 2024-04-28 14:10:54 -07:00
Mitchell Hashimoto
b1f324e87a renderer/metal: frame index must fit up to buffer count 2024-04-28 10:02:07 -07:00