Some tests around surface creation and snapshotting with color space
Verify the rules that we're converging on for surfaces:
- For 8888, we only support sRGB-like gamma, or no color space at all.
- For F16, we require a color space, with linear gamma.
- For all other formats, we do not support color spaces.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2270823002
Review-Url: https://codereview.chromium.org/2270823002
diff --git a/src/image/SkSurface_Raster.cpp b/src/image/SkSurface_Raster.cpp
index 90f26be..9309487 100644
--- a/src/image/SkSurface_Raster.cpp
+++ b/src/image/SkSurface_Raster.cpp
@@ -49,15 +49,28 @@
int shift = 0;
switch (info.colorType()) {
case kAlpha_8_SkColorType:
+ if (info.colorSpace()) {
+ return false;
+ }
shift = 0;
break;
case kRGB_565_SkColorType:
+ if (info.colorSpace()) {
+ return false;
+ }
shift = 1;
break;
case kN32_SkColorType:
+ if (info.colorSpace() && !info.colorSpace()->gammaCloseToSRGB()) {
+ return false;
+ }
shift = 2;
break;
case kRGBA_F16_SkColorType:
+ if (!info.colorSpace() ||
+ SkColorSpace::kLinear_GammaNamed != info.colorSpace()->gammaNamed()) {
+ return false;
+ }
shift = 3;
break;
default: