Skip to content

Releases: alexheretic/glyph-brush

0.12.2

24 Aug 11:53
0.12.2
a4c8a2d
Compare
Choose a tag to compare
  • Update rusttype -> 0.7 bringing multithreaded rasterization in the texture cache. This brings a significant reduction in worst case latency in multicore environments.
    name                                    0.6.4 ns/iter    0.7 ns/iter     diff ns/iter   diff %  speedup 
    cache::multi_font_population            8,239,309        2,570,034         -5,669,275  -68.81%   x 3.21 
    cache_bad_cases::moving_text_thrashing  21,589,054       6,691,719        -14,897,335  -69.00%   x 3.23 
    cache_bad_cases::resizing               15,162,054       4,607,499        -10,554,555  -69.61%   x 3.29 
    
  • Improve cache resizing performance using the new rusttype API.

This release is semver compatible with rusttype 0.6.5 & 0.7.

0.12.1

14 Aug 09:49
0.12.1
bc25941
Compare
Choose a tag to compare
  • Filter out of bounds glyphs in VerticalAlign::Center & VerticalAlign::Bottom layouts before texture cache phase as an extra step that reduces later work & gpu texture cache max size requirements.

New benchmarks added for the v-align center & bottom worst-case performance of a very large section only showing a partial amount. Filtering yields a 1.2x speedup.

name                                                control ns/iter  change ns/iter  diff ns/iter   diff %  speedup 
no_cache_render_v_bottom_1_large_section_partially  12,412,793       10,342,991        -2,069,802  -16.67%   x 1.20 
no_cache_render_v_center_1_large_section_partially  12,408,500       10,305,646        -2,102,854  -16.95%   x 1.20
render_v_bottom_1_large_section_partially           3,727            3,747                     20    0.54%   x 0.99 
render_v_center_1_large_section_partially           3,727            3,726                     -1   -0.03%   x 1.00

0.12.0

29 Jun 15:51
0.12.0
6865e2a
Compare
Choose a tag to compare
  • Layout code rework to a much cleaner implementation of layered iterators (#28)
    • Fixes issues with varied sections having inherent soft-breaks between SectionTexts.
    • Remove built in unicode normalization
    • Breaks GlyphPositioner implementations (not much implemented outside this crate afaik). But is now simpler to implement.
    • Add VerticalAlign::Bottom, VerticalAlign::Center (#33)
    • Fix single word larger than bounds issue (#34)
  • Fix BuiltInLineBreaker::AnyCharLineBreaker mishandling byte-indices in some cases.
  • Remove deprecated functions.
  • Support raw gfx render & depth views (#30)
  • Use generic section hashing for GlyphBrush & GlyphCalculator caches. This means the default section hashing can be overridden to a different algorithm if desired (similarly to HashMap).
  • Use seahash by default for section hashing. Previously this was done with an xxHash. Seahash is a little slower for large sections, but faster for small ones. General usage see many small sections & few large ones so seahash seems a better default.

Performance

Worst-case (cache miss) benchmark performance, which is the most important area to improve, is hugely improved by the layout rework. 1.55-2.16x faster than 0.11.

name                                       control ns/iter  change ns/iter  diff ns/iter   diff %  speedup 
no_cache_render_100_small_sections_fully   7,267,231        4,691,164         -2,576,067  -35.45%   x 1.55 
no_cache_render_1_large_section_partially  1,566,127        725,086             -841,041  -53.70%   x 2.16 
no_cache_render_3_medium_sections_fully    4,051,124        1,963,114         -2,088,010  -51.54%   x 2.06 

Best-case (cached) performance changes are generally less important, but the affect of moving from xxHash to seahash can be seen.

name                                       control ns/iter  change ns/iter  diff ns/iter   diff %  speedup 
render_100_small_sections_fully            34,219           24,757                -9,462  -27.65%   x 1.38 
render_1_large_section_partially           2,634            3,972                  1,338   50.80%   x 0.66 
render_3_medium_sections_fully             1,584            1,504                    -80   -5.05%   x 1.05 

0.11.0

23 May 17:59
0.11.0
32d38ce
Compare
Choose a tag to compare
  • Optimise vertex generation using instanced rendering. Improves worst-case performance by 18-50%.
  • Update rusttype -> 0.6 including large texture cache performance improvements.

Overall worst-case (cache miss) benchmark performance is improved by 42-74% compared with gfx-glyph 0.10.2.

name                                       control ns/iter  change ns/iter  diff ns/iter   diff %  speedup 
no_cache_render_100_small_sections_fully   13,989,975       8,051,112         -5,938,863  -42.45%   x 1.74 
no_cache_render_1_large_section_partially  2,377,767        1,643,650           -734,117  -30.87%   x 1.45 
no_cache_render_3_medium_sections_fully    6,116,924        4,318,639         -1,798,285  -29.40%   x 1.42 

0.10.2

27 Apr 16:51
0.10.2
423fa92
Compare
Choose a tag to compare
  • Add GlyphBrush::add_font & GlyphBrush::add_font_bytes

0.10.1

21 Mar 17:24
0.10.1
58cc3c9
Compare
Choose a tag to compare
  • Use rusttype gpu-cache glyph padding to avoid glyph texture artifacts after transforms
  • Use default bilinear filtering to improve transformed glyph rendering
  • Remove unused dependencies

0.10.0

20 Mar 16:27
0.10.0
3388ebe
Compare
Choose a tag to compare
name                                       control ns/iter  change ns/iter  diff ns/iter  diff %  speedup 
no_cache_render_100_small_sections_fully   16,510,001       16,022,255          -487,746  -2.95%   x 1.03 
no_cache_render_1_large_section_partially  4,404,936        4,381,983            -22,953  -0.52%   x 1.01 
no_cache_render_3_medium_sections_fully    11,041,238       10,963,063           -78,175  -0.71%   x 1.01 

0.9.1

10 Mar 12:11
0.9.1
59bdadf
Compare
Choose a tag to compare
  • Switch to xxHashing for section caches
  • Use upstream rusttype::gpu_cache (All changes are upstreamed and released)

Bench change since 0.9.0

name                                       control.stdout ns/iter  change.stdout ns/iter  diff ns/iter   diff %  speedup 
render_100_small_sections_fully            34,236                  33,354                         -882   -2.58%   x 1.03 
render_1_large_section_partially           6,970                   2,535                        -4,435  -63.63%   x 2.75 
render_3_medium_sections_fully             2,165                   1,549                          -616  -28.45%   x 1.40 

0.9.0

14 Feb 10:33
0.9.0
7e5b137
Compare
Choose a tag to compare
  • Fix backtraces in warn logging when re-sizing the glyph texture cache
  • Update rusttype 0.4

0.8.3

13 Feb 18:47
0.8.3
812a406
Compare
Choose a tag to compare

yanked