267 Commits

Author SHA1 Message Date
Mitchell Hashimoto
d12e3db599 renderer/metal: dedicated cell fg shader 2024-04-22 10:58:23 -07:00
Mitchell Hashimoto
e8b623e829 renderer/metal: dedicated cell bg shader 2024-04-22 10:43:29 -07:00
Mitchell Hashimoto
7a6a2b0752 renderer/metal: don't draw with zero instances 2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
8093088515 renderer/metal: move more metal objects into GPUState 2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
20bfbd9b2e renderer/metal: implement triple-buffering 2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
2dc8ae2ed7 renderer/metal: move more frame state to the frame 2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
1d41a3ccff renderer/metal: start setting up per-frame state 2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
4398896905 renderer/opengl: strikethrough as sprite 2024-04-22 10:30:27 -07:00
Mitchell Hashimoto
ad08842e86 renderer/metal: remove strikethrough support from GPU 2024-04-22 10:26:51 -07:00
Mitchell Hashimoto
0f348e809e font: strikethrough uses sprite rendering 2024-04-22 10:25:33 -07:00
Mitchell Hashimoto
06df9b7867 font: remove old files 2024-04-06 20:10:57 -07:00
Mitchell Hashimoto
e3402cef4d address many fontmem todos 2024-04-06 20:00:22 -07:00
Mitchell Hashimoto
506ba854fa core: font size changes work 2024-04-06 19:33:49 -07:00
Mitchell Hashimoto
b8d11e57c9 renderer/Metal: change font size works again 2024-04-06 10:55:58 -07:00
Mitchell Hashimoto
6aa659c4b5 renderer/metal: re-enable preedit rendering 2024-04-05 21:39:39 -07:00
Mitchell Hashimoto
29b172b3ac renderer/metal: use new atlas APIs 2024-04-05 21:13:10 -07:00
Mitchell Hashimoto
c45747bf1f font: implement many rendering, caching functions for SharedGrid 2024-04-05 20:50:35 -07:00
Mitchell Hashimoto
329697779a renderer/metal: convert more 2024-04-05 18:51:26 -07:00
Mitchell Hashimoto
d6c048f1e3 renderer/metal: picking away at font group => grid changes 2024-04-05 15:35:16 -07:00
Mitchell Hashimoto
fd9280429e renderer: re-enable URL underlining 2024-03-22 20:28:05 -07:00
Mitchell Hashimoto
d1faa37b65 renderer/opengl: convert 2024-03-22 20:28:01 -07:00
Mitchell Hashimoto
a697e97e08 renderer/metal: fix kitty image offset on screen 2024-03-22 20:28:01 -07:00
Mitchell Hashimoto
0a3f431d1b renderer/metal: almost bring back kitty images, some bugs 2024-03-22 20:28:00 -07:00
Mitchell Hashimoto
9eeaa0d0a9 renderer/metal: re-enable selection awareness for shaping 2024-03-22 20:28:00 -07:00
Mitchell Hashimoto
75255780e9 renderer/metal: show selections 2024-03-22 20:27:55 -07:00
Mitchell Hashimoto
ff0e07a907 renderer/metal: re-enable the cursor, it works 2024-03-22 20:27:52 -07:00
Mitchell Hashimoto
c61de49082 renderer/metal: port 2024-03-22 20:27:44 -07:00
Mitchell Hashimoto
b48d24a546 update zig 2024-03-13 09:14:12 -07:00
Qwerasd
e8460fa2c2 fix(renderer): allocate enough room for fg cells
Previously encountered OOB when screen filled with cells with glyphs,
underlines, and strikethroughs. Also clarified comment slightly.
2024-03-03 20:26:51 -05:00
Jeffrey C. Ollie
18005ffa35 Fix shader time uniforms (#1462)
* fix shader time uniforms

* renderer/metal: one typo

---------

Co-authored-by: Mitchell Hashimoto <mitchell.hashimoto@gmail.com>
2024-02-04 20:50:07 -08:00
Mitchell Hashimoto
7b3deb13d8 renderer/metal: apply layerContentsPlacement on macOS to fix stretching
Fixes #42
2024-02-02 08:39:08 -08:00
Mitchell Hashimoto
6de4533afb core: handle mouse capture events with link highlighting
Fixes #1416

At a high level, the issue is that when mouse capture is enabled (i.e. in
neovim), "shift" escapes the capture. So "cmd+shift" is equal to "cmd"
which doesn't get sent to the TUI program and so on. For link
highlighting which now requires "cmd" (super) is held, we were sending
"cmd+shift" to the renderer so we weren't checking for links.

So the core of this commit is respecting this scenario and stripping the
shift modifier.

This commit also found that when the mouse wasn't over a link, we were
always checking and highlighting links on line one of the visible
screen. This bug is fixed and should also result in a very slight
performance improvement on rendering in all cases.
2024-02-01 09:19:39 -08:00
Leaf Garland
d1d7665510 Default to background color for cursor-text
Previously the default was black which doesn't work so well if the
cursor block is dark.
2024-01-28 20:20:40 +13:00
Mitchell Hashimoto
ae11cc9042 add a new highlight state that requires modifiers 2024-01-27 19:03:03 -08:00
Mitchell Hashimoto
aa147413c7 renderer/metal: only set shared texture mode on aarch64
This setting is only supported on aarch64.
2024-01-23 14:09:48 -08:00
jcalabro
bc972a4c44 set the atlas texture memory storage mode to shared 2024-01-22 21:24:03 -05:00
Mitchell Hashimoto
7c8b156960 kitty images: support pngs with greyscale/alpha (bpp=2)
Fixes #1355
2024-01-22 14:32:27 -08:00
Mitchell Hashimoto
344c2db097 renderer/metal: initialize layer in init, handle iOS layer 2024-01-18 18:51:01 -08:00
Mitchell Hashimoto
95f729a5fc renderer/metal: only set wantsLayer for AppKit 2024-01-18 15:36:06 -08:00
Mitchell Hashimoto
26e6e8cec8 apprt/embedded: add iOS platform with uivew 2024-01-18 15:03:03 -08:00
Mitchell Hashimoto
01afa293c8 apprt/embedded: fix initialization on macOS 2024-01-18 08:55:03 -08:00
Mitchell Hashimoto
90ea950d71 renderer/metal: use a semaphore to protect deinit while waiting for GPU 2024-01-16 12:18:55 -08:00
Mitchell Hashimoto
c28f2e36cc renderer/metal: do not be unhealthy by default :) 2024-01-16 11:28:01 -08:00
Mitchell Hashimoto
376345dcae macos: detect renderer health failures and show error view 2024-01-16 11:27:18 -08:00
Mitchell Hashimoto
0277a0fb4c renderer/metal: detect frame commit failures and notify surface 2024-01-16 10:51:36 -08:00
Mitchell Hashimoto
96d33fef20 custom shader animation can be set to "always" to always remain active
Fixes #1225

The `custom-shader-animation` configuration can now be set to "always"
which keeps animation active even if the terminal is unfocused.
2024-01-09 09:21:15 -08:00
Mitchell Hashimoto
f447e6f9df font: insert blank cells for multi-cell ligatures for styling
Up to this point, every font I've experienced with ligatures has
replaced the codepoints that were replaced for combining with a space.
For example, if a font has a ligature for "!=" to turn it into a glyph,
it'd shape to `[not equal glyph, space]`, so it'd still take up two
cells, allowing us to style both.

Monaspace, however, does not do this. It turns "!=" into `[not equal
glyph]` so styles like backgrounds, underlines, etc. were not extending.

This commit detects multi-cell glyphs and inserts synthetic blank cells
so that styling returns. I decided to do this via synthetic blank cells
instead of introducing a `cell_width` to the shaper result because this
simplifies the renderers to assume each shaper cell is one cell. We can
change this later if we need to.

Annoyingly, this does make the shaper slightly slower for EVERYONE to
accomodate one known font that behaves this way. I haven't benchmarked
it but my belief is that the performance impact will be negligible
because to figure out cell width we're only accessing subsequent cells
so they're likely to be in the CPU cache and also 99% of cells are going
to be width 1.
2024-01-06 19:22:25 -08:00
Mitchell Hashimoto
be176bb8bd renderer: reload background, foreground, cursor-color at runtime
Fixes #1212
2024-01-04 21:47:12 -08:00
Mitchell Hashimoto
98237b112f config: RepeatableString is null-terminated now
This makes it easier for these values to interface with C APIs
2024-01-03 09:24:15 -08:00
Gregory Anders
060bdff117 terminal: track palette color in cell state
Rather than immediately converting a color palette index into an RGB
value for a cell color, when a palette color is used track the palette
color directly in the cell state and convert to an RGB value in the
renderer.

This causes palette color changes to take effect immediately instead of
only for newly drawn cells.
2024-01-02 22:34:06 -06:00