25 Commits

Author SHA1 Message Date
Robert Ian Hawdon
52790fb92c Added bold-color option 2025-07-06 12:56:43 -07:00
David Rubin
93dcb1954d faster glyph hashing
There are two main improvements being made here. First, we move away from using autohash and instead
use a one-shot strategy similar to the Style hashing. Since the GlyphKey includes the Metrics struct,
which contains quite a few fields, autohash was performing expensive and unnecessary repeated updates.

The second improvement is actually just, not hashing Metrics. By ignoring the Metrics field, we can
fit the rest of the GlyphKey into a 64-bit packed struct and just return that as the hash! It
ends up being unique for each GlyphKey in renderGlyph, and is nearly a zero-cost operation.

This ends up boosting the performance (on my machine at least), from around 560fps to 590fps on the
DOOM-fire benchmark.
2025-06-24 15:47:54 -07:00
Qwerasd
2384bd69cc style: use decl literals
This commit changes a LOT of areas of the code to use decl literals
instead of redundantly referring to the type.

These changes were mostly driven by some regex searches and then manual
adjustment on a case-by-case basis.

I almost certainly missed quite a few places where decl literals could
be used, but this is a good first step in converting things, and other
instances can be addressed when they're discovered.

I tested GLFW+Metal and building the framework on macOS and tested a GTK
build on Linux, so I'm 99% sure I didn't introduce any syntax errors or
other problems with this. (fingers crossed)
2025-05-26 21:50:14 -06:00
Qwerasd
25a708ed98 terminal/style: compare packed styles directly, no cast needed
Woohoo, Zig 0.14!
2025-05-25 22:53:50 -06:00
Mitchell Hashimoto
43467690f3 test 2025-03-12 10:04:17 -07:00
David Rubin
8efa638110 optimize Style.eql using PackedStyle 2024-12-25 00:20:06 -08:00
Mitchell Hashimoto
d7542ec504 terminal: address typos in style struct 2024-12-24 12:08:05 -08:00
David Rubin
5052be3efe add some comments 2024-12-24 10:07:58 -08:00
David Rubin
120a2b9597 optimize Style hashing to be single-shot 2024-12-24 09:35:05 -08:00
Mitchell Hashimoto
67fb7d0bee Fix UB in style hashing by using autoHash, but keep XxHash3
Back out "perf(styles): greatly improve style.hash performance"
This backs out commit 3bfe4cd25ca7a5ae4d4084818b86ada9236b3bb5, but
keeps the hash algorithm as XxHash3 which showed improvements in
performance.
2024-12-24 07:22:31 -08:00
Qwerasd
3bfe4cd25c perf(styles): greatly improve style.hash performance
By switching to one-shot hashing of the raw bytes of the struct with
XxHash3 instead of using `autoHash` with Wyhash, a performance gain of
around 20% can be observed in DOOM-fire-zig.
2024-12-23 22:05:14 -05:00
Marijn Besseling
4496e7d314 implement overline decoration (SGR 53/55) 2024-10-21 08:36:08 -04:00
Mitchell Hashimoto
51c05aeb99 terminal: RefCountedSet doesn't need to pass base anymore 2024-07-05 21:39:07 -07:00
Mitchell Hashimoto
cb1caff018 terminal: refcountedset passes base memory to all context funcs
This enables these funcs to access memory offsets that may be present in
set items, which is possible since the set itself is in an offset-based
structure.
2024-07-05 21:39:07 -07:00
Mitchell Hashimoto
2a7755c515 terminal: hyperlink data structures beginning, alloc into page 2024-07-05 21:39:07 -07:00
Mitchell Hashimoto
d019bacb18 terminal: RefCountedSize should use usize for byte math
Related to #1873
2024-06-24 10:39:55 -07:00
Mitchell Hashimoto
eebc7d4c3a small stylistic changes 2024-06-23 09:44:54 -07:00
Qwerasd
9741b3a18c perf: introduce RefCountedSet structure, use it for Style.Set 2024-06-13 22:59:03 -04:00
Mitchell Hashimoto
41afb62903 very minor nitpicks 2024-05-25 14:19:23 -07:00
Jan200101
94a7166028 terminal: support using the bright palette for bold text 2024-05-25 16:58:19 +02:00
Mitchell Hashimoto
8c148fc32e terminal: use std.meta.eql for equality checks 2024-03-22 21:04:05 -07:00
Mitchell Hashimoto
0bc831d19f terminal: relax grapheme integrity check for fast paths 2024-03-22 20:28:22 -07:00
Mitchell Hashimoto
731f917350 terminal: add Screen integrity checks, pepper them through cursors 2024-03-22 20:28:22 -07:00
Mitchell Hashimoto
c61de49082 renderer/metal: port 2024-03-22 20:27:44 -07:00
Mitchell Hashimoto
9b4ab0e209 zig build test with renamed terminal package 2024-03-22 20:27:44 -07:00