diff options
author | bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-10-26 19:16:46 +0000 |
---|---|---|
committer | bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-10-26 19:16:46 +0000 |
commit | 22a800a2578564a8b66bd4d9903ef4186c37f35c (patch) | |
tree | b83aeef35c1766bd3586d7248e1075e5ad7ec49f /src/effects | |
parent | 4d3f8b40e3cb0e913c0cac21258df8cdb2a6aeb3 (diff) |
Make a bunch of GrGLEffects derive directly from GrGLEffect rather than GrGLLegacyEffect.
Review URL: https://codereview.appspot.com/6783053
git-svn-id: http://skia.googlecode.com/svn/branches/gpu_dev@6150 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkBlendImageFilter.cpp | 29 | ||||
-rw-r--r-- | src/effects/SkColorMatrixFilter.cpp | 20 | ||||
-rw-r--r-- | src/effects/SkMatrixConvolutionImageFilter.cpp | 54 | ||||
-rw-r--r-- | src/effects/SkTableColorFilter.cpp | 24 |
4 files changed, 67 insertions, 60 deletions
diff --git a/src/effects/SkBlendImageFilter.cpp b/src/effects/SkBlendImageFilter.cpp index fdbf070560..39d7fd38b2 100644 --- a/src/effects/SkBlendImageFilter.cpp +++ b/src/effects/SkBlendImageFilter.cpp @@ -110,24 +110,24 @@ bool SkBlendImageFilter::onFilterImage(Proxy* proxy, /////////////////////////////////////////////////////////////////////////////// #if SK_SUPPORT_GPU -class GrGLBlendEffect : public GrGLLegacyEffect { +class GrGLBlendEffect : public GrGLEffect { public: GrGLBlendEffect(const GrBackendEffectFactory& factory, const GrEffect& effect); virtual ~GrGLBlendEffect(); - virtual void emitFS(GrGLShaderBuilder* builder, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray&) SK_OVERRIDE; - - virtual void emitVS(GrGLShaderBuilder* builder, - const char* vertexCoords) SK_OVERRIDE {} + virtual void emitCode(GrGLShaderBuilder*, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray&) SK_OVERRIDE; static inline EffectKey GenKey(const GrEffect& s, const GrGLCaps&); private: - typedef GrGLLegacyEffect INHERITED; + typedef GrGLEffect INHERITED; SkBlendImageFilter::Mode fMode; }; @@ -245,10 +245,13 @@ GrGLBlendEffect::GrGLBlendEffect(const GrBackendEffectFactory& factory, GrGLBlendEffect::~GrGLBlendEffect() { } -void GrGLBlendEffect::emitFS(GrGLShaderBuilder* builder, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray& samplers) { +void GrGLBlendEffect::emitCode(GrGLShaderBuilder* builder, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray& samplers) { SkString* code = &builder->fFSCode; const char* bgColor = inputColor; const char* fgColor = "fgColor"; diff --git a/src/effects/SkColorMatrixFilter.cpp b/src/effects/SkColorMatrixFilter.cpp index 22df6a6f5d..dc93a24baa 100644 --- a/src/effects/SkColorMatrixFilter.cpp +++ b/src/effects/SkColorMatrixFilter.cpp @@ -339,7 +339,7 @@ public: GR_DECLARE_EFFECT_TEST; - class GLEffect : public GrGLLegacyEffect { + class GLEffect : public GrGLEffect { public: // this class always generates the same code. static EffectKey GenKey(const GrEffect& s, const GrGLCaps&) { return 0; } @@ -351,22 +351,20 @@ public: , fVectorHandle(GrGLUniformManager::kInvalidUniformHandle) { } - virtual void setupVariables(GrGLShaderBuilder* builder) SK_OVERRIDE { + virtual void emitCode(GrGLShaderBuilder* builder, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray&) SK_OVERRIDE { fMatrixHandle = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kMat44f_GrSLType, "ColorMatrix"); fVectorHandle = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, kVec4f_GrSLType, "ColorMatrixVector"); - } - - virtual void emitVS(GrGLShaderBuilder* builder, const char* vertexCoords) SK_OVERRIDE { - } - virtual void emitFS(GrGLShaderBuilder* builder, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray&) SK_OVERRIDE { if (NULL == inputColor) { // could optimize this case, but we aren't for now. inputColor = GrGLSLOnesVecf(4); @@ -410,7 +408,7 @@ public: private: SkColorMatrix fMatrix; - typedef GrGLLegacyEffect INHERITED; + typedef GrGLEffect INHERITED; }; GR_DEFINE_EFFECT_TEST(ColorMatrixEffect); diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp index f5422c0cfb..ed0a00b548 100644 --- a/src/effects/SkMatrixConvolutionImageFilter.cpp +++ b/src/effects/SkMatrixConvolutionImageFilter.cpp @@ -279,17 +279,17 @@ private: typedef GrSingleTextureEffect INHERITED; }; -class GrGLMatrixConvolutionEffect : public GrGLLegacyEffect { +class GrGLMatrixConvolutionEffect : public GrGLEffect { public: GrGLMatrixConvolutionEffect(const GrBackendEffectFactory& factory, const GrEffect& effect); - virtual void setupVariables(GrGLShaderBuilder* builder) SK_OVERRIDE; - virtual void emitVS(GrGLShaderBuilder* state, - const char* vertexCoords) SK_OVERRIDE {} - virtual void emitFS(GrGLShaderBuilder* state, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray&) SK_OVERRIDE; + virtual void emitCode(GrGLShaderBuilder*, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray&) SK_OVERRIDE; static inline EffectKey GenKey(const GrEffect& s, const GrGLCaps& caps); @@ -308,7 +308,7 @@ private: UniformHandle fGainUni; UniformHandle fBiasUni; - typedef GrGLLegacyEffect INHERITED; + typedef GrGLEffect INHERITED; }; GrGLMatrixConvolutionEffect::GrGLMatrixConvolutionEffect(const GrBackendEffectFactory& factory, @@ -325,19 +325,6 @@ GrGLMatrixConvolutionEffect::GrGLMatrixConvolutionEffect(const GrBackendEffectFa fConvolveAlpha = m.convolveAlpha(); } -void GrGLMatrixConvolutionEffect::setupVariables(GrGLShaderBuilder* builder) { - fImageIncrementUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, - kVec2f_GrSLType, "ImageIncrement"); - fKernelUni = builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType, - kFloat_GrSLType, "Kernel", fKernelSize.width() * fKernelSize.height()); - fTargetUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, - kVec2f_GrSLType, "Target"); - fGainUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, - kFloat_GrSLType, "Gain"); - fBiasUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, - kFloat_GrSLType, "Bias"); -} - static void appendTextureLookup(GrGLShaderBuilder* builder, const GrGLShaderBuilder::TextureSampler& sampler, const char* coord, @@ -360,10 +347,25 @@ static void appendTextureLookup(GrGLShaderBuilder* builder, builder->appendTextureLookup(code, sampler, coord); } -void GrGLMatrixConvolutionEffect::emitFS(GrGLShaderBuilder* builder, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray& samplers) { +void GrGLMatrixConvolutionEffect::emitCode(GrGLShaderBuilder* builder, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray& samplers) { + + fImageIncrementUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, + kVec2f_GrSLType, "ImageIncrement"); + fKernelUni = builder->addUniformArray(GrGLShaderBuilder::kFragment_ShaderType, + kFloat_GrSLType, "Kernel", fKernelSize.width() * fKernelSize.height()); + fTargetUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, + kVec2f_GrSLType, "Target"); + fGainUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, + kFloat_GrSLType, "Gain"); + fBiasUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType, + kFloat_GrSLType, "Bias"); + SkString* code = &builder->fFSCode; const char* target = builder->getUniformCStr(fTargetUni); diff --git a/src/effects/SkTableColorFilter.cpp b/src/effects/SkTableColorFilter.cpp index 08ae4b96d2..71b4d16dba 100644 --- a/src/effects/SkTableColorFilter.cpp +++ b/src/effects/SkTableColorFilter.cpp @@ -244,18 +244,18 @@ private: typedef GrEffect INHERITED; }; -class GLColorTableEffect : public GrGLLegacyEffect { +class GLColorTableEffect : public GrGLEffect { public: GLColorTableEffect(const GrBackendEffectFactory& factory, const GrEffect& effect); - virtual void setupVariables(GrGLShaderBuilder* state) SK_OVERRIDE {} - virtual void emitVS(GrGLShaderBuilder* state, - const char* vertexCoords) SK_OVERRIDE {} - virtual void emitFS(GrGLShaderBuilder* state, - const char* outputColor, - const char* inputColor, - const TextureSamplerArray&) SK_OVERRIDE; + virtual void emitCode(GrGLShaderBuilder*, + const GrEffect&, + EffectKey, + const char* vertexCoords, + const char* outputColor, + const char* inputColor, + const TextureSamplerArray&) SK_OVERRIDE; virtual void setData(const GrGLUniformManager&, const GrEffectStage&) SK_OVERRIDE {} @@ -263,7 +263,7 @@ public: private: - typedef GrGLLegacyEffect INHERITED; + typedef GrGLEffect INHERITED; }; GLColorTableEffect::GLColorTableEffect( @@ -271,10 +271,14 @@ GLColorTableEffect::GLColorTableEffect( : INHERITED(factory) { } -void GLColorTableEffect::emitFS(GrGLShaderBuilder* builder, +void GLColorTableEffect::emitCode(GrGLShaderBuilder* builder, + const GrEffect&, + EffectKey, + const char* vertexCoords, const char* outputColor, const char* inputColor, const TextureSamplerArray& samplers) { + static const float kColorScaleFactor = 255.0f / 256.0f; static const float kColorOffsetFactor = 1.0f / 512.0f; SkString* code = &builder->fFSCode; |