The unrotated CTFont was introduced to fix color emoji scaling.
Use only the unrotated CTFont and apply the rotations manually.
This allows removal of one CTFont and allows us to apply (correctly)
the transformation CoreText would otherwise need to apply
(which it appears to do inconsistently).
Review URL: https://codereview.chromium.org/1360663002
Recent changes to WallTimer broke --samplingTime. In particular, this idiom became nonsensical:
WallTimer timer;
timer.start();
do {
...
timer.end();
} while(timer.fWall < ...);
WallTimer started making private use of fWall between when start() and end() were called, so the second time around the loop we end up with nonsense.
If that makes no sense, don't worry. The code here using now_ms() is just as fast, just as precise, and clearer.
I took the opportunity to simplify --samplingTime <complicated string parsing> to --ms <int>, and to simplify the code that depends on it.
BUG=skia:
Review URL: https://codereview.chromium.org/1419103004
For optimizing saveLayer() offscreens, it is useful to know the
bounds of the primitive being drawn. Currently, the bounds passed to
saveLayer() are filtered, which makes it difficult to know the original
bounds of the primitive. This CL changes the semantics to accept
unfiltered bounds. This actually simplifies the callsites too. In
order to result in the correct pixels being produced, we then call
computeFastBounds() inside clipRectBounds().
The old behaviour is wrapped in #ifdef SK_SAVE_LAYER_BOUNDS_ARE_FILTERED,
until we can update Chrome's callsites (see
https://codereview.chromium.org/1316243002/).
This change will affect the following GMs:
testimagefilters: saveLayer bounds no longer cause clipping
imagefiltersbase: slight pixel diffs
resizeimagefilter: slight pixel diffs on the "high quality" test case
imagefilterscropexpand: displacement results are now correct
filterfastbounds: slight pixel diffs
matriximagefilter: slight pixel diffs
BUG=skia:3194 skia:4526
Review URL: https://codereview.chromium.org/1304883004
In the clip mask merging path, the CMM creates new renderTargets and draws to them. In the non-MDB world this is okay b.c. all the draws land in the same drawTarget anyway. In the MDB world the draws for the new renderTargets have to land in different drawTargets.
This can be resolved by a lot of plumbing and refactoring to create drawContexts for the created renderTargets or by removing the mask-merging drawing path.
Since, https://codereview.chromium.org/1424853002/ (Disable gpu-side clip mask merging in the clip mask manager), appears to have stuck, this CL removes the clip mask merging code.
BUG=skia:4094
BUG=skia:4519
Review URL: https://codereview.chromium.org/1418073005
This gives ~15% improvement on blur_image on Linux Z620,
and should allow me to implement cropping without
incurring a perf hit.
BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
Review URL: https://codereview.chromium.org/1426583004
This makes it consistent with Linux/Mac. There, stderr is not buffered, so the flush is not needed / implicit.
BUG=skia:
Review URL: https://codereview.chromium.org/1419073003
Bound uniforms that are optimized away causes GL errors
when they are used.
The bound location becomes unused if its bound uniform is
optimized away. Updating the inactive uniform using the
bound location causes a GL error from the command buffer.
Alternatively, command buffer may bind another free, unbound
uniform to the bound location. This causes the uniform update to
update the wrong uniform.
Disable the extension until the spec can be clarified and the
implementation fixed, if possible and needed.
BUG=skia:4454
Review URL: https://codereview.chromium.org/1417633008
Refactor box_blur() into a single driver function which
SSE*, NEON and generic code paths can use. I've used macros
to do this in order to keep debug performance reasonable,
but it's fairly ugly. I'm open to other suggestions.
BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
Review URL: https://codereview.chromium.org/1408003007
Motivation: This will be easier than adding a friend every time I want
to create a one-off SkCanvas subclass or SkRemote::Encoder subclass.
See also: SkPath::Iter.
Review URL: https://codereview.chromium.org/1411723005
Required to fix a mac build error with command buffer, and possible
memory allocation issue when used with skia_angle on linux.
Review URL: https://codereview.chromium.org/1413403005
This involves disabling webps for kCanvas_Strategy.
We have not yet implemented webp subset decodes for this
strategy.
BUG=skia:4521
Review URL: https://codereview.chromium.org/1405273004
The result SkBitmap, the pixel allocator, and the alpha
preference need to be communicated from the client to
the region decoder.
BUG=skia:
Review URL: https://codereview.chromium.org/1418093006
It's absurdly slow.
We can turn it back on with
skia> python gyp_skia -Dskia_win_ltcg=1
The bots will automatically define skia_is_bot and skia_win_ltcg.
BUG=skia:
Review URL: https://codereview.chromium.org/1407043009
The extension on the mac is .dylib, updated the name.
EGL.h isn't available on mac (unless we include skia_angle.h).
I've got a somewhat bad hack of defining the types that I need
to get this running.
GetProcedureAddress was somehow successfully grabbing gl
functions from another lib. Removed this call, I copied it
from ANGLE impl, but it isn't required.
lib load path works differently, fixed in GYP
BUG=skia:2992
Review URL: https://codereview.chromium.org/1403153002
In the MDB world the clip mask manager would need to create a separate drawContext for each temporary mask (and we would need to support stencil draws in the drawContext). For now, disable the feature.
Please see skbug.com/4519 (Re-enable gpu-side mask merging in Ganesh)
BUG=skia:4094
Review URL: https://codereview.chromium.org/1424853002
Update FreeType to a newer version. Because this caused issues in
finding the correct ftoptions.h and ftmodule.h [1], be sure to state
the ones we want explicitly.
This also add gzip.c which is needed for WOFF support [2].
[1] FreeType "Simplify header file hierarchy."
fae382076409db198dfbff36ac4cbb97b05b30a1
[2] FreeType "[gzip] New function `FT_Gzip_Uncompress'."
dc240524ff31891a442225430b28e9620c1fa89f
Review URL: https://codereview.chromium.org/833103004
https://codereview.chromium.org/1421533007/ (Fix ClipMaskManager's SW-fallback logic) had a logic error in it. It did not take into account createAlphaClipMask's fallback to non-Stenciled drawing (in drawElement).
This CL adds that logic and strips out the unnecessary changes (for clarity).
Review URL: https://codereview.chromium.org/1412883005
Reason for revert:
Logic may be incorrect
Original issue's description:
> Fix ClipMaskManager's SW-fallback logic
>
>
> 'useSWOnlyPath' was not correctly toggling between stencil and color draws so there was a mismatch with the behavior in createAlphaClipMask (i.e., we were inadvertently rendering some of the elements in a clip using SW but using stenciling for others - precisely what 'useSWOnlyPath' was intended to prevent).
>
> Committed: https://skia.googlesource.com/skia/+/5c3ea4cd3921e8904d4f201bcdedfd5b8a726542TBR=bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1426443008
This change updates a small subset of benchmarks to flush the GrContext
between draw loops (specifically SKP benchmarks, SampleApp, and the
warmup in visualbench). This helps improve timing accuracy by not
allowing the gpu to batch across draw boundaries in the affected
benchmarks.
BUG=skia:
Review URL: https://codereview.chromium.org/1427533002