merge in klp-release (no-op)
Merge perspective feature for PDF.

From Skia's repo:

http://code.google.com/p/skia/source/detail?r=11751
Add SkPDFDeviceFlatenner which extends SkPDFDevice to add support
to flatten the path and the text when we have perspective. prepare
to deprecate SkPDFDevice constructor, and route gm and render_pdfs
to use SkDocument::Create pdf interface instead. - controlled by a
flag add comments where we are supposed to flatten other features
(paint, shaders, ... )

https://code.google.com/p/skia/source/detail?r=11822
Implement perspective for bitmaps in pdf.

https://code.google.com/p/skia/source/detail?r=11937
PDF: support perspective in simple shaders. (this version does not
work well with tilling)

BUG:11384071

Change-Id: I48ea88d231231215349f155d972c6b9e1e127c71
Fix drawing xfermodes to PDF.

Cherry pick of https://code.google.com/p/skia/source/detail?r=12034 in Skia
[PDF] Improve complex xfer mode support.

Xfer mode applies only to the shape of the source drawing, not everything in the
clip as in currently implemented.  It's just that the current gm examples draw a
shape that fills the visible layer.

BUG:11477060

Change-Id: I9f82aeb09ead0d7e600590264a594262ec6c6282
Use nine patch drawing for blurry round rectangles

Cherry pick of https://codereview.chromium.org/52703003/ in Skia.

Add SkRRect::transform.

Much like SkPath::transform, it transforms an SkRRect based on an
SkMatrix. Unlike SkPath::transform, it will fail for matrices that
contain perspective or skewing.

Cherry pick of https://codereview.chromium.org/48623006/ in Skia.

Add ability to ninepatch blurred rounded rectangle

Speed up drawing large blurry round rectangles by converting them to
nine patches.

SkDraw:
Add drawRRect.

SkBitmapDevice:
Call SkDraw::drawRRect instead of converting SkRRect to an SkPath.

SkMaskFilter/SkBlurMaskFilter:
Create a nine patch of a blurred round rect and draw it instead of
drawing the entire thing.

SkPDFDevice:
Override drawRRect to perform the old behavior in
SkBitmapDevice::drawRect.

BUG:11174385
Change-Id: I96e6bf50c1418f7df70681afee6e25be40615497
Fix a memory leak in filterRRectToNine.

Cherry-pick of Skia from https://codereview.chromium.org/65723005/

Found by our valgrind bot:

63,808 bytes in 126 blocks are definitely lost in loss record 76 of 76
at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
by 0x52C126: sk_malloc_flags(unsigned long, unsigned int) (SkMemory_malloc.cpp:45)
by 0x52C157: sk_malloc_throw(unsigned long) (SkMemory_malloc.cpp:31)
by 0x42A9B2: SkMask::AllocImage(unsigned long) (SkMask.cpp:40)
by 0x5BD349: prepare_to_draw_into_mask(SkRect const&, SkMask*) (SkBlurMaskFilter.cpp:170)
by 0x5BEDC6: SkBlurMaskFilterImpl::filterRRectToNine(SkRRect const&, SkMatrix const&, SkIRect const&, SkMaskFilter::NinePatch*) const (SkBlurMaskFilter.cpp:181)
by 0x42B604: SkMaskFilter::filterRRect(SkRRect const&, SkMatrix const&, SkRasterClip const&, SkBounder*, SkBlitter*, SkPaint::Style) const (SkMaskFilter.cpp:218)
by 0x42460E: SkDraw::drawRRect(SkRRect const&, SkPaint const&) const (SkDraw.cpp:1056)
by 0x413F9C: SkBitmapDevice::drawRRect(SkDraw const&, SkRRect const&, SkPaint const&) (SkBitmapDevice.cpp:235)
by 0x419D31: SkCanvas::drawRRect(SkRRect const&, SkPaint const&) (SkCanvas.cpp:1695)
by 0x43F865: SkPicturePlayback::draw(SkCanvas&, SkDrawPictureCallback*) (SkPicturePlayback.cpp:1001)
by 0x43BC1A: SkPicture::draw(SkCanvas*, SkDrawPictureCallback*) (SkPicture.cpp:261)
by 0x407D42: void sk_tools::DrawTileToCanvas<SkPicture>(SkCanvas*, SkRect const&, SkPicture*) (PictureRenderer.cpp:502)
by 0x4080BA: sk_tools::TiledPictureRenderer::render(SkString const*, SkBitmap**) (PictureRenderer.cpp:546)
by 0x4064EF: render_picture(SkString const&, SkString const*, sk_tools::PictureRenderer&, SkBitmap**) (render_pictures_main.cpp:193)
by 0x406637: render_picture(SkString const&, SkString const*, sk_tools::PictureRenderer&) (render_pictures_main.cpp:251)
by 0x406F50: tool_main(int, char**) (render_pictures_main.cpp:360)
by 0x407142: main (render_pictures_main.cpp:455)

BUG:11630753
Change-Id: Ie7792111449da3126a5e9e273e79bbb36481349c
Skia: Add NEON intrinsic D32_A8_Black and D32_A8_Opaque

If NEON support is indiciated via __ARM_HAVE_NEON flag then use
an optimized NEON intrinsics version of the D32_A8_Black and D32_A8_Opaque
masking function.

Change-Id: I20d2bf15515d960b73e635784a0daf29302e1f12
Override drawRRect in fake SkBitmapDevices.

Recent changes to SkBitmapDevice modified ::drawRRect() to take
an optimized drawing case. Some subclasses of SkBitmapDevice were
depending on the old behavior of calling ::drawPath(). Since they
do not draw, attempting to take the drawing path can cause problems.
For these subclasses, call drawPath() in the subclass.

Cherry-pick of https://code.google.com/p/skia/source/detail?r=12247 in Skia.

BUG:11648093
Change-Id: Ie2173907c58c36b28855aba5a71b7ad676cc543e
skia: Fix Codenomicon image open failure.

Add code to handle 'No image descriptor' case in a gif image format.
Remove goto call.

CRs-Fixed: 333162

(cherrypicked from commit I80d7df9d5f112b5fe32699ce6dd2df0f48323bb1)

Change-Id: I44ff4e0ab681febdb5304b9761a92e6717d4ee2a
SkLanguage and SkPaintOptionsAndroid optimization

(1) Global linked list to manage SkLanguage and SkPaintOptionsAndroid
    objects
(2) All copy constructor overheads associated with above classes are
    changed to simple pointer assignment
(3) All string related operations in SkLanguage class are replaced with
    simple pointer manipulation. Also saving on string allocations.
(4) SkLangList and SkPaintOptionsAndroidList are 2 new classes created
    to manage the global linked list
(5) SkLanguages and SkPaintOptionsAndroids are 2 new singleton classes
    created to work with the global linked list class (See 4)

Change-Id: Id1d8357569e79f7e3da403b56a08db937afb07eb
SkDraw::drawRect optimization

New class in SkDeviceLooper.cpp falls in in the critical code path of
SkDraw::drawRect().  This new class SkDeviceLooper does nothing except
for bound checking. It copies the modified rect bounds into new pointer
variables and returns them back "if needed". The additional overhead of
creating an object of SkDeviceLooper class and calling member functions
reduces performance.  This patch creates a pre-check condition and if
it succeeds we know for sure SkDeviceLooper won't change the rect
bounds. Under this condition, we avoid using the SkDeviceLooper class.

Change-Id: I11fa13ace8d50d52069e1780a14874e4c34133f2
external/skia Hooks for optimized blitting

Add in hooks to allow for overriding blitting operations with
optimized functions.

Change-Id: If38010a69d9fe7cf412d91c277db666f2fd7df34
Merge "Skia: Add NEON intrinsic D32_A8_Black and D32_A8_Opaque"
Merge "SkLanguage and SkPaintOptionsAndroid optimization"
Merge "SkDraw::drawRect optimization"
Merge "external/skia Hooks for optimized blitting"
Merge "skia: Fix Codenomicon image open failure."
Skia: Add NEON intrinsic D32_A8_Black and D32_A8_Opaque

If NEON support is indiciated via __ARM_HAVE_NEON flag then use
an optimized NEON intrinsics version of the D32_A8_Black and D32_A8_Opaque
masking function.

Change-Id: I20d2bf15515d960b73e635784a0daf29302e1f12
skia: Fix Codenomicon image open failure.

Add code to handle 'No image descriptor' case in a gif image format.
Remove goto call.

CRs-Fixed: 333162

(cherrypicked from commit I80d7df9d5f112b5fe32699ce6dd2df0f48323bb1)

Change-Id: I44ff4e0ab681febdb5304b9761a92e6717d4ee2a
SkLanguage and SkPaintOptionsAndroid optimization

(1) Global linked list to manage SkLanguage and SkPaintOptionsAndroid
    objects
(2) All copy constructor overheads associated with above classes are
    changed to simple pointer assignment
(3) All string related operations in SkLanguage class are replaced with
    simple pointer manipulation. Also saving on string allocations.
(4) SkLangList and SkPaintOptionsAndroidList are 2 new classes created
    to manage the global linked list
(5) SkLanguages and SkPaintOptionsAndroids are 2 new singleton classes
    created to work with the global linked list class (See 4)

Change-Id: Id1d8357569e79f7e3da403b56a08db937afb07eb
SkDraw::drawRect optimization

New class in SkDeviceLooper.cpp falls in in the critical code path of
SkDraw::drawRect().  This new class SkDeviceLooper does nothing except
for bound checking. It copies the modified rect bounds into new pointer
variables and returns them back "if needed". The additional overhead of
creating an object of SkDeviceLooper class and calling member functions
reduces performance.  This patch creates a pre-check condition and if
it succeeds we know for sure SkDeviceLooper won't change the rect
bounds. Under this condition, we avoid using the SkDeviceLooper class.

Change-Id: I11fa13ace8d50d52069e1780a14874e4c34133f2