Index: include/gpu/GrTypesPriv.h |
diff --git a/include/gpu/GrTypesPriv.h b/include/gpu/GrTypesPriv.h |
index bf8ea4906352ed9c98c2ed8e3cb37594337e47a6..423f31df3698b566651b9883f5438a0510d97f2a 100644 |
--- a/include/gpu/GrTypesPriv.h |
+++ b/include/gpu/GrTypesPriv.h |
@@ -71,6 +71,48 @@ enum GrSLPrecision { |
static const int kGrSLPrecisionCount = kLast_GrSLPrecision + 1; |
+static inline GrSLPrecision GrPixelConfigPrecision(GrPixelConfig config) { |
+ static const GrSLPrecision precisions[] = { |
+ kLow_GrSLPrecision, // kUnknown_GrPixelConfig |
+ kLow_GrSLPrecision, // kAlpha_8_GrPixelConfig |
+ kLow_GrSLPrecision, // kIndex_8_GrPixelConfig |
+ kLow_GrSLPrecision, // kRGB_565_GrPixelConfig |
+ kLow_GrSLPrecision, // kRGBA_4444_GrPixelConfig |
+ kLow_GrSLPrecision, // kRGBA_8888_GrPixelConfig |
+ kLow_GrSLPrecision, // kBGRA_8888_GrPixelConfig |
+ kLow_GrSLPrecision, // kSRGBA_8888_GrPixelConfig |
+ kLow_GrSLPrecision, // kSBGRA_8888_GrPixelConfig |
+ kLow_GrSLPrecision, // kETC1_GrPixelConfig |
+ kLow_GrSLPrecision, // kLATC_GrPixelConfig |
+ kLow_GrSLPrecision, // kR11_EAC_GrPixelConfig |
+ kLow_GrSLPrecision, // kASTC_12x12_GrPixelConfig |
+ kHigh_GrSLPrecision, // kRGBA_float_GrPixelConfig |
+ kMedium_GrSLPrecision, // kAlpha_half_GrPixelConfig |
+ kMedium_GrSLPrecision, // kRGBA_half_GrPixelConfig |
+ }; |
+ |
+ SkASSERT(config >= 0 && config <= kLast_GrPixelConfig); |
+ return precisions[config]; |
+ |
+ GR_STATIC_ASSERT(0 == kUnknown_GrPixelConfig); |
+ GR_STATIC_ASSERT(1 == kAlpha_8_GrPixelConfig); |
+ GR_STATIC_ASSERT(2 == kIndex_8_GrPixelConfig); |
+ GR_STATIC_ASSERT(3 == kRGB_565_GrPixelConfig); |
+ GR_STATIC_ASSERT(4 == kRGBA_4444_GrPixelConfig); |
+ GR_STATIC_ASSERT(5 == kRGBA_8888_GrPixelConfig); |
+ GR_STATIC_ASSERT(6 == kBGRA_8888_GrPixelConfig); |
+ GR_STATIC_ASSERT(7 == kSRGBA_8888_GrPixelConfig); |
+ GR_STATIC_ASSERT(8 == kSBGRA_8888_GrPixelConfig); |
+ GR_STATIC_ASSERT(9 == kETC1_GrPixelConfig); |
+ GR_STATIC_ASSERT(10 == kLATC_GrPixelConfig); |
+ GR_STATIC_ASSERT(11 == kR11_EAC_GrPixelConfig); |
+ GR_STATIC_ASSERT(12 == kASTC_12x12_GrPixelConfig); |
+ GR_STATIC_ASSERT(13 == kRGBA_float_GrPixelConfig); |
+ GR_STATIC_ASSERT(14 == kAlpha_half_GrPixelConfig); |
+ GR_STATIC_ASSERT(15 == kRGBA_half_GrPixelConfig); |
+ GR_STATIC_ASSERT(SK_ARRAY_COUNT(precisions) == kGrPixelConfigCnt); |
+} |
+ |
/** |
* Gets the vector size of the SLType. Returns -1 for void, matrices, and samplers. |
*/ |