address many fontmem todos

This commit is contained in:
Mitchell Hashimoto
2024-04-06 20:00:22 -07:00
parent 3b0b9c2cfd
commit e3402cef4d
4 changed files with 4 additions and 36 deletions

View File

@ -18,9 +18,6 @@
//! reinitialized and all surfaces should switch over to using that one. //! reinitialized and all surfaces should switch over to using that one.
const SharedGrid = @This(); const SharedGrid = @This();
// TODO(fontmem):
// - consider config changes and how they affect the shared grid.
const std = @import("std"); const std = @import("std");
const assert = std.debug.assert; const assert = std.debug.assert;
const Allocator = std.mem.Allocator; const Allocator = std.mem.Allocator;

View File

@ -174,12 +174,10 @@ pub const Modifier = union(enum) {
const autoHash = std.hash.autoHash; const autoHash = std.hash.autoHash;
autoHash(hasher, std.meta.activeTag(self)); autoHash(hasher, std.meta.activeTag(self));
switch (self) { switch (self) {
// floats can't be hashed directly so we round it to the // floats can't be hashed directly so we bitcast to i64.
// nearest int and then hash that. This is not perfect but // for the purpose of what we're trying to do this seems
// hash collisions due to the modifier being wrong are really // good enough but I would prefer value hashing.
// rare so we should fix this up later. .percent => |v| autoHash(hasher, @as(i64, @bitCast(v))),
// TODO(fontmem): make better
.percent => |v| autoHash(hasher, @as(i64, @intFromFloat(v))),
.absolute => |v| autoHash(hasher, v), .absolute => |v| autoHash(hasher, v),
} }
} }

View File

@ -1363,21 +1363,6 @@ fn prepKittyGraphics(
/// Update the configuration. /// Update the configuration.
pub fn changeConfig(self: *Metal, config: *DerivedConfig) !void { pub fn changeConfig(self: *Metal, config: *DerivedConfig) !void {
// On configuration change we always reset our font group. There
// are a variety of configurations that can change font settings
// so to be safe we just always reset it. This has a performance hit
// when its not necessary but config reloading shouldn't be so
// common to cause a problem.
//
// TODO(fontmem): we no longer do this. the surface should handle
// font changes, create a new grid for us, and send it via message
// passing or something.
//
// self.font_group.reset();
// self.font_group.group.styles = config.font_styles;
// self.font_group.atlas_greyscale.clear();
// self.font_group.atlas_color.clear();
// We always redo the font shaper in case font features changed. We // We always redo the font shaper in case font features changed. We
// could check to see if there was an actual config change but this is // could check to see if there was an actual config change but this is
// easier and rare enough to not cause performance issues. // easier and rare enough to not cause performance issues.

View File

@ -1530,18 +1530,6 @@ fn gridSize(self: *const OpenGL, screen_size: renderer.ScreenSize) renderer.Grid
/// Update the configuration. /// Update the configuration.
pub fn changeConfig(self: *OpenGL, config: *DerivedConfig) !void { pub fn changeConfig(self: *OpenGL, config: *DerivedConfig) !void {
// On configuration change we always reset our font group. There
// are a variety of configurations that can change font settings
// so to be safe we just always reset it. This has a performance hit
// when its not necessary but config reloading shouldn't be so
// common to cause a problem.
//
// TODO(fontmem): see Metal
// self.font_group.reset();
// self.font_group.group.styles = config.font_styles;
// self.font_group.atlas_greyscale.clear();
// self.font_group.atlas_color.clear();
// We always redo the font shaper in case font features changed. We // We always redo the font shaper in case font features changed. We
// could check to see if there was an actual config change but this is // could check to see if there was an actual config change but this is
// easier and rare enough to not cause performance issues. // easier and rare enough to not cause performance issues.