| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, the GPU-side image filter implementation creates
exact-match textures for the offscreen backing stores for
saveLayer(). This is because several filters have GPU
implementations which depend on the texture coordinates
being 0..1.
The fix is three-fold:
1) Store the actual requested size in the SkGpuDevice, so
that when wrapping it in an SkBitmap for passing to
filterImage(), we can give it the original size.
2) Fix the filters (SkMagnifierImageFilter,
SkLightingImageFilter) whose GPU implementation depends on
0..1 texture coordinates.
3) Remove the exception for GPU-side image filters in
SkCanvas::internalSaveLayer().
For the lighting filters, there were two bugs which were
cancelling each other out: the sobel filter matrix was
being computed upside down, but then we'd negate the
resulting normal. This worked fine in the exact-match case,
but in the approx-match case we'd sample garbage along
the edge pixels. Also, we never implemented the edge pixels
according to spec in the GPU case. It requires a
different fragment shader for each edge of the nine-patch,
which meant we couldn't use asFragmentProcessor(), and had
to implement the drawing via a filterImageGPU() override.
In order to avoid polluting the public API, I inserted a
new base class, SkLightingImageFilterInternal above
Sk[Diffuse|Specular]LightingImageFilter to handle the
implementation.
N.B.: this change will cause some minor pixel diffs in the
GPU results of the following GMs (and possibly more):
matriximagefilter, matrixconvolution, imagefiltersscaled,
lighting, imagemagnifier, filterfastbounds,
complexclip_aa_Layer_invert, complexclip_aa_layer,
complexclip_bw_layer_invert, complexclip_bw_layer.
BUG=skia:3532
Committed: https://skia.googlesource.com/skia/+/b97dafefe63ea0a1bbce8e8b209f4920983fb8b9
Review URL: https://codereview.chromium.org/1034733002
|
|
|
|
|
|
|
|
|
|
|
|
| |
SkPDFStream copy constructor
SkPDFStream Substitute mechanism
SkPDFStream::setData(NULL);
SkPDFStream SK_NO_FLATE logic
BUG=skia:3585
TBR=bsalomon@google.com,reed@google.com
Review URL: https://codereview.chromium.org/1041183002
|
|
|
|
|
|
|
|
|
| |
#floats
BUG=skia:
BUG=skia:3592
Review URL: https://codereview.chromium.org/1047823002
|
|
|
|
|
|
|
|
| |
.. thanks to https://codereview.chromium.org/1032593003/ layout failures
BUG=skia:
Review URL: https://codereview.chromium.org/1041203004
|
|
|
|
|
|
|
|
| |
Some tools would like to be built with all resources embedded.
This change makes it possible to build a font manager which
uses font data embedded into the executable.
Review URL: https://codereview.chromium.org/1015723004
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The primary feature this delivers is SkNf and SkNd for arbitrary power-of-two N. Non-specialized types or types larger than 128 bits should now Just Work (and we can drop in a specialization to make them faster). Sk4s is now just a typedef for SkNf<4, SkScalar>; Sk4d is SkNf<4, double>, Sk2f SkNf<2, float>, etc.
This also makes implementing new specializations easier and more encapsulated. We're now using template specialization, which means the specialized versions don't have to leak out so much from SkNx_sse.h and SkNx_neon.h.
This design leaves us room to grow up, e.g to SkNf<8, SkScalar> == Sk8s, and to grown down too, to things like SkNi<8, uint16_t> == Sk8h.
To simplify things, I've stripped away most APIs (swizzles, casts, reinterpret_casts) that no one's using yet. I will happily add them back if they seem useful.
You shouldn't feel bad about using any of the typedef Sk4s, Sk4f, Sk4d, Sk2s, Sk2f, Sk2d, Sk4i, etc. Here's how you should feel:
- Sk4f, Sk4s, Sk2d: feel awesome
- Sk2f, Sk2s, Sk4d: feel pretty good
No public API changes.
TBR=reed@google.com
BUG=skia:3592
Review URL: https://codereview.chromium.org/1048593002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1040133002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
id:80001 of https://codereview.chromium.org/1033453003/)
Reason for revert:
Reverting due to performance regression: https://code.google.com/p/skia/issues/detail?id=3597
Original issue's description:
> Remove SkClipStack's manual rounding of BW clip rects
>
> The full fix for this bug is nudging the image in device space. That is going to be a large change. This CL should address the immediate problem.
>
> This CL will alter the following GMs:
> clipdrawdraw
> convex_poly_clip
> complexclip_bw_*
> filltypespersp
> complexclip3_simple
>
>
>
> BUG=423834
>
> Committed: https://skia.googlesource.com/skia/+/e523d4f90c3368c555282a98b41ca5ee2045103e
TBR=bsalomon@google.com,joshualitt@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=423834
Review URL: https://codereview.chromium.org/1045853002
|
|
|
|
|
|
|
|
|
| |
Need to land SK_SUPPORT_LEGACY_SCALAR_MAPPOINTS in chrome to suppress Affine
version which causes slight differences (which will need to be rebaselined)
BUG=skia:
Review URL: https://codereview.chromium.org/1045493002
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit b97dafefe63ea0a1bbce8e8b209f4920983fb8b9.
SkLightingImageFilter boundaries are incorrect (see GM:lighting).
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1048583002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, the GPU-side image filter implementation creates exact-match
textures for the offscreen backing stores for saveLayer(). This is
because several filters have GPU implementations which depend on the
texture coordinates being 0..1.
The fix is three-fold:
1) Store the actual requested size in the SkGpuDevice, so that when
wrapping it in an SkBitmap for passing to filterImage(), we can give
it the original size.
2) Fix the filters (SkMagnifierImageFilter, more TBD) whose GPU
implementation depends on 0..1 texture coordinates.
3) Remove the exception for GPU-side image filters in
SkCanvas::internalSaveLayer().
N.B.: this change will cause some minor pixel diffs in the
GPU results of the following GMs (and possibly more):
matriximagefilter, matrixconvolution, imagefiltersscaled,
lighting, imagemagnifier, filterfastbounds,
complexclip_aa_Layer_invert, complexclip_aa_layer,
complexclip_bw_layer_invert, complexclip_bw_layer.
BUG=skia:3532
Review URL: https://codereview.chromium.org/1034733002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1040783002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1035243002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Duplicate code from the HWUI backends for DM and nanobench
moves into a single place, saving a hundred lines or more of
cut-and-paste.
There's some indication that this increases the incidence of
SkCanvas "Unable to find device for layer." warnings, but no
clear degradation in test results.
R=djsollen@google.com,mtklein@google.com
BUG=skia:3589
Review URL: https://codereview.chromium.org/1036303002
|
|
|
|
| |
Review URL: https://codereview.chromium.org/1006583005
|
|
|
|
|
|
|
| |
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1041573002
|
|
|
|
| |
Review URL: https://codereview.chromium.org/1012483003
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some cases, resolving an intersection can cause a vertex to go
slightly out-of-order with edges which have already been processed.
This doesn't cause any algorithmic errors, but it's difficult to detect
without impacting performance significantly.
Also, the GPU infrastructure fires asserts when attempting
to allocate 0-length vertex buffers. Early-out instead,
since there's nothing to draw.
Review URL: https://codereview.chromium.org/1032253005
|
|
|
|
|
|
| |
BUG=skia:3596
Review URL: https://codereview.chromium.org/1017943003
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(patchset #1 id:1 of https://codereview.chromium.org/1034033004/)
Reason for revert:
makes internalSave and internalSaveLayer inconsistent. Need to find a different solution.
Original issue's description:
> Make the canvas draw looper setup update the canvas save count
>
> Image filter in a paint would leave save count in wrong state
> for normal draws. This could be observed through the canvas
> references during the draw call. An example of this is
> inspecting the canvas during a draw looper.
>
> patch from issue 993863002 at patchset 20001 (http://crrev.com/993863002#ps20001)
>
> BUG=skia:
> TBR=kkinnunen@nvidia.com
>
> Committed: https://skia.googlesource.com/skia/+/fd3a91e1fc4de69611b5297f624a1cd65db4ced1
TBR=kkinnunen@nvidia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review URL: https://codereview.chromium.org/1037653004
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Image filter in a paint would leave save count in wrong state
for normal draws. This could be observed through the canvas
references during the draw call. An example of this is
inspecting the canvas during a draw looper.
patch from issue 993863002 at patchset 20001 (http://crrev.com/993863002#ps20001)
BUG=skia:
TBR=kkinnunen@nvidia.com
Review URL: https://codereview.chromium.org/1034033004
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add and test trunc(), which is what get() used to be before rounding.
Using trunc() is a ~40% speedup on our linear gradient bench.
#neon #floats
BUG=skia:3592
#n5
#n9
CQ_INCLUDE_TRYBOTS=client.skia.android:Test-Android-Nexus5-Adreno330-Arm7-Debug-Trybot;client.skia.android:Test-Android-Nexus9-TegraK1-Arm64-Release-Trybot
Review URL: https://codereview.chromium.org/1032243002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1019303005
|
|
|
|
|
|
|
|
|
| |
(unbalanced indents)
Displaying the offset into an SkPicture hasn't worked for a while so this CL deletes the feature.
When "Save Layer" was renamed to "SaveLayer" the code that computes the indent in the list view was broken. This CL patches the problem.
Review URL: https://codereview.chromium.org/1034733004
|
|
|
|
| |
Review URL: https://codereview.chromium.org/1009633005
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1035943002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1038643002
|
|
|
|
|
|
|
|
|
|
| |
R=reed@google.com
BUG=skia:3588
NOTREECHECKS=true
NOTRY=true
NOPRESUBMIT=true
Review URL: https://codereview.chromium.org/1034073004
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace the implicit curve intersection with a geometric curve intersection. The implicit intersection proved mathematically unstable and took a long time to zero in on an answer.
Use pointers instead of indices to refer to parts of curves. Indices required awkward renumbering.
Unify t and point values so that small intervals can be eliminated in one pass.
Break cubics up front to eliminate loops and cusps.
Make the Simplify and Op code more regular and eliminate arbitrary differences.
Add a builder that takes an array of paths and operators.
Delete unused code.
BUG=skia:3588
R=reed@google.com
Review URL: https://codereview.chromium.org/1037573004
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1001833006
|
|
|
|
|
|
|
|
|
|
| |
Introduce a paint filter proxy base class as a SkDrawFilter replacement,
and convert SkDebugCanvas to use the new approach.
BUG=skia:3587
R=reed@google.com,mtklein@google.com,robertphillips@google.com,tomhudson@google.com
Review URL: https://codereview.chromium.org/1032173002
|
|
|
|
|
|
|
|
|
|
|
| |
It can be silenced or not with one flag.
Always print when building for the android framework.
Also remove the meaningless define of override to override.
BUG=skia:3257
Review URL: https://codereview.chromium.org/1032093004
|
|
|
|
| |
Review URL: https://codereview.chromium.org/1029423005
|
|
|
|
|
|
|
| |
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1032273003
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1037653002
|
|
|
|
|
|
|
|
|
| |
NOPRESUBMIT=true
BUG=skia:
DOCS_PREVIEW= https://skia.org/?cl=1037793002
Review URL: https://codereview.chromium.org/1037793002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1015633004
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updates canDraw to accept all the same Skia/Gr objects as the drawText
functions, since that information may very well be relevant in
determining whether a context can draw.
Also moves the onDrawTextBlob implementation directly into
drawTextBlob.
BUG=skia:
Review URL: https://codereview.chromium.org/1010113004
|
|
|
|
|
|
|
|
|
|
|
| |
There is no reason to require the 4 SkPMFloats (registers) to be adjacent.
The only potential win in loads and stores comes from the SkPMColors being adjacent.
Makes no difference to existing bench.
BUG=skia:
Review URL: https://codereview.chromium.org/1035583002
|
|
|
|
|
|
| |
BUG=skia:
Review URL: https://codereview.chromium.org/1036613002
|
|
|
|
|
|
|
|
|
|
| |
- SkPDFcatalog keeps a ordered list of object pointers
- Elimiante SkTSet template class
- SkPDFObject::addResources signature changes
BUG=skia:3585
Review URL: https://codereview.chromium.org/1038523004
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
@sugoi:
Early out to avoid some segfaults in SkImageDecoder_libjpeg.cpp.
I am just flailing here... things seem to work, but I have no idea why.
This prints out a lot:
libjpeg error 85 <End Of Image> from output_raw_data [0 0]
@halcanary:
I'm skipping on ImageSrc for now. Leon's refactoring that quite a lot.
This causes minor diffs for the GPU backend, given that we're now
going through the YUV path. It also reduced peak RAM usage on
my desktop from 1.26GB to 1.08GB.
BUG=skia:
Review URL: https://codereview.chromium.org/1010983004
|
|
|
|
|
|
| |
BUG=skia:3585
Review URL: https://codereview.chromium.org/1007083004
|
|
|
|
|
|
| |
BUG=skia:3585
Review URL: https://codereview.chromium.org/1034793002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SkPDFCatalog:
- remove first-page-specific code (no longer needed, never
used) (e.g. addObject()).
- Make use of SkHashMap for lookups (simplifies code).
- inline all small methods
- emitXrefTable moved to SkPDFDocument.cpp
- no longer store offsets in this data structure (moved to
SkPDFDocument.cpp)
- setFileOffset gone.
- own substitute refs directly.
SkPDFDocument::EmitPDF()
- All sites that call into SkPDFCatalog modified.
- catalog.addObject only called in a single place, after the
resouceSet is built
- offsets moved to local array.
SkPDFPage:
- finalizePage no longer deals with SkPDFCatalog or resource sets.
- GeneratePageTree no longer deals with SkPDFCatalog
SkPDFObjRef
- emitObject respects the substitution map
Unit Tests:
- respect SkPDFCatalog::addObject signature change.
SkTHash:
- #include SkChecksum for SkGoodHash
- Copyright notice added
Review URL: https://codereview.chromium.org/1033543002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add an interface for decoding scanlines, and implement that interface
in the PNG decoder.
Use a separate method to determine whether an image that used a type
with alpha was actually opaque.
SkScanlineDecoder.h:
New interface for decoding scanlines.
SkCodec.h:
Add getScanlineDecoder.
Add a virtual function (with non-virtual caller) for determining
whether the image truly had alpha. The client can call this to
determine if the image was actually opaque if it reported having alpha.
Remove code to sneakily change the passed in alpha type.
SkCodec_libpng.*:
Split up code onGetPixels into helper functions that can be shared with
the scanline decoder.
Implement scanline decoding.
Implement onReallyHasAlpha.
SkSwizzler.*:
Add a new SrcConfig as a default, which is invalid.
Add a function for setting fDstRow directly.
Assert fDstRow is not NULL.
BUG=skia:3257
Review URL: https://codereview.chromium.org/1010903003
|
|
|
|
| |
Review URL: https://codereview.chromium.org/1030883006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The full fix for this bug is nudging the image in device space. That is going to be a large change. This CL should address the immediate problem.
This CL will alter the following GMs:
clipdrawdraw
convex_poly_clip
complexclip_bw_*
filltypespersp
complexclip3_simple
BUG=423834
Review URL: https://codereview.chromium.org/1033453003
|
|
|
|
|
|
| |
BUG=skia:3585
Review URL: https://codereview.chromium.org/1035513003
|
|
|
|
|
|
|
|
|
|
|
| |
Motivation: We can write subsets (by page) of pdf documents (but this
in't yet exposed in the public API), but it is a bad idea to mix pages
from multiple documents (de-duping will break). This assert verifies
that we don't do this by accident in the future.
BUG=skia:3585
Review URL: https://codereview.chromium.org/1037573005
|