aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects/GrDitherEffect.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/effects/GrDitherEffect.h')
-rw-r--r--src/gpu/effects/GrDitherEffect.h36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/gpu/effects/GrDitherEffect.h b/src/gpu/effects/GrDitherEffect.h
index a996ad94c2..63c0df7eb2 100644
--- a/src/gpu/effects/GrDitherEffect.h
+++ b/src/gpu/effects/GrDitherEffect.h
@@ -18,19 +18,47 @@
#include "effects/GrProxyMove.h"
class GrDitherEffect : public GrFragmentProcessor {
public:
- static sk_sp<GrFragmentProcessor> Make() {
- return sk_sp<GrFragmentProcessor>(new GrDitherEffect());
+ int rangeType() const { return fRangeType; }
+
+ static sk_sp<GrFragmentProcessor> Make(GrPixelConfig dstConfig) {
+ int rangeType;
+ switch (dstConfig) {
+ case kGray_8_GrPixelConfig:
+ case kRGBA_8888_GrPixelConfig:
+ case kBGRA_8888_GrPixelConfig:
+ case kSRGBA_8888_GrPixelConfig:
+ case kSBGRA_8888_GrPixelConfig:
+ rangeType = 0;
+ break;
+ case kRGB_565_GrPixelConfig:
+ rangeType = 1;
+ break;
+ case kRGBA_4444_GrPixelConfig:
+ rangeType = 2;
+ break;
+ case kUnknown_GrPixelConfig:
+ case kAlpha_half_GrPixelConfig:
+ case kRGBA_8888_sint_GrPixelConfig:
+ case kRGBA_float_GrPixelConfig:
+ case kRG_float_GrPixelConfig:
+ case kRGBA_half_GrPixelConfig:
+ case kAlpha_8_GrPixelConfig:
+ return nullptr;
+ }
+ return sk_sp<GrFragmentProcessor>(new GrDitherEffect(rangeType));
}
const char* name() const override { return "DitherEffect"; }
private:
- GrDitherEffect()
- : INHERITED(kNone_OptimizationFlags) {
+ GrDitherEffect(int rangeType)
+ : INHERITED(kNone_OptimizationFlags)
+ , fRangeType(rangeType) {
this->initClassID<GrDitherEffect>();
}
GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
void onGetGLSLProcessorKey(const GrShaderCaps&,GrProcessorKeyBuilder*) const override;
bool onIsEqual(const GrFragmentProcessor&) const override;
GR_DECLARE_FRAGMENT_PROCESSOR_TEST
+ int fRangeType;
typedef GrFragmentProcessor INHERITED;
};
#endif