perf(text): fold Ensure+Lookup into FontAtlas::EnsureAndGet (#53)
Per glyph, ShapeText did cache_.contains(key) (in Ensure) then cache_.find(key) (in Lookup) — two independent hashes + node-chases of the same key. Add EnsureAndGet returning const Glyph* with a single find, insert-on-miss, returning &it->second. It returns nullptr only on ShelfPlace failure, preserving the existing `if (g==nullptr) continue;` behavior. Ensure now delegates to it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
29eacfb460
commit
77a6501ced
3 changed files with 13 additions and 6 deletions
|
|
@ -66,6 +66,11 @@ export namespace Crafter {
|
|||
std::uint8_t* PixelPtr() noexcept;
|
||||
|
||||
bool Ensure(Font& font, std::uint32_t codepoint);
|
||||
// Ensure the glyph is in the atlas and return a pointer to it in one
|
||||
// hash+probe. Returns nullptr only when a brand-new glyph cannot be
|
||||
// placed (ShelfPlace failure); a glyph with no SDF coverage (e.g.
|
||||
// space) still returns a valid pointer.
|
||||
const Glyph* EnsureAndGet(Font& font, std::uint32_t codepoint);
|
||||
const Glyph* Lookup(Font& font, std::uint32_t codepoint) const;
|
||||
void Update(GraphicsCommandBuffer cmd);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue