353 Commits

Author SHA1 Message Date
Mitchell Hashimoto
239a517710 Revert "renderer/metal: start extracting "visible" resources"
This reverts commit 0c1d288142a0d0bf31be13999e89bdc08bd18fb9.
2024-02-13 21:57:55 -08:00
Mitchell Hashimoto
387e5b242e Revert "renderer/metal: cache buf cells"
This reverts commit 9f6db11b95f1bfed79f9b653f2ffb2be81cfc158.
2024-02-13 21:57:50 -08:00
Mitchell Hashimoto
b602eba61b Revert "renderer/metal: move shaders to cached state"
This reverts commit bef83446d1cff42946c2a242e3c645350d00c574.
2024-02-13 21:57:49 -08:00
Mitchell Hashimoto
e10e45a935 Revert "renderer/metal: free resources when occluded"
This reverts commit b5d543705de4ea42407db9e2d49ae03f3ae5cf14.
2024-02-13 21:57:46 -08:00
Mitchell Hashimoto
b5d543705d renderer/metal: free resources when occluded 2024-02-13 20:07:41 -08:00
Mitchell Hashimoto
bef83446d1 renderer/metal: move shaders to cached state 2024-02-13 19:37:10 -08:00
Mitchell Hashimoto
9f6db11b95 renderer/metal: cache buf cells 2024-02-13 19:10:58 -08:00
Mitchell Hashimoto
0c1d288142 renderer/metal: start extracting "visible" resources 2024-02-13 09:44:40 -08:00
Mitchell Hashimoto
e1908f7cc7 renderer: handle renderer pause/redraw on occlusion 2024-02-13 09:21:04 -08: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
07ebd2e6c0 renderer: only highlight link directly under mouse on line
Related to #1398
2024-02-01 14:01:42 -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
Mitchell Hashimoto
43c105c363 renderer: constrain emoji to cell width
Fixes #1402
2024-01-28 09:07:49 -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
75ca29da59 renderer/link: fix test 2024-01-27 19:34:05 -08:00
Mitchell Hashimoto
3efe88c85c input: add link highlight always/hover w/ mods 2024-01-27 19:07:49 -08:00
Mitchell Hashimoto
ae11cc9042 add a new highlight state that requires modifiers 2024-01-27 19:03:03 -08:00
Mitchell Hashimoto
1907c58972 renderer: consider powerline box glyphs whitespace for PUA scaling
This adds to the heuristics introduced for #1071. Please read that issue
and associated PRs in their entirety to understand this commit.

This extends our concept of "whitespace" to include powerline box
glyphs. We don't want to constrain nerd symbols next to powerline box
glyphs because box glyphs are often used to style and contain nerd
glyphs. For example, its common to see a right-facing semi-circle, then
a nerd font glyph, then a left-facing semi-circle to create a
pill-shaped label.

This allows those nerd font symbols to be rendered full size. Test
script below (copy the bytes):

    printf "󰃰\n"
    printf "󰃰 \n"
    printf "󰃰\n"
2024-01-25 15:35:48 -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
5622ab370f renderer/metal,opengl: premult alpha for fragment shaders for images
Fixes #1346
2024-01-21 14:07:16 -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
df09c21103 apprt/embedded: compile for Linux 2024-01-18 08:44:56 -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
62a2fdcf88 renderer/opengl: set texture size for constrained glyphs
This wasn't setting the texture size so the glyphs would show up blank
(zero texture size).
2024-01-15 15:04:05 -08:00
Mitchell Hashimoto
adb7958f61 remove tracy usage from all files 2024-01-13 15:06:08 -08:00
Mitchell Hashimoto
fc30fdfb2b renderer: do not free new configuration on change
Fixes #1271
2024-01-09 21:05:27 -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
ba45e4120e Merge pull request #1248 from der-teufel-programming/main
WIP: Update Ghostty to use the new build system API
2024-01-07 15:34:38 -08:00
Mitchell Hashimoto
62e5234da4 renderer: for constrained cells, offset was being doubled
This helps better preserve the centerline for constrained glyphs
2024-01-07 15:02:56 -08:00
Mitchell Hashimoto
f7c558e733 renderer: constrain dingbats category to cell size
Dingbats are generally symbolic glyphs that frequently overflow the
cell. Their defined codepoint width is "1" so they take one cell but
very often overflow to the next.

This extends the previously created logic for Nerd Font symbols such
that when a dingbat is next to whitespace, we allow it to use the full
size, but when a dingbat is next to an occupied cell we constrain it to
the cell size.
2024-01-07 14:54:15 -08:00
Krzysztof Wolicki
f917be968d Merge branch 'mitchellh:main' into main 2024-01-07 19:13:06 +01: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
Krzysztof Wolicki
710b02a2ab Merge branch 'main' of github.com:mitchellh/ghostty 2024-01-06 05:42:55 +01:00
Mitchell Hashimoto
be176bb8bd renderer: reload background, foreground, cursor-color at runtime
Fixes #1212
2024-01-04 21:47:12 -08:00
Krzysztof Wolicki
0842e572df Update usage of testing.expectEqual 2024-01-04 13:30:34 +01: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
Mitchell Hashimoto
a8419754b9 renderer/opengl: allow OpenGL 4.1/4.2 2023-12-18 13:59:33 -08:00
Mitchell Hashimoto
4ba44fb8c1 renderer/opengl: error if OpenGL version is too old
This returns an error from the renderer implementation. This error just
crashes Ghostty currently with a stack trace. We can handle the error
later but for now it makes it a lot more obvious why certain error
scenarios happen.
2023-12-18 12:51:53 -08:00
Chris Marchesi
fad0b9a49c renderer: don't constrain Powerline glyphs
This adds the Powerline glyphs to the exemptions from the PUA
constraints put in as a part of #1110.

While Powerline is considered to part of the Nerd Font group, the
constraint behavior seems to cause issues with some setups - e.g.
powerlevel10k prompts where characters immediately follow a Powerline
character.

Only the codes given as shapes below are included:
  https://github.com/ryanoasis/powerline-extra-symbols/blob/master/img/fontforge.png

Fixes #1113, where the issue can be seen.
2023-12-16 23:18:49 -08:00
Mitchell Hashimoto
9178fabc5d renderer: also constrain PUA chars if preceded by PUA 2023-12-16 20:18:14 -08:00