diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrCaps.cpp | 3 | ||||
-rw-r--r-- | src/gpu/GrShaderCaps.cpp | 33 | ||||
-rw-r--r-- | src/gpu/SkGr.cpp | 4 | ||||
-rw-r--r-- | src/gpu/effects/GrDitherEffect.fp | 3 | ||||
-rw-r--r-- | src/gpu/effects/GrDitherEffect.h | 3 | ||||
-rw-r--r-- | src/gpu/gl/GrGLCaps.cpp | 123 | ||||
-rw-r--r-- | src/gpu/gl/GrGLGpu.cpp | 3 | ||||
-rw-r--r-- | src/gpu/mtl/GrMtlUtil.mm | 10 | ||||
-rw-r--r-- | src/gpu/vk/GrVkCaps.cpp | 4 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUtil.cpp | 8 |
10 files changed, 76 insertions, 118 deletions
diff --git a/src/gpu/GrCaps.cpp b/src/gpu/GrCaps.cpp index 845deca920..2e25845876 100644 --- a/src/gpu/GrCaps.cpp +++ b/src/gpu/GrCaps.cpp @@ -14,8 +14,6 @@ static const char* pixel_config_name(GrPixelConfig config) { switch (config) { case kUnknown_GrPixelConfig: return "Unknown"; case kAlpha_8_GrPixelConfig: return "Alpha8"; - case kAlpha_8_as_Alpha_GrPixelConfig: return "Alpha8_asAlpha"; - case kAlpha_8_as_Red_GrPixelConfig: return "Alpha8_asRed"; case kGray_8_GrPixelConfig: return "Gray8"; case kRGB_565_GrPixelConfig: return "RGB565"; case kRGBA_4444_GrPixelConfig: return "RGBA444"; @@ -27,7 +25,6 @@ static const char* pixel_config_name(GrPixelConfig config) { case kRGBA_float_GrPixelConfig: return "RGBAFloat"; case kRG_float_GrPixelConfig: return "RGFloat"; case kAlpha_half_GrPixelConfig: return "AlphaHalf"; - case kAlpha_half_as_Red_GrPixelConfig: return "AlphaHalf_asRed"; case kRGBA_half_GrPixelConfig: return "RGBAHalf"; } SK_ABORT("Invalid pixel config"); diff --git a/src/gpu/GrShaderCaps.cpp b/src/gpu/GrShaderCaps.cpp index c2f7aaa82d..124fd4de40 100644 --- a/src/gpu/GrShaderCaps.cpp +++ b/src/gpu/GrShaderCaps.cpp @@ -212,23 +212,22 @@ void GrShaderCaps::initSamplerPrecisionTable() { } uint8_t* table = fSamplerPrecisions[visibility]; - table[kUnknown_GrPixelConfig] = lowp; - table[kAlpha_8_GrPixelConfig] = lowp; - table[kAlpha_8_as_Alpha_GrPixelConfig] = lowp; - table[kAlpha_8_as_Red_GrPixelConfig] = lowp; - table[kGray_8_GrPixelConfig] = lowp; - table[kRGB_565_GrPixelConfig] = lowp; - table[kRGBA_4444_GrPixelConfig] = lowp; - table[kRGBA_8888_GrPixelConfig] = lowp; - table[kBGRA_8888_GrPixelConfig] = lowp; - table[kSRGBA_8888_GrPixelConfig] = lowp; - table[kSBGRA_8888_GrPixelConfig] = lowp; - table[kRGBA_8888_sint_GrPixelConfig] = lowp; - table[kRGBA_float_GrPixelConfig] = kHigh_GrSLPrecision; - table[kRG_float_GrPixelConfig] = kHigh_GrSLPrecision; - table[kAlpha_half_GrPixelConfig] = mediump; - table[kAlpha_half_as_Red_GrPixelConfig] = mediump; - table[kRGBA_half_GrPixelConfig] = mediump; + table[kUnknown_GrPixelConfig] = lowp; + table[kAlpha_8_GrPixelConfig] = lowp; + table[kGray_8_GrPixelConfig] = lowp; + table[kRGB_565_GrPixelConfig] = lowp; + table[kRGBA_4444_GrPixelConfig] = lowp; + table[kRGBA_8888_GrPixelConfig] = lowp; + table[kBGRA_8888_GrPixelConfig] = lowp; + table[kSRGBA_8888_GrPixelConfig] = lowp; + table[kSBGRA_8888_GrPixelConfig] = lowp; + table[kRGBA_8888_sint_GrPixelConfig] = lowp; + table[kRGBA_float_GrPixelConfig] = kHigh_GrSLPrecision; + table[kRG_float_GrPixelConfig] = kHigh_GrSLPrecision; + table[kAlpha_half_GrPixelConfig] = mediump; + table[kRGBA_half_GrPixelConfig] = mediump; + + GR_STATIC_ASSERT(14 == kGrPixelConfigCnt); } } diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index 63d0f260b0..026a7482b4 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -368,9 +368,7 @@ GrPixelConfig SkImageInfo2GrPixelConfig(const SkImageInfo& info, const GrCaps& c bool GrPixelConfigToColorType(GrPixelConfig config, SkColorType* ctOut) { SkColorType ct; switch (config) { - case kAlpha_8_GrPixelConfig: // fall through - case kAlpha_8_as_Alpha_GrPixelConfig: // fall through - case kAlpha_8_as_Red_GrPixelConfig: + case kAlpha_8_GrPixelConfig: ct = kAlpha_8_SkColorType; break; case kGray_8_GrPixelConfig: diff --git a/src/gpu/effects/GrDitherEffect.fp b/src/gpu/effects/GrDitherEffect.fp index 1f4f3039b1..f2d54cf2eb 100644 --- a/src/gpu/effects/GrDitherEffect.fp +++ b/src/gpu/effects/GrDitherEffect.fp @@ -20,14 +20,11 @@ layout(key) in int rangeType; break; case kUnknown_GrPixelConfig: case kAlpha_half_GrPixelConfig: - case kAlpha_half_as_Red_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: case kRGBA_float_GrPixelConfig: case kRG_float_GrPixelConfig: case kRGBA_half_GrPixelConfig: case kAlpha_8_GrPixelConfig: - case kAlpha_8_as_Alpha_GrPixelConfig: - case kAlpha_8_as_Red_GrPixelConfig: return nullptr; } return std::unique_ptr<GrFragmentProcessor>(new GrDitherEffect(rangeType)); diff --git a/src/gpu/effects/GrDitherEffect.h b/src/gpu/effects/GrDitherEffect.h index a11ea666a1..deb20852ca 100644 --- a/src/gpu/effects/GrDitherEffect.h +++ b/src/gpu/effects/GrDitherEffect.h @@ -36,14 +36,11 @@ public: break; case kUnknown_GrPixelConfig: case kAlpha_half_GrPixelConfig: - case kAlpha_half_as_Red_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: case kRGBA_float_GrPixelConfig: case kRG_float_GrPixelConfig: case kRGBA_half_GrPixelConfig: case kAlpha_8_GrPixelConfig: - case kAlpha_8_as_Alpha_GrPixelConfig: - case kAlpha_8_as_Red_GrPixelConfig: return nullptr; } return std::unique_ptr<GrFragmentProcessor>(new GrDitherEffect(rangeType)); diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp index f290050ef1..fe9bce8528 100644 --- a/src/gpu/gl/GrGLCaps.cpp +++ b/src/gpu/gl/GrGLCaps.cpp @@ -1911,48 +1911,33 @@ void GrGLCaps::initConfigTable(const GrContextOptions& contextOptions, } fConfigTable[kRGBA_4444_GrPixelConfig].fSwizzle = GrSwizzle::RGBA(); - bool alpha8IsValidForGL = kGL_GrGLStandard == standard && - (!fIsCoreProfile || version <= GR_GL_VER(3, 0)); - - ConfigInfo& alphaInfo = fConfigTable[kAlpha_8_as_Alpha_GrPixelConfig]; - alphaInfo.fFormats.fExternalType = GR_GL_UNSIGNED_BYTE; - alphaInfo.fFormatType = kNormalizedFixedPoint_FormatType; - if (alpha8IsValidForGL || version <= GR_GL_VER(3, 0)) { - alphaInfo.fFlags = ConfigInfo::kTextureable_Flag; - } - alphaInfo.fFormats.fBaseInternalFormat = GR_GL_ALPHA; - alphaInfo.fFormats.fSizedInternalFormat = GR_GL_ALPHA8; - alphaInfo.fFormats.fExternalFormat[kOther_ExternalFormatUsage] = GR_GL_ALPHA; - alphaInfo.fSwizzle = GrSwizzle::AAAA(); - if (fAlpha8IsRenderable && alpha8IsValidForGL) { - alphaInfo.fFlags |= allRenderFlags; - } - - ConfigInfo& redInfo = fConfigTable[kAlpha_8_as_Red_GrPixelConfig]; - redInfo.fFormats.fExternalType = GR_GL_UNSIGNED_BYTE; - redInfo.fFormatType = kNormalizedFixedPoint_FormatType; - redInfo.fFormats.fBaseInternalFormat = GR_GL_RED; - redInfo.fFormats.fSizedInternalFormat = GR_GL_R8; - redInfo.fFormats.fExternalFormat[kOther_ExternalFormatUsage] = GR_GL_RED; - redInfo.fSwizzle = GrSwizzle::RRRR(); - - // ES2 Command Buffer does not allow TexStorage with R8_EXT (so Alpha_8 and Gray_8) - if (texStorageSupported && !isCommandBufferES2) { - alphaInfo.fFlags |= ConfigInfo::kCanUseTexStorage_Flag; - redInfo.fFlags |= ConfigInfo::kCanUseTexStorage_Flag; - } - + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fExternalType = GR_GL_UNSIGNED_BYTE; + fConfigTable[kAlpha_8_GrPixelConfig].fFormatType = kNormalizedFixedPoint_FormatType; + fConfigTable[kAlpha_8_GrPixelConfig].fFlags = ConfigInfo::kTextureable_Flag; if (this->textureRedSupport()) { - redInfo.fFlags = ConfigInfo::kTextureable_Flag | allRenderFlags; + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_RED; + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_R8; + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fExternalFormat[kOther_ExternalFormatUsage] = + GR_GL_RED; + fConfigTable[kAlpha_8_GrPixelConfig].fSwizzle = GrSwizzle::RRRR(); if (texelBufferSupport) { - redInfo.fFlags |= ConfigInfo::kCanUseWithTexelBuffer_Flag; + fConfigTable[kAlpha_8_GrPixelConfig].fFlags |= ConfigInfo::kCanUseWithTexelBuffer_Flag; } - - fConfigTable[kAlpha_8_GrPixelConfig] = redInfo; + fConfigTable[kAlpha_8_GrPixelConfig].fFlags |= allRenderFlags; } else { - redInfo.fFlags = 0; + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_ALPHA; + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_ALPHA8; + fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fExternalFormat[kOther_ExternalFormatUsage] = + GR_GL_ALPHA; + fConfigTable[kAlpha_8_GrPixelConfig].fSwizzle = GrSwizzle::AAAA(); + if (fAlpha8IsRenderable) { + fConfigTable[kAlpha_8_GrPixelConfig].fFlags |= allRenderFlags; + } + } - fConfigTable[kAlpha_8_GrPixelConfig] = alphaInfo; + // ES2 Command Buffer does not allow TexStorage with R8_EXT (so Alpha_8 and Gray_8) + if (texStorageSupported && !isCommandBufferES2) { + fConfigTable[kAlpha_8_GrPixelConfig].fFlags |= ConfigInfo::kCanUseTexStorage_Flag; } fConfigTable[kGray_8_GrPixelConfig].fFormats.fExternalType = GR_GL_UNSIGNED_BYTE; @@ -1999,13 +1984,13 @@ void GrGLCaps::initConfigTable(const GrContextOptions& contextOptions, uint32_t fpRenderFlags = (kGL_GrGLStandard == standard) ? allRenderFlags : nonMSAARenderFlags; if (kGL_GrGLStandard == standard) { - if (version >= GR_GL_VER(3, 0)) { + if (version >= GR_GL_VER(3, 0) || ctxInfo.hasExtension("GL_ARB_texture_float")) { hasFPTextures = true; hasHalfFPTextures = true; rgIsTexturable = true; } } else { - if (version >= GR_GL_VER(3, 0)) { + if (version >= GR_GL_VER(3, 1)) { hasFPTextures = true; hasHalfFPTextures = true; rgIsTexturable = true; @@ -2047,38 +2032,42 @@ void GrGLCaps::initConfigTable(const GrContextOptions& contextOptions, fConfigTable[fpconfig].fSwizzle = GrSwizzle::RGBA(); } - if (this->textureRedSupport() && hasHalfFPTextures) { - GrGLenum redHalfExternalType; - if (kGL_GrGLStandard == ctxInfo.standard() || ctxInfo.version() >= GR_GL_VER(3, 0)) { - redHalfExternalType = GR_GL_HALF_FLOAT; - } else { - redHalfExternalType = GR_GL_HALF_FLOAT_OES; + if (this->textureRedSupport()) { + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_RED; + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_R16F; + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fExternalFormat[kOther_ExternalFormatUsage] + = GR_GL_RED; + fConfigTable[kAlpha_half_GrPixelConfig].fSwizzle = GrSwizzle::RRRR(); + if (texelBufferSupport) { + fConfigTable[kAlpha_half_GrPixelConfig].fFlags |= + ConfigInfo::kCanUseWithTexelBuffer_Flag; } + } else { + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_ALPHA; + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fSizedInternalFormat = GR_GL_ALPHA16F; + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fExternalFormat[kOther_ExternalFormatUsage] + = GR_GL_ALPHA; + fConfigTable[kAlpha_half_GrPixelConfig].fSwizzle = GrSwizzle::AAAA(); + } - ConfigInfo& redHalf = fConfigTable[kAlpha_half_as_Red_GrPixelConfig]; - redHalf.fFormats.fExternalType = redHalfExternalType; - redHalf.fFormatType = kFloat_FormatType; - redHalf.fFormats.fBaseInternalFormat = GR_GL_RED; - redHalf.fFormats.fSizedInternalFormat = GR_GL_R16F; - redHalf.fFormats.fExternalFormat[kOther_ExternalFormatUsage] = GR_GL_RED; - redHalf.fSwizzle = GrSwizzle::RRRR(); - redHalf.fFlags = ConfigInfo::kTextureable_Flag; - + if (kGL_GrGLStandard == ctxInfo.standard() || ctxInfo.version() >= GR_GL_VER(3, 0)) { + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fExternalType = GR_GL_HALF_FLOAT; + } else { + fConfigTable[kAlpha_half_GrPixelConfig].fFormats.fExternalType = GR_GL_HALF_FLOAT_OES; + } + fConfigTable[kAlpha_half_GrPixelConfig].fFormatType = kFloat_FormatType; + if (texStorageSupported) { + fConfigTable[kAlpha_half_GrPixelConfig].fFlags |= ConfigInfo::kCanUseTexStorage_Flag; + } + if (hasHalfFPTextures) { + fConfigTable[kAlpha_half_GrPixelConfig].fFlags = ConfigInfo::kTextureable_Flag; + // ES requires either 3.2 or the combination of EXT_color_buffer_half_float and support for + // GL_RED internal format. if (kGL_GrGLStandard == standard || version >= GR_GL_VER(3, 2) || (this->textureRedSupport() && ctxInfo.hasExtension("GL_EXT_color_buffer_half_float"))) { - redHalf.fFlags |= fpRenderFlags; - } - - if (texStorageSupported) { - redHalf.fFlags |= ConfigInfo::kCanUseTexStorage_Flag; + fConfigTable[kAlpha_half_GrPixelConfig].fFlags |= fpRenderFlags; } - - if (texelBufferSupport) { - redHalf.fFlags |= ConfigInfo::kCanUseWithTexelBuffer_Flag; - } - - fConfigTable[kAlpha_half_GrPixelConfig] = redHalf; } fConfigTable[kRGBA_half_GrPixelConfig].fFormats.fBaseInternalFormat = GR_GL_RGBA; @@ -2132,12 +2121,8 @@ void GrGLCaps::initConfigTable(const GrContextOptions& contextOptions, // kAlpha_8_GrPixelConfig. Alpha8 is not a valid signed internal format so we must use the base // internal format for that config when doing TexImage calls. if(kGalliumLLVM_GrGLRenderer == ctxInfo.renderer()) { - SkASSERT(fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fBaseInternalFormat == - fConfigTable[kAlpha_8_as_Alpha_GrPixelConfig].fFormats.fBaseInternalFormat); fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fInternalFormatTexImage = fConfigTable[kAlpha_8_GrPixelConfig].fFormats.fBaseInternalFormat; - fConfigTable[kAlpha_8_as_Alpha_GrPixelConfig].fFormats.fInternalFormatTexImage = - fConfigTable[kAlpha_8_as_Alpha_GrPixelConfig].fFormats.fBaseInternalFormat; } // OpenGL ES 2.0 + GL_EXT_sRGB allows GL_SRGB_ALPHA to be specified as the <format> diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp index 59aa14f37c..2e832e4447 100644 --- a/src/gpu/gl/GrGLGpu.cpp +++ b/src/gpu/gl/GrGLGpu.cpp @@ -780,14 +780,11 @@ bool GrGLGpu::onWritePixels(GrSurface* surface, GrSurfaceOrigin origin, static inline GrGLint config_alignment(GrPixelConfig config) { switch (config) { case kAlpha_8_GrPixelConfig: - case kAlpha_8_as_Alpha_GrPixelConfig: - case kAlpha_8_as_Red_GrPixelConfig: case kGray_8_GrPixelConfig: return 1; case kRGB_565_GrPixelConfig: case kRGBA_4444_GrPixelConfig: case kAlpha_half_GrPixelConfig: - case kAlpha_half_as_Red_GrPixelConfig: case kRGBA_half_GrPixelConfig: return 2; case kRGBA_8888_GrPixelConfig: diff --git a/src/gpu/mtl/GrMtlUtil.mm b/src/gpu/mtl/GrMtlUtil.mm index cc40e47c0b..24643669ea 100644 --- a/src/gpu/mtl/GrMtlUtil.mm +++ b/src/gpu/mtl/GrMtlUtil.mm @@ -7,8 +7,6 @@ #include "GrMtlUtil.h" -#include "GrTypesPriv.h" - bool GrPixelConfigToMTLFormat(GrPixelConfig config, MTLPixelFormat* format) { MTLPixelFormat dontCare; if (!format) { @@ -47,12 +45,9 @@ bool GrPixelConfigToMTLFormat(GrPixelConfig config, MTLPixelFormat* format) { #else return false; #endif - case kAlpha_8_GrPixelConfig: // fall through - case kAlpha_8_as_Red_GrPixelConfig: + case kAlpha_8_GrPixelConfig: *format = MTLPixelFormatR8Unorm; return true; - case kAlpha_8_as_Alpha_GrPixelConfig: - return false; case kGray_8_GrPixelConfig: *format = MTLPixelFormatR8Unorm; return true; @@ -65,8 +60,7 @@ bool GrPixelConfigToMTLFormat(GrPixelConfig config, MTLPixelFormat* format) { case kRGBA_half_GrPixelConfig: *format = MTLPixelFormatRGBA16Float; return true; - case kAlpha_half_GrPixelConfig: // fall through - case kAlpha_half_as_Red_GrPixelConfig: + case kAlpha_half_GrPixelConfig: *format = MTLPixelFormatR16Float; return true; } diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp index 4ab1f024e0..2b24205af8 100644 --- a/src/gpu/vk/GrVkCaps.cpp +++ b/src/gpu/vk/GrVkCaps.cpp @@ -208,9 +208,7 @@ void GrVkCaps::initShaderCaps(const VkPhysicalDeviceProperties& properties, uint // fConfigOutputSwizzle will default to RGBA so we only need to set it for alpha only config. for (int i = 0; i < kGrPixelConfigCnt; ++i) { GrPixelConfig config = static_cast<GrPixelConfig>(i); - // Vulkan doesn't support a single channel format stored in alpha. - if (GrPixelConfigIsAlphaOnly(config) && - kAlpha_8_as_Alpha_GrPixelConfig != config) { + if (GrPixelConfigIsAlphaOnly(config)) { shaderCaps->fConfigTextureSwizzle[i] = GrSwizzle::RRRR(); shaderCaps->fConfigOutputSwizzle[i] = GrSwizzle::AAAA(); } else { diff --git a/src/gpu/vk/GrVkUtil.cpp b/src/gpu/vk/GrVkUtil.cpp index 2f4e9b1d1d..0ce47cb962 100644 --- a/src/gpu/vk/GrVkUtil.cpp +++ b/src/gpu/vk/GrVkUtil.cpp @@ -42,12 +42,9 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { // store the data is if it was B4G4R4A4 and swizzle in shaders *format = VK_FORMAT_B4G4R4A4_UNORM_PACK16; return true; - case kAlpha_8_GrPixelConfig: // fall through - case kAlpha_8_as_Red_GrPixelConfig: + case kAlpha_8_GrPixelConfig: *format = VK_FORMAT_R8_UNORM; return true; - case kAlpha_8_as_Alpha_GrPixelConfig: - return false; case kGray_8_GrPixelConfig: *format = VK_FORMAT_R8_UNORM; return true; @@ -60,8 +57,7 @@ bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { case kRGBA_half_GrPixelConfig: *format = VK_FORMAT_R16G16B16A16_SFLOAT; return true; - case kAlpha_half_GrPixelConfig: // fall through - case kAlpha_half_as_Red_GrPixelConfig: + case kAlpha_half_GrPixelConfig: *format = VK_FORMAT_R16_SFLOAT; return true; } |