aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* SkTypeface to use SkStreamAsset.Gravatar bungeman2015-01-27
| | | | | | | SkTypeface already requires typeface streams to support SkStreamAsset in practice, and in practice all users are already supplying them. Review URL: https://codereview.chromium.org/869763002
* speedup mipmap buildingGravatar reed2015-01-27
| | | | | | | | | | | mipmap_build benchmark: before: 3.36ms after: 2.20ms BUG=skia: Review URL: https://codereview.chromium.org/873393002
* Make stencil buffers uncached for uncached render target texturesGravatar kkinnunen2015-01-27
| | | | | | | | | | | | | | | Make new stencil buffers of uncached render target textures not affect the cache budgets. This is consistent with render buffer storage of uncached render target textures. Affects only newly created stencil buffers. An uncached render target might still receive a cached stencil buffer if such is available from cache. BUG=skia:3119 BUG=skia:3301 Review URL: https://codereview.chromium.org/859013002
* Revert of SSE4 opaque blend using intrinsics instead of assembly. (patchset ↵Gravatar bungeman2015-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #14 id:260001 of https://codereview.chromium.org/874863002/) Reason for revert: This kills Mac 10.6 bots. FAILED: c++ -MMD -MF obj/src/opts/opts_sse4.SkBlitRow_opts_SSE4.o.d -DSK_INTERNAL -DSK_GAMMA_SRGB -DSK_GAMMA_APPLY_TO_A8 -DSK_SCALAR_TO_FLOAT_EXCLUDED -DSK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1 -DSK_SUPPORT_GPU=1 -DSK_SUPPORT_OPENCL=0 -DSK_FORCE_DISTANCE_FIELD_TEXT=0 -DSK_BUILD_FOR_MAC -DSK_CRASH_HANDLER -DSK_DEVELOPER=1 -I../../src/core -I../../src/utils -I../../include/c -I../../include/config -I../../include/core -I../../include/pathops -I../../include/pipe -I../../include/utils/mac -I../../include/effects -O0 -gdwarf-2 -mmacosx-version-min=10.6 -arch x86_64 -mssse3 -Wall -Wextra -Winit-self -Wpointer-arith -Wsign-compare -Wno-unused-parameter -Wno-invalid-offsetof -msse4.1 -c ../../src/opts/SkBlitRow_opts_SSE4.cpp -o obj/src/opts/opts_sse4.SkBlitRow_opts_SSE4.o ../../src/opts/SkBlitRow_opts_SSE4.cpp:15:27: warning: x86intrin.h: No such file or directory ../../src/opts/SkBlitRow_opts_SSE4.cpp: In function 'void S32A_Opaque_BlitRow32_SSE4(SkPMColor*, const SkPMColor*, int, U8CPU)': ../../src/opts/SkBlitRow_opts_SSE4.cpp:40: error: '_mm_testz_si128' was not declared in this scope ../../src/opts/SkBlitRow_opts_SSE4.cpp:45: error: '_mm_testc_si128' was not declared in this scope Original issue's description: > SSE4 opaque blend using intrinsics instead of assembly. > > Since we had such a hard time with the assembly versions of this blit (to the > point that we have them completely disabled everywhere), I thought I'd take > a shot at writing a version of the blit using intrinsics. > > The key feature of SSE4 we're exploiting is that we can use ptest (_mm_test*) > to skip the blend when the 16 src pixels we consider each loop are all opaque > or all transparent. _mm_shuffle_epi8 from SSSE3 also lends a hand to extract > all those alphas. > > It's worth looking to see if we can backport this type of logic to SSE2 using > _mm_movemask_epi8, or up to 32 pixels at a time using AVX. > > My local performance testing doesn't show this to be an unambiguous win > (there are probably microbenchmarks and SKPs where we'd be better off just > powering through the blend rather than looking at alphas), but the potential > does seem tantalizing enough to let skiaperf vet it on the bots. (< 1.0x is a win.) > > DM says it draws pixel perfect compare to the old code. > > Microbenchmarks: > bitmap_RGBA_8888_A_source_stripes_two 14us -> 14.4us 1.03x > bitmap_RGBA_8888_A_source_stripes_three 14.3us -> 14.5us 1.01x > bitmap_RGBA_8888_scale_bilerp 61.9us -> 62.2us 1.01x > bitmap_RGBA_8888_update_volatile_scale_rotate_bilerp 102us -> 101us 0.99x > bitmap_RGBA_8888_scale_rotate_bilerp 103us -> 101us 0.99x > bitmap_RGBA_8888_scale 18.4us -> 18.2us 0.99x > bitmap_RGBA_8888_A_scale_rotate_bicubic 71us -> 70us 0.99x > bitmap_RGBA_8888_update_scale_rotate_bilerp 103us -> 101us 0.99x > bitmap_RGBA_8888_A_scale_rotate_bilerp 112us -> 109us 0.98x > bitmap_RGBA_8888_update_volatile 5.72us -> 5.58us 0.98x > bitmap_RGBA_8888 5.73us -> 5.58us 0.97x > bitmap_RGBA_8888_update 5.78us -> 5.6us 0.97x > bitmap_RGBA_8888_A_scale_bilerp 70.7us -> 68us 0.96x > bitmap_RGBA_8888_A_scale_bicubic 23.7us -> 21.8us 0.92x > bitmap_RGBA_8888_A 13.9us -> 10.9us 0.78x > bitmap_RGBA_8888_A_source_opaque 14us -> 6.29us 0.45x > bitmap_RGBA_8888_A_source_transparent 14us -> 3.65us 0.26x > > Running over our ~70 SKP web page captures, this looks like we spend 0.7x > the time in S32A_Opaque_BlitRow compared to the SSE2 version, which should > be a decent predictor of real-world impact. > > BUG=chromium:399842 > > Committed: https://skia.googlesource.com/skia/+/04bc91b972417038fecfa87c484771eac2b9b785 TBR=henrik.smiding@intel.com,mtklein@google.com,herb@google.com,reed@google.com,thakis@chromium.org,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:399842 Review URL: https://codereview.chromium.org/874033004
* SSE4 opaque blend using intrinsics instead of assembly.Gravatar mtklein2015-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we had such a hard time with the assembly versions of this blit (to the point that we have them completely disabled everywhere), I thought I'd take a shot at writing a version of the blit using intrinsics. The key feature of SSE4 we're exploiting is that we can use ptest (_mm_test*) to skip the blend when the 16 src pixels we consider each loop are all opaque or all transparent. _mm_shuffle_epi8 from SSSE3 also lends a hand to extract all those alphas. It's worth looking to see if we can backport this type of logic to SSE2 using _mm_movemask_epi8, or up to 32 pixels at a time using AVX. My local performance testing doesn't show this to be an unambiguous win (there are probably microbenchmarks and SKPs where we'd be better off just powering through the blend rather than looking at alphas), but the potential does seem tantalizing enough to let skiaperf vet it on the bots. (< 1.0x is a win.) DM says it draws pixel perfect compare to the old code. Microbenchmarks: bitmap_RGBA_8888_A_source_stripes_two 14us -> 14.4us 1.03x bitmap_RGBA_8888_A_source_stripes_three 14.3us -> 14.5us 1.01x bitmap_RGBA_8888_scale_bilerp 61.9us -> 62.2us 1.01x bitmap_RGBA_8888_update_volatile_scale_rotate_bilerp 102us -> 101us 0.99x bitmap_RGBA_8888_scale_rotate_bilerp 103us -> 101us 0.99x bitmap_RGBA_8888_scale 18.4us -> 18.2us 0.99x bitmap_RGBA_8888_A_scale_rotate_bicubic 71us -> 70us 0.99x bitmap_RGBA_8888_update_scale_rotate_bilerp 103us -> 101us 0.99x bitmap_RGBA_8888_A_scale_rotate_bilerp 112us -> 109us 0.98x bitmap_RGBA_8888_update_volatile 5.72us -> 5.58us 0.98x bitmap_RGBA_8888 5.73us -> 5.58us 0.97x bitmap_RGBA_8888_update 5.78us -> 5.6us 0.97x bitmap_RGBA_8888_A_scale_bilerp 70.7us -> 68us 0.96x bitmap_RGBA_8888_A_scale_bicubic 23.7us -> 21.8us 0.92x bitmap_RGBA_8888_A 13.9us -> 10.9us 0.78x bitmap_RGBA_8888_A_source_opaque 14us -> 6.29us 0.45x bitmap_RGBA_8888_A_source_transparent 14us -> 3.65us 0.26x Running over our ~70 SKP web page captures, this looks like we spend 0.7x the time in S32A_Opaque_BlitRow compared to the SSE2 version, which should be a decent predictor of real-world impact. BUG=chromium:399842 Review URL: https://codereview.chromium.org/874863002
* GrBatchPrototypeGravatar joshualitt2015-01-26
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/845103005
* Remove clear function from SkGPipeGravatar derekf2015-01-26
| | | | | | Clear no longer exists. (It's now a drawPaint call) Review URL: https://codereview.chromium.org/881563002
* Fix Morphology effects sourcing outside of the crop rect.Gravatar cwallez2015-01-26
| | | | | | | | BUG=skia:1766 Committed: https://skia.googlesource.com/skia/+/f6be925b5615f07039ce95c3433039694a8d1679 Review URL: https://codereview.chromium.org/781153002
* discard scratch render targets when they are recycled.Gravatar bsalomon2015-01-26
| | | | Review URL: https://codereview.chromium.org/871373007
* Alter gpu vetoGravatar robertphillips2015-01-26
| | | | | | | | | | | | | | | | This CL unifies the treatment of the dashed and concave paths. Before: TP 28 FP 15 TN 8 FN 3 IND 3 After: TP 28 FP 18 TN 7 FN 2 IND 2 One of the TrueNegatives that became a FalsePositive was the motivation use case (the Chromium busy spinner). Committed: https://skia.googlesource.com/skia/+/87a6a8e18c7d5bbc94f478b44c53dc0e0549f927 Review URL: https://codereview.chromium.org/875913002
* check effective cache-size for fixed-budget cachesGravatar reed2015-01-26
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/876743002
* Stop incorrectly setting the clip bit in GrCMMGravatar bsalomon2015-01-26
| | | | Review URL: https://codereview.chromium.org/866403005
* Collapse consecutive SkTableColorFiltersGravatar cwallez2015-01-26
| | | | | | | | | | | BUG=skia:1366 For the added bench, the collapsing makes the bench take: - 70% of the time for CPU rendering of 3 consecutive matrix filters - almost no change in the GPU rendering of the matrix filters - 50% of the time for CPU and GPU rendering of 3 consecutive table filters Review URL: https://codereview.chromium.org/776673002
* Don't do a pointless << 0.Gravatar mtklein2015-01-26
| | | | | | | | | | It's very common (universal?) that alpha is the top byte. You'd hope the compiler would remove the left shift then, but I've seen Clang just do a dumb left shift of zero. :( BUG=skia: Review URL: https://codereview.chromium.org/872243003
* Revert of Alter gpu veto (patchset #1 id:1 of ↵Gravatar robertphillips2015-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/875913002/) Reason for revert: Failing tests Original issue's description: > Alter gpu veto > > This CL unifies the treatment of the dashed and concave paths. > > Before: > TP 28 FP 15 TN 8 FN 3 IND 3 > > After: > TP 28 FP 18 TN 7 FN 2 IND 2 > > One of the TrueNegatives that became a FalsePositive was the motivation use case (the Chromium busy spinner). > > Committed: https://skia.googlesource.com/skia/+/87a6a8e18c7d5bbc94f478b44c53dc0e0549f927 TBR=egdaniel@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/879483003
* Alter gpu vetoGravatar robertphillips2015-01-26
| | | | | | | | | | | | | | This CL unifies the treatment of the dashed and concave paths. Before: TP 28 FP 15 TN 8 FN 3 IND 3 After: TP 28 FP 18 TN 7 FN 2 IND 2 One of the TrueNegatives that became a FalsePositive was the motivation use case (the Chromium busy spinner). Review URL: https://codereview.chromium.org/875913002
* Add patheffects to debugger printoutGravatar robertphillips2015-01-26
| | | | | | TBR=bsalomon@google.com Review URL: https://codereview.chromium.org/872043002
* Fold alpha to the inner savelayer in savelayer-savelayer-restore patternsGravatar kkinnunen2015-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | Fold alpha to the inner savelayer in savelayer-savelayer-restore patterns such as this: SaveLayer (non-opaque) Save ClipRect SaveLayer Restore Restore Restore Current blink generates these for example for SVG content such as this: <path style="opacity:0.5 filter:url(#blur_filter)"/> The outer save layer is due to the opacity and the inner one is due to blur filter being implemented with picture image filter. Reduces layers in desk_carsvg.skp testcase from 115 to 78. BUG=skia:3119 Review URL: https://codereview.chromium.org/835973005
* initial preroll apiGravatar reed2015-01-25
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/855473002
* Revert of Fix Morphology effects sourcing outside of the crop rect. ↵Gravatar mtklein2015-01-23
| | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #6 id:100001 of https://codereview.chromium.org/781153002/) Reason for revert: Looks like this is causing memory leaks: http://build.chromium.org/p/client.skia/builders/Test-Ubuntu13.10-GCE-NoGPU-x86_64-Debug-ASAN/builds/1155/steps/dm/logs/stdio And causing crashes on Mac 10.6: http://build.chromium.org/p/client.skia/builders/Test-Mac10.6-MacMini4.1-GeForce320M-x86_64-Debug/builds/1417/steps/dm/logs/stdio Original issue's description: > Fix Morphology effects sourcing outside of the crop rect. > > BUG=skia:1766 > > Committed: https://skia.googlesource.com/skia/+/f6be925b5615f07039ce95c3433039694a8d1679 TBR=junov@google.com,junov@chromium.org,bsalomon@google.com,reed@google.com,cwallez@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:1766 Review URL: https://codereview.chromium.org/868973005
* Fix Morphology effects sourcing outside of the crop rect.Gravatar cwallez2015-01-23
| | | | | | BUG=skia:1766 Review URL: https://codereview.chromium.org/781153002
* Zap the scratch key on non-RT textures when scratch textures are disabled.Gravatar bsalomon2015-01-23
| | | | Review URL: https://codereview.chromium.org/870103002
* Fix the speeling of "purgeable" in Gr codeGravatar bsalomon2015-01-23
| | | | | | TBR=robertphillips@google.com Review URL: https://codereview.chromium.org/874693002
* Cleanup SkPDFObject::emit*Gravatar halcanary2015-01-23
| | | | Review URL: https://codereview.chromium.org/869783003
* Take budgeted param when snapping new image.Gravatar bsalomon2015-01-23
| | | | Review URL: https://codereview.chromium.org/872543002
* check for too-large rowBytesGravatar reed2015-01-23
| | | | | | BUG=446164 Review URL: https://codereview.chromium.org/871993003
* minor changes left out of http://crrev.com/873543002Gravatar halcanary2015-01-23
| | | | | | TBR=mtklein@google.com Review URL: https://codereview.chromium.org/872643005
* Allow unbudgeted resources to be recycled by the cache as scratch.Gravatar bsalomon2015-01-23
| | | | Review URL: https://codereview.chromium.org/870743002
* Remove GrBinHashKeyGravatar bsalomon2015-01-23
| | | | Review URL: https://codereview.chromium.org/861323002
* Compile fix after Add specialized content key class for resourcesGravatar kkinnunen2015-01-23
| | | | | | | gcc (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04) 4.6.4 error: comparison between signed and unsigned integer expressions Review URL: https://codereview.chromium.org/871013002
* More changes to SkPDFShader to eliminate multiple inheritance!Gravatar halcanary2015-01-23
| | | | Review URL: https://codereview.chromium.org/873543002
* add newImage APIGravatar reed2015-01-23
| | | | | | | BUG=skia:3277 related bug: skbug.com/3276 Review URL: https://codereview.chromium.org/821083002
* more reinforcement that images never have zero width or heightGravatar reed2015-01-23
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/869743002
* Add specialized content key class for resources.Gravatar bsalomon2015-01-23
| | | | Review URL: https://codereview.chromium.org/858123002
* Simplify SkPDFShader class. Now invalid objects are never created.Gravatar halcanary2015-01-23
| | | | | | | | "Constructors should not do real work" I have verified that all test PDFs render identically. Review URL: https://codereview.chromium.org/862113004
* Initialize the pad memory in GrBufferAllocPool.Gravatar dongseong.hwang2015-01-22
| | | | | | | | Msan bot detects Use-of-uninitialized-value on the pad. BUG=445745 Review URL: https://codereview.chromium.org/865913002
* Put close_gif() in an anonymous namespace.Gravatar mtklein2015-01-22
| | | | | | | | | Not a big deal, but matches the intention of it being a file-scoped function better. This mirrors a recent google3 change for clients who don't use C++11. BUG=skia: Review URL: https://codereview.chromium.org/865243002
* Muck with the right cinfo.Gravatar scroggo2015-01-22
| | | | | | | | | | | In SkImageDecoder_libjpeg, modify cinfo *after* destroying it and creating a new one in its place. Should fix build breakage. Committed: https://skia.googlesource.com/skia/+/3629865bac20ae8092177f519594f79f89d09fb0 Review URL: https://codereview.chromium.org/858333002
* Rename GrOptDrawState to GrPipeline and GrDrawState to GrPipelineBuilderGravatar egdaniel2015-01-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/858343002
* remove (unused) GatherPixelRefsGravatar reed2015-01-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/869463002
* fLuminance is unsed unless SK_GAMMA_APPLY_TO_A8 is definedGravatar mtklein2015-01-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/865103002
* Fix SkIStream nits.Gravatar bungeman2015-01-22
| | | | | | | | | Fix comment, constness of one field, and delete already checks for NULL. TBR=reed@google.com Trivial change to debatably public api. Review URL: https://codereview.chromium.org/868643003
* XPFactory lazily initializie in drawstate / GrPaintGravatar joshualitt2015-01-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/866573002
* Remove the need for asCoeff in SkXfermode.Gravatar egdaniel2015-01-22
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/864833002
* Remove staging SkStream::unref().Gravatar bungeman2015-01-22
| | | | | | | | | SkStream::unref() was added to ease transitioning off of SkStream deriving from SkRefCnt. It is no longer needed, remove it. TBR=reed@google.com Review URL: https://codereview.chromium.org/861413002
* Don't require -DSK_USE_POSIX_THREADS.Gravatar mtklein2015-01-21
| | | | | | | | | | | | | To compile SkCondVar, we already require either pthreads or Windows. This simplifies that code to not need SK_USE_POSIX_THREADS to be explicitly defined. We'll just look to see if we're targeting Windows, and if not, assume pthreads. Both before and after this CL, that code will fail to compile if we're not on Windows and don't have pthreads. BUG=skia: Review URL: https://codereview.chromium.org/869443003
* Revert of Muck with the right cinfo. (patchset #2 id:20001 of ↵Gravatar bungeman2015-01-21
| | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/858333002/) Reason for revert: Appears to cause Android dm to segfault. Original issue's description: > Muck with the right cinfo. > > In SkImageDecoder_libjpeg, modify cinfo *after* destroying it and > creating a new one in its place. > > Should fix build breakage. > > Committed: https://skia.googlesource.com/skia/+/3629865bac20ae8092177f519594f79f89d09fb0 TBR=scroggo@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/858323003
* Muck with the right cinfo.Gravatar scroggo2015-01-21
| | | | | | | | | In SkImageDecoder_libjpeg, modify cinfo *after* destroying it and creating a new one in its place. Should fix build breakage. Review URL: https://codereview.chromium.org/858333002
* Move sync code to include/, switch from using platform define to a proxy ↵Gravatar mtklein2015-01-21
| | | | | | | | | | | | | | header in core/ This fixes two problems: 1) #include SK_SOME_DEFINE doesn't work well for all our clients. 2) Things in include/ are #including things in src/, which we don't like. TBR=reed@google.com BUG=skia: Review URL: https://codereview.chromium.org/862983002
* Use SkLazyPtr in SkPDFGraphicState.cppGravatar halcanary2015-01-21
| | | | | | | Motivation: currently we rely on mutexes for guarding static initialization. These mutexes will go away. Review URL: https://codereview.chromium.org/815223005