diff options
author | 2017-11-10 15:34:03 -0500 | |
---|---|---|
committer | 2017-11-13 14:36:40 +0000 | |
commit | aae47c878b83ab6d9742d92a6fa47e762f6b9204 (patch) | |
tree | fd13dbc1dc7c5dc36f8262099cf8ade55ec0cb47 /src/gpu | |
parent | 2d9cb57c83553be3434c04f860d5e9fec30cb453 (diff) |
sksl enum support
Bug: skia:
Change-Id: I4d505b31cf8b59de12bcdbca410aafc085977ba9
Reviewed-on: https://skia-review.googlesource.com/68621
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrContext.cpp | 6 | ||||
-rw-r--r-- | src/gpu/effects/GrArithmeticFP.cpp | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp | 5 | ||||
-rw-r--r-- | src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp | 16 | ||||
-rw-r--r-- | src/gpu/effects/GrBlurredEdgeFragmentProcessor.h | 10 | ||||
-rw-r--r-- | src/gpu/effects/GrCircleEffect.cpp | 10 | ||||
-rw-r--r-- | src/gpu/effects/GrCircleEffect.fp | 14 | ||||
-rw-r--r-- | src/gpu/effects/GrCircleEffect.h | 9 | ||||
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.cpp | 7 | ||||
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.fp | 19 | ||||
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.h | 16 | ||||
-rw-r--r-- | src/gpu/effects/GrDitherEffect.cpp | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrEllipseEffect.cpp | 6 | ||||
-rw-r--r-- | src/gpu/effects/GrEllipseEffect.fp | 12 | ||||
-rw-r--r-- | src/gpu/effects/GrEllipseEffect.h | 9 | ||||
-rw-r--r-- | src/gpu/effects/GrOvalEffect.cpp | 4 |
16 files changed, 68 insertions, 79 deletions
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp index 485bce3039..ba10fdcd68 100644 --- a/src/gpu/GrContext.cpp +++ b/src/gpu/GrContext.cpp @@ -973,8 +973,7 @@ std::unique_ptr<GrFragmentProcessor> GrContext::createPMToUPMEffect( // ...and it should have succeeded SkASSERT(this->validPMUPMConversionExists()); - return GrConfigConversionEffect::Make(std::move(fp), - GrConfigConversionEffect::kToUnpremul_PMConversion); + return GrConfigConversionEffect::Make(std::move(fp), PMConversion::kToUnpremul); } else { // For everything else (sRGB, half-float, etc...), it doesn't make sense to try and // explicitly round the results. Just do the obvious, naive thing in the shader. @@ -992,8 +991,7 @@ std::unique_ptr<GrFragmentProcessor> GrContext::createUPMToPMEffect( // ...and it should have succeeded SkASSERT(this->validPMUPMConversionExists()); - return GrConfigConversionEffect::Make(std::move(fp), - GrConfigConversionEffect::kToPremul_PMConversion); + return GrConfigConversionEffect::Make(std::move(fp), PMConversion::kToPremul); } else { // For everything else (sRGB, half-float, etc...), it doesn't make sense to try and // explicitly round the results. Just do the obvious, naive thing in the shader. diff --git a/src/gpu/effects/GrArithmeticFP.cpp b/src/gpu/effects/GrArithmeticFP.cpp index 1c47732e3e..41de6432ef 100644 --- a/src/gpu/effects/GrArithmeticFP.cpp +++ b/src/gpu/effects/GrArithmeticFP.cpp @@ -76,7 +76,7 @@ GrGLSLFragmentProcessor* GrArithmeticFP::onCreateGLSLInstance() const { } void GrArithmeticFP::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { - b->add32(fEnforcePMColor); + b->add32((int32_t)fEnforcePMColor); } bool GrArithmeticFP::onIsEqual(const GrFragmentProcessor& other) const { const GrArithmeticFP& that = other.cast<GrArithmeticFP>(); diff --git a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp index 80e2d37f62..6dfb6c5216 100644 --- a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp +++ b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp @@ -31,7 +31,8 @@ public: "0.017999999999999999);\n break;\n case 1:\n factor = " "half(smoothstep(1.0, 0.0, float(factor)));\n break;\n}\n%s = " "half4(factor);\n", - args.fInputColor ? args.fInputColor : "half4(1)", _outer.mode(), args.fOutputColor); + args.fInputColor ? args.fInputColor : "half4(1)", (int)_outer.mode(), + args.fOutputColor); } private: @@ -43,7 +44,7 @@ GrGLSLFragmentProcessor* GrBlurredEdgeFragmentProcessor::onCreateGLSLInstance() } void GrBlurredEdgeFragmentProcessor::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { - b->add32(fMode); + b->add32((int32_t)fMode); } bool GrBlurredEdgeFragmentProcessor::onIsEqual(const GrFragmentProcessor& other) const { const GrBlurredEdgeFragmentProcessor& that = other.cast<GrBlurredEdgeFragmentProcessor>(); diff --git a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp index fe5ffd5eb3..14b29e61e4 100644 --- a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp +++ b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp @@ -5,22 +5,20 @@ * found in the LICENSE file. */ -@class { - enum Mode { - kGaussian_Mode = 0, - kSmoothStep_Mode = 1 - }; -} +enum class Mode { + kGaussian = 0, + kSmoothStep = 1 +}; -layout(key) in int mode; +layout(key) in Mode mode; void main() { half factor = 1.0 - sk_InColor.a; @switch (mode) { - case 0: // kGaussian_Mode + case Mode::kGaussian: factor = exp(-factor * factor * 4.0) - 0.018; break; - case 1: // kSmoothstep_Mode + case Mode::kSmoothStep: factor = smoothstep(1.0, 0.0, factor); break; } diff --git a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.h b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.h index 0cd9a8eb53..ff9f0470b4 100644 --- a/src/gpu/effects/GrBlurredEdgeFragmentProcessor.h +++ b/src/gpu/effects/GrBlurredEdgeFragmentProcessor.h @@ -16,9 +16,9 @@ #include "GrCoordTransform.h" class GrBlurredEdgeFragmentProcessor : public GrFragmentProcessor { public: - enum Mode { kGaussian_Mode = 0, kSmoothStep_Mode = 1 }; - int mode() const { return fMode; } - static std::unique_ptr<GrFragmentProcessor> Make(int mode) { + enum class Mode { kSmoothStep = 1, kGaussian = 0 }; + Mode mode() const { return fMode; } + static std::unique_ptr<GrFragmentProcessor> Make(Mode mode) { return std::unique_ptr<GrFragmentProcessor>(new GrBlurredEdgeFragmentProcessor(mode)); } GrBlurredEdgeFragmentProcessor(const GrBlurredEdgeFragmentProcessor& src); @@ -26,14 +26,14 @@ public: const char* name() const override { return "BlurredEdgeFragmentProcessor"; } private: - GrBlurredEdgeFragmentProcessor(int mode) + GrBlurredEdgeFragmentProcessor(Mode mode) : INHERITED(kGrBlurredEdgeFragmentProcessor_ClassID, kNone_OptimizationFlags) , fMode(mode) {} GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; bool onIsEqual(const GrFragmentProcessor&) const override; GR_DECLARE_FRAGMENT_PROCESSOR_TEST - int fMode; + Mode fMode; typedef GrFragmentProcessor INHERITED; }; #endif diff --git a/src/gpu/effects/GrCircleEffect.cpp b/src/gpu/effects/GrCircleEffect.cpp index eccf8bf251..d3eecb7899 100644 --- a/src/gpu/effects/GrCircleEffect.cpp +++ b/src/gpu/effects/GrCircleEffect.cpp @@ -38,14 +38,14 @@ public: "%s.w))) * float(%s.z));\n}\n@if ((%d == 1 || %d == 3) || %d == 4) {\n d = " "half(clamp(float(d), 0.0, 1.0));\n} else {\n d = half(float(d) > 0.5 ? 1.0 : " "0.0);\n}\n%s = %s * d;\n", - prevRadius, _outer.edgeType(), _outer.edgeType(), + prevRadius, (int)_outer.edgeType(), (int)_outer.edgeType(), args.fUniformHandler->getUniformCStr(fCircleVar), args.fUniformHandler->getUniformCStr(fCircleVar), args.fUniformHandler->getUniformCStr(fCircleVar), args.fUniformHandler->getUniformCStr(fCircleVar), args.fUniformHandler->getUniformCStr(fCircleVar), - args.fUniformHandler->getUniformCStr(fCircleVar), _outer.edgeType(), - _outer.edgeType(), _outer.edgeType(), args.fOutputColor, + args.fUniformHandler->getUniformCStr(fCircleVar), (int)_outer.edgeType(), + (int)_outer.edgeType(), (int)_outer.edgeType(), args.fOutputColor, args.fInputColor ? args.fInputColor : "half4(1)"); } @@ -84,7 +84,7 @@ GrGLSLFragmentProcessor* GrCircleEffect::onCreateGLSLInstance() const { } void GrCircleEffect::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { - b->add32(fEdgeType); + b->add32((int32_t)fEdgeType); } bool GrCircleEffect::onIsEqual(const GrFragmentProcessor& other) const { const GrCircleEffect& that = other.cast<GrCircleEffect>(); @@ -113,7 +113,7 @@ std::unique_ptr<GrFragmentProcessor> GrCircleEffect::TestCreate(GrProcessorTestD do { et = (GrClipEdgeType)testData->fRandom->nextULessThan(kGrClipEdgeTypeCnt); } while (GrClipEdgeType::kHairlineAA == et); - return GrCircleEffect::Make((int)et, center, radius); + return GrCircleEffect::Make(et, center, radius); } #endif #endif diff --git a/src/gpu/effects/GrCircleEffect.fp b/src/gpu/effects/GrCircleEffect.fp index 95cbeb05fd..fe959f8bc8 100644 --- a/src/gpu/effects/GrCircleEffect.fp +++ b/src/gpu/effects/GrCircleEffect.fp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -layout(key) in int edgeType; +layout(key) in GrClipEdgeType edgeType; in half2 center; in half radius; @@ -37,15 +37,15 @@ void main() { // radius and then denormalized. This is to prevent overflow on devices that have a "real" // mediump. It'd be nice to only do this on mediump devices. half d; - @if (edgeType == 2 /* GrClipEdgeType::kInverseFillBW */ || - edgeType == 3 /* GrClipEdgeType::kInverseFillAA */) { + @if (edgeType == GrClipEdgeType::kInverseFillBW || + edgeType == GrClipEdgeType::kInverseFillAA) { d = (length((circle.xy - sk_FragCoord.xy) * circle.w) - 1.0) * circle.z; } else { d = (1.0 - length((circle.xy - sk_FragCoord.xy) * circle.w)) * circle.z; } - @if (edgeType == 1 /* GrClipEdgeType::kFillAA */ || - edgeType == 3 /* GrClipEdgeType::kInverseFillAA */ || - edgeType == 4 /* GrClipEdgeType::kHairlineAA */) { + @if (edgeType == GrClipEdgeType::kFillAA || + edgeType == GrClipEdgeType::kInverseFillAA || + edgeType == GrClipEdgeType::kHairlineAA) { d = clamp(d, 0.0, 1.0); } else { d = d > 0.5 ? 1.0 : 0.0; @@ -63,5 +63,5 @@ void main() { do { et = (GrClipEdgeType) testData->fRandom->nextULessThan(kGrClipEdgeTypeCnt); } while (GrClipEdgeType::kHairlineAA == et); - return GrCircleEffect::Make((int) et, center, radius); + return GrCircleEffect::Make(et, center, radius); }
\ No newline at end of file diff --git a/src/gpu/effects/GrCircleEffect.h b/src/gpu/effects/GrCircleEffect.h index c088fd5dba..bf6bd0e8e6 100644 --- a/src/gpu/effects/GrCircleEffect.h +++ b/src/gpu/effects/GrCircleEffect.h @@ -16,10 +16,11 @@ #include "GrCoordTransform.h" class GrCircleEffect : public GrFragmentProcessor { public: - int edgeType() const { return fEdgeType; } + GrClipEdgeType edgeType() const { return fEdgeType; } SkPoint center() const { return fCenter; } float radius() const { return fRadius; } - static std::unique_ptr<GrFragmentProcessor> Make(int edgeType, SkPoint center, float radius) { + static std::unique_ptr<GrFragmentProcessor> Make(GrClipEdgeType edgeType, SkPoint center, + float radius) { return std::unique_ptr<GrFragmentProcessor>(new GrCircleEffect(edgeType, center, radius)); } GrCircleEffect(const GrCircleEffect& src); @@ -27,7 +28,7 @@ public: const char* name() const override { return "CircleEffect"; } private: - GrCircleEffect(int edgeType, SkPoint center, float radius) + GrCircleEffect(GrClipEdgeType edgeType, SkPoint center, float radius) : INHERITED(kGrCircleEffect_ClassID, (OptimizationFlags)kCompatibleWithCoverageAsAlpha_OptimizationFlag) , fEdgeType(edgeType) @@ -37,7 +38,7 @@ private: void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; bool onIsEqual(const GrFragmentProcessor&) const override; GR_DECLARE_FRAGMENT_PROCESSOR_TEST - int fEdgeType; + GrClipEdgeType fEdgeType; SkPoint fCenter; float fRadius; typedef GrFragmentProcessor INHERITED; diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp index d32cb1d3f5..9887cac6b0 100644 --- a/src/gpu/effects/GrConfigConversionEffect.cpp +++ b/src/gpu/effects/GrConfigConversionEffect.cpp @@ -33,7 +33,7 @@ public: "? half3(0.0) : half3(floor(float3(float3((%s.xyz / %s.w) * 255.0) + 0.5)) / " "255.0);\n break;\n}\n", args.fOutputColor, args.fInputColor ? args.fInputColor : "half4(1)", - _outer.pmConversion(), args.fOutputColor, args.fOutputColor, args.fOutputColor, + (int)_outer.pmConversion(), args.fOutputColor, args.fOutputColor, args.fOutputColor, args.fOutputColor, args.fOutputColor, args.fOutputColor, args.fOutputColor); } @@ -46,7 +46,7 @@ GrGLSLFragmentProcessor* GrConfigConversionEffect::onCreateGLSLInstance() const } void GrConfigConversionEffect::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { - b->add32(fPmConversion); + b->add32((int32_t)fPmConversion); } bool GrConfigConversionEffect::onIsEqual(const GrFragmentProcessor& other) const { const GrConfigConversionEffect& that = other.cast<GrConfigConversionEffect>(); @@ -64,7 +64,8 @@ GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrConfigConversionEffect); #if GR_TEST_UTILS std::unique_ptr<GrFragmentProcessor> GrConfigConversionEffect::TestCreate( GrProcessorTestData* data) { - PMConversion pmConv = static_cast<PMConversion>(data->fRandom->nextULessThan(kPMConversionCnt)); + PMConversion pmConv = static_cast<PMConversion>( + data->fRandom->nextULessThan((int)PMConversion::kPMConversionCnt)); return std::unique_ptr<GrFragmentProcessor>(new GrConfigConversionEffect(pmConv)); } #endif diff --git a/src/gpu/effects/GrConfigConversionEffect.fp b/src/gpu/effects/GrConfigConversionEffect.fp index 4c09bf468d..62b998d640 100644 --- a/src/gpu/effects/GrConfigConversionEffect.fp +++ b/src/gpu/effects/GrConfigConversionEffect.fp @@ -5,12 +5,6 @@ } @class { - enum PMConversion { - kToPremul_PMConversion = 0, - kToUnpremul_PMConversion = 1, - kPMConversionCnt = 2 - }; - static bool TestForPreservingPMConversions(GrContext* context) { static constexpr int kSize = 256; static constexpr GrPixelConfig kConfig = kRGBA_8888_GrPixelConfig; @@ -69,9 +63,9 @@ GrPaint paint2; GrPaint paint3; std::unique_ptr<GrFragmentProcessor> pmToUPM( - new GrConfigConversionEffect(kToUnpremul_PMConversion)); + new GrConfigConversionEffect(PMConversion::kToUnpremul)); std::unique_ptr<GrFragmentProcessor> upmToPM( - new GrConfigConversionEffect(kToPremul_PMConversion)); + new GrConfigConversionEffect(PMConversion::kToPremul)); paint1.addColorTextureProcessor(dataProxy, SkMatrix::I()); paint1.addColorFragmentProcessor(pmToUPM->clone()); @@ -125,7 +119,7 @@ } } -layout(key) in int pmConversion; +layout(key) in PMConversion pmConversion; @emitCode { fragBuilder->forceHighPrecision(); @@ -137,11 +131,11 @@ void main() { sk_OutColor = floor(sk_InColor * 255 + 0.5) / 255; @switch (pmConversion) { - case 0 /* kToPremul_PMConversion */: + case PMConversion::kToPremul: sk_OutColor.rgb = floor(sk_OutColor.rgb * sk_OutColor.a * 255 + 0.5) / 255; break; - case 1 /* kToUnpremul_PMConversion */: + case PMConversion::kToUnpremul: sk_OutColor.rgb = sk_OutColor.a <= 0.0 ? half3(0) : floor(sk_OutColor.rgb / sk_OutColor.a * 255 + 0.5) / 255; @@ -150,6 +144,7 @@ void main() { } @test(data) { - PMConversion pmConv = static_cast<PMConversion>(data->fRandom->nextULessThan(kPMConversionCnt)); + PMConversion pmConv = static_cast<PMConversion>(data->fRandom->nextULessThan( + (int) PMConversion::kPMConversionCnt)); return std::unique_ptr<GrFragmentProcessor>(new GrConfigConversionEffect(pmConv)); } diff --git a/src/gpu/effects/GrConfigConversionEffect.h b/src/gpu/effects/GrConfigConversionEffect.h index cffd5a6194..cc024737f5 100644 --- a/src/gpu/effects/GrConfigConversionEffect.h +++ b/src/gpu/effects/GrConfigConversionEffect.h @@ -20,12 +20,6 @@ #include "GrCoordTransform.h" class GrConfigConversionEffect : public GrFragmentProcessor { public: - enum PMConversion { - kToPremul_PMConversion = 0, - kToUnpremul_PMConversion = 1, - kPMConversionCnt = 2 - }; - static bool TestForPreservingPMConversions(GrContext* context) { static constexpr int kSize = 256; static constexpr GrPixelConfig kConfig = kRGBA_8888_GrPixelConfig; @@ -79,9 +73,9 @@ public: GrPaint paint2; GrPaint paint3; std::unique_ptr<GrFragmentProcessor> pmToUPM( - new GrConfigConversionEffect(kToUnpremul_PMConversion)); + new GrConfigConversionEffect(PMConversion::kToUnpremul)); std::unique_ptr<GrFragmentProcessor> upmToPM( - new GrConfigConversionEffect(kToPremul_PMConversion)); + new GrConfigConversionEffect(PMConversion::kToPremul)); paint1.addColorTextureProcessor(dataProxy, SkMatrix::I()); paint1.addColorFragmentProcessor(pmToUPM->clone()); @@ -121,7 +115,7 @@ public: return true; } - int pmConversion() const { return fPmConversion; } + PMConversion pmConversion() const { return fPmConversion; } static std::unique_ptr<GrFragmentProcessor> Make(std::unique_ptr<GrFragmentProcessor> fp, PMConversion pmConversion) { @@ -137,14 +131,14 @@ public: const char* name() const override { return "ConfigConversionEffect"; } private: - GrConfigConversionEffect(int pmConversion) + GrConfigConversionEffect(PMConversion pmConversion) : INHERITED(kGrConfigConversionEffect_ClassID, kNone_OptimizationFlags) , fPmConversion(pmConversion) {} GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; bool onIsEqual(const GrFragmentProcessor&) const override; GR_DECLARE_FRAGMENT_PROCESSOR_TEST - int fPmConversion; + PMConversion fPmConversion; typedef GrFragmentProcessor INHERITED; }; #endif diff --git a/src/gpu/effects/GrDitherEffect.cpp b/src/gpu/effects/GrDitherEffect.cpp index 78d5591f4a..d3fdc4fa5d 100644 --- a/src/gpu/effects/GrDitherEffect.cpp +++ b/src/gpu/effects/GrDitherEffect.cpp @@ -53,7 +53,7 @@ GrGLSLFragmentProcessor* GrDitherEffect::onCreateGLSLInstance() const { } void GrDitherEffect::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { - b->add32(fRangeType); + b->add32((int32_t)fRangeType); } bool GrDitherEffect::onIsEqual(const GrFragmentProcessor& other) const { const GrDitherEffect& that = other.cast<GrDitherEffect>(); diff --git a/src/gpu/effects/GrEllipseEffect.cpp b/src/gpu/effects/GrEllipseEffect.cpp index 20afa936ec..4a0f37665c 100644 --- a/src/gpu/effects/GrEllipseEffect.cpp +++ b/src/gpu/effects/GrEllipseEffect.cpp @@ -49,7 +49,7 @@ public: fScaleVar.isValid() ? args.fUniformHandler->getUniformCStr(fScaleVar) : "half2(0)", args.fUniformHandler->getUniformCStr(fEllipseVar), fScaleVar.isValid() ? args.fUniformHandler->getUniformCStr(fScaleVar) : "half2(0)", - _outer.edgeType()); + (int)_outer.edgeType()); fragBuilder->codeAppendf( "0);\n break;\n case 1:\n alpha = half(clamp(0.5 - " "float(approx_dist), 0.0, 1.0));\n break;\n case 2:\n alpha = " @@ -110,7 +110,7 @@ GrGLSLFragmentProcessor* GrEllipseEffect::onCreateGLSLInstance() const { } void GrEllipseEffect::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { - b->add32(fEdgeType); + b->add32((int32_t)fEdgeType); } bool GrEllipseEffect::onIsEqual(const GrFragmentProcessor& other) const { const GrEllipseEffect& that = other.cast<GrEllipseEffect>(); @@ -140,7 +140,7 @@ std::unique_ptr<GrFragmentProcessor> GrEllipseEffect::TestCreate(GrProcessorTest do { et = (GrClipEdgeType)testData->fRandom->nextULessThan(kGrClipEdgeTypeCnt); } while (GrClipEdgeType::kHairlineAA == et); - return GrEllipseEffect::Make((int)et, center, SkPoint::Make(rx, ry)); + return GrEllipseEffect::Make(et, center, SkPoint::Make(rx, ry)); } #endif #endif diff --git a/src/gpu/effects/GrEllipseEffect.fp b/src/gpu/effects/GrEllipseEffect.fp index f3feae17ef..54641b72c6 100644 --- a/src/gpu/effects/GrEllipseEffect.fp +++ b/src/gpu/effects/GrEllipseEffect.fp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -layout(key) in int edgeType; +layout(key) in GrClipEdgeType edgeType; in half2 center; in half2 radii; @@ -72,16 +72,16 @@ void main() { half alpha; @switch (edgeType) { - case 0 /* GrClipEdgeType::kFillBW */: + case GrClipEdgeType::kFillBW: alpha = approx_dist > 0.0 ? 0.0 : 1.0; break; - case 1 /* GrClipEdgeType::kFillAA */: + case GrClipEdgeType::kFillAA: alpha = clamp(0.5 - approx_dist, 0.0, 1.0); break; - case 2 /* GrClipEdgeType::kInverseFillBW */: + case GrClipEdgeType::kInverseFillBW: alpha = approx_dist > 0.0 ? 1.0 : 0.0; break; - case 3 /* GrClipEdgeType::kInverseFillAA */: + case GrClipEdgeType::kInverseFillAA: alpha = clamp(0.5 + approx_dist, 0.0, 1.0); break; default: @@ -101,5 +101,5 @@ void main() { do { et = (GrClipEdgeType) testData->fRandom->nextULessThan(kGrClipEdgeTypeCnt); } while (GrClipEdgeType::kHairlineAA == et); - return GrEllipseEffect::Make((int) et, center, SkPoint::Make(rx, ry)); + return GrEllipseEffect::Make(et, center, SkPoint::Make(rx, ry)); }
\ No newline at end of file diff --git a/src/gpu/effects/GrEllipseEffect.h b/src/gpu/effects/GrEllipseEffect.h index 97d7607b86..8769295ef0 100644 --- a/src/gpu/effects/GrEllipseEffect.h +++ b/src/gpu/effects/GrEllipseEffect.h @@ -16,10 +16,11 @@ #include "GrCoordTransform.h" class GrEllipseEffect : public GrFragmentProcessor { public: - int edgeType() const { return fEdgeType; } + GrClipEdgeType edgeType() const { return fEdgeType; } SkPoint center() const { return fCenter; } SkPoint radii() const { return fRadii; } - static std::unique_ptr<GrFragmentProcessor> Make(int edgeType, SkPoint center, SkPoint radii) { + static std::unique_ptr<GrFragmentProcessor> Make(GrClipEdgeType edgeType, SkPoint center, + SkPoint radii) { return std::unique_ptr<GrFragmentProcessor>(new GrEllipseEffect(edgeType, center, radii)); } GrEllipseEffect(const GrEllipseEffect& src); @@ -27,7 +28,7 @@ public: const char* name() const override { return "EllipseEffect"; } private: - GrEllipseEffect(int edgeType, SkPoint center, SkPoint radii) + GrEllipseEffect(GrClipEdgeType edgeType, SkPoint center, SkPoint radii) : INHERITED(kGrEllipseEffect_ClassID, (OptimizationFlags)kCompatibleWithCoverageAsAlpha_OptimizationFlag) , fEdgeType(edgeType) @@ -37,7 +38,7 @@ private: void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; bool onIsEqual(const GrFragmentProcessor&) const override; GR_DECLARE_FRAGMENT_PROCESSOR_TEST - int fEdgeType; + GrClipEdgeType fEdgeType; SkPoint fCenter; SkPoint fRadii; typedef GrFragmentProcessor INHERITED; diff --git a/src/gpu/effects/GrOvalEffect.cpp b/src/gpu/effects/GrOvalEffect.cpp index 60ea9df26c..0c0f3bde5c 100644 --- a/src/gpu/effects/GrOvalEffect.cpp +++ b/src/gpu/effects/GrOvalEffect.cpp @@ -20,12 +20,12 @@ std::unique_ptr<GrFragmentProcessor> GrOvalEffect::Make(GrClipEdgeType edgeType, SkScalar h = oval.height(); if (SkScalarNearlyEqual(w, h)) { w /= 2; - return GrCircleEffect::Make((int) edgeType, SkPoint::Make(oval.fLeft + w, oval.fTop + w), + return GrCircleEffect::Make(edgeType, SkPoint::Make(oval.fLeft + w, oval.fTop + w), w); } else { w /= 2; h /= 2; - return GrEllipseEffect::Make((int) edgeType, SkPoint::Make(oval.fLeft + w, oval.fTop + h), + return GrEllipseEffect::Make(edgeType, SkPoint::Make(oval.fLeft + w, oval.fTop + h), SkPoint::Make(w, h)); } |