Switch BackendAllocationTests from GrPixelConfig to GrColorType
Bug: skia:6718
Change-Id: Ifd78a1b227dc468ce882cf3caf78b4fae80cc006
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229386
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
diff --git a/src/gpu/mtl/GrMtlCaps.h b/src/gpu/mtl/GrMtlCaps.h
index d6b13e1..d3f39e5 100644
--- a/src/gpu/mtl/GrMtlCaps.h
+++ b/src/gpu/mtl/GrMtlCaps.h
@@ -111,9 +111,9 @@
uint16_t fFlags;
};
#ifdef SK_BUILD_FOR_IOS
- static constexpr size_t kNumMtlFormats = 17;
+ static constexpr size_t kNumMtlFormats = 18;
#else
- static constexpr size_t kNumMtlFormats = 14;
+ static constexpr size_t kNumMtlFormats = 15;
#endif
static size_t GetFormatIndex(MTLPixelFormat);
FormatInfo fFormatTable[kNumMtlFormats];
diff --git a/src/gpu/mtl/GrMtlCaps.mm b/src/gpu/mtl/GrMtlCaps.mm
index b982183..558fc3f 100644
--- a/src/gpu/mtl/GrMtlCaps.mm
+++ b/src/gpu/mtl/GrMtlCaps.mm
@@ -438,6 +438,7 @@
MTLPixelFormatRGBA8Unorm,
MTLPixelFormatR8Unorm,
+ MTLPixelFormatA8Unorm,
MTLPixelFormatBGRA8Unorm,
#ifdef SK_BUILD_FOR_IOS
MTLPixelFormatB5G6R5Unorm,
@@ -481,6 +482,10 @@
info = &fFormatTable[GetFormatIndex(MTLPixelFormatR8Unorm)];
info->fFlags = FormatInfo::kAllFlags;
+ // A8Unorm
+ info = &fFormatTable[GetFormatIndex(MTLPixelFormatA8Unorm)];
+ info->fFlags = FormatInfo::kTextureable_Flag;
+
#ifdef SK_BUILD_FOR_IOS
// B5G6R5Unorm
info = &fFormatTable[GetFormatIndex(MTLPixelFormatB5G6R5Unorm)];
@@ -897,6 +902,9 @@
readCT = GrColorType::kGray_8;
}
break;
+ case MTLPixelFormatA8Unorm:
+ readCT = GrColorType::kAlpha_8;
+ break;
case MTLPixelFormatBGRA8Unorm:
readCT = GrColorType::kBGRA_8888;
break;
diff --git a/src/gpu/mtl/GrMtlUtil.mm b/src/gpu/mtl/GrMtlUtil.mm
index 2fce05a..43eb3af 100644
--- a/src/gpu/mtl/GrMtlUtil.mm
+++ b/src/gpu/mtl/GrMtlUtil.mm
@@ -291,6 +291,7 @@
size_t GrMtlBytesPerFormat(MTLPixelFormat format) {
switch (format) {
+ case MTLPixelFormatA8Unorm:
case MTLPixelFormatR8Unorm:
return 1;
diff --git a/tests/BackendAllocationTest.cpp b/tests/BackendAllocationTest.cpp
index 3429e06..8fb4a8b 100644
--- a/tests/BackendAllocationTest.cpp
+++ b/tests/BackendAllocationTest.cpp
@@ -23,15 +23,15 @@
std::function<GrBackendTexture (GrContext*,
GrMipMapped,
GrRenderable)> create,
- SkColorType colorType, GrMipMapped mipMapped, GrRenderable renderable) {
+ GrColorType grColorType, GrMipMapped mipMapped, GrRenderable renderable) {
GrResourceCache* cache = context->priv().getResourceCache();
const int initialCount = cache->getResourceCount();
GrBackendTexture backendTex = create(context, mipMapped, renderable);
if (!backendTex.isValid()) {
- ERRORF(reporter, "Couldn't create backendTexture for colorType %d renderable %s\n",
- colorType,
+ ERRORF(reporter, "Couldn't create backendTexture for grColorType %d renderable %s\n",
+ grColorType,
GrRenderable::kYes == renderable ? "yes" : "no");
return;
}
@@ -39,7 +39,10 @@
// Skia proper should know nothing about the new backend object
REPORTER_ASSERT(reporter, initialCount == cache->getResourceCount());
- if (kUnknown_SkColorType == colorType) {
+ SkColorType skColorType = GrColorTypeToSkColorType(grColorType);
+
+ // Wrapping a backendTexture in an image requires an SkColorType
+ if (kUnknown_SkColorType == skColorType) {
context->deleteBackendTexture(backendTex);
return;
}
@@ -49,11 +52,11 @@
backendTex,
kTopLeft_GrSurfaceOrigin,
0,
- colorType,
+ skColorType,
nullptr, nullptr);
if (!surf) {
ERRORF(reporter, "Couldn't make surface from backendTexture for colorType %d\n",
- colorType);
+ skColorType);
} else {
REPORTER_ASSERT(reporter, initialCount+1 == cache->getResourceCount());
}
@@ -63,12 +66,12 @@
sk_sp<SkImage> img = SkImage::MakeFromTexture(context,
backendTex,
kTopLeft_GrSurfaceOrigin,
- colorType,
+ skColorType,
kPremul_SkAlphaType,
nullptr);
if (!img) {
- ERRORF(reporter, "Couldn't make image from backendTexture for colorType %d\n",
- colorType);
+ ERRORF(reporter, "Couldn't make image from backendTexture for skColorType %d\n",
+ skColorType);
} else {
SkImage_Base* ib = as_IB(img);
@@ -128,7 +131,7 @@
const SkColor4f&,
GrMipMapped,
GrRenderable)> create,
- SkColorType colorType, const SkColor4f& color,
+ GrColorType grColorType, const SkColor4f& color,
GrMipMapped mipMapped, GrRenderable renderable) {
GrBackendTexture backendTex = create(context, color, mipMapped, renderable);
if (!backendTex.isValid()) {
@@ -136,25 +139,28 @@
return;
}
- if (kUnknown_SkColorType == colorType) {
+ SkColorType skColorType = GrColorTypeToSkColorType(grColorType);
+
+ // Can't wrap backend textures in images and surfaces w/o an SkColorType
+ if (kUnknown_SkColorType == skColorType) {
// TODO: burrow in and scrappily check that data was uploaded!
context->deleteBackendTexture(backendTex);
return;
}
- SkAlphaType at = SkColorTypeIsAlwaysOpaque(colorType) ? kOpaque_SkAlphaType
- : kPremul_SkAlphaType;
+ SkAlphaType at = SkColorTypeIsAlwaysOpaque(skColorType) ? kOpaque_SkAlphaType
+ : kPremul_SkAlphaType;
- SkImageInfo ii = SkImageInfo::Make(32, 32, colorType, at);
+ SkImageInfo ii = SkImageInfo::Make(32, 32, skColorType, at);
SkColor4f rasterColor = color;
- if (kGray_8_SkColorType == colorType) {
+ if (kGray_8_SkColorType == skColorType) {
// For the GPU backends, gray implies a single channel which is opaque.
rasterColor.fR = color.fA;
rasterColor.fG = color.fA;
rasterColor.fB = color.fA;
rasterColor.fA = 1.0f;
- } else if (kAlpha_8_SkColorType == colorType) {
+ } else if (kAlpha_8_SkColorType == skColorType) {
// For the GPU backends, alpha implies a single alpha channel.
rasterColor.fR = 0;
rasterColor.fG = 0;
@@ -175,13 +181,13 @@
backendTex,
kTopLeft_GrSurfaceOrigin,
0,
- colorType,
+ skColorType,
nullptr, nullptr);
if (surf) {
bool result = surf->readPixels(actual, 0, 0);
REPORTER_ASSERT(reporter, result);
- compare_pixmaps(expected, actual, colorType, reporter);
+ compare_pixmaps(expected, actual, skColorType, reporter);
actual.erase(SkColors::kTransparent);
}
@@ -191,7 +197,7 @@
sk_sp<SkImage> img = SkImage::MakeFromTexture(context,
backendTex,
kTopLeft_GrSurfaceOrigin,
- colorType,
+ skColorType,
at,
nullptr);
if (img) {
@@ -206,7 +212,7 @@
colorType);
#endif
} else {
- compare_pixmaps(expected, actual, colorType, reporter);
+ compare_pixmaps(expected, actual, skColorType, reporter);
}
}
@@ -218,7 +224,7 @@
if (GrBackendApi::kOpenGL == context->backend()) {
GrGLGpu* glGPU = static_cast<GrGLGpu*>(context->priv().getGpu());
- if (kRGBA_F32_SkColorType == colorType && GrMipMapped::kYes == mipMapped &&
+ if (kRGBA_F32_SkColorType == skColorType && GrMipMapped::kYes == mipMapped &&
kGLES_GrGLStandard == glGPU->ctxInfo().standard()) {
context->deleteBackendTexture(backendTex);
return;
@@ -264,7 +270,7 @@
if (!colors_eq(actualColor, rasterColor.toSkColor(), 1)) {
ERRORF(reporter, "Pixel mismatch colorType %d: level: %d e: 0x%x a: 0x%x\n",
- colorType, i, rasterColor.toSkColor(), actualColor);
+ skColorType, i, rasterColor.toSkColor(), actualColor);
}
}
}
@@ -408,7 +414,7 @@
{ kRGBA_F32_SkColorType, kRGBA_float_GrPixelConfig, SkColors::kGray },
};
- SkASSERT(kLastEnum_SkColorType == SK_ARRAY_COUNT(combinations));
+ GR_STATIC_ASSERT(kLastEnum_SkColorType == SK_ARRAY_COUNT(combinations));
for (auto combo : combinations) {
SkColorType colorType = combo.fColorType;
@@ -452,7 +458,7 @@
};
test_wrapping(context, reporter, uninitCreateMtd,
- colorType, mipMapped, renderable);
+ SkColorTypeToGrColorType(colorType), mipMapped, renderable);
}
{
@@ -482,7 +488,8 @@
};
test_color_init(context, reporter, createWithColorMtd,
- colorType, combo.fColor, mipMapped, renderable);
+ SkColorTypeToGrColorType(colorType),
+ combo.fColor, mipMapped, renderable);
}
}
}
@@ -495,6 +502,7 @@
#include "src/gpu/gl/GrGLCaps.h"
#include "src/gpu/gl/GrGLDefines.h"
+#include "src/gpu/gl/GrGLUtil.h"
DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(GLBackendAllocationTest, reporter, ctxInfo) {
sk_gpu_test::GLTestContext* glCtx = ctxInfo.glContext();
@@ -506,103 +514,57 @@
constexpr SkColor4f kGrayCol { 0.75f, 0.75f, 0.75f, 0.75f };
struct {
- SkColorType fColorType;
+ GrColorType fColorType;
GrGLenum fFormat;
- // TODO: remove 'fConfig' and directly use 'fFormat' in GrGLCaps::isFormatTexturable
- GrPixelConfig fConfig;
SkColor4f fColor;
} combinations[] = {
- { kRGBA_8888_SkColorType, GR_GL_RGBA8,
- kRGBA_8888_GrPixelConfig, SkColors::kRed },
- { kRGBA_8888_SkColorType, GR_GL_SRGB8_ALPHA8,
- kSRGBA_8888_GrPixelConfig, SkColors::kRed },
+ { GrColorType::kRGBA_8888, GR_GL_RGBA8, SkColors::kRed },
+ { GrColorType::kRGBA_8888_SRGB, GR_GL_SRGB8_ALPHA8, SkColors::kRed },
- { kRGB_888x_SkColorType, GR_GL_RGBA8,
- kRGBA_8888_GrPixelConfig, SkColors::kYellow },
- { kRGB_888x_SkColorType, GR_GL_RGB8,
- kRGB_888_GrPixelConfig, SkColors::kCyan },
+ { GrColorType::kRGB_888x, GR_GL_RGBA8, SkColors::kYellow },
+ { GrColorType::kRGB_888x, GR_GL_RGB8, SkColors::kCyan },
- { kBGRA_8888_SkColorType, GR_GL_RGBA8,
- kRGBA_8888_GrPixelConfig, SkColors::kBlue },
- { kBGRA_8888_SkColorType, GR_GL_BGRA8,
- kBGRA_8888_GrPixelConfig, SkColors::kBlue },
+ { GrColorType::kBGRA_8888, GR_GL_RGBA8, SkColors::kBlue },
+ { GrColorType::kBGRA_8888, GR_GL_BGRA8, SkColors::kBlue },
+ // TODO: readback is busted when alpha = 0.5f (perhaps premul vs. unpremul)
+ { GrColorType::kRGBA_1010102, GR_GL_RGB10_A2, { 0.5f, 0, 0, 1.0f } },
+ { GrColorType::kBGR_565, GR_GL_RGB565, SkColors::kRed },
+ { GrColorType::kABGR_4444, GR_GL_RGBA4, SkColors::kGreen },
- { kRGBA_1010102_SkColorType, GR_GL_RGB10_A2,
- // TODO: readback is busted when alpha = 0.5f (perhaps premul vs. unpremul)
- kRGBA_1010102_GrPixelConfig, { 0.5f, 0, 0, 1.0f }},
- { kRGB_565_SkColorType, GR_GL_RGB565,
- kRGB_565_GrPixelConfig, SkColors::kRed },
- { kARGB_4444_SkColorType, GR_GL_RGBA4,
- kRGBA_4444_GrPixelConfig, SkColors::kGreen },
+ { GrColorType::kAlpha_8, GR_GL_ALPHA8, kTransCol },
+ { GrColorType::kAlpha_8, GR_GL_R8, kTransCol },
- { kAlpha_8_SkColorType, GR_GL_ALPHA8,
- kAlpha_8_as_Alpha_GrPixelConfig, kTransCol },
- { kAlpha_8_SkColorType, GR_GL_R8,
- kAlpha_8_as_Red_GrPixelConfig, kTransCol },
+ { GrColorType::kGray_8, GR_GL_LUMINANCE8, kGrayCol },
+ { GrColorType::kGray_8, GR_GL_R8, kGrayCol },
- { kGray_8_SkColorType, GR_GL_LUMINANCE8,
- kGray_8_as_Lum_GrPixelConfig, kGrayCol },
- { kGray_8_SkColorType, GR_GL_R8,
- kGray_8_as_Red_GrPixelConfig, kGrayCol },
+ { GrColorType::kRGBA_F32, GR_GL_RGBA32F, SkColors::kRed },
- { kRGBA_F32_SkColorType, GR_GL_RGBA32F,
- kRGBA_float_GrPixelConfig, SkColors::kRed },
+ { GrColorType::kRGBA_F16_Clamped, GR_GL_RGBA16F, SkColors::kLtGray },
+ { GrColorType::kRGBA_F16, GR_GL_RGBA16F, SkColors::kYellow },
- { kRGBA_F16Norm_SkColorType, GR_GL_RGBA16F,
- kRGBA_half_Clamped_GrPixelConfig, SkColors::kLtGray },
- { kRGBA_F16_SkColorType, GR_GL_RGBA16F,
- kRGBA_half_GrPixelConfig, SkColors::kYellow },
+ { GrColorType::kRG_88, GR_GL_RG8, { 0.5f, 0.5f, 0, 0 } },
+ { GrColorType::kAlpha_F16, GR_GL_R16F, { 1.0f, 0, 0, 0.5f } },
+ { GrColorType::kAlpha_F16, GR_GL_LUMINANCE16F, kGrayCol },
- // These backend formats don't have SkColorType equivalents
- { kUnknown_SkColorType, GR_GL_RG8,
- kRG_88_GrPixelConfig, { 0.5f, 0.5f, 0, 0 }},
- { kUnknown_SkColorType, GR_GL_R16F,
- kAlpha_half_as_Red_GrPixelConfig, { 1.0f, 0, 0, 0.5f }},
- { kUnknown_SkColorType, GR_GL_LUMINANCE16F,
- kAlpha_half_as_Lum_GrPixelConfig, kGrayCol },
- { kUnknown_SkColorType, GR_GL_COMPRESSED_RGB8_ETC2,
- kRGB_ETC1_GrPixelConfig, SkColors::kRed },
- { kUnknown_SkColorType, GR_GL_COMPRESSED_ETC1_RGB8,
- kRGB_ETC1_GrPixelConfig, SkColors::kRed },
- { kUnknown_SkColorType, GR_GL_R16,
- kR_16_GrPixelConfig, SkColors::kRed },
- { kUnknown_SkColorType, GR_GL_RG16,
- kRG_1616_GrPixelConfig, SkColors::kYellow },
+ { GrColorType::kR_16, GR_GL_R16, SkColors::kRed },
+ { GrColorType::kRG_1616, GR_GL_RG16, SkColors::kYellow },
// Experimental (for Y416 and mutant P016/P010)
- { kUnknown_SkColorType, GR_GL_RGBA16,
- kRGBA_16161616_GrPixelConfig, SkColors::kLtGray },
- { kUnknown_SkColorType, GR_GL_RG16F,
- kRG_half_GrPixelConfig, SkColors::kYellow },
+ { GrColorType::kRGBA_16161616, GR_GL_RGBA16, SkColors::kLtGray },
+ { GrColorType::kRG_F16, GR_GL_RG16F, SkColors::kYellow },
+
+ { GrColorType::kUnknown, GR_GL_COMPRESSED_RGB8_ETC2, SkColors::kRed },
+ { GrColorType::kUnknown, GR_GL_COMPRESSED_ETC1_RGB8, SkColors::kRed },
};
for (auto combo : combinations) {
- if (kRGB_ETC1_GrPixelConfig == combo.fConfig) {
- // RGB8_ETC2/ETC1_RGB8 is an either/or situation
- GrGLenum supportedETC1Format = glCaps->configSizedInternalFormat(combo.fConfig);
- if (supportedETC1Format != combo.fFormat) {
- continue;
- }
- }
-
GrBackendFormat format = GrBackendFormat::MakeGL(combo.fFormat, GR_GL_TEXTURE_2D);
- if (GR_GL_COMPRESSED_RGB8_ETC2 == combo.fFormat ||
- GR_GL_COMPRESSED_ETC1_RGB8 == combo.fFormat) {
- // We current disallow uninitialized ETC1 textures in the GL backend
+ if (!glCaps->isFormatTexturable(combo.fColorType, format)) {
continue;
}
- GrColorType grCT = SkColorTypeAndFormatToGrColorType(glCaps, combo.fColorType, format);
- if (GrColorType::kUnknown == grCT) {
- continue;
- }
-
- if (!glCaps->isFormatTexturable(grCT, format)) {
- continue;
- }
-
- if (kBGRA_8888_SkColorType == combo.fColorType) {
+ if (GrColorType::kBGRA_8888 == combo.fColorType) {
if (GR_GL_RGBA8 == combo.fFormat && kGL_GrGLStandard != standard) {
continue;
}
@@ -619,16 +581,19 @@
for (auto renderable : { GrRenderable::kNo, GrRenderable::kYes }) {
if (GrRenderable::kYes == renderable) {
- if (kRGB_888x_SkColorType == combo.fColorType) {
+ if (GrColorType::kRGB_888x == combo.fColorType) {
// Ganesh can't perform the blends correctly when rendering this format
continue;
}
- if (!glCaps->isConfigRenderable(combo.fConfig)) {
+ if (!glCaps->isFormatRenderable(combo.fColorType, format)) {
continue;
}
}
- {
+
+ // We current disallow uninitialized compressed textures in the GL backend
+ if (GR_GL_COMPRESSED_RGB8_ETC2 != combo.fFormat &&
+ GR_GL_COMPRESSED_ETC1_RGB8 != combo.fFormat) {
auto uninitCreateMtd = [format](GrContext* context,
GrMipMapped mipMapped,
GrRenderable renderable) {
@@ -643,7 +608,7 @@
{
// GL has difficulties reading back from these combinations
- if (kAlpha_8_SkColorType == combo.fColorType) {
+ if (GrColorType::kAlpha_8 == combo.fColorType) {
continue;
}
if (GrRenderable::kYes != renderable) {
@@ -683,49 +648,51 @@
constexpr SkColor4f kGrayCol { 0.75f, 0.75f, 0.75f, 0.75f };
struct {
- SkColorType fColorType;
+ GrColorType fColorType;
VkFormat fFormat;
SkColor4f fColor;
} combinations[] = {
- { kRGBA_8888_SkColorType, VK_FORMAT_R8G8B8A8_UNORM, SkColors::kRed },
- { kRGBA_8888_SkColorType, VK_FORMAT_R8G8B8A8_SRGB, SkColors::kRed },
+ { GrColorType::kRGBA_8888, VK_FORMAT_R8G8B8A8_UNORM, SkColors::kRed },
+ { GrColorType::kRGBA_8888_SRGB, VK_FORMAT_R8G8B8A8_SRGB, SkColors::kRed },
// In this configuration (i.e., an RGB_888x colortype with an RGBA8 backing format),
// there is nothing to tell Skia to make the provided color opaque. Clients will need
// to provide an opaque initialization color in this case.
- { kRGB_888x_SkColorType, VK_FORMAT_R8G8B8A8_UNORM, SkColors::kYellow },
- { kRGB_888x_SkColorType, VK_FORMAT_R8G8B8_UNORM, SkColors::kCyan },
+ { GrColorType::kRGB_888x, VK_FORMAT_R8G8B8A8_UNORM, SkColors::kYellow },
+ { GrColorType::kRGB_888x, VK_FORMAT_R8G8B8_UNORM, SkColors::kCyan },
- { kBGRA_8888_SkColorType, VK_FORMAT_B8G8R8A8_UNORM, SkColors::kBlue },
+ { GrColorType::kBGRA_8888, VK_FORMAT_B8G8R8A8_UNORM, SkColors::kBlue },
- { kRGBA_1010102_SkColorType, VK_FORMAT_A2B10G10R10_UNORM_PACK32, { 0.5f, 0, 0, 1.0f } },
- { kRGB_565_SkColorType, VK_FORMAT_R5G6B5_UNORM_PACK16, SkColors::kRed },
+ { GrColorType::kRGBA_1010102, VK_FORMAT_A2B10G10R10_UNORM_PACK32, { 0.5f, 0, 0, 1.0f }},
+ { GrColorType::kBGR_565, VK_FORMAT_R5G6B5_UNORM_PACK16, SkColors::kRed },
- { kARGB_4444_SkColorType, VK_FORMAT_R4G4B4A4_UNORM_PACK16, SkColors::kCyan },
- { kARGB_4444_SkColorType, VK_FORMAT_B4G4R4A4_UNORM_PACK16, SkColors::kYellow },
+ { GrColorType::kABGR_4444, VK_FORMAT_R4G4B4A4_UNORM_PACK16, SkColors::kCyan },
+ { GrColorType::kABGR_4444, VK_FORMAT_B4G4R4A4_UNORM_PACK16, SkColors::kYellow },
- { kAlpha_8_SkColorType, VK_FORMAT_R8_UNORM, kTransCol },
+ { GrColorType::kAlpha_8, VK_FORMAT_R8_UNORM, kTransCol },
// In this config (i.e., a Gray8 color type with an R8 backing format), there is nothing
// to tell Skia this isn't an Alpha8 color type (so it will initialize the texture with
// the alpha channel of the color). Clients should, in general, fill all the channels
// of the provided color with the same value in such cases.
- { kGray_8_SkColorType, VK_FORMAT_R8_UNORM, kGrayCol },
+ { GrColorType::kGray_8, VK_FORMAT_R8_UNORM, kGrayCol },
- { kRGBA_F32_SkColorType, VK_FORMAT_R32G32B32A32_SFLOAT, SkColors::kRed },
+ { GrColorType::kRGBA_F32, VK_FORMAT_R32G32B32A32_SFLOAT, SkColors::kRed },
- { kRGBA_F16Norm_SkColorType, VK_FORMAT_R16G16B16A16_SFLOAT, SkColors::kLtGray },
- { kRGBA_F16_SkColorType, VK_FORMAT_R16G16B16A16_SFLOAT, SkColors::kYellow },
+ { GrColorType::kRGBA_F16_Clamped, VK_FORMAT_R16G16B16A16_SFLOAT, SkColors::kLtGray },
+ { GrColorType::kRGBA_F16, VK_FORMAT_R16G16B16A16_SFLOAT, SkColors::kYellow },
// These backend formats don't have SkColorType equivalents
- { kUnknown_SkColorType, VK_FORMAT_R8G8_UNORM, { 0.5f, 0.5f, 0, 0 } },
- { kUnknown_SkColorType, VK_FORMAT_R16_SFLOAT, { 1.0f, 0, 0, 0.5f } },
- { kUnknown_SkColorType, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, SkColors::kRed },
- { kUnknown_SkColorType, VK_FORMAT_R16_UNORM, SkColors::kRed },
- { kUnknown_SkColorType, VK_FORMAT_R16G16_UNORM, SkColors::kYellow },
+ { GrColorType::kRG_88, VK_FORMAT_R8G8_UNORM, { 0.5f, 0.5f, 0, 0 }},
+ { GrColorType::kAlpha_F16, VK_FORMAT_R16_SFLOAT, { 1.0f, 0, 0, 0.5f }},
+
+ { GrColorType::kR_16, VK_FORMAT_R16_UNORM, SkColors::kRed },
+ { GrColorType::kRG_1616, VK_FORMAT_R16G16_UNORM, SkColors::kYellow },
// Experimental (for Y416 and mutant P016/P010)
- { kUnknown_SkColorType, VK_FORMAT_R16G16B16A16_UNORM, SkColors::kLtGray },
- { kUnknown_SkColorType, VK_FORMAT_R16G16_SFLOAT, SkColors::kYellow },
+ { GrColorType::kRGBA_16161616, VK_FORMAT_R16G16B16A16_UNORM, SkColors::kLtGray },
+ { GrColorType::kRG_F16, VK_FORMAT_R16G16_SFLOAT, SkColors::kYellow },
+
+ { GrColorType::kUnknown, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, SkColors::kRed },
};
for (auto combo : combinations) {
@@ -743,7 +710,7 @@
for (auto renderable : { GrRenderable::kNo, GrRenderable::kYes }) {
if (GrRenderable::kYes == renderable) {
- if (kRGB_888x_SkColorType == combo.fColorType) {
+ if (GrColorType::kRGB_888x == combo.fColorType) {
// Ganesh can't perform the blends correctly when rendering this format
continue;
}
@@ -752,7 +719,8 @@
}
}
- {
+ // We current disallow uninitialized compressed textures in the Vulkan backend
+ if (combo.fFormat != VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK) {
auto uninitCreateMtd = [format](GrContext* context,
GrMipMapped mipMapped,
GrRenderable renderable) {
@@ -779,11 +747,11 @@
// expectation.
GrSwizzle swizzle;
switch (combo.fColorType) {
- case kAlpha_8_SkColorType:
+ case GrColorType::kAlpha_8:
SkASSERT(combo.fFormat == VK_FORMAT_R8_UNORM);
swizzle = GrSwizzle("aaaa");
break;
- case kARGB_4444_SkColorType:
+ case GrColorType::kABGR_4444:
if (combo.fFormat == VK_FORMAT_B4G4R4A4_UNORM_PACK16) {
swizzle = GrSwizzle("bgra");
}
diff --git a/tests/GrSurfaceTest.cpp b/tests/GrSurfaceTest.cpp
index 35b8109..09eef93 100644
--- a/tests/GrSurfaceTest.cpp
+++ b/tests/GrSurfaceTest.cpp
@@ -169,6 +169,8 @@
tex = resourceProvider->createTexture(desc, GrRenderable::kYes, 1, SkBudgeted::kNo,
GrProtected::kNo,
GrResourceProvider::Flags::kNoPendingIO);
+ // In order to remove this GrPixelConfig usage, this test will need to be rewritten
+ // w/ true backend formats. Otherwise the compressed formats get elided.
bool isRenderable = caps->isConfigRenderable(config);
REPORTER_ASSERT(reporter, SkToBool(tex) == isRenderable,
"config:%d, tex:%d, isRenderable:%d", config, SkToBool(tex),
diff --git a/tests/MtlBackendAllocationTest.mm b/tests/MtlBackendAllocationTest.mm
index 16df58f..4051154 100644
--- a/tests/MtlBackendAllocationTest.mm
+++ b/tests/MtlBackendAllocationTest.mm
@@ -17,14 +17,14 @@
std::function<GrBackendTexture (GrContext*,
GrMipMapped,
GrRenderable)> create,
- SkColorType colorType, GrMipMapped mipMapped, GrRenderable renderable);
+ GrColorType colorType, GrMipMapped mipMapped, GrRenderable renderable);
void test_color_init(GrContext* context, skiatest::Reporter* reporter,
std::function<GrBackendTexture (GrContext*,
const SkColor4f&,
GrMipMapped,
GrRenderable)> create,
- SkColorType colorType, const SkColor4f& color,
+ GrColorType colorType, const SkColor4f& color,
GrMipMapped mipMapped, GrRenderable renderable);
DEF_GPUTEST_FOR_METAL_CONTEXT(MtlBackendAllocationTest, reporter, ctxInfo) {
@@ -34,68 +34,57 @@
constexpr SkColor4f kTransCol { 0, 0.25f, 0.75f, 0.5f };
struct {
- SkColorType fColorType;
- GrMTLPixelFormat fFormat;
- // TODO: remove 'fConfig' and directly use 'fFormat' in GrMtlCaps::isFormatTexturable
- GrPixelConfig fConfig;
+ GrColorType fColorType;
+ MTLPixelFormat fFormat;
SkColor4f fColor;
} combinations[] = {
- { kRGBA_8888_SkColorType, MTLPixelFormatRGBA8Unorm,
- kRGBA_8888_GrPixelConfig, SkColors::kRed },
- { kRGBA_8888_SkColorType, MTLPixelFormatRGBA8Unorm_sRGB,
- kSRGBA_8888_GrPixelConfig, SkColors::kRed },
+ { GrColorType::kRGBA_8888, MTLPixelFormatRGBA8Unorm, SkColors::kRed },
+ { GrColorType::kRGBA_8888_SRGB, MTLPixelFormatRGBA8Unorm_sRGB, SkColors::kRed },
- { kRGB_888x_SkColorType, MTLPixelFormatRGBA8Unorm,
- kRGBA_8888_GrPixelConfig, { 1, 1, 0, 0.5f } },
+ { GrColorType::kRGB_888x, MTLPixelFormatRGBA8Unorm, { 1, 1, 0, 0.5f } },
- { kBGRA_8888_SkColorType, MTLPixelFormatBGRA8Unorm,
- kBGRA_8888_GrPixelConfig, SkColors::kBlue },
+ { GrColorType::kBGRA_8888, MTLPixelFormatBGRA8Unorm, SkColors::kBlue },
- { kRGBA_1010102_SkColorType, MTLPixelFormatRGB10A2Unorm,
- kRGBA_1010102_GrPixelConfig, { 0.5f, 0, 0, 1.0f } },
+ { GrColorType::kRGBA_1010102, MTLPixelFormatRGB10A2Unorm, { 0.5f, 0, 0, 1.0f } },
#ifdef SK_BUILD_FOR_IOS
- { kRGB_565_SkColorType, MTLPixelFormatB5G6R5Unorm,
- kRGB_565_GrPixelConfig, SkColors::kRed },
- { kARGB_4444_SkColorType, MTLPixelFormatABGR4Unorm,
- kRGBA_4444_GrPixelConfig, SkColors::kGreen },
+ { GrColorType::kBGR_565, MTLPixelFormatB5G6R5Unorm, SkColors::kRed },
+ { GrColorType::kABGR_4444, MTLPixelFormatABGR4Unorm, SkColors::kGreen },
#endif
- { kAlpha_8_SkColorType, MTLPixelFormatA8Unorm,
- kAlpha_8_as_Alpha_GrPixelConfig, kTransCol },
- { kAlpha_8_SkColorType, MTLPixelFormatR8Unorm,
- kAlpha_8_as_Red_GrPixelConfig, kTransCol },
+ { GrColorType::kAlpha_8, MTLPixelFormatA8Unorm, kTransCol },
+ { GrColorType::kAlpha_8, MTLPixelFormatR8Unorm, kTransCol },
- { kGray_8_SkColorType, MTLPixelFormatR8Unorm,
- kGray_8_as_Red_GrPixelConfig, SkColors::kDkGray },
+ { GrColorType::kGray_8, MTLPixelFormatR8Unorm, SkColors::kDkGray },
- { kRGBA_F32_SkColorType, MTLPixelFormatRGBA32Float,
- kRGBA_float_GrPixelConfig, SkColors::kRed },
+ { GrColorType::kRGBA_F32, MTLPixelFormatRGBA32Float, SkColors::kRed },
- { kRGBA_F16Norm_SkColorType, MTLPixelFormatRGBA16Float,
- kRGBA_half_Clamped_GrPixelConfig, SkColors::kLtGray },
- { kRGBA_F16_SkColorType, MTLPixelFormatRGBA16Float,
- kRGBA_half_GrPixelConfig, SkColors::kYellow },
+ { GrColorType::kRGBA_F16_Clamped, MTLPixelFormatRGBA16Float, SkColors::kLtGray },
+ { GrColorType::kRGBA_F16, MTLPixelFormatRGBA16Float, SkColors::kYellow },
- // These backend formats don't have SkColorType equivalents
- { kUnknown_SkColorType, MTLPixelFormatRG8Unorm,
- kRG_88_GrPixelConfig, { 0.5f, 0.5f, 0, 0 }},
- { kUnknown_SkColorType, MTLPixelFormatR16Float,
- kAlpha_half_as_Red_GrPixelConfig, { 1.0f, 0, 0, 0.5f }},
+ { GrColorType::kRG_88, MTLPixelFormatRG8Unorm, { 0.5f, 0.5f, 0, 0 } },
+ { GrColorType::kAlpha_F16, MTLPixelFormatR16Float, { 1.0f, 0, 0, 0.5f } },
+
+ { GrColorType::kR_16, MTLPixelFormatR16Unorm, SkColors::kRed },
+ { GrColorType::kRG_1616, MTLPixelFormatRG16Unorm, SkColors::kYellow },
+
+ // Experimental (for Y416 and mutant P016/P010)
+ { GrColorType::kRGBA_16161616, MTLPixelFormatRGBA16Unorm, SkColors::kLtGray },
+ { GrColorType::kRG_F16, MTLPixelFormatRG16Float, SkColors::kYellow },
+
#ifdef SK_BUILD_FOR_IOS
- { kUnknown_SkColorType, MTLPixelFormatETC2_RGB8,
- kRGB_ETC1_GrPixelConfig, SkColors::kRed }
+ { GrColorType::kUnknown, MTLPixelFormatETC2_RGB8, SkColors::kRed }
#endif
};
for (auto combo : combinations) {
GrBackendFormat format = GrBackendFormat::MakeMtl(combo.fFormat);
- if (!mtlCaps->isConfigTexturable(combo.fConfig)) {
+ if (!mtlCaps->isFormatTexturable(combo.fFormat)) {
continue;
}
// skbug.com/9086 (Metal caps may not be handling RGBA32 correctly)
- if (kRGBA_F32_SkColorType == combo.fColorType) {
+ if (GrColorType::kRGBA_F32 == combo.fColorType) {
continue;
}
@@ -107,15 +96,19 @@
for (auto renderable : { GrRenderable::kNo, GrRenderable::kYes }) {
if (GrRenderable::kYes == renderable) {
- if (kRGB_888x_SkColorType == combo.fColorType) {
+ if (GrColorType::kRGB_888x == combo.fColorType) {
// Ganesh can't perform the blends correctly when rendering this format
continue;
}
- if (!mtlCaps->isConfigRenderable(combo.fConfig)) {
+ if (!mtlCaps->isFormatRenderable(combo.fFormat)) {
continue;
}
}
+#ifdef SK_BUILD_FOR_IOS
+ // We current disallow uninitialized compressed textures in the Metal backend
+ if (combo.fFormat != MTLPixelFormatETC2_RGB8)
+#endif
{
auto uninitCreateMtd = [format](GrContext* context,
GrMipMapped mipMapped,