aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-11-10 15:34:03 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-13 14:36:40 +0000
commitaae47c878b83ab6d9742d92a6fa47e762f6b9204 (patch)
treefd13dbc1dc7c5dc36f8262099cf8ade55ec0cb47 /src/gpu
parent2d9cb57c83553be3434c04f860d5e9fec30cb453 (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.cpp6
-rw-r--r--src/gpu/effects/GrArithmeticFP.cpp2
-rw-r--r--src/gpu/effects/GrBlurredEdgeFragmentProcessor.cpp5
-rw-r--r--src/gpu/effects/GrBlurredEdgeFragmentProcessor.fp16
-rw-r--r--src/gpu/effects/GrBlurredEdgeFragmentProcessor.h10
-rw-r--r--src/gpu/effects/GrCircleEffect.cpp10
-rw-r--r--src/gpu/effects/GrCircleEffect.fp14
-rw-r--r--src/gpu/effects/GrCircleEffect.h9
-rw-r--r--src/gpu/effects/GrConfigConversionEffect.cpp7
-rw-r--r--src/gpu/effects/GrConfigConversionEffect.fp19
-rw-r--r--src/gpu/effects/GrConfigConversionEffect.h16
-rw-r--r--src/gpu/effects/GrDitherEffect.cpp2
-rw-r--r--src/gpu/effects/GrEllipseEffect.cpp6
-rw-r--r--src/gpu/effects/GrEllipseEffect.fp12
-rw-r--r--src/gpu/effects/GrEllipseEffect.h9
-rw-r--r--src/gpu/effects/GrOvalEffect.cpp4
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));
}