Properly report that CoreText color glyphs are not rendered from simple
paths. This prevents sbix, COLR, and SVG fonts from switching from color
to path at large sizes.
Bug: chromium:1266022
Change-Id: Ic59f0e28a08acebe192e56c5657b2ff29d063d57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508917
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
When blitting out of a mask with nine patch, the nine patch code may
call the blitters with a mask row bytes of zero, with the intention of
blitting the same row out of the mask into many rows of the destination.
In D32_A8_Opaque_Color_neon and blit_mask_d32_a8_black when
SK_ARM_HAS_NEON it is assumed that the maskRB >= width. If the maskRB
are less than the width, the maskRB -= width underflows, which is
defined, but the later mask += maskRB is not, as this wil be the
addition of a very large integer to the mask pointer, which is
definitely larger than the mask allocation. In practice on a twos
compliment machine with sizeof(size_t) == sizeof(void*) with a flat
address space this works out, but it is undefined behavior.
When calculating the mask adjustment instead calculate and store it as
ptrdiff_t. After ssa, this is effectively the same code but with a
signed add to the mask pointer instead of unsigned.
Discovered with dm with ASAN (with UBSAN) on arm64 Mac.
Change-Id: I4c8967730c802039e192750927e10f13282258b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508680
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Bug: oss-fuzz:41243
Change-Id: I0297469057826f83ab35c43733ffb7d3cc5b9965
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508679
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Change-Id: Ifcd6e9ced293d51b5c75849ec4a6a9899b2a0459
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506780
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Erik Rose <erikrose@google.com>
...since the other Debug-All-NativeFonts GPU job is on a different GPU
and CPU ISA.
Add an "i5" extraConfig option so we can distinguish between the 2
differently-CPU'd MacMini7,1s.
Change-Id: I609d5361c313a005d888ca7a847375cad78dec01
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506778
Reviewed-by: Ben Wagner <bungeman@google.com>
...since we have so many of those machines (which were recently racked).
Change-Id: I61baa5d7b5140633d707411ab3a7a9ecc376b042
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506777
Reviewed-by: Ben Wagner <bungeman@google.com>
First, count the number of sub runs in this Slug.
Second,the Slug is allocated as a large block with an arena at the
end of it. Calculate a hint for allocating that initial large block.
This does not do the calculation for the different sub runs. We are
doing the direct mask case first. Others can be added later.
Change-Id: I80ed206177b50d9bb0742f4d826c3372d12b6fe3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508639
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
The test case was producing a stack trace of sequential path transforms.
While each individual call would check to see if the path is too big
and return, the resulting path kept getting continually bigger as we
transformed it again and then popped the stack. This CL changes it to
skip the transform op if the returned path is already too big.
Bug: oss-fuzz:39470
Change-Id: I7f93ae0c39f19950c59fd7173da481286e7274ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508637
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
The GrPathUtils::quadPointCount and cubicPointCount functions take a
tolerance value. The paired generateQuad/CubicPoints functions that will
fill up-to the returned point count from those first questions actually
takes the square of the tolerance value.
This was noticed in https://fiddle.skia.org/c/7e42210ddb6675fe8729c0ba5b07daf5
as the subtle linear artifacts around the rounded corners of the stroke.
GrAAConvexTessellator was not passing in the square value, so the point
generation would early-out sooner than it should have in this example.
Instead of using 16 vertices it used 8. Passing in the square fixes the
linear artifacts when testing locally.
I did an audit of other usages of these functions and SkShadowUtils also
needed to be updated. As part of this, I switched the constants over to
constexpr. The only other user of this function, default path renderer,
did not need to be updated.
Change-Id: I5e0acb8ebc8b4209f7924ca1e1674d1759da0d3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507926
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
I don't have serialization working yet, but I have enough of the
plumbing to sketch out an API. It seems simplistic, but notice it
requires access to the SkStrikeClient.
Change-Id: I29f046b62f20c635cee86f0666e8112ac3097f16
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507837
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Adds a new GM that draws text in an SkPicture, transformed by a
perspective matrix. When drawn directly with drawPicture() it looks
fine. When drawn calculating a scale factor manually from the matrix
and converting to an image (SkImage::MakeFromPicture + drawImageRect),
it looks nearly indistinguishable. However, when drawing using a picture
shader, the image resolution of the cached rasterization is far too low.
Originally, this is because SkPictureShader only relied on
SkMatrix::decomposeScale, which fails if there's perspective and
the picture shader's fallback is to switch to the identity scale. When
the source picture has relatively small local bounds compared to the
final destination, this results in severe sampling artifacts.
This CL switches the fallback to use SkMatrixPriv::DifferentialAreaScale,
which is what was used to compute the manual scale factor in the GM,
and is what image filters use when creating their device's coordinate
space when the canvas has perspective.
Change-Id: I856cd1277eb7cfcb43c766ff0d123ee1a667fe29
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507917
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This allows force overriding font settings embedded in the glyphRunList.
Change-Id: I49f15786ec8d35c55f769fc910e009693cfc5879
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508179
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
COLR fonts can use a magic palette index value 0xFFFF to indicate the
foreground color of the drawing context. Modify the DirectWrite port to
properly indicate when the foreground color is needed and use it.
Bug: skia:12576
Change-Id: Iaaf391eaf1b1204fe62edb48e01343bdac8aa34e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508178
Reviewed-by: Herb Derby <herb@google.com>
There is no advantage to having every SkScalerContext_DW recompute and
store fIsColorFont when this is a constant on the typeface. Have the
typeface compute the value once and store and have the scaler contexts
look it up on the typeface.
Change-Id: Ib0441e4bc078da2bb9aa0cf5a97de7fe84947ce2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508177
Reviewed-by: Herb Derby <herb@google.com>
This flag is no longer set by any users.
Bug: chromium:1266022
Change-Id: I7b0d02252f8d22aadd495ad3b987f444f39cea3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508176
Reviewed-by: Herb Derby <herb@google.com>
Importantly, this ensures that if we take the drawImageRect fallback,
the input paint's AA setting and mask filter setting won't suddenly be
included in the rendering.
Bug: skia:12518
Change-Id: Ifea12499f49c2d8c476f6d67f42b6fd2991426e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508537
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 63e7ba59ce.
Reason for revert: Angle errors
Errors:
ERROR: 0:62: 'ldexp' : no matching overloaded function found
ERROR: 0:65: 'ldexp' : no matching overloaded function found
https://logs.chromium.org/logs/skia/5911c43abda19c11/+/steps/nanobench/0/stdout
Original change's description:
> Add synonyms to GLSLGeneration for 100es and 300es.
>
> We use GLSLGeneration::k330 to mean GLSL 3.30 for desktop GLSL and also
> for ES 3.00. k110 lived a double life as ES 1.00. This was confusing, so
> several places in the code had comments like "this is the value for GLSL
> ES 3" to clarify.
>
> This CL adds new enums "k100es" and "k300es" which use the same values
> as "k110" and "k330", but make the code easier to understand at a
> glance.
>
> Change-Id: Ib4dfbd8cd7bab45b35d6ad7303ccf87c7eeca3ab
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506898
> Auto-Submit: John Stiles <johnstiles@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
Change-Id: I7703598d4c74361da588d23f64e0697a844429ad
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508517
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
We use GLSLGeneration::k330 to mean GLSL 3.30 for desktop GLSL and also
for ES 3.00. k110 lived a double life as ES 1.00. This was confusing, so
several places in the code had comments like "this is the value for GLSL
ES 3" to clarify.
This CL adds new enums "k100es" and "k300es" which use the same values
as "k110" and "k330", but make the code easier to understand at a
glance.
Change-Id: Ib4dfbd8cd7bab45b35d6ad7303ccf87c7eeca3ab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506898
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Destroying a mutex while it is held is never valid, and can be extremely
hard to debug.
Change-Id: I42ff79de7892006337f204621ff59bf84112dcd7
Bug: skia:12943
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507998
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
The SkRuntimeEffect fuzzer no longer uses the final 256 bytes of each
shader as uniform data, making this corpus obsolete.
(Fuzzer corpus change: https://github.com/google/oss-fuzz/pull/7266 )
Change-Id: I3df9213520390249f401c83c13f0bca5c7f0dde4
Bug: skia:12781
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508036
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
0a320d16fe..06edae72ba
2022-02-12 b.schade@samsung.com Vulkan: Allow duplicated block name in different shader interface
2022-02-11 cnorthrop@google.com FrameCapture: Remove destroyed contexts from share group
2022-02-11 cclao@google.com Vulkan: Fix two bugs exposed by moving mEmptyBuffer to suballocation
2022-02-11 jmadill@chromium.org Double batch timeout for sanitizer tests.
2022-02-11 lexa.knyazev@gmail.com Keep ANGLE_base_vertex_base_instance available for ES 2.0
2022-02-11 syoussefi@chromium.org Vulkan: Use VK_EXT_depth_clip_control
2022-02-11 constantine.shablya@collabora.com Add entry points for EGL_KHR_partial_update
2022-02-11 cnorthrop@google.com Traces: Add restricted_trace_perf.py script for Android
2022-02-11 lexa.knyazev@gmail.com GL: Remove avoid_dxt1_srgb_texture_format feature
2022-02-11 hckim.kim@samsung.com Rebind program on glUseProgramStages
2022-02-11 cheryl.wei@arm.com Vulkan: Add an end2end test
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC fmalita@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: fmalita@google.com
Test: Test: KHR-GLES32.core.tessellation_shader.single.max_patch_vertices
Test: Test: Mortal Kombat MEC
Change-Id: I64f41a11a83c9cadc0c4b8c02ed80c7fa0da4abc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508417
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This reverts commit bbc4ee5e07.
Reason for revert: Not quite ready -- pref and gold regressions
Original change's description:
> Implement DashLinePathRenderer with a simple FP
>
> An SDF of the dash is implemented as a linear gradient, which is then
> converted to coverage by an inline runtime effect. Currently only
> non-perspective, non-hairline, AA butt caps are supported by the new
> FP. We can delete DashOp once the FP supports more types of strokes.
>
> Bug: skia:12872
> Change-Id: Ifb19fcc4a114aec1847de50aab7ee900f289ed33
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/505476
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Christopher Dalton <csmartdalton@google.com>
Bug: skia:12872
Change-Id: Iaec22481ecbda55b37c32f5f7e223ed43a3da071
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/508097
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Previously, we used a fixed portion of the fuzzer input for uniform
data, and assumed zero children. Now we synthesize uniform and child
inputs based on the needs of the input shader. We no longer need to
reserve the last 256 bytes of each shader for uniform data; a followup
CL will remove the special corpus that this fuzzer used.
The contents of each uniform/child is not particularly important, since
we don't care what the final paint looks like. Each uniform is filled in
with increasing values in each slot, starting at zero (0, 1, 2, 3, ...).
Each child is a simple built-in shader/filter/blender.
(Fuzzer corpus change: https://github.com/google/oss-fuzz/pull/7266 )
Change-Id: Idc8bfcb17c10a470ef35fafc1789b915495e1d67
Bug: skia:12781
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507924
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
I wasn't able to find any other test which exercised child color-filters
or child blenders. (SampleWithExplicitCoord evaluates from a shader.)
Change-Id: I58ecee3beca2d3dc11ded5de0eea031e1d7c3e1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507922
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: Arman Uguray <armansito@google.com>
This CL adds the task driver and plumbing necessary to run CI tasks that upload build statistics to https://codesize.skia.org.
For now, a single CodeSize-dm-Debian10-Clang-x86_64-Release task is defined, which as the name suggests:
- Depends on Build-Debian10-Clang-x86_64-Release.
- Takes the "dm" binary built by the aforementioned job.
- Runs Bloaty against said binary.
- Uploads the Bloaty output, along with a JSON file with metadata, to the GCS bucket where https://codesize.skia.org gets its data from.
If one wishes to upload codesize statistics for another binary, the steps are as follows:
- Identify the target binary, for example "fm".
- Identify a compile task that builds said binary with the desired settings, for example "Build-Debian10-Clang-x86_64-Debug".
- Add a new job in //infra/bots/jobs.json named "CodeSize-<binary>-<compile task>", where <compile task> is the name of the compile task without the "Build-" prefix, for example "CodeSize-fm-Debian10-Clang-x86_64-Debug".
- Run "make train" from the //infra/bots directory.
Eventually the codesize.skia.org webserver will automatically pick up the output of any such CodeSize-* task and show it in the UI, with no additional steps needed.
One caveat is that the binary file name, and therefore the "<binary>" part of the task name, cannot contain dashes. This is due to how //infra/bots/gen_tasks_logic.go works. See comments in said Go file for ideas on how to work around this if we ever need to.
Bug: skia:12151
Change-Id: If406944ca7660c4dd15c8e6b8f34e48c65cbbe2f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/502788
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Leandro Lovisolo <lovisolo@google.com>
An important part of serialization for slugs is maintaining the
translation of typefaceIDs from the renderer side to the GPU side.
Expose the translation code so that the slugs can use it.
Change-Id: I78ded1967759619a95fb13a1577cee3569927471
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Avoids inconsistency with SkMatrix::mapRect.
Change-Id: I5c361e447d4011b2f91881cdbd8b79388f92ef09
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507839
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I409dbac3d8548551722e74e86e67bc7b3620f506
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507838
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
An SDF of the dash is implemented as a linear gradient, which is then
converted to coverage by an inline runtime effect. Currently only
non-perspective, non-hairline, AA butt caps are supported by the new
FP. We can delete DashOp once the FP supports more types of strokes.
Bug: skia:12872
Change-Id: Ifb19fcc4a114aec1847de50aab7ee900f289ed33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/505476
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Christopher Dalton <csmartdalton@google.com>
Harden MakeFromBuffer with respect to the array length value.
* Check that the array count is not too large.
Change-Id: I5b398be1690fafce5be5b90ba8aa7af0f12be317
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/507637
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Bug: skia:12845
Change-Id: I8013b0068ab758e9a5e580344c62e4680f4fa48e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506176
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Bug: skia:12643
Change-Id: Id5eecb3445082e747def8c87f99a16552857af3f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506462
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Bug: skia:12754
Change-Id: Ib4f1a9ac4ef16805cf8ca4e4c0eea0b3922ca28a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/506465
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>