aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* Use SkNVRefCnt for a couple common types.Gravatar mtklein2016-08-09
| | | | | | | | | | | | | These types are ref-counted, but don't otherwise need a vtable. This makes them good candidates for SkNVRefCnt. Destruction can be a little more direct, and if nothing else, sizeof(T) will get a little smaller by dropping the vptr. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2232433002 Review-Url: https://codereview.chromium.org/2232433002
* SkLiteDL: tiny perf tweakGravatar mtklein2016-08-09
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2229003003 Review-Url: https://codereview.chromium.org/2229003003
* Sample app uses Ganesh before calling SkGraphics::Init().Gravatar mtklein2016-08-09
| | | | | | | | | | | | This causes inconsistent hashing. Before Init(), we use portable Murmur3, after a faster SSE4.2-based hash. To fix, call SkGraphics::Init() first. BUG=skia:5625 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2229853002 Review-Url: https://codereview.chromium.org/2229853002
* Move seg_to to a new header, define SkSegType enum thereGravatar hstern2016-08-09
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221203002 Review-Url: https://codereview.chromium.org/2221203002
* moved code into onDrawShadowedPic, only renders into shadow maps if neededGravatar vjiaoblack2016-08-09
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2220633002 Review-Url: https://codereview.chromium.org/2220633002
* Refactor various gradient effect classesGravatar fmenozzi2016-08-09
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221133002 Review-Url: https://codereview.chromium.org/2221133002
* Purge the SkLiteDL freelist when PurgeAllCaches() is called.Gravatar mtklein2016-08-09
| | | | | | | | | Seems like the polite thing to do. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2228953002 Review-Url: https://codereview.chromium.org/2228953002
* SkLiteRecorder: don't tell SkCanvas about clipsGravatar mtklein2016-08-09
| | | | | | | | | | | | If no one reads our clip, and we don't expect quickReject() to help, we can probably get away without maintaining a proper clip stack. This puts us at about 0.6-0.7x of previous record cost. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2227833004 Review-Url: https://codereview.chromium.org/2227833004
* template intersection fuzz fixesGravatar caryclark2016-08-08
| | | | | | | | | | | | | Plumb in the ability to ignore asserts for out of range input deeper into the template intersection code. Exit gracefully when error conditions are found. TBR=reed@google.com BUG=632607,632628,633063,633065,634251,633608 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2224823004 Review-Url: https://codereview.chromium.org/2224823004
* make SpecialLineRec::addSegment assert more permissive to accomodate ↵Gravatar lsalzman2016-08-08
| | | | | | | | | | | | | | | | rounding error Because the driving code that calls SpecialLineRec::addSegment uses double precision, when converted back to single precision this may round such that d0 and d1 are the same. This causes the assert to trigger. The simplest thing to do here is to modify the assert to not be so picky and allow the rare/occasional equality. Downstream Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1290628 BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2209303004 Review-Url: https://codereview.chromium.org/2209303004
* Add initial CurveMeasure codeGravatar hstern2016-08-08
| | | | | | | | | | | - This code is entirely private and is not being used by anything. - In a future CL we will write a class that uses CurveMeasure to compute dash points. In order to determine whether CurveMeasure or PathMeasure should be faster, we need the dash info (the sum of the on/off intervals and how many there are) BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2187083002 Review-Url: https://codereview.chromium.org/2187083002
* SkLiteDL: control reuse by a single parameterGravatar mtklein2016-08-08
| | | | | | | | | | | | | | | | This simply caps the number of times a display list can be reused. As this number goes up, the average amount of memory we cache goes up and the expected number of mallocs per SkLiteDL::New() goes down. This strategy does not need a hard-coded cap on how many display lists to cache, or how big they can grow. TBR=herb@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2226813002 Review-Url: https://codereview.chromium.org/2226813002
* Split distance vector into direction and magnitude componentsGravatar dvonbeck2016-08-08
| | | | | | | | | The vector was split because the vector's users need it split, and we were creating it from the split components in the first place, so it made sense to skip that step. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223053002 Review-Url: https://codereview.chromium.org/2223053002
* Fixed comment about SkLightingShader::Context memory handlingGravatar dvonbeck2016-08-08
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2225093002 Review-Url: https://codereview.chromium.org/2225093002
* SkTypeface_win_dw.cpp remove unused fnGravatar halcanary2016-08-08
| | | | | | | | TBR=bungeman@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2226653003 Review-Url: https://codereview.chromium.org/2226653003
* Encapsulate GrReducedClip result in class membersGravatar csmartdalton2016-08-08
| | | | | | | | | | | Updates GrReducedClip to store its result in class members instead of various pointer arguments. This helps clean up calling code and will make it easier to reduce the clip higher in the stack. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222873002 Review-Url: https://codereview.chromium.org/2222873002
* SkPDF/SkAdvancedTypefaceMetrics: simplify ATM, PDF takes overGravatar halcanary2016-08-08
| | | | | | | | | No public API changes. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222523003 Review-Url: https://codereview.chromium.org/2222523003
* Use sse4.2 CRC32 instructions to hash when available.Gravatar mtklein2016-08-08
| | | | | | | | | | | | About 9x faster than Murmur3 for long inputs. Most of this is a mechanical change from SkChecksum::Murmur3(...) to SkOpts::hash(...). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2208903002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;master.client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot Review-Url: https://codereview.chromium.org/2208903002
* use onPeekBitmap instead of asLegacyBitmapGravatar reed2016-08-08
| | | | | | | | | Since we know we are raster-backed at this point, it is fine, plus it avoids the copy-mutable logic in asLegacyBitmap, which is not needed here (and is slower if our bitmap was built with kNever_SkCopyPixelsMode). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2223653002 Review-Url: https://codereview.chromium.org/2223653002
* Fix alpha bug in SkColorXformGravatar msarett2016-08-08
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221933002 Review-Url: https://codereview.chromium.org/2221933002
* std::move(SkTDArray)Gravatar halcanary2016-08-08
| | | | | | | | | Since we don't support MSVC2013 anymore, we can be more succinct when defining move constructors of compound types. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2227673002 Review-Url: https://codereview.chromium.org/2227673002
* Avoid caching resources for volatile bitmap shadersGravatar fmalita2016-08-08
| | | | | | | | | | | SkBitmapProvider::isVolatile() treats all SkImages as non-volatile, which is not what we want for temp SkImage wrappers of volatile bitmaps. R=reed@google.com BUG=chromium:633941 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222783002 Review-Url: https://codereview.chromium.org/2222783002
* finish SkLiteDLGravatar mtklein2016-08-07
| | | | | | | | | | | | | - makeThreadsafe() - fix up some alignment problems - drawVertices / drawPatch - work around drawPicture() + default paint bugs? - turn on tests. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2219343002 Review-Url: https://codereview.chromium.org/2219343002
* SkLiteDL, very nearly the restGravatar mtklein2016-08-07
| | | | | | | | | | | | | fix saveLayer bounds all the misc calls a bit of refactoring just drawVertices and drawPatch to go, plus some todos and likely bug fixes BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2226563002 Review-Url: https://codereview.chromium.org/2226563002
* SkLiteDL: closing inGravatar mtklein2016-08-06
| | | | | | | | | | | - optimizeFor(GrContext*) - images - basic text BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2224753002 Review-Url: https://codereview.chromium.org/2224753002
* flesh out more of SkLiteDL:Gravatar mtklein2016-08-06
| | | | | | | | | save layer, clips, simple draws BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2226513002 Review-Url: https://codereview.chromium.org/2226513002
* SkLite*Gravatar mtklein2016-08-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkLiteRecorder, a new SkCanvas, fills out SkLiteDL, a new SkDrawable. This SkDrawable is a display list similar to SkRecord and SkBigPicture / SkRecordedDrawable, but with a few new design points inspired by Android and slimming paint: 1) SkLiteDL is structured as one big contiguous array rather than the two layer structure of SkRecord. This trades away flexibility and large-op-count performance for better data locality for small to medium size pictures. 2) We keep a global freelist of SkLiteDLs, both reusing the SkLiteDL struct itself and its contiguous byte array. This keeps the expected number of mallocs per display list allocation <1 (really, ~0) for cyclical use cases. These two together mean recording is faster. Measuring against the code we use at head, SkLiteRecorder trends about ~3x faster across various size pictures, matching speed at 0 draws and beating the special-case 1-draw pictures we have today. (I.e. we won't need those special case implementations anymore, because they're slower than this new generic code.) This new strategy records 10 drawRects() in about the same time the old strategy took for 2. This strategy stays the winner until at least 500 drawRect()s on my laptop, where I stopped checking. A simpler alternative to freelisting is also possible (but not implemented here), where we allow the client to manually reset() an SkLiteDL for reuse when its refcnt is 1. That's essentially what we're doing with the freelist, except tracking what's available for reuse globally instead of making the client do it. This code is not fully capable yet, but most of the key design points are there. The internal structure of SkLiteDL is the area I expect to be most volatile (anything involving Op), but its interface and the whole of SkLiteRecorder ought to be just about done. You can run nanobench --match picture_overhead as a demo. Everything it exercises is fully fleshed out, so what it tests is an apples-to-apples comparison as far as recording costs go. I have not yet compared playback performance. It should be simple to wrap this into an SkPicture subclass if we want. I won't start proposing we replace anything old with anything new quite yet until I have more ducks in a row, but this does look pretty promising (similar to the SkRecord over old SkPicture change a couple years ago) and I'd like to land, experiment, iterate, especially with an eye toward Android. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2213333002 Review-Url: https://codereview.chromium.org/2213333002
* Merge GrClipMaskManager into GrClipStackClipGravatar csmartdalton2016-08-05
| | | | | | | | TBR=bsalomon@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196393007 Review-Url: https://codereview.chromium.org/2196393007
* use tmp allocator for images in temp shadersGravatar reed2016-08-05
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222593003 Review-Url: https://codereview.chromium.org/2222593003
* SkPDF: Stop using kHAdvance_PerGlyphInfoGravatar halcanary2016-08-05
| | | | | | | | | | | | | | | SkPDFFont: - never request kHAdvance_PerGlyphInfo from typeface. - set_glyph_widths() fn uses a glyph cache to get advances. - stop expecting vertical advances that are never requested. - composeAdvanceData() now non-templated - appendAdvance() one-line function removed SkPDFDevice: - use a glyph cache for getting repeated advances. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2219733004 Review-Url: https://codereview.chromium.org/2219733004
* rename FoceCopyMode to SkCopyPixelModeGravatar reed2016-08-05
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2220603002 Review-Url: https://codereview.chromium.org/2220603002
* SkBlendARGB32 and S32[A]_Blend_BlitRow32 are currently formulated as: ↵Gravatar lsalzman2016-08-05
| | | | | | | | | | | | | | | | | | | | | | SkAlphaMulQ(src, src_scale) + SkAlphaMulQ(dst, dst_scale), which boils down to ((src*src_scale)>>8) + ((dst*dst_scale)>>8). In particular, note that the intermediate precision is discarded before the two parts are added together, causing the final result to possibly inaccurate. In Firefox, we use SkCanvas::saveLayer in combination with a backdrop that initializes the layer to the background. When this is blended back onto background using transparency, where the source and destination pixel colors are the same, the resulting color after the blend is not preserved due to the lost precision mentioned above. In cases where this operation is repeatedly performed, this causes substantially noticeable differences in color as evidenced in this downstream Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1200684 In the test-case in the downstream report, essentially it does blend(src=0xFF2E3338, dst=0xFF2E3338, scale=217), which gives the result 0xFF2E3237, while we would expect to get back 0xFF2E3338. This problem goes away if the blend is instead reformulated to effectively do (src*src_scale + dst*dst_scale)>>8, which keeps the intermediate precision during the addition before shifting it off. This modifies the blending operations thusly. The performance should remain mostly unchanged, or possibly improve slightly, so there should be no real downside to doing this, with the benefit of making the results more accurate. Without this, it is currently unsafe for Firefox to blend a layer back onto itself that was initialized with a copy of its background. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2097883002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot [mtklein adds...] No public API changes. TBR=reed@google.com Review-Url: https://codereview.chromium.org/2097883002
* use SkMakeBitmapShader to not force copies when possibleGravatar reed2016-08-05
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2216403002 Review-Url: https://codereview.chromium.org/2216403002
* Rename GrDrawingManager::drawContext to makeDrawContextGravatar robertphillips2016-08-05
| | | | | | | | This was violating our naming convention GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2216643002 Review-Url: https://codereview.chromium.org/2216643002
* Making a sample for shadow maps for more intensive developmentGravatar vjiaoblack2016-08-05
| | | | | | | | | | | Merge branch 'shadow-gm' into shadow-sample Added variable size shadow maps. Also fixed some bugs BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2198933002 Review-Url: https://codereview.chromium.org/2198933002
* Minor clean up related to blur mask filtersGravatar robertphillips2016-08-05
| | | | | | | | This is the non-substantive portion of: https://codereview.chromium.org/2201133002/ (Implement GPU occluded blur mask filter) GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2214163003 Review-Url: https://codereview.chromium.org/2214163003
* Move to SkDataTable::MakeXXX and sk_sp.Gravatar bungeman2016-08-05
| | | | | | | | Change SkDataTable::NewXXX to SkDataTable::MakeXXX and return sk_sp. This updates users of SkDataTable to sk_sp as well. There do not appear to be any external users of these methods. Review-Url: https://codereview.chromium.org/2211143002
* Fix vulkan resolveGravatar egdaniel2016-08-05
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2215353003 Review-Url: https://codereview.chromium.org/2215353003
* check zero-length text drawsGravatar reed2016-08-04
| | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2215113002 TBR= Review-Url: https://codereview.chromium.org/2215113002
* Remove color-dodge/burn from NVIDIA blacklist on 355.00+Gravatar csmartdalton2016-08-04
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2212593002 Review-Url: https://codereview.chromium.org/2212593002
* Implement Vulkan Resolve.Gravatar egdaniel2016-08-04
| | | | | | | | | First step to getting msaa running on vulkan BUG=skia:5127 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2210383002 Review-Url: https://codereview.chromium.org/2210383002
* Get Mac viewer working with SDLGravatar jvanverth2016-08-04
| | | | | | | | | Also fixes SkiaSDLExample. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2210603003 Review-Url: https://codereview.chromium.org/2210603003
* This CL's base is the CL that sets up the distance vector field req. ↵Gravatar dvonbeck2016-08-04
| | | | | | | | | exposure: https://codereview.chromium.org/2114993002/ BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2151653002 Review-Url: https://codereview.chromium.org/2151653002
* Create a separate src for colorspace testsGravatar msarett2016-08-04
| | | | | | | | | | This will allow me to run these tests in sRGB mode, while leaving most of the image tests disabled. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206953006 Review-Url: https://codereview.chromium.org/2206953006
* SkRTConf: eliminateGravatar halcanary2016-08-04
| | | | | | | | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2212473002 DOCS_PREVIEW= https://skia.org/?cl=2212473002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot [mtklein] TBR=reed@google.com Only removing unused public API. Review-Url: https://codereview.chromium.org/2212473002
* Remove SkSurface::MakeRenderTargetDirectGravatar robertphillips2016-08-04
| | | | | | | | | | | | | | | | | split into: https://codereview.chromium.org/2182543003/ (Move prepareForExternalIO from GrRenderTarget to GrDrawContext) https://codereview.chromium.org/2187573002/ (Reduce usage of MakeRenderTargetDirect) https://codereview.chromium.org/2186073002/ (Rename GrContext's newDrawContext & drawContext to makeDrawContext) https://codereview.chromium.org/2178353005/ (Remove use of MakeRenderTargetDirect from view system) https://codereview.chromium.org/2198433003/ (Remove some ancillary users of SkSurface::MakeRenderTargetDirect) https://codereview.chromium.org/2208483004/ (Remove GrRenderTarget member variable from SkGpuDevice) https://codereview.chromium.org/2211473002/ (Move GrContext::makeDrawContext to new GrContextPriv object) TBR=bsalomon@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2176333002 Review-Url: https://codereview.chromium.org/2176333002
* Remove GrRenderTarget member variable from SkGpuDeviceGravatar robertphillips2016-08-04
| | | | | | | | Split out of: https://codereview.chromium.org/2176333002/ (Remove SkSurface::MakeRenderTargetDirect) GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2208483004 Review-Url: https://codereview.chromium.org/2208483004
* Revert of SkRTConf: reduce functionality to what we use, increase simplicity ↵Gravatar mtklein2016-08-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #8 id:150001 of https://codereview.chromium.org/2212473002/ ) Reason for revert: missed GrVkPipelineStateCache Original issue's description: > SkRTConf: reduce functionality to what we use, increase simplicity > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2212473002 > DOCS_PREVIEW= https://skia.org/?cl=2212473002 > CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot > > [mtklein] > TBR=reed@google.com > Only removing unused public API. > > Committed: https://skia.googlesource.com/skia/+/ef59974708dade6fa72fb0218d4f8a9590175c47 TBR=halcanary@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2215433003
* Fix compiler complaints about uninit varsGravatar msarett2016-08-03
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206143003 Review-Url: https://codereview.chromium.org/2206143003
* SkRTConf: reduce functionality to what we use, increase simplicityGravatar halcanary2016-08-03
| | | | | | | | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2212473002 DOCS_PREVIEW= https://skia.org/?cl=2212473002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot [mtklein] TBR=reed@google.com Only removing unused public API. Review-Url: https://codereview.chromium.org/2212473002