diff options
author | 2017-05-22 20:14:41 +0000 | |
---|---|---|
committer | 2017-05-22 20:14:50 +0000 | |
commit | bc262e110a7292950ce912e42de75b7573d0367e (patch) | |
tree | 3a5777eb2ab87791b487e3141d00c91b9749adf4 /include | |
parent | bcd8637772e3a678c744e28b4f4b2d42f8405284 (diff) |
Revert "Remove compressed (ETC1) texture support from Ganesh"
This reverts commit ee26363aaae62db2a851f2873e2405a9cf7f995a.
Reason for revert: Failing Google 3 roll.
Original change's description:
> Remove compressed (ETC1) texture support from Ganesh
>
> Change-Id: If4cf286df87ea87338aba47001d90a5fcc4f2667
> Reviewed-on: https://skia-review.googlesource.com/17456
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
>
TBR=bsalomon@google.com,robertphillips@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: Ie1a57187287e03600a69e374501478e93c41415c
Reviewed-on: https://skia-review.googlesource.com/17527
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/gpu/GrCaps.h | 2 | ||||
-rw-r--r-- | include/gpu/GrTypes.h | 100 |
2 files changed, 101 insertions, 1 deletions
diff --git a/include/gpu/GrCaps.h b/include/gpu/GrCaps.h index 4dc776734e..2fb367d66f 100644 --- a/include/gpu/GrCaps.h +++ b/include/gpu/GrCaps.h @@ -45,6 +45,7 @@ public: bool srgbWriteControl() const { return fSRGBWriteControl; } bool discardRenderTargetSupport() const { return fDiscardRenderTargetSupport; } bool gpuTracingSupport() const { return fGpuTracingSupport; } + bool compressedTexSubImageSupport() const { return fCompressedTexSubImageSupport; } bool oversizedStencilSupport() const { return fOversizedStencilSupport; } bool textureBarrierSupport() const { return fTextureBarrierSupport; } bool sampleLocationsSupport() const { return fSampleLocationsSupport; } @@ -211,6 +212,7 @@ protected: bool fReuseScratchTextures : 1; bool fReuseScratchBuffers : 1; bool fGpuTracingSupport : 1; + bool fCompressedTexSubImageSupport : 1; bool fOversizedStencilSupport : 1; bool fTextureBarrierSupport : 1; bool fSampleLocationsSupport : 1; diff --git a/include/gpu/GrTypes.h b/include/gpu/GrTypes.h index e9630270f6..1619b9afa4 100644 --- a/include/gpu/GrTypes.h +++ b/include/gpu/GrTypes.h @@ -298,7 +298,10 @@ enum GrPixelConfig { * 8 bit signed integers per-channel. Byte order is b,g,r,a. */ kRGBA_8888_sint_GrPixelConfig, - + /** + * ETC1 Compressed Data + */ + kETC1_GrPixelConfig, /** * Byte order is r, g, b, a. This color format is 32 bits per channel */ @@ -334,6 +337,58 @@ static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1; #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format." #endif +// Returns true if the pixel config is a GPU-specific compressed format +// representation. +static inline bool GrPixelConfigIsCompressed(GrPixelConfig config) { + switch (config) { + case kETC1_GrPixelConfig: + return true; + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + return false; + } + SkFAIL("Invalid pixel config"); + return false; +} + +/** If the pixel config is compressed, return an equivalent uncompressed format. */ +static inline GrPixelConfig GrMakePixelConfigUncompressed(GrPixelConfig config) { + switch (config) { + case kETC1_GrPixelConfig: + return kRGBA_8888_GrPixelConfig; + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + SkASSERT(!GrPixelConfigIsCompressed(config)); + return config; + } + SkFAIL("Invalid pixel config"); + return config; +} + // Returns true if the pixel config is 32 bits per pixel static inline bool GrPixelConfigIs8888Unorm(GrPixelConfig config) { switch (config) { @@ -348,6 +403,7 @@ static inline bool GrPixelConfigIs8888Unorm(GrPixelConfig config) { case kRGB_565_GrPixelConfig: case kRGBA_4444_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: + case kETC1_GrPixelConfig: case kRGBA_float_GrPixelConfig: case kRG_float_GrPixelConfig: case kAlpha_half_GrPixelConfig: @@ -373,6 +429,7 @@ static inline bool GrPixelConfigIsSRGB(GrPixelConfig config) { case kRGBA_8888_GrPixelConfig: case kBGRA_8888_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: + case kETC1_GrPixelConfig: case kRGBA_float_GrPixelConfig: case kRG_float_GrPixelConfig: case kAlpha_half_GrPixelConfig: @@ -401,6 +458,7 @@ static inline GrPixelConfig GrPixelConfigSwapRAndB(GrPixelConfig config) { case kRGB_565_GrPixelConfig: case kRGBA_4444_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: + case kETC1_GrPixelConfig: case kRGBA_float_GrPixelConfig: case kRG_float_GrPixelConfig: case kAlpha_half_GrPixelConfig: @@ -412,6 +470,7 @@ static inline GrPixelConfig GrPixelConfigSwapRAndB(GrPixelConfig config) { } static inline size_t GrBytesPerPixel(GrPixelConfig config) { + SkASSERT(!GrPixelConfigIsCompressed(config)); switch (config) { case kAlpha_8_GrPixelConfig: case kGray_8_GrPixelConfig: @@ -433,6 +492,7 @@ static inline size_t GrBytesPerPixel(GrPixelConfig config) { case kRG_float_GrPixelConfig: return 8; case kUnknown_GrPixelConfig: + case kETC1_GrPixelConfig: return 0; } SkFAIL("Invalid pixel config"); @@ -441,6 +501,7 @@ static inline size_t GrBytesPerPixel(GrPixelConfig config) { static inline bool GrPixelConfigIsOpaque(GrPixelConfig config) { switch (config) { + case kETC1_GrPixelConfig: case kRGB_565_GrPixelConfig: case kGray_8_GrPixelConfig: return true; @@ -476,6 +537,7 @@ static inline bool GrPixelConfigIsAlphaOnly(GrPixelConfig config) { case kSRGBA_8888_GrPixelConfig: case kSBGRA_8888_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: + case kETC1_GrPixelConfig: case kRGBA_float_GrPixelConfig: case kRG_float_GrPixelConfig: case kRGBA_half_GrPixelConfig: @@ -502,6 +564,7 @@ static inline bool GrPixelConfigIsFloatingPoint(GrPixelConfig config) { case kSRGBA_8888_GrPixelConfig: case kSBGRA_8888_GrPixelConfig: case kRGBA_8888_sint_GrPixelConfig: + case kETC1_GrPixelConfig: return false; } SkFAIL("Invalid pixel config"); @@ -717,6 +780,41 @@ enum GrGLBackendState { }; /** + * Returns the data size for the given compressed pixel config + */ +static inline size_t GrCompressedFormatDataSize(GrPixelConfig config, + int width, int height) { + SkASSERT(GrPixelConfigIsCompressed(config)); + + switch (config) { + case kETC1_GrPixelConfig: + SkASSERT((width & 3) == 0); + SkASSERT((height & 3) == 0); + return (width >> 2) * (height >> 2) * 8; + + case kUnknown_GrPixelConfig: + case kAlpha_8_GrPixelConfig: + case kGray_8_GrPixelConfig: + case kRGB_565_GrPixelConfig: + case kRGBA_4444_GrPixelConfig: + case kRGBA_8888_GrPixelConfig: + case kBGRA_8888_GrPixelConfig: + case kSRGBA_8888_GrPixelConfig: + case kSBGRA_8888_GrPixelConfig: + case kRGBA_8888_sint_GrPixelConfig: + case kRGBA_float_GrPixelConfig: + case kRG_float_GrPixelConfig: + case kAlpha_half_GrPixelConfig: + case kRGBA_half_GrPixelConfig: + SkFAIL("Unknown compressed pixel config"); + return 4 * width * height; + } + + SkFAIL("Invalid pixel config"); + return 4 * width * height; +} + +/** * This value translates to reseting all the context state for any backend. */ static const uint32_t kAll_GrBackendState = 0xffffffff; |