Adapt GpuImageDecodeCacheTest test suite to exercise YUV decoding

This change parameterizes GpuImageDecodeCacheTest by an additional bool
for YUV decoding, instantiates two separate TEST_CASEs for
in-process rasterization and OOPR (not yet supported for YUV), and uses
testing::Combine to concisely generate test parameter tuples.

We also add GL_EXT_texture_rg to FakeGPUImageDecodeTestGLES2Interface
extension_string_ for the planar textures used by MakeFromYUVTextures.

We modify image byte size calculations in AlreadyBudgetedImagesAreNotAtRaster
and ImageBudgetingBySize to be correct for YUV images. We also replace
calls to CreateDiscardablePaintImage with CreatePaintImageInternal,
which respects the do_yuv_decode_ parameter.

Certain existing tests do not make sense for YUV decoding and are
skipped with GTEST_SKIP. Each skipped test has a comment about whether
later YUV implementation would allow use of the test (decoding to scale)
or if it is simply incompatible (bitmap images). Tests with an
asterisk (*) will be modified for YUV in a followup CL.

Tests "large" images that trigger software fallback expect that decoding
falls back to the RGB path because YUV is currently only implemented for
GPU-raster.

Skipped tests are:
- NonLazyImageUploadNoScale
- NonLazyImageUploadTaskHasNoDeps
- NonLazyImageUploadTaskCancelled
- NonLazyImageLargeImageColorConverted
- NonLazyImageUploadDownscaled
- DecodeToScale
- DecodeToScaleNoneQuality
- BasicMips*
- MipsAddedSubsequentDraw*
- GetDecodedImageForDrawMipUsageChange*

Finally, this change adds a straightforward PaintImage YUV 420 decoding
unit test.

Bug: 900672
Change-Id: Ia3cb7fc44bb7ce9df24db0ce083c8a7fac5990f6
Reviewed-on: https://chromium-review.googlesource.com/c/1450220
Reviewed-by: Eric Karl <ericrk@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Commit-Queue: Madeleine Barowsky <mbarowsky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#631223}
6 files changed