Reland "Add SkImageInfoValidConversion() and SkImageInfoIsValid"
authorMatt Sarett <msarett@google.com>
Tue, 17 Jan 2017 15:48:53 +0000 (10:48 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Tue, 17 Jan 2017 16:23:47 +0000 (16:23 +0000)
commitcb6266b5aa5bbfd880532f08eec83b0c585e873f
treeed7f02bf09e3ac603ab6b9b579b76fb1f3f85f68
parentaab259ea9ecabb3addcade3fba72d777bc7673e8
Reland "Add SkImageInfoValidConversion() and SkImageInfoIsValid"

The original is at:
https://skia-review.googlesource.com/c/6887/

The only change to the original is to temporarily comment out
a check in SkImageInfoPriv.h until a Chrome unit test can
be fixed.

The idea is share these standards for the following:
SkImage::readPixels()
SkCanvas::readPixels()
SkCanvas::writePixels()
SkBitmap::readPixels()
SkPixmap::readPixels()

On the raster side, SkPixmap::readPixels() is the right
place to check, because all raster calls go through
there eventually.  Then at lower levels (ex: SkPixelInfo),
we can assert.

There's not really a unifying location for gpu calls,
so I've added this in multiple places.  I haven't really
dug into the gpu code to SkASSERT() on invalid cases
that we will have already caught.

Follow-up work:
Similar refactor for SkReadPixelRec::trim().
Code cleanup in SkPixelInfo::CopyPixels()

BUG=skia:6021

Change-Id: I6a16f9479bc09e3c87e10c72b0378579f1a70866
Reviewed-on: https://skia-review.googlesource.com/7104
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
gm/showmiplevels.cpp
src/core/SkBitmap.cpp
src/core/SkConfig8888.cpp
src/core/SkImageInfo.cpp
src/core/SkImageInfoPriv.h [new file with mode: 0644]
src/core/SkPixmap.cpp
src/gpu/SkGpuDevice.cpp
src/image/SkImage_Gpu.cpp
tests/SpecialImageTest.cpp