Removes the case for x-only glyph positions from nvpr text, opting to
always send 2d glyph positions instead. The 1d glyph positions saved a
bit on memory bandwidth, but ended up a net loss because they required
more updates to the view matrix. Now we can draw an entire paragraph
without touching the GL state, whereas before we would have to update
the view matrix at every new line.
BUG=skia:
Review URL: https://codereview.chromium.org/700283002
Reason for revert:
Not compiling in ANGLE build
Original issue's description:
> Get gpudft support working in dm, gm, nanobench and bench_pictures
>
> Adds a new config to test distance field text.
> Clean up some flags and #defines to read "distance field text",
> not "distance field fonts" to be consistent with Chromium
>
> NOTREECHECKS=true
>
> Committed: https://skia.googlesource.com/skia/+/06ba179838ba4fe187cf290750aeeb4a02a2960bTBR=bsalomon@google.com,mtklein@google.com,reed@google.com
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/707723005
Adds a new config to test distance field text.
Clean up some flags and #defines to read "distance field text",
not "distance field fonts" to be consistent with Chromium
NOTREECHECKS=true
Review URL: https://codereview.chromium.org/699453005
Chrome's tracing framework appears to be intentionally racy on its
quick-reject checks, trading some data loss for better performance
when disabled. People will never notice the data loss, but TSAN does.
Let's assuage TSAN with some annotations.
The 'volatile' val in SK_ANNOTATE_UNPROTECTED_WRITE was making this
not compile, but that volatile doesn't really make sense there: the value we're
writing is not what we care about, it's the destination.
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu13.10-GCE-NoGPU-x86_64-Release-TSAN-Trybot
No API changes.
TBR=reed
BUG=skia:
Review URL: https://codereview.chromium.org/702883002
In cull_line we must also check if both points are the same. Otherwise we
fail the assert in the else "SkASSERT(dy && !dx)".
This is currently blocking the roll as it fails a webkit test.
BUG=skia:
Review URL: https://codereview.chromium.org/703783002
Rendering a glyph with a path wants to place it at the (sx, sy) we get
as input to the method, but we add (dx, dy) for the clipRect check.
Hence, we need to subtract that out before we render the path.
Review URL: https://codereview.chromium.org/699283003
This removes the code which forces 400 and 700 weights only,
and also overrides the font weight with the configured weight.
Review URL: https://codereview.chromium.org/694533006
For the Android framework build, we get our defines from
SkUserConfig, rather than from the makefile, so we need to
include it (via SkTypes) before we can use our defines.
Fixes Android framework build.
Review URL: https://codereview.chromium.org/700893002
The issue was that, with caching disabled, the layer cache code was removing layers outside of a purge (i.e., in unlock) but not correctly cleaning up the GrPictureInfo objects (as is done in purgePlot).
Review URL: https://codereview.chromium.org/703643002
Tested by running DM on XP. Before this patch, it fails at startup (even just out/Debug/dm --help). Now it asserts for other reasons later on in user code, which is just fine by me.
The net effect is that SkTaskGroups will always be synchronous on XP. That's not ideal, but a step up from crashing.
CQ_EXTRA_TRYBOTS=client.skia:Test-Win7-ShuttleA-HD2000-x86-Release-Trybot,Test-Win7-ShuttleA-HD2000-x86_64-Release-Trybot
BUG=skia:
Review URL: https://codereview.chromium.org/700683002
- Update spacing of LODs to get better results scaling up to 256
- Remove unnecessary "bolding" from dftext
- Add debug colors for dftext LODs
BUG=skia:2933,skia:2935
Review URL: https://codereview.chromium.org/703463002
The calls to visit() to execute the SkRecord::Draw::operator() code path
is not clear to read, so adding some comments to help other new-comers
follow this through to the SkCanvas calls.
R=mtklein@chromium.org
Review URL: https://codereview.chromium.org/695403003
This CL shrinks the bound computed for saveLayers that possess both an explicit
bound and a complex paint (e.g., one that affects transparent black). In this
case the bound of the layer should be the clipped explicit bound rather then
the clip prior/after the saveLayer/restore block.
In the following the first bound is the currently computed bound
while the second is the new/desired one:
For a 100x100 picture
saveLayer (no bound, no paint) [ 0 0 100 100 ] [ 50 50 100 100 ]
setMatrix (translate 50, 50) [ 0 0 100 100 ] [ 50 50 100 100 ]
saveLayer (bound of 0, 0, 50, 50 - complex paint) [ 0 0 100 100 ] [ 50 50 100 100 ]
restore [ 0 0 100 100 ] [ 50 50 100 100 ]
restore [ 0 0 100 100 ] [ 50 50 100 100 ]
Review URL: https://codereview.chromium.org/696763002
- Add clipRect check
- Remove creation of scalerContext to check for color fonts in canDraw()
(no longer needed)
BUG=skia:2933
Review URL: https://codereview.chromium.org/696503004
When an error occurs reading a flattenable object, it should be unrefed instead of deleted because, in the case of SkXferMode, for example, we'd actually be deleting a cached object kept in a static array.
BUG=428789
Review URL: https://codereview.chromium.org/695633003
This change is here since previously color bitmap text was rendered using a
geometry processor in the coverage stage. The problem with this is that we
cannot correctly do xfer modes with this method. So I now make color bitmap text
draw using a color stage in the same was as a draw bitmap call.
One issue that arrises from this fix is that we end up adding this final color
processor after any previous color processors. Thus if we have a custom blend
implemented as a color processor it will be before this text one and we won't
blend correctly. This issue will get fixed once an xfer processor is fully
implemented. I have hacked a test locally to show that if we can add the text
color processor to the begining of the color stages we do blend correctly in all
cases (so the xfer processor will be a fix).
BUG=skia:
Review URL: https://codereview.chromium.org/689923004
This will be a bit hairy to review.
The FillBounds and CollectLayers code has diverged significantly resulting in the rendering path seeing different bounds than the hoisting path. This CL merges the FillBounds changes into CollectLayers. A follow on CL will, hopefully, find a way to layer CollectLayers on top of FillBounds.
The only code in CollectLayers that is different from FillBounds is bracketed by "LAYER HOISTING" comments.
NOTREECHECKS=true
Review URL: https://codereview.chromium.org/685263004
Got a few crashes running the fuzzer locally, all related to handling NULL members/parameters in an inconsistent way.
BUG=skia:
Review URL: https://codereview.chromium.org/675013003
This assists debugging layer hoisting errors (e.g., when a layer is hoisted but not actually used in subsequent rendering).
Review URL: https://codereview.chromium.org/694533004
A picture may possess many layers that get placed in one plot of the atlas. In this case we can only remove the plot from the plotUsage tracking structure when all the layers belonging to the picture in that plot have been removed.
Review URL: https://codereview.chromium.org/654463004
Adds miplevel as part of dfpath key, and scale factor so we know
how much to adjust to fit desired scale.
BUG=skia:2935
Review URL: https://codereview.chromium.org/687283002
This should produce tighter conservative bounding boxes for text than the
approximation code it replaces.
Recording performance is neutral on my desktop. Playback performance
improves by up to 15% on text heavy pages, e.g.
desk_pokemonwiki.skp_1 3.24ms -> 2.83ms 0.87x
desk_baidu.skp_1 1.91ms -> 1.58ms 0.83x
Committed: https://skia.googlesource.com/skia/+/bf8dc343df4fbdcb8af546eb68b640e011a33489
CQ_EXTRA_TRYBOTS=client.skia:Test-Win7-ShuttleA-HD2000-x86-Debug-Trybot
Review URL: https://codereview.chromium.org/680363003
The SkRectShaderImageFilter had the same bug as previously fixed for
SkBitmapSource and SkPictureImageFilter. Rather than copy-and-paste
the implementation, this change makes all filters with 0 inputs return
their source bounds, instead of returning false.
BUG=427251
Review URL: https://codereview.chromium.org/681643003
This should produce tighter conservative bounding boxes for text than the
approximation code it replaces.
Recording performance is neutral on my desktop. Playback performance
improves by up to 15% on text heavy pages, e.g.
desk_pokemonwiki.skp_1 3.24ms -> 2.83ms 0.87x
desk_baidu.skp_1 1.91ms -> 1.58ms 0.83x
Review URL: https://codereview.chromium.org/680363003
This is intended to prevent ghosting on tiled architectures.
This CL also defers creation of the atlas (and its texture) until it is actually needed.
Review URL: https://codereview.chromium.org/678403002
Adds the following:
- Use cached geometry processor rather than recreating all the time.
- Use context's quad index buffer.
Review URL: https://codereview.chromium.org/683923002
Reason for revert:
Compile errors on bots
Original issue's description:
> These tests stress pathops by describing the union of circle-like paths that have tiny line segments embedded and double back to create near-coincident conditions.
>
> The fixes include
> - detect when finding the active top loops between two possible answers
> - preflight chasing winding to ensure answer is consistent
> - binary search more often when quadratic intersection fails
> - add more failure paths when an intersect is missed
>
> While this fixes the chrome bug, reenabling path ops in svg should be deferred until additional fixes are landed.
>
> TBR=
> BUG=421132
>
> Committed: https://skia.googlesource.com/skia/+/6f726addf3178b01949bb389ef83cf14a1d7b6b2TBR=caryclark@google.com
NOTREECHECKS=true
NOTRY=true
BUG=421132
Review URL: https://codereview.chromium.org/686843002
The fixes include
- detect when finding the active top loops between two possible answers
- preflight chasing winding to ensure answer is consistent
- binary search more often when quadratic intersection fails
- add more failure paths when an intersect is missed
While this fixes the chrome bug, reenabling path ops in svg should be deferred until additional fixes are landed.
TBR=
BUG=421132
Review URL: https://codereview.chromium.org/633393002
This CL alters layer hoisting to defer creation of the free floating layers until they are actually needed (rather than creating _all_ the hoisted layers at the start).
It also fixes a pre vs. post Concat bug with how matrices were being accumulated.
BUG=skia:2315
Review URL: https://codereview.chromium.org/657383004
Reason for revert:
try again
Original issue's description:
> Fix bounds computation of all 0-input filters.
>
> The SkRectShaderImageFilter had the same bug as previously fixed for
> SkBitmapSource and SkPictureImageFilter. Rather than copy-and-paste
> the implementation, this change makes all filters with 0 inputs return
> their source bounds, instead of returning false.
>
> BUG=427251
>
> Committed: https://skia.googlesource.com/skia/+/ba036cc82b5a543a13cafd11a19ba0e3087fca38TBR=bsalomon@google.com,senorblanco@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=427251
Review URL: https://codereview.chromium.org/678273002
The SkRectShaderImageFilter had the same bug as previously fixed for
SkBitmapSource and SkPictureImageFilter. Rather than copy-and-paste
the implementation, this change makes all filters with 0 inputs return
their source bounds, instead of returning false.
BUG=427251
Review URL: https://codereview.chromium.org/681643003
- The expected case is now a single bulk-load insert() call instead of N;
- reserve() and flushDeferredInserts() can fold into insert() now;
- SkBBH subclasses may take ownership of the bounds
This appears to be a performance no-op on both my Mac and N5. I guess
even the simplest indirect branch predictor ("same as last time") can predict
the repeated virtual calls to SkBBH::insert() perfectly.
BUG=skia:
Review URL: https://codereview.chromium.org/670213002
This only affects the PNG image decoder, where we have already created
the color table without premultiplication. Since the RowProcChooser is
just providing a proc that chooses indices into the color table, it can
just return the same RowProc.
Update test_row_proc_choice. It was testing to ensure that we hadn't
changed the behavior from the original version of setPrefConfigTable.
In this case, we deliberately changed the behavior, so we need to
change the test.
BUG=b/12024301
Review URL: https://codereview.chromium.org/657863005
Some clip paths were not marked as volatile, and ending up in the
distance field path renderer when they shouldn't.
BUG=skia:3066
Review URL: https://codereview.chromium.org/680543002
Can't quite get rid of SkWeakRefCnt yet... SkFontMgr_indirect uses it to cache
SkTypefaces, and I don't quite understand it enough yet to cut out the weak refs.
BUG=skia:3065
Review URL: https://codereview.chromium.org/664173003
Any path that is generated frame-to-frame should not be rendered by using the
DistanceFieldPathRenderer, because generating the initial distance field,
uploading it and rendering it takes longer than the SoftwarePathRenderer.
BUG=skia:2935
Review URL: https://codereview.chromium.org/677463002
This is basically how blink uses the filter. Currently, I can't use it for "ShadowOnly" mode with the filter at all, but instead of copying the code and risking to have the codepaths diverge, I'm simply going to add the option here.
BUG=skia:
Review URL: https://codereview.chromium.org/646213004