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