Easy way to store SDFs in the glyph cache.
Change-Id: Ia67e5c8619862bdee6aa3b293e30507d029e3bf1
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/123748
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This is a reland of c86c5c0144
Original change's description:
> Remove devKerning
>
> Dev kerning is not supported by any scalers. This is
> mostly removed. The remaining fields fRsbDelta and
> fLsbDelta are kept to keep Android compiling.
>
> Change-Id: If1a9ee9bb599d4e1bdf4b3751ac0c65246350809
> Reviewed-on: https://skia-review.googlesource.com/124921
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
Change-Id: Ibf5fac5f1442c7e62392d5146ad460da27b10d5c
Reviewed-on: https://skia-review.googlesource.com/125300
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit 101d56359a.
Reason for revert: 5 of 5
Original change's description:
> fonts: Set up remote glyph caching to push fonts.
>
> Currently the SkStrikeClient is designed to pull fonts from the server
> on demand, and to pre-fetch a batched request by analyzing the ops using
> a SkTextBlobCacheDiffCanvas. This change modifies the design to support
> a push based model, where the server pushes fonts required by the client
> and sets up the requisite SkGlyphCaches on the client prior to
> rasterizing the ops.
>
> This model still relies on the SkTextBlobCacheDiffCanvas for analyzing
> the glyphs required for rasterizing an op. The glyph caches required for
> raster are locked and missing glyphs to be sent to the client are tracked
> by the SkStrikeServer. The embedder can serialize this font data at any
> point, but must ensure that this data is deserialized by the
> SkStrikeClient at the remote end, before rasterizing any ops analyzed
> prior to serialization. Any refs on the caches are released once the
> font data is serialized by the server.
>
> The locking of glyph caches relies on the embedder providing discardable
> handles. These handles can be created on the server and serialized to be
> sent to the client, and map to an instance of SkGlyphCache. This allows
> the server to control the lifetime of the caches on the client.
>
> Bug: skia:7515
> Change-Id: Id39f346b47b60899778404bbd0429ee811d0e53b
> Reviewed-on: https://skia-review.googlesource.com/120283
> Commit-Queue: Khusal Sagar <khushalsagar@chromium.org>
> Reviewed-by: Herb Derby <herb@google.com>
TBR=mtklein@google.com,herb@google.com,khushalsagar@chromium.org
Change-Id: If72caf968ddcbf70b8b9d71782a2339a118ed202
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7515
Reviewed-on: https://skia-review.googlesource.com/125264
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This reverts commit c86c5c0144.
Reason for revert: 4 of 5
Original change's description:
> Remove devKerning
>
> Dev kerning is not supported by any scalers. This is
> mostly removed. The remaining fields fRsbDelta and
> fLsbDelta are kept to keep Android compiling.
>
> Change-Id: If1a9ee9bb599d4e1bdf4b3751ac0c65246350809
> Reviewed-on: https://skia-review.googlesource.com/124921
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
TBR=bungeman@google.com,herb@google.com,reed@google.com
Change-Id: If865f702868192a1b72cd811baa996dd1282bbce
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/125263
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Dev kerning is not supported by any scalers. This is
mostly removed. The remaining fields fRsbDelta and
fLsbDelta are kept to keep Android compiling.
Change-Id: If1a9ee9bb599d4e1bdf4b3751ac0c65246350809
Reviewed-on: https://skia-review.googlesource.com/124921
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit 05b5e40519.
Reason for revert:
BitmapColorSpaceTest.android.graphics.cts.BitmapColorSpaceTest.inColorSpaceP3ToSRGB (android.graphics.cts) 06.949
java.lang.AssertionError: expected:<67043583> but was:<117375231>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:631)
at android.graphics.cts.BitmapColorSpaceTest.verifyGetPixel(BitmapColorSpaceTest.java:301)
at android.graphics.cts.BitmapColorSpaceTest.inColorSpaceP3ToSRGB(BitmapColorSpaceTest.java:612)
at java.lang.reflect.Method.invoke(Native Method)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:148)
at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:142)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:764)
>>> hex(117375231)
'0x6ff00ff'
>>> hex(67043583)
'0x3ff00ff'
Original change's description:
> Retry enabling skcms on Android
>
> Since we tried this last, DM has a direct skcms dependency
> via tests/ColorSpaceTest.cpp, so I've rearranged gn_to_bp.py slightly.
>
> We need to keep our eyes out for BitmapRGBAF16Test.testGetPixel in CTS.
>
> Change-Id: I3630bbebb4574522c43362c359d1a14da3bdd480
> Reviewed-on: https://skia-review.googlesource.com/124720
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
TBR=mtklein@chromium.org,mtklein@google.com,brianosman@google.com
Change-Id: Ib11393c427e9c5fea645de6e6e9a3034dcf06d02
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/125041
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Currently the SkStrikeClient is designed to pull fonts from the server
on demand, and to pre-fetch a batched request by analyzing the ops using
a SkTextBlobCacheDiffCanvas. This change modifies the design to support
a push based model, where the server pushes fonts required by the client
and sets up the requisite SkGlyphCaches on the client prior to
rasterizing the ops.
This model still relies on the SkTextBlobCacheDiffCanvas for analyzing
the glyphs required for rasterizing an op. The glyph caches required for
raster are locked and missing glyphs to be sent to the client are tracked
by the SkStrikeServer. The embedder can serialize this font data at any
point, but must ensure that this data is deserialized by the
SkStrikeClient at the remote end, before rasterizing any ops analyzed
prior to serialization. Any refs on the caches are released once the
font data is serialized by the server.
The locking of glyph caches relies on the embedder providing discardable
handles. These handles can be created on the server and serialized to be
sent to the client, and map to an instance of SkGlyphCache. This allows
the server to control the lifetime of the caches on the client.
Bug: skia:7515
Change-Id: Id39f346b47b60899778404bbd0429ee811d0e53b
Reviewed-on: https://skia-review.googlesource.com/120283
Commit-Queue: Khusal Sagar <khushalsagar@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Since we tried this last, DM has a direct skcms dependency
via tests/ColorSpaceTest.cpp, so I've rearranged gn_to_bp.py slightly.
We need to keep our eyes out for BitmapRGBAF16Test.testGetPixel in CTS.
Change-Id: I3630bbebb4574522c43362c359d1a14da3bdd480
Reviewed-on: https://skia-review.googlesource.com/124720
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Ironically, this is a giant slowdown, because xforms are being
constructed every frame, and this takes multiple ms.
Change-Id: Ib242b6b7b212c715d20fdd572ed6db5a167f07e2
Reviewed-on: https://skia-review.googlesource.com/123922
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
When triangles get too thin it's possible for FP round-off error to
actually give us the wrong winding direction, causing rendering
artifacts. This change also allows us to unblacklist ANGLE.
Bug: skia:7805
Bug: skia:7820
Change-Id: Ibaa0f033eba625d720e3a594c4515d8264cc413d
Reviewed-on: https://skia-review.googlesource.com/123262
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
We need to update BitmapRGBAF16Test.testGetPixel in CTS.
We're getting off-by-a-bit errors when enabling skcms.
I think we allow a per-byte tolerance of 1 in each of red,green,blue?
I'm not convinced the values in the test or the new ones are any more
correct than the others.
Change-Id: I5196f9315aa8187239eabd58e003d4cb6b603e39
Reviewed-on: https://skia-review.googlesource.com/123246
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: Icca4144d2093076e91e0a23d4224695c3a1f51b2
Reviewed-on: https://skia-review.googlesource.com/123180
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
This effectively switches Flutter and Android Framework to use skcms for
color space transformation.
Change-Id: I254f6a8614d6976ff13979ae0e745c49c334e5c6
Reviewed-on: https://skia-review.googlesource.com/123080
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
This is a reland of 94d25b970b
Original change's description:
> Add stub gpu workaround generators
>
> Like https://chromium-review.googlesource.com/c/chromium/src/+/1005362,
> this patch adds a way for Chrome and Skia to share a set of driver
> workaround names so that they can be turned on by Chrome (or Skia) as
> needed.
>
> To avoid weird cross-repository dependencies, the generator script is
> duplicated in Skia.
>
> This patch just adds a few dummy workaround names to make sure the build
> process is working. The followup to this is to add workaround init
> to GrContext/GrContextOptions and to start implementing individual
> workarounds.
>
> Implementing these workarounds is to support Chrome's "out of process
> raster" which will use Ganesh without a command buffer, and so will not
> have the workarounds that the command buffer provides.
>
> Bug: chromium:829614
> Change-Id: I40745a777a95805995991fedb81657ae418b52d9
> Reviewed-on: https://skia-review.googlesource.com/120608
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Adrienne Walker <enne@chromium.org>
Bug: chromium:829614
Change-Id: Idb3309ffa894f7585ee493388b56565e9d4a3101
Reviewed-on: https://skia-review.googlesource.com/122800
Auto-Submit: Adrienne Walker <enne@chromium.org>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Gets rid of the ugly template functions, rearranges a few static
methods, and adds a benchmark.
Bug: skia:
Change-Id: I442f3a581ba7faf7601ae5be0c7e07327df09496
Reviewed-on: https://skia-review.googlesource.com/122128
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Neat but unused.
Change-Id: I1b2d160df274b05cfb5582a5385085cc2db89f7d
Reviewed-on: https://skia-review.googlesource.com/121960
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This reverts commit 94d25b970b.
Reason for revert: Breaking the Chromium roll
Original change's description:
> Add stub gpu workaround generators
>
> Like https://chromium-review.googlesource.com/c/chromium/src/+/1005362,
> this patch adds a way for Chrome and Skia to share a set of driver
> workaround names so that they can be turned on by Chrome (or Skia) as
> needed.
>
> To avoid weird cross-repository dependencies, the generator script is
> duplicated in Skia.
>
> This patch just adds a few dummy workaround names to make sure the build
> process is working. The followup to this is to add workaround init
> to GrContext/GrContextOptions and to start implementing individual
> workarounds.
>
> Implementing these workarounds is to support Chrome's "out of process
> raster" which will use Ganesh without a command buffer, and so will not
> have the workarounds that the command buffer provides.
>
> Bug: chromium:829614
> Change-Id: I40745a777a95805995991fedb81657ae418b52d9
> Reviewed-on: https://skia-review.googlesource.com/120608
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Adrienne Walker <enne@chromium.org>
TBR=bsalomon@google.com,enne@chromium.org
Change-Id: Ie0b69d7d028dabca1fd70813b6920386c8838247
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:829614
Reviewed-on: https://skia-review.googlesource.com/122240
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Like https://chromium-review.googlesource.com/c/chromium/src/+/1005362,
this patch adds a way for Chrome and Skia to share a set of driver
workaround names so that they can be turned on by Chrome (or Skia) as
needed.
To avoid weird cross-repository dependencies, the generator script is
duplicated in Skia.
This patch just adds a few dummy workaround names to make sure the build
process is working. The followup to this is to add workaround init
to GrContext/GrContextOptions and to start implementing individual
workarounds.
Implementing these workarounds is to support Chrome's "out of process
raster" which will use Ganesh without a command buffer, and so will not
have the workarounds that the command buffer provides.
Bug: chromium:829614
Change-Id: I40745a777a95805995991fedb81657ae418b52d9
Reviewed-on: https://skia-review.googlesource.com/120608
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Adrienne Walker <enne@chromium.org>
Change-Id: I30e7ac2ad37f666e3fafe94a3f52a764e1e2e652
Reviewed-on: https://skia-review.googlesource.com/88040
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
The implicit SkTCopyOnFirstWrite copy-ctor and assignment operator are
incorrect: fObj must point to the local copy, not to the source copy
(when a copy has been made).
Add corrected explicit copy (and move) ctor + assignment operator.
Also add a get() helper to facilitate rawptr access.
Change-Id: Ie3983e12c04eae4f32c40e3e267618cf02008c20
Reviewed-on: https://skia-review.googlesource.com/120442
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
The big api level change here is that the getBackendInfo calls now return by value
instead of a pointer. These changes are being made in support of Vulkan so that
the client can update the VkImageLayout on the GrBackendTexture and have that
update get reflected in our internal tracking of the image. This is done by storing
a ref counted GrVkImageLayout object on the GrBackendTexture and the GrVkImage.
Bug: skia:
Change-Id: I8c6158fd3a66eb61fef97ebf09ea5364bca3f1ae
Reviewed-on: https://skia-review.googlesource.com/119101
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Interpolates the acual curve's local coverage values from the corner
box vertices, rather than an approximation based on the tangent.
Clamps curve segment total coverage values above 0. This prevents us
from using negative coverage (which is obviously wrong) when the curve
approximation function is slightly inaccurate. Moves
GrCCTriangleShader.h into GrCCCoverageProcessor.cpp.
Bug: skia:
Change-Id: I95de8e940c1508d4a359f5f802c3a688f2b84094
Reviewed-on: https://skia-review.googlesource.com/119066
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Change-Id: I1d99d9bb83d8a612d1c1fd298c1f7ed706a2277b
Reviewed-on: https://skia-review.googlesource.com/118990
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I4a0259f82272099e08df0e7dea91489f6d641ca4
Reviewed-on: https://skia-review.googlesource.com/113670
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Inherited/outer local matrices are supposed to compose to the right of
(preconcat) other/nested local matrices.
BUG=skia:7781
Change-Id: Icd3c24f226845427be849a8be3d78293aef176b3
Reviewed-on: https://skia-review.googlesource.com/118344
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Performs inset and outset operations on simple polygons and returns
a simple polygon, if possible.
Bug: skia:
Change-Id: I6d468174ad70b5279b736c532e19cbb84ff9f955
Reviewed-on: https://skia-review.googlesource.com/116483
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
These appear to have been added to handle glyph paths with nvpr and no
longer appear to be used.
Change-Id: Id75e2e85ab837a5808e7641873d217c844cd827c
Reviewed-on: https://skia-review.googlesource.com/117103
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Prep for adding new offset routines.
Change-Id: I261c22d9998e5ae4567b697c5f20a31f20777ac1
Reviewed-on: https://skia-review.googlesource.com/116800
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This was causing the generated MSVC project to not load, leading to
confusing behavior in the IDE.
Change-Id: I7ec8f1391c0c3b53e7b5c473571a062e6406b358
Reviewed-on: https://skia-review.googlesource.com/116467
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
This includes an optimizer fix for the situation:
int i;
float f = frexp(foo, i);
If we don't read the variable i, it is considered dead and eliminated -
which then causes an error when we try to write the expression
frexmp(foo, i).
Bug: skia:
Change-Id: Iac385e38e215455346fab62e1f4ec46fa65b3c21
Reviewed-on: https://skia-review.googlesource.com/116521
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Nice to have something to trigger this issue.
Bug: skia:7674
Change-Id: I653699b82f3a8a4d551f3cd98b6a7e7620c6e035
Reviewed-on: https://skia-review.googlesource.com/115920
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
The only tangible effect this CL should have is to use __vectorcall on
all Windows builds, including scalar ones. The code generation is a
little better there with __vectorcall than not, so might as well. This
is a baby step towards vector stages with MSVC, but a very baby step
indeed.
Mostly this refactors and regroups a bunch of logic to reflect my
current thoughts. The BUILD.gn changes are essentially no-ops, but they
simplify things and make our flags more similar to how those targets are
built in Chromium.
(And I cleaned up other /arch: uses so this works.)
Change-Id: I73dd39d15cdc7b3d268231a707952bbbfd91496e
Reviewed-on: https://skia-review.googlesource.com/115644
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>