Behdad Esfahbod
ea2dd54b68
[map] Place item hash between key and value, not after them
...
This way if only one of key and value is 64bit (eg. pointer), and other is 32bit,
the whole item will fit in 128bit, whereas before it would have been bumped up to
196 if only value was 64bit (a common use-case for us.)
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
ec6cefc46a
[repacker] Simplify map types
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
cbcdf442c5
[map] Speed up map's own hash()
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
de33ef61b7
[map] Add TODO item
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
fc5739ea90
[test-map] Whitespace
2022-05-30 05:54:20 -06:00
Behdad Esfahbod
3e64abd5d6
Merge pull request #3613 from harfbuzz/threads-test
...
Threads test
2022-05-30 05:52:21 -06:00
Behdad Esfahbod
efa4385b16
Merge pull request #3615 from harfbuzz/gir-freetype
...
[gi] Add freetype2-2.0 for g-i-r includes
2022-05-30 05:40:56 -06:00
Behdad Esfahbod
f4a8b70016
More member initialization
2022-05-30 05:30:37 -06:00
Behdad Esfahbod
484cc18732
[test-shape-threads] Set language
2022-05-30 05:09:53 -06:00
Behdad Esfahbod
315ef83b4e
Revert "Revert "[ot-lang] Use atomic int for cache""
...
This reverts commit c56ce8681c
.
The revert was not intentional. Ouch!
2022-05-30 05:09:26 -06:00
Khaled Hosny
3427511988
[gi] Add freetype2-2.0 for g-i-r includes
...
Fixes the warnings:
../src/hb-ft.cc:810: Warning: HarfBuzz: hb_ft_face_create: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:886: Warning: HarfBuzz: hb_ft_face_create_cached: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:855: Warning: HarfBuzz: hb_ft_face_create_referenced: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:920: Warning: HarfBuzz: hb_ft_font_create: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:1029: Warning: HarfBuzz: hb_ft_font_create_referenced: argument ft_face: Unresolved type: 'FT_Face'
../src/hb-ft.cc:240: Warning: HarfBuzz: hb_ft_font_get_face: return value: Unresolved type: 'FT_Face'
../src/hb-ft.cc:262: Warning: HarfBuzz: hb_ft_font_lock_face: return value: Unresolved type: 'FT_Face'
2022-05-30 04:48:22 +02:00
Behdad Esfahbod
97aa1ce6ba
[gsubgpos] Move some member initialization
2022-05-29 10:56:41 -06:00
Behdad Esfahbod
0bb4c1f021
[cache] Set default values for cache template parameters
2022-05-29 10:23:19 -06:00
Behdad Esfahbod
3957d2927d
[layout] Remove stale comment
2022-05-29 07:30:58 -06:00
Behdad Esfahbod
b6fed6f711
[set-digest] Minor don't use !! when auto bool conversion happens
2022-05-29 06:33:34 -06:00
Behdad Esfahbod
371e14d99c
Combine uses of map has() then get() with has(.., &..)
2022-05-28 13:40:30 -06:00
Behdad Esfahbod
b99efa6c8d
[map] Minor: use const reference in has()
2022-05-28 05:16:34 -06:00
Behdad Esfahbod
24d5a11dcb
[bimap] Add unlikely and minor optimization in is_empty()
2022-05-28 05:14:16 -06:00
Behdad Esfahbod
c56ce8681c
Revert "[ot-lang] Use atomic int for cache"
...
This reverts commit d61b207491
.
2022-05-28 04:25:51 -06:00
Behdad Esfahbod
63bc6be0cf
Merge pull request #3603 from harfbuzz/font-serial
...
Add font serial API
2022-05-27 08:25:22 -06:00
Behdad Esfahbod
e2aa29907d
[set] Use relaxed atomic ops for last_page_index
...
Since iterating a set from multiple threads is supported.
2022-05-27 07:06:02 -06:00
Behdad Esfahbod
d61b207491
[ot-lang] Use atomic int for cache
...
Fixes(?) https://github.com/harfbuzz/harfbuzz/issues/3612
2022-05-26 18:24:43 -06:00
Behdad Esfahbod
67bd147c73
Merge pull request #3610 from googlefonts/subset_create_tables_face
...
[subset] fix subsetting of faces created via hb_face_create_for_tables.
2022-05-26 05:16:07 -06:00
Behdad Esfahbod
a719e67887
[ot-font] Use atomic ops for cache serial number
...
This guarantees the cache is coherent.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
5248b2567b
[ot-font/h-advance] Adjust varStore cache condition
...
This gives best performance for short strings, now that we have a h-advance cache as well.
The en-words benchmark in particular, now ot-font is faster than ft.
Second to last line is of interest:
Before:
-----------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------------------
BM_Shape/en-words.txt/Roboto-Regular.ttf/hb 29.8 ms 29.8 ms 23
BM_Shape/en-words.txt/Roboto-Regular.ttf/ft 30.4 ms 30.4 ms 23
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/hb 16.3 ms 16.3 ms 43
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/ft 16.5 ms 16.5 ms 42
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/hb 18.0 ms 18.0 ms 39
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/ft 17.8 ms 17.8 ms 39
After:
behdad@Behdads-MacBook-Pro harfbuzz % ninja -Cbuild && build/perf/benchmark-shape --benchmark_filter=en-words
-----------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------------------
BM_Shape/en-words.txt/Roboto-Regular.ttf/hb 30.0 ms 30.0 ms 23
BM_Shape/en-words.txt/Roboto-Regular.ttf/ft 30.3 ms 30.3 ms 23
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/hb 16.3 ms 16.3 ms 43
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/ft 16.4 ms 16.4 ms 43
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/hb 17.6 ms 17.6 ms 40
BM_Shape/en-words.txt/SourceSerifVariable-Roman.ttf/var/ft 17.8 ms 17.8 ms 39
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
12fff976b6
[ot-var] Use atomic int for cached-serial
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
0919eaa6e8
[ot-font] Remove lock around cache
...
Not needed.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
3548b6025f
[ot-font] Cache h-advances for variable fonts
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
39a07bf3eb
[ot-font] Rename cache to varStore_cache
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
970e03ecae
[ot-font] Add a hb_ot_font_t struct
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
80c49933c6
[hb-ft] Adjust serial signature
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
56e0ff9ea1
[ft] If hb_font changed, update FT_Face
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2270
Rather untested.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
d0de389de8
[font] Fix test
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
a2015cd300
[font] Add a separate serial_coords
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
8629df188a
[ft] Discard advance cache if font changed
...
Uses newly added font serial API.
Part of https://github.com/harfbuzz/harfbuzz/issues/2270
But doesn't set new coords on the FT_Face. That's a lot more
work :(.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
48db1c9583
[font] Add serial API
...
New API:
+ hb_font_get_serial()
+ hb_font_changed()
Fixes https://github.com/harfbuzz/harfbuzz/issues/2426
Unused internally as of now.
2022-05-26 05:02:50 -06:00
Behdad Esfahbod
efa2a5796e
[map] Add hb_map_copy()
...
New API:
+ hb_map_copy()
2022-05-26 05:01:57 -06:00
Behdad Esfahbod
3b28cff9c0
[cff1] Fix null dereference on memory alloc failure
2022-05-26 04:42:17 -06:00
Behdad Esfahbod
8df9aba997
Actually try to fix null-size undefined behavior
...
Related to:
https://github.com/harfbuzz/harfbuzz/pull/2067
https://bugzilla.mozilla.org/show_bug.cgi?id=1577584
2022-05-26 03:59:21 -06:00
Garret Rieger
e00c7358a0
[subset] special case table presence check for hb_face_create_from_tables faces.
2022-05-25 22:39:00 +00:00
Garret Rieger
6a149a09e7
[subset] fix use of lazy static constructor.
2022-05-25 22:22:35 +00:00
Garret Rieger
d4c7939eb7
[subset] use a list of known tables instead of handled tables.
2022-05-25 22:11:32 +00:00
Garret Rieger
3472f73b79
[subset] also include no subset tables when guessing which tables are present.
2022-05-25 21:52:48 +00:00
Garret Rieger
9564d98739
[subset] fix subsetting of faces created via hb_face_create_for_tables.
...
Fixes #3609 .
2022-05-25 21:16:37 +00:00
Behdad Esfahbod
6010feeeb5
[varStore] Rename variable as per review
...
https://github.com/harfbuzz/harfbuzz/pull/3605
2022-05-24 09:01:02 -06:00
Behdad Esfahbod
3eb7eff487
Remove varstore cache use if HB_NO_VAR
2022-05-21 15:25:53 -06:00
Behdad Esfahbod
099482a37a
[ot-font] Cache v_advance varstore as well
2022-05-21 15:24:23 -06:00
Behdad Esfahbod
d9acc045f1
[VarStore] Sprinkle cache_t type around
...
It's available so no need to use void*.
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
da38312e42
[VarStore] Pepper cache with likely()
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
cf8f00e354
[VarStore] Don't use NAN
...
Is faster.
With this, I'm seeing 25 to 28% speedup in glyph_h_advances benchmark
of benchmark-font for var/hb tests.
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
5336ba70f6
[HVAR] Cache VarStore region scalars
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
880f50f7e4
Refactor varstore cache
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
f2a2fb91a3
[GPOS] Cache VarStore region scalars
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
5fbc70c59b
[VarStore] Add cache API
2022-05-21 15:12:14 -06:00
Behdad Esfahbod
05e82aa12e
[ft] Add missing lock to kerning function
2022-05-20 17:36:59 -06:00
Behdad Esfahbod
4ea2725704
[set/map] Expose hash API publicly
...
New API:
+ hb_set_hash()
+ hb_map_hash()
2022-05-20 13:19:48 -06:00
Behdad Esfahbod
2e186d9f24
[buffer] Improve hash function of segment_properties_t
2022-05-20 13:19:48 -06:00
Khaled Hosny
aee123fc83
4.3.0
2022-05-20 21:07:25 +02:00
Behdad Esfahbod
975a5f9194
[array] Use hb_memcmp instead of memcmp
...
Fixes ubsan error.
2022-05-20 12:34:49 -06:00
Behdad Esfahbod
55804e8d68
[hb-ft] Minor rearrange of struct members
...
To make clear what members the lock protects.
2022-05-20 11:40:44 -06:00
Garret Rieger
cbf8f44c9b
[subset-perf] swap instead of copying vertice's when reordering during sort.
2022-05-20 09:41:18 -06:00
Garret Rieger
b32ca2a292
[subset-perf] remove sort_kahn from repacker.
...
Without an optimized FIFO queue implementation it's nearly as slow as the now optimized sort_shortest_distance.
2022-05-20 09:41:18 -06:00
Behdad Esfahbod
4266cf3be2
[array] Specialize operator== for bytes_t and ubytes_t
2022-05-19 18:16:54 -06:00
Behdad Esfahbod
6eaa22e9d7
[serialize] Reduce link_t size from 16 to 12
2022-05-19 18:16:54 -06:00
Behdad Esfahbod
30ba9a39e2
[vector] Add emplacing push implementation
2022-05-19 18:16:48 -06:00
Garret Rieger
73b8360dcf
[subset] fix fuzzer found underflow when heap push fails.
...
Fixes https://oss-fuzz.com/testcase-detail/5148625505746944 .
2022-05-19 17:02:34 -06:00
Behdad Esfahbod
f1bf14ea89
Revert "[set] Cache hash value"
...
This reverts commit 44952bcc25
.
While we investivate https://github.com/harfbuzz/harfbuzz/issues/3599
2022-05-19 16:49:27 -06:00
Behdad Esfahbod
b4d1ec310c
[algs] Declare coerce() as constexpr
2022-05-19 16:06:21 -06:00
Behdad Esfahbod
2fdb7616f5
[map Further adjust hash function
2022-05-19 16:00:43 -06:00
Behdad Esfahbod
01fc90b68c
[map] Adjust hash function
2022-05-19 16:00:06 -06:00
Behdad Esfahbod
a47b0aebf5
[vector] Fix remove() implementation
...
test-vector under valgrind happy now.
2022-05-19 15:52:16 -06:00
Behdad Esfahbod
3bd755c32d
[test-vector] Test remove()
...
Currently buggy. Valgrind confirms.
2022-05-19 15:51:18 -06:00
Behdad Esfahbod
58f848daa8
[set/map] Adjust hash function return type
2022-05-19 15:43:19 -06:00
Behdad Esfahbod
6544fc284f
[vector] Add further copy implementation
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
c19f116952
[meta] Remove non-existing gcc4 trait implementation
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
679b900e9b
[meta] Fix gcc4 trait implementation
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
fb77f48ffd
[vector] Optimize vector copy
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
28b44ac46a
[set] Switch set copy to vector operator =
...
Slows it down currently.
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
37d3275dec
[test-vector] Enable disabled test
...
This seems to work already.
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
544ffb913e
[set] Adjust grow_vector condition
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
0623aa598b
[benchmark-set] Add benchmark for set copy
2022-05-19 15:43:15 -06:00
Behdad Esfahbod
44952bcc25
[set] Cache hash value
2022-05-19 14:02:48 -06:00
Behdad Esfahbod
844ac328e4
[set] Fix hb_set_t hash stability
2022-05-19 13:54:31 -06:00
Behdad Esfahbod
2d0b1248b2
[test-map] Test hb_set_t hash stability
...
Fails currently.
2022-05-19 13:53:53 -06:00
Behdad Esfahbod
561e02fefb
[map] Make hb_map_t hashable
2022-05-19 13:41:53 -06:00
Behdad Esfahbod
ad17699089
[map] Add is_equal() / towards making hb_map_t hashable
...
New API:
+ hb_map_is_equal()
2022-05-19 13:36:12 -06:00
Behdad Esfahbod
14a24d8e3f
[vector] Make hb_vector_t hashable
2022-05-19 13:04:06 -06:00
Behdad Esfahbod
124f9aeb9b
[set] Make hb_set_t hashable
2022-05-19 12:58:02 -06:00
Garret Rieger
3ab2c7935f
[subset-perf] Signficiantly speed up ClassDef*::subset.
...
Eliminates the usage of a glyph -> klass hash map and replaces it with a vector storing the mapping. This allows us to use the vector directly as the iterator driving the serialize. Approximately 1% speedup for Noto Nastaliq.
2022-05-19 12:37:28 -06:00
David Corbett
e3e685e5ee
[ot-tags] Fix `min_subtag_len` calculations
2022-05-18 18:30:01 -06:00
Garret Rieger
0b1c2ff96a
[subset-perf] Remove extra map lookup in ClassDef subset methods.
2022-05-18 18:25:36 -06:00
Garret Rieger
13ace77f1d
[subset-perf] Use glyph_map instead of set in ClassDefFormat.
2022-05-18 18:25:36 -06:00
Garret Rieger
adae2f2272
[subset-perf] Cache a glyph map for gsub.
...
This allows us in some cases to avoid using glyph_set_gsub as a filter.
2022-05-18 18:25:36 -06:00
Behdad Esfahbod
202e6c4699
[subset] Remove unnecessary test
2022-05-18 17:12:43 -06:00
Behdad Esfahbod
cedf739646
Add some commented-out code
2022-05-18 16:53:26 -06:00
Behdad Esfahbod
6b62c10f02
[priority-queue] Remove old init/fini
2022-05-18 16:27:54 -06:00
Behdad Esfahbod
bff8248a9d
[repacker] Pre-alloc vertices
2022-05-18 16:25:03 -06:00
Behdad Esfahbod
39a424caf0
[priority-queue] Optimize heap access
2022-05-18 16:19:44 -06:00
Behdad Esfahbod
9308659fd7
[priority-queue] Optimize swap()
2022-05-18 16:14:25 -06:00
Behdad Esfahbod
c7317ef761
[repacker] Avoid destroying and recreating objects
2022-05-18 16:03:41 -06:00