Revert "Revert "Add kRGBX_8888, kRGBA_1010102, and kRGBX_1010102 color types. Unused for now.""
This reverts commit 73137ff6ba51b3f329d0da9e50a312c4cedee32c.
No-Tree-Checks: true
No-Try: true
No-Presubmit: true
Bug: chromium:779428
Change-Id: I33ab6e3d5be79f3f97e14c50bfb632ca5126756e
Reviewed-on: https://skia-review.googlesource.com/103441
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/gm/bitmapcopy.cpp b/gm/bitmapcopy.cpp
index ec9e423..94d6fe6 100644
--- a/gm/bitmapcopy.cpp
+++ b/gm/bitmapcopy.cpp
@@ -9,15 +9,22 @@
namespace skiagm {
-static const char* gColorTypeNames[] = {
- "unknown",
- "A8",
- "565",
- "4444",
- "8888",
- "8888",
- "Index8",
-};
+static const char* color_type_name(SkColorType colorType) {
+ switch (colorType) {
+ case kUnknown_SkColorType: return "unknown";
+ case kAlpha_8_SkColorType: return "A8";
+ case kRGB_565_SkColorType: return "565";
+ case kARGB_4444_SkColorType: return "4444";
+ case kRGBA_8888_SkColorType: return "8888";
+ case kRGB_888x_SkColorType: return "888x";
+ case kBGRA_8888_SkColorType: return "8888";
+ case kRGBA_1010102_SkColorType: return "1010102";
+ case kRGB_101010x_SkColorType: return "101010x";
+ case kGray_8_SkColorType: return "G8";
+ case kRGBA_F16_SkColorType: return "F16";
+ }
+ return "";
+}
constexpr SkColorType gColorTypes[] = {
kRGB_565_SkColorType,
@@ -84,7 +91,7 @@
height = paint.getFontSpacing();
}
for (unsigned i = 0; i < NUM_CONFIGS; i++) {
- const char* name = gColorTypeNames[src.colorType()];
+ const char* name = color_type_name(src.colorType());
SkScalar textWidth = paint.measureText(name, strlen(name));
if (textWidth > width) {
width = textWidth;
@@ -97,7 +104,7 @@
for (unsigned i = 0; i < NUM_CONFIGS; i++) {
canvas->save();
// Draw destination config name
- const char* name = gColorTypeNames[fDst[i].colorType()];
+ const char* name = color_type_name(fDst[i].colorType());
SkScalar textWidth = paint.measureText(name, strlen(name));
SkScalar x = (width - textWidth) / SkScalar(2);
SkScalar y = paint.getFontSpacing() / SkScalar(2);
diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h
index 5d2b74a..c38e56e 100644
--- a/include/core/SkImageInfo.h
+++ b/include/core/SkImageInfo.h
@@ -58,6 +58,9 @@
///////////////////////////////////////////////////////////////////////////////
+/** Temporary macro that allows us to add new color types without breaking Chrome compile. */
+#define SK_EXTENDED_COLOR_TYPES
+
/**
* Describes how to interpret the components of a pixel.
*
@@ -71,7 +74,10 @@
kRGB_565_SkColorType,
kARGB_4444_SkColorType,
kRGBA_8888_SkColorType,
+ kRGB_888x_SkColorType,
kBGRA_8888_SkColorType,
+ kRGBA_1010102_SkColorType,
+ kRGB_101010x_SkColorType,
kGray_8_SkColorType,
kRGBA_F16_SkColorType,
@@ -87,39 +93,37 @@
};
static int SkColorTypeBytesPerPixel(SkColorType ct) {
- static const uint8_t gSize[] = {
- 0, // Unknown
- 1, // Alpha_8
- 2, // RGB_565
- 2, // ARGB_4444
- 4, // RGBA_8888
- 4, // BGRA_8888
- 1, // kGray_8
- 8, // kRGBA_F16
- };
- static_assert(SK_ARRAY_COUNT(gSize) == (size_t)(kLastEnum_SkColorType + 1),
- "size_mismatch_with_SkColorType_enum");
-
- SkASSERT((size_t)ct < SK_ARRAY_COUNT(gSize));
- return gSize[ct];
+ switch (ct) {
+ case kUnknown_SkColorType: return 0;
+ case kAlpha_8_SkColorType: return 1;
+ case kRGB_565_SkColorType: return 2;
+ case kARGB_4444_SkColorType: return 2;
+ case kRGBA_8888_SkColorType: return 4;
+ case kBGRA_8888_SkColorType: return 4;
+ case kRGB_888x_SkColorType: return 4;
+ case kRGBA_1010102_SkColorType: return 4;
+ case kRGB_101010x_SkColorType: return 4;
+ case kGray_8_SkColorType: return 1;
+ case kRGBA_F16_SkColorType: return 8;
+ }
+ return 0;
}
static int SkColorTypeShiftPerPixel(SkColorType ct) {
- static const uint8_t gShift[] = {
- 0, // Unknown
- 0, // Alpha_8
- 1, // RGB_565
- 1, // ARGB_4444
- 2, // RGBA_8888
- 2, // BGRA_8888
- 0, // kGray_8
- 3, // kRGBA_F16
- };
- static_assert(SK_ARRAY_COUNT(gShift) == (size_t)(kLastEnum_SkColorType + 1),
- "size_mismatch_with_SkColorType_enum");
-
- SkASSERT((size_t)ct < SK_ARRAY_COUNT(gShift));
- return gShift[ct];
+ switch (ct) {
+ case kUnknown_SkColorType: return 0;
+ case kAlpha_8_SkColorType: return 0;
+ case kRGB_565_SkColorType: return 1;
+ case kARGB_4444_SkColorType: return 1;
+ case kRGBA_8888_SkColorType: return 2;
+ case kRGB_888x_SkColorType: return 2;
+ case kBGRA_8888_SkColorType: return 2;
+ case kRGBA_1010102_SkColorType: return 2;
+ case kRGB_101010x_SkColorType: return 2;
+ case kGray_8_SkColorType: return 0;
+ case kRGBA_F16_SkColorType: return 3;
+ }
+ return 0;
}
static inline size_t SkColorTypeMinRowBytes(SkColorType ct, int width) {
diff --git a/src/codec/SkWebpCodec.cpp b/src/codec/SkWebpCodec.cpp
index aa3547d..2925a77 100644
--- a/src/codec/SkWebpCodec.cpp
+++ b/src/codec/SkWebpCodec.cpp
@@ -326,6 +326,9 @@
case kAlpha_8_SkColorType:
case kARGB_4444_SkColorType:
case kGray_8_SkColorType:
+ case kRGB_888x_SkColorType:
+ case kRGBA_1010102_SkColorType:
+ case kRGB_101010x_SkColorType:
SkASSERT(false);
break;
case kRGB_565_SkColorType:
diff --git a/src/core/SkImageInfo.cpp b/src/core/SkImageInfo.cpp
index e5c2d8c..50d6cca 100644
--- a/src/core/SkImageInfo.cpp
+++ b/src/core/SkImageInfo.cpp
@@ -22,51 +22,44 @@
kIndex_8_Stored_SkColorType_DEPRECATED = 6,
kGray_8_Stored_SkColorType = 7,
kRGBA_F16_Stored_SkColorType = 8,
-
- kLast_Stored_SkColorType = kRGBA_F16_Stored_SkColorType,
-};
-
-// Index with Stored_SkColorType
-const SkColorType gStoredToLive[] = {
- kUnknown_SkColorType,
- kAlpha_8_SkColorType,
- kRGB_565_SkColorType,
- kARGB_4444_SkColorType,
- kRGBA_8888_SkColorType,
- kBGRA_8888_SkColorType,
- kUnknown_SkColorType, // was kIndex_8
- kGray_8_SkColorType,
- kRGBA_F16_SkColorType,
-};
-
-// Index with SkColorType
-const Stored_SkColorType gLiveToStored[] = {
- kUnknown_Stored_SkColorType,
- kAlpha_8_Stored_SkColorType,
- kRGB_565_Stored_SkColorType,
- kARGB_4444_Stored_SkColorType,
- kRGBA_8888_Stored_SkColorType,
- kBGRA_8888_Stored_SkColorType,
- kGray_8_Stored_SkColorType,
- kRGBA_F16_Stored_SkColorType,
+ kRGB_888x_Stored_SkColorType = 9,
+ kRGBA_1010102_Stored_SkColorType = 10,
+ kRGB_101010x_Stored_SkColorType = 11,
};
static uint8_t live_to_stored(unsigned ct) {
- static_assert(SK_ARRAY_COUNT(gLiveToStored) == (kLastEnum_SkColorType + 1), "");
-
- if (ct >= SK_ARRAY_COUNT(gLiveToStored)) {
- ct = kUnknown_SkColorType;
+ switch (ct) {
+ case kUnknown_SkColorType: return kUnknown_Stored_SkColorType;
+ case kAlpha_8_SkColorType: return kAlpha_8_Stored_SkColorType;
+ case kRGB_565_SkColorType: return kRGB_565_Stored_SkColorType;
+ case kARGB_4444_SkColorType: return kARGB_4444_Stored_SkColorType;
+ case kRGBA_8888_SkColorType: return kRGBA_8888_Stored_SkColorType;
+ case kRGB_888x_SkColorType: return kRGB_888x_Stored_SkColorType;
+ case kBGRA_8888_SkColorType: return kBGRA_8888_Stored_SkColorType;
+ case kRGBA_1010102_SkColorType: return kRGBA_1010102_Stored_SkColorType;
+ case kRGB_101010x_SkColorType: return kRGB_101010x_Stored_SkColorType;
+ case kGray_8_SkColorType: return kGray_8_Stored_SkColorType;
+ case kRGBA_F16_SkColorType: return kRGBA_F16_Stored_SkColorType;
}
- return gLiveToStored[ct];
+ return kUnknown_Stored_SkColorType;
}
static SkColorType stored_to_live(unsigned stored) {
- static_assert(SK_ARRAY_COUNT(gStoredToLive) == (kLast_Stored_SkColorType + 1), "");
-
- if (stored >= SK_ARRAY_COUNT(gStoredToLive)) {
- stored = kUnknown_Stored_SkColorType;
+ switch (stored) {
+ case kUnknown_Stored_SkColorType: return kUnknown_SkColorType;
+ case kAlpha_8_Stored_SkColorType: return kAlpha_8_SkColorType;
+ case kRGB_565_Stored_SkColorType: return kRGB_565_SkColorType;
+ case kARGB_4444_Stored_SkColorType: return kARGB_4444_SkColorType;
+ case kRGBA_8888_Stored_SkColorType: return kRGBA_8888_SkColorType;
+ case kRGB_888x_Stored_SkColorType: return kRGB_888x_SkColorType;
+ case kBGRA_8888_Stored_SkColorType: return kBGRA_8888_SkColorType;
+ case kRGBA_1010102_Stored_SkColorType: return kRGBA_1010102_SkColorType;
+ case kRGB_101010x_Stored_SkColorType: return kRGB_101010x_SkColorType;
+ case kIndex_8_Stored_SkColorType_DEPRECATED: return kUnknown_SkColorType;
+ case kGray_8_Stored_SkColorType: return kGray_8_SkColorType;
+ case kRGBA_F16_Stored_SkColorType: return kRGBA_F16_SkColorType;
}
- return gStoredToLive[stored];
+ return kUnknown_SkColorType;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 8faa9d4..c38f512 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -285,9 +285,15 @@
? kSRGBA_8888_GrPixelConfig : kRGBA_8888_GrPixelConfig;
// TODO: We're checking for srgbSupport, but we can then end up picking sBGRA as our pixel
// config (which may not be supported). We need a better test here.
+ case kRGB_888x_SkColorType:
+ return kUnknown_GrPixelConfig;
case kBGRA_8888_SkColorType:
return (caps.srgbSupport() && cs && cs->gammaCloseToSRGB())
? kSBGRA_8888_GrPixelConfig : kBGRA_8888_GrPixelConfig;
+ case kRGBA_1010102_SkColorType:
+ return kUnknown_GrPixelConfig;
+ case kRGB_101010x_SkColorType:
+ return kUnknown_GrPixelConfig;
case kGray_8_SkColorType:
return kGray_8_GrPixelConfig;
case kRGBA_F16_SkColorType:
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index d310cd2..4a36ce0 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -2399,6 +2399,8 @@
*config = kSRGBA_8888_GrPixelConfig;
}
break;
+ case kRGB_888x_SkColorType:
+ return false;
case kBGRA_8888_SkColorType:
if (GR_GL_RGBA8 == format) {
if (kGL_GrGLStandard == standard) {
@@ -2412,6 +2414,10 @@
*config = kSBGRA_8888_GrPixelConfig;
}
break;
+ case kRGBA_1010102_SkColorType:
+ return false;
+ case kRGB_101010x_SkColorType:
+ return false;
case kGray_8_SkColorType:
if (GR_GL_LUMINANCE8 == format) {
*config = kGray_8_as_Lum_GrPixelConfig;
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp
index 40cb38f..3b1fc15 100644
--- a/src/gpu/vk/GrVkCaps.cpp
+++ b/src/gpu/vk/GrVkCaps.cpp
@@ -447,6 +447,8 @@
*config = kSRGBA_8888_GrPixelConfig;
}
break;
+ case kRGB_888x_SkColorType:
+ return false;
case kBGRA_8888_SkColorType:
if (VK_FORMAT_B8G8R8A8_UNORM == format) {
*config = kBGRA_8888_GrPixelConfig;
@@ -454,6 +456,10 @@
*config = kSBGRA_8888_GrPixelConfig;
}
break;
+ case kRGBA_1010102_SkColorType:
+ return false;
+ case kRGB_101010x_SkColorType:
+ return false;
case kGray_8_SkColorType:
if (VK_FORMAT_R8_UNORM == format) {
*config = kGray_8_as_Red_GrPixelConfig;
diff --git a/src/image/SkImage_Lazy.cpp b/src/image/SkImage_Lazy.cpp
index 53ebc0c..a0369cc 100644
--- a/src/image/SkImage_Lazy.cpp
+++ b/src/image/SkImage_Lazy.cpp
@@ -303,6 +303,9 @@
case kAlpha_8_SkColorType:
case kRGB_565_SkColorType:
case kARGB_4444_SkColorType:
+ case kRGB_888x_SkColorType:
+ case kRGBA_1010102_SkColorType:
+ case kRGB_101010x_SkColorType:
// We don't support color space on these formats, so always decode in legacy mode:
// TODO: Ask the codec to decode these to something else (at least sRGB 8888)?
return kLegacy_CachedFormat;
diff --git a/tools/debugger/SkObjectParser.cpp b/tools/debugger/SkObjectParser.cpp
index 1f48319..352a01d 100644
--- a/tools/debugger/SkObjectParser.cpp
+++ b/tools/debugger/SkObjectParser.cpp
@@ -27,15 +27,22 @@
mBitmap->append(" H: ");
mBitmap->appendS32(bitmap.height());
- const char* gColorTypeStrings[] = {
- "None", "A8", "565", "4444", "RGBA", "BGRA",
- "G8", "RGBAf16"
- };
- static_assert(kLastEnum_SkColorType + 1 == SK_ARRAY_COUNT(gColorTypeStrings),
- "colortype names do not match colortype enum");
-
+ const char* ctString = "<unknown>";
+ switch (bitmap.colorType()) {
+ case kUnknown_SkColorType: ctString = "None"; break;
+ case kAlpha_8_SkColorType: ctString = "A8"; break;
+ case kRGB_565_SkColorType: ctString = "565"; break;
+ case kARGB_4444_SkColorType: ctString = "4444"; break;
+ case kRGBA_8888_SkColorType: ctString = "RGBA"; break;
+ case kRGB_888x_SkColorType: ctString = "RGB"; break;
+ case kBGRA_8888_SkColorType: ctString = "BGRA"; break;
+ case kRGBA_1010102_SkColorType: ctString = "1010102"; break;
+ case kRGB_101010x_SkColorType: ctString = "101010x"; break;
+ case kGray_8_SkColorType: ctString = "G8"; break;
+ case kRGBA_F16_SkColorType: ctString = "RGBAf16"; break;
+ }
mBitmap->append(" ColorType: ");
- mBitmap->append(gColorTypeStrings[bitmap.colorType()]);
+ mBitmap->append(ctString);
if (bitmap.isOpaque()) {
mBitmap->append(" opaque");