skia2/include/core
mtklein 654ad19fbd Revert of De-templatize Sk4pxXfermode code a bit. (patchset #2 id:20001 of https://codereview.chromium.org/1242743004/)
Reason for revert:
http://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-Arm7-Debug-Android_NoNeon/builds/1168/steps/build%20most/logs/stdio

Original issue's description:
> De-templatize Sk4pxXfermode code a bit.
>
> This deduplicates a few pieces of code:
>   - we end up with one copy of each xfer32() driver loop instead of one per xfermode;
>   - we end up with two* copies of each xfermode implementation instead of ten**.
>
> * For a given Mode: Mode() itself and xfer_aa<Mode>().
> ** From unrolling: twice at a stride of 8, once at 4, once at 2, and once at 1, then all again for when we have AA.
>
> This decreases the size of SkXfermode.o from 1.5M to 620K on x86-64 and from 1.3M to 680K on ARMv7+NEON.
>
> If we wanted to, we could eliminate the xfer_aa<Mode>() copy by tagging each Mode() function as __attribute__((noinline)) or its equivalent.  This would result in another ~100K space savings.
>
> Performance is affected in proportion to the original xfermode speed:
> fast modes like Plus take the largest proportional hit, and slow modes
> like HardLight or SoftLight see essentially no hit at all.
>
> This adds SK_VECTORCALL to help keep this code fast on ARMv7 and Windows.  I've looked at the ARMv7 generated code... it looks good, even pretty.
>
> For compatibility with SK_VECTORCALL, we now pass the vector-sized arguments by value instead of by reference.  Some refactoring now allows us to declare each mode as just a static function instead of a struct, which simplifies things.
>
> TBR=reed@google.com
> No public API changes.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/e617e1525916d7ee684142728c0905828caf49da

TBR=msarett@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1245273005
2015-07-21 12:08:41 -07:00
..
SkAnnotation.h Factory methods for heap-allocated SkAnnotation objects. 2014-02-27 11:47:36 +00:00
SkAtomics.h Modernize atomics in SkTaskGroup's threadpool. 2015-06-17 07:53:22 -07:00
SkBBHFactory.h C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
SkBitmap.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkBitmapDevice.h add src-rect-constraint to drawImageRect 2015-07-14 10:54:12 -07:00
SkBlitRow.h Re-proc SkBlitRow::Color32 for ARM. 2015-05-22 06:08:29 -07:00
SkBlurTypes.h move common blur types into central header 2014-04-28 16:25:35 +00:00
SkCanvas.h Revert[2] of guard to remove DrawBitmapRectFlags 2015-07-17 07:09:43 -07:00
SkChunkAlloc.h Add rewind capability to SkChunkAlloc 2015-02-27 08:31:57 -08:00
SkClipStack.h Clean up clipping code a bit 2015-02-10 08:16:55 -08:00
SkColor.h SkAlpha constant defs 2013-07-19 17:43:27 +00:00
SkColorFilter.h rename GrShaderDataManager -> GrProcessorDataManager 2015-07-09 06:28:14 -07:00
SkColorPriv.h Replace buggy_blend_modes GM with an exhaustive test. 2015-07-16 07:01:40 -07:00
SkColorTable.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkComposeShader.h C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
SkData.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDataTable.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDeque.h This CL addresses "SkCanvas::save flags are not respected by GPU backend" (https://code.google.com/p/skia/issues/detail?id=1503). 2013-08-16 00:53:34 +00:00
SkDevice.h add src-rect-constraint to drawImageRect 2015-07-14 10:54:12 -07:00
SkDither.h
SkDocument.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDraw.h Revert[2] SkDraw and all Blitters to use pixmap instead of bitmapi 2015-06-09 12:16:53 -07:00
SkDrawable.h add matrix options to drawDrawable 2015-07-07 10:22:31 -07:00
SkDrawFilter.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkDrawLooper.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkEndian.h fix size_t/int warnings 2014-04-23 19:19:44 +00:00
SkError.h Sanitizing source files in Housekeeper-Nightly 2013-09-05 07:01:19 +00:00
SkFilterQuality.h add newImage API 2015-01-23 05:58:07 -08:00
SkFixed.h Correct SkFixedToDouble. 2015-04-17 10:05:43 -07:00
SkFlattenable.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkFlattenableSerialization.h Removed unnecessary define 2013-11-08 15:24:12 +00:00
SkFloatBits.h remove unused SkIntToFloatCast_NoOverflowCheck 2014-08-19 07:39:41 -07:00
SkFloatingPoint.h A bunch of little SkMScalar-as-float build fixes. 2015-06-09 11:47:01 -07:00
SkFont.h Treat embedded bitmaps as a hinting method. 2014-08-19 13:18:58 -07:00
SkFontHost.h Remove a layer of indirection and code from SkFontHost. 2014-09-10 15:49:48 -07:00
SkFontLCDConfig.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-03-13 07:01:04 +00:00
SkFontStyle.h Replace SkTypeface::Style with SkFontStyle. 2014-10-20 13:33:19 -07:00
SkGraphics.h remove getter for imagegenerator factory, update test 2015-07-09 14:08:49 -07:00
SkImage.h Add image->bitmap 2015-07-08 12:46:23 -07:00
SkImageDecoder.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkImageEncoder.h Add SkEncodedFormat, used by SkCodec. 2015-03-20 11:55:55 -07:00
SkImageFilter.h Remove SK_LEGACY_IMAGE_FILTER_CROP_RECT_EDGES code. 2015-07-21 11:11:17 -07:00
SkImageGenerator.h remove getter for imagegenerator factory, update test 2015-07-09 14:08:49 -07:00
SkImageInfo.h Add Rec709 YUV color space support to GrYUVtoRGBEffect. 2015-07-20 15:00:03 -07:00
SkLazyPtr.h Clean up SkDynamicAnnotations. 2015-03-12 05:27:46 -07:00
SkMallocPixelRef.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkMask.h remove unused kLCD_MaskFormat 2014-11-13 14:39:58 -08:00
SkMaskFilter.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkMath.h Disable the noisiest /analyze warning in Chrome. ~3,700/12,000 2015-01-30 12:57:50 -08:00
SkMatrix.h Fix up SkMatrix::isFinite call 2015-07-06 12:15:34 -07:00
SkMetaData.h "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
SkMultiPictureDraw.h Add sk_parallel_for() 2015-06-17 15:26:15 -07:00
SkMutex.h Create a template AutoTAcquire, and specialize an SkMutex version. 2015-07-09 13:44:32 -07:00
SkOnce.h Move instanced index buffer creation to flush time 2015-05-04 10:36:43 -07:00
SkOSFile.h Move SkOSFile::Iter impls into ports. 2015-02-12 07:18:27 -08:00
SkPackBits.h Remove unused PackBits methods and fix length checks 2015-06-04 15:10:37 -07:00
SkPaint.h Make SkPaint::glyphsToUnichars use explicit SkSurfaceProps 2015-06-26 12:17:59 -07:00
SkPath.h Very tiny paths are subsumed by the Convexicator 2015-07-14 11:19:26 -07:00
SkPathEffect.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkPathMeasure.h use conics 2014-12-17 08:21:05 -08:00
SkPathRef.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkPicture.h change old picture serialization to really handle images 2015-06-22 12:48:26 -07:00
SkPictureRecorder.h Allow reset of the SkPictureRecorder cull rect and other parameters during endRecording. 2015-07-07 14:27:10 -07:00
SkPixelRef.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkPixelSerializer.h add const to encodePixels pixel parameter 2014-12-19 12:26:07 -08:00
SkPixmap.h Revert "Revert of move erase into SkPixmap (patchset #1 id:1 of https://codereview.chromium.org/1161033005/)" 2015-06-08 10:22:22 -07:00
SkPoint.h Revert of Revert of stop calling SkScalarDiv (patchset #1 id:1 of https://codereview.chromium.org/1138263002/) 2015-05-12 10:37:34 -07:00
SkPostConfig.h Revert of De-templatize Sk4pxXfermode code a bit. (patchset #2 id:20001 of https://codereview.chromium.org/1242743004/) 2015-07-21 12:08:41 -07:00
SkPreConfig.h Revert of Allow NEON on iOS. (patchset #3 id:40001 of https://codereview.chromium.org/1091823002/) 2015-04-17 14:02:40 -07:00
SkRasterizer.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkRect.h Simple CL to add a joinWithPossiblyEmptyArg to SkRect 2015-05-01 08:51:48 -07:00
SkRefCnt.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkRegion.h Remove useless SkASSERT in SkRect.h and SkRegion.h 2015-04-28 12:47:48 -07:00
SkRRect.h Fill SkRRect::fType proactively. 2014-12-18 13:29:54 -08:00
SkRSXform.h add SkCanvas::drawAtlas 2015-06-24 10:29:18 -07:00
SkScalar.h Revert of Revert of stop calling SkScalarDiv (patchset #1 id:1 of https://codereview.chromium.org/1138263002/) 2015-05-12 10:37:34 -07:00
SkShader.h rename GrShaderDataManager -> GrProcessorDataManager 2015-07-09 06:28:14 -07:00
SkSize.h deprecate SkScalarRound (and its ilk), use SkScalarRound[ToInt,ToScalar]. #define SK_SUPPORT_DEPRECATED_SCALARROUND for legacy clients 2013-12-17 19:22:07 +00:00
SkSpinlock.h Fix componene debug build failure in chromium 2015-07-10 08:32:23 -07:00
SkStream.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkString.h SkString: remove fStr member 2015-04-08 13:01:22 -07:00
SkStrokeRec.h Make GrStrokeInfo inherit from SkStrokeRec 2015-05-18 22:23:54 -07:00
SkSurface.h add ability to get FBO ID to Surface 2015-07-08 12:54:04 -07:00
SkSurfaceProps.h Clean up usage of SkSurfaceProps 2015-06-22 12:06:08 -07:00
SkTArray.h Cleanup: Remove unnecessary double-semicolons. 2015-04-27 07:01:45 -07:00
SkTDArray.h Fix some lingering typos 2015-04-24 11:10:51 -07:00
SkTDict.h move some headers out of public 2014-06-17 09:04:45 -07:00
SkTDStack.h Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
SkTemplates.h refactor bitmapshader to use a controller 2015-06-04 06:31:31 -07:00
SkTextBlob.h Start canonicalizing color for all A8 textblobs 2015-04-14 12:17:27 -07:00
SkTime.h SkTime: return timezone information; format in ISO-8601 2015-05-01 07:06:23 -07:00
SkTInternalLList.h "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
SkTLazy.h "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
SkTRegistry.h Rewrite SkTRegistry to take any trivially-copyable type. 2013-09-04 17:20:18 +00:00
SkTSearch.h One SkTSearch to rule them all. Allow key to be of different type than the array. 2013-05-17 19:05:03 +00:00
SkTypeface.h remove SkInstCnt 2015-06-26 11:45:03 -07:00
SkTypes.h SK_ARRAY_COUNT shouldn't work on pointers. 2015-05-07 10:58:44 -07:00
SkUnPreMultiply.h Factor out UnPreMultiplyPreservingByteOrder 2014-01-15 22:24:58 +00:00
SkUtils.h Rewrite memset benches, then use results to add a small-N optimization. 2015-04-09 14:05:17 -07:00
SkWeakRefCnt.h Remove SkThread.h, include SkMutex.h or SkAtomics.h as appropriate. 2015-07-07 12:21:22 -07:00
SkWriteBuffer.h change old picture serialization to really handle images 2015-06-22 12:48:26 -07:00
SkWriter32.h Make SkWriter32::snapshotAsData() a dumb copy. 2015-01-29 12:03:53 -08:00
SkXfermode.h rename GrShaderDataManager -> GrProcessorDataManager 2015-07-09 06:28:14 -07:00