GrGLProgramStage Renaming Part 1.
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 25 Oct 2012 13:22:00 +0000 (13:22 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 25 Oct 2012 13:22:00 +0000 (13:22 +0000)
Renamed cpp and h
s/GrGLProgramStage/GrGLEffect/
Review URL: https://codereview.appspot.com/6759054

git-svn-id: http://skia.googlecode.com/svn/trunk@6090 2bbb7eff-a529-9590-31e7-b0007b416f81

23 files changed:
gyp/gpu.gypi
include/gpu/GrEffect.h
include/gpu/GrProgramStageFactory.h
src/effects/SkBlendImageFilter.cpp
src/effects/SkColorMatrixFilter.cpp
src/effects/SkLightingImageFilter.cpp
src/effects/SkMagnifierImageFilter.cpp
src/effects/SkMatrixConvolutionImageFilter.cpp
src/effects/SkMorphologyImageFilter.cpp
src/effects/SkTableColorFilter.cpp
src/effects/gradients/SkGradientShaderPriv.h
src/gpu/effects/GrConfigConversionEffect.cpp
src/gpu/effects/GrConvolutionEffect.cpp
src/gpu/effects/GrSingleTextureEffect.cpp
src/gpu/effects/GrTextureDomainEffect.cpp
src/gpu/gl/GrGLEffect.cpp [new file with mode: 0644]
src/gpu/gl/GrGLEffect.h [new file with mode: 0644]
src/gpu/gl/GrGLProgram.cpp
src/gpu/gl/GrGLProgram.h
src/gpu/gl/GrGLProgramStage.cpp [deleted file]
src/gpu/gl/GrGLProgramStage.h [deleted file]
src/gpu/gl/GrGLSL.h
src/gpu/gl/GrGpuGL_program.cpp

index 1e6605b64aa169481d134f71e62462d6f47b3415..79cdecdb9c9caaaae8e3ce7e8d098002c03d6667 100644 (file)
       '<(skia_src_path)/gpu/gl/GrGLCreateNativeInterface_none.cpp',
       '<(skia_src_path)/gpu/gl/GrGLDefaultInterface_none.cpp',
       '<(skia_src_path)/gpu/gl/GrGLDefines.h',
+      '<(skia_src_path)/gpu/gl/GrGLEffect.cpp',
+      '<(skia_src_path)/gpu/gl/GrGLEffect.h',
       '<(skia_src_path)/gpu/gl/GrGLIndexBuffer.cpp',
       '<(skia_src_path)/gpu/gl/GrGLIndexBuffer.h',
       '<(skia_src_path)/gpu/gl/GrGLInterface.cpp',
       '<(skia_src_path)/gpu/gl/GrGLPath.h',
       '<(skia_src_path)/gpu/gl/GrGLProgram.cpp',
       '<(skia_src_path)/gpu/gl/GrGLProgram.h',
-      '<(skia_src_path)/gpu/gl/GrGLProgramStage.cpp',
-      '<(skia_src_path)/gpu/gl/GrGLProgramStage.h',
       '<(skia_src_path)/gpu/gl/GrGLRenderTarget.cpp',
       '<(skia_src_path)/gpu/gl/GrGLRenderTarget.h',
       '<(skia_src_path)/gpu/gl/GrGLShaderBuilder.cpp',
index 4eb8f2a74dd0798a8e510108cc1d27a35e9845d2..7f97e9250d91b80eb20038ce622926cf69b1c228 100644 (file)
@@ -26,7 +26,7 @@ class SkString;
     their fields may not change.  (Immutability isn't actually required
     until they've been used in a draw call, but supporting that would require
     setters and getters that could fail, copy-on-write, or deep copying of these
-    objects when they're stored by a GrGLProgramStage.)
+    objects when they're stored by a GrGLEffect.)
   */
 class GrEffect : public GrRefCnt {
 
@@ -47,7 +47,7 @@ public:
         an instance of templated class, GrTProgramStageFactory. It is templated
         on the subclass of GrEffect. The subclass must have a nested type
         (or typedef) named GLProgramStage which will be the subclass of
-        GrGLProgramStage created by the factory.
+        GrGLEffect created by the factory.
 
         Example:
         class MyCustomEffect : public GrEffect {
index 5779862d09b2494b5d8dd3f9d345e009c30e786e..96505d6c116ab745b5666c423450e40f12c23185 100644 (file)
 #include "GrNoncopyable.h"
 
 /** Given a GrEffect of a particular type, creates the corresponding
-    graphics-backend-specific GrGLProgramStage. Also tracks equivalence
+    graphics-backend-specific GrGLEffect. Also tracks equivalence
     of shaders generated via a key.
  */
 
 class GrEffect;
-class GrGLProgramStage;
+class GrGLEffect;
 class GrGLCaps;
 
 class GrProgramStageFactory : public GrNoncopyable {
@@ -30,7 +30,7 @@ public:
     };
 
     virtual StageKey glStageKey(const GrEffect&, const GrGLCaps&) const = 0;
-    virtual GrGLProgramStage* createGLInstance(const GrEffect&) const = 0;
+    virtual GrGLEffect* createGLInstance(const GrEffect&) const = 0;
 
     bool operator ==(const GrProgramStageFactory& b) const {
         return fEffectClassID == b.fEffectClassID;
@@ -72,7 +72,7 @@ public:
     typedef typename EffectClass::GLProgramStage GLProgramStage;
 
     /** Returns a human-readable name that is accessible via GrEffect or
-        GrGLProgramStage and is consistent between the two of them.
+        GrGLEffect and is consistent between the two of them.
      */
     virtual const char* name() const SK_OVERRIDE { return EffectClass::Name(); }
 
index e2dde8bd6629bd6c4e9620d97c5631890f22ec33..4f46d60d6537f8de4ee909b77e7e8d4f57d0a66e 100644 (file)
@@ -12,7 +12,7 @@
 #if SK_SUPPORT_GPU
 #include "SkGr.h"
 #include "SkGrPixelRef.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #endif
 
 namespace {
@@ -275,7 +275,7 @@ void GrGLBlendEffect::emitFS(GrGLShaderBuilder* builder,
     }
 }
 
-GrGLProgramStage::StageKey GrGLBlendEffect::GenKey(const GrEffect& s, const GrGLCaps&) {
+GrGLEffect::StageKey GrGLBlendEffect::GenKey(const GrEffect& s, const GrGLCaps&) {
     return static_cast<const GrBlendEffect&>(s).mode();
 }
 #endif
index 226aed76b4ed0a9f4d4f4ca590f7e635213d945b..37b3e20a3dc51a7c611f34bb29b1ee3b46fd6b10 100644 (file)
@@ -320,7 +320,7 @@ bool SkColorMatrixFilter::asColorMatrix(SkScalar matrix[20]) {
 
 #if SK_SUPPORT_GPU
 #include "GrEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 
 class ColorMatrixEffect : public GrEffect {
 public:
index 4402bde35f75dfdf66e57d1b3da9141af7105f17..6dda94dca61851b3378ba9bb58eef9b948580ff6 100644 (file)
@@ -16,7 +16,7 @@
 #if SK_SUPPORT_GPU
 #include "GrProgramStageFactory.h"
 #include "effects/GrSingleTextureEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "gl/GrGLTexture.h"
 #include "GrEffect.h"
 
@@ -1168,7 +1168,7 @@ void GrGLLightingEffect::emitFS(GrGLShaderBuilder* builder,
     GrGLSLMulVarBy4f(code, 2, outputColor, inputColor);
 }
 
-GrGLProgramStage::StageKey GrGLLightingEffect::GenKey(const GrEffect& s,
+GrGLEffect::StageKey GrGLLightingEffect::GenKey(const GrEffect& s,
                                                       const GrGLCaps& caps) {
     return static_cast<const GrLightingEffect&>(s).light()->type();
 }
index 9f5a6753d3c39b7a721c019bb9dad0f9deeb8f36..56991b9220f859153479ee7eac272ca7c5627385 100644 (file)
@@ -15,7 +15,7 @@
 ////////////////////////////////////////////////////////////////////////////////
 #if SK_SUPPORT_GPU
 #include "effects/GrSingleTextureEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "gl/GrGLSL.h"
 #include "gl/GrGLTexture.h"
 #include "GrProgramStageFactory.h"
@@ -174,7 +174,7 @@ void GrGLMagnifierEffect::setData(const GrGLUniformManager& uman,
     uman.set2f(fInsetVar, zoom.x_inset(), zoom.y_inset());
 }
 
-GrGLProgramStage::StageKey GrGLMagnifierEffect::GenKey(const GrEffect& s,
+GrGLEffect::StageKey GrGLMagnifierEffect::GenKey(const GrEffect& s,
                                                        const GrGLCaps& caps) {
     return 0;
 }
index eeb61a791797dec550624c5ba71204aed4390814..ddd93ba3ec2a3b9b2d14006310bdf7e9ff7dc8f9 100644 (file)
@@ -13,7 +13,7 @@
 #include "SkUnPreMultiply.h"
 
 #if SK_SUPPORT_GPU
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #endif
 
 SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(const SkISize& kernelSize, const SkScalar* kernel, SkScalar gain, SkScalar bias, const SkIPoint& target, TileMode tileMode, bool convolveAlpha, SkImageFilter* input)
@@ -415,7 +415,7 @@ int encodeXY(int x, int y) {
 
 };
 
-GrGLProgramStage::StageKey GrGLMatrixConvolutionEffect::GenKey(const GrEffect& s,
+GrGLEffect::StageKey GrGLMatrixConvolutionEffect::GenKey(const GrEffect& s,
                                                         const GrGLCaps& caps) {
     const GrMatrixConvolutionEffect& m = static_cast<const GrMatrixConvolutionEffect&>(s);
     StageKey key = encodeXY(m.kernelSize().width(), m.kernelSize().height());
index 23488155126b36744836576a88765cba6b6d2aa8..8e12b5e275d67d4ec61c6d676982c0e696f17cd7 100644 (file)
@@ -14,7 +14,7 @@
 #include "GrContext.h"
 #include "GrTexture.h"
 #include "GrGpu.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "effects/Gr1DKernelEffect.h"
 #endif
 
@@ -341,7 +341,7 @@ void GrGLMorphologyEffect::emitFS(GrGLShaderBuilder* builder,
     GrGLSLMulVarBy4f(code, 2, outputColor, inputColor);
 }
 
-GrGLProgramStage::StageKey GrGLMorphologyEffect::GenKey(const GrEffect& s,
+GrGLEffect::StageKey GrGLMorphologyEffect::GenKey(const GrEffect& s,
                                                         const GrGLCaps& caps) {
     const GrMorphologyEffect& m = static_cast<const GrMorphologyEffect&>(s);
     StageKey key = static_cast<StageKey>(m.radius());
index 076db5d1d3fe8177fc20dac0d958c31cddfd52ed..c9dec5500c59dc75ada0a0a8be17962a0efc82c8 100644 (file)
@@ -217,7 +217,7 @@ bool SkTable_ColorFilter::asComponentTable(SkBitmap* table) const {
 #if SK_SUPPORT_GPU
 
 #include "GrEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "SkGr.h"
 
 class GLColorTableEffect;
@@ -312,7 +312,7 @@ void GLColorTableEffect::emitFS(GrGLShaderBuilder* builder,
     code->appendf("\t\t%s.rgb *= %s.a;\n", outputColor, outputColor);
 }
 
-GrGLProgramStage::StageKey GLColorTableEffect::GenKey(const GrEffect& s,
+GrGLEffect::StageKey GLColorTableEffect::GenKey(const GrEffect& s,
                                                         const GrGLCaps& caps) {
     return 0;
 }
index 36550cdb8f6c306b2b625b794886fa6deb823b3b..841771644c910f9fea6ad2de3d161f4ba95dfc7d 100644 (file)
@@ -192,7 +192,7 @@ private:
 
 #if SK_SUPPORT_GPU
 
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 
 class GrSamplerState;
 class GrProgramStageFactory;
index 7bc203b062436aad4394805b28463ddff67d36a7..4b288c801b5a6c4b8dd5d92902aadb7107cf09bb 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "GrConfigConversionEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 
 class GrGLConfigConversionEffect : public GrGLLegacyProgramStage {
 public:
index e49302ef9454dd518e88d876530ce8be9f064561..8713c5bfc33e7c08087b8f7756f5a84aa2450f89 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "GrConvolutionEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "gl/GrGLSL.h"
 #include "gl/GrGLTexture.h"
 #include "GrProgramStageFactory.h"
@@ -108,7 +108,7 @@ void GrGLConvolutionEffect::setData(const GrGLUniformManager& uman, const GrEffe
     uman.set1fv(fKernelUni, 0, this->width(), conv.kernel());
 }
 
-GrGLProgramStage::StageKey GrGLConvolutionEffect::GenKey(const GrEffect& s,
+GrGLEffect::StageKey GrGLConvolutionEffect::GenKey(const GrEffect& s,
                                                          const GrGLCaps& caps) {
     return static_cast<const GrConvolutionEffect&>(s).radius();
 }
index 47e26e50931d60058f4d0db1dc631ca17f0b2013..715303098b2f1ae1465302d2c522d89d345ed58b 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "effects/GrSingleTextureEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "gl/GrGLSL.h"
 #include "gl/GrGLTexture.h"
 #include "GrProgramStageFactory.h"
index 1203392d66698adae203fea9cc4c267b14fb2cdd..ca547949369516a9494188bc4784336a30df25d3 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "GrTextureDomainEffect.h"
-#include "gl/GrGLProgramStage.h"
+#include "gl/GrGLEffect.h"
 #include "GrProgramStageFactory.h"
 
 class GrGLTextureDomainEffect : public GrGLLegacyProgramStage {
diff --git a/src/gpu/gl/GrGLEffect.cpp b/src/gpu/gl/GrGLEffect.cpp
new file mode 100644 (file)
index 0000000..eb11909
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "GrGLSL.h"
+#include "GrGLEffect.h"
+
+GrGLEffect::GrGLEffect(const GrProgramStageFactory& factory)
+    : fFactory(factory) {
+}
+
+GrGLEffect::~GrGLEffect() {
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+void GrGLEffect::setData(const GrGLUniformManager&, const GrEffect&) {
+}
+
+GrGLEffect::StageKey GrGLEffect::GenTextureKey(const GrEffect& effect,
+                                                           const GrGLCaps& caps) {
+    StageKey key = 0;
+    for (int index = 0; index < effect.numTextures(); ++index) {
+        const GrTextureAccess& access = effect.textureAccess(index);
+        StageKey value = GrGLShaderBuilder::KeyForTextureAccess(access, caps) << index;
+        GrAssert(0 == (value & key)); // keys for each access ought not to overlap
+        key |= value;
+    }
+    return key;
+}
diff --git a/src/gpu/gl/GrGLEffect.h b/src/gpu/gl/GrGLEffect.h
new file mode 100644 (file)
index 0000000..32adcdd
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrGLProgramStage_DEFINED
+#define GrGLProgramStage_DEFINED
+
+#include "GrAllocator.h"
+#include "GrEffect.h"
+#include "GrGLProgram.h"
+#include "GrGLShaderBuilder.h"
+#include "GrGLShaderVar.h"
+#include "GrGLSL.h"
+
+struct GrGLInterface;
+class GrGLTexture;
+
+/** @file
+    This file contains specializations for OpenGL of the shader stages declared in
+    include/gpu/GrEffect.h. Objects of type GrGLEffect are responsible for emitting the
+    GLSL code that implements a GrEffect and for uploading uniforms at draw time. They also
+    must have a function:
+        static inline StageKey GenKey(const GrEffect&, const GrGLCaps&)
+    that is used to implement a program cache. When two GrEffects produce the same key this means
+    that their GrGLProgramStages would emit the same GLSL code.
+
+    These objects are created by the factory object returned by the GrEffect::getFactory().
+*/
+
+class GrGLEffect {
+
+public:
+    typedef GrEffect::StageKey StageKey;
+    enum {
+        // the number of bits in StageKey available to GenKey
+        kProgramStageKeyBits = GrProgramStageFactory::kProgramStageKeyBits,
+    };
+
+    typedef GrGLShaderBuilder::TextureSamplerArray TextureSamplerArray;
+
+    GrGLEffect(const GrProgramStageFactory&);
+
+    virtual ~GrGLEffect();
+
+    /** Called when the program stage should insert its code into the shaders. The code in each
+        shader will be in its own block ({}) and so locally scoped names will not collide across
+        stages.
+
+        @param builder      Interface used to emit code in the shaders.
+        @param effect       The effect that generated this program stage.
+        @param key          The key that was computed by StageKey() from the generating GrEffect.
+        @param vertexCoords A vec2 of texture coordinates in the VS, which may be altered. This will
+                            be removed soon and stages will be responsible for computing their own
+                            coords.
+        @param outputColor  A predefined vec4 in the FS in which the stage should place its output
+                            color (or coverage).
+        @param inputColor   A vec4 that holds the input color to the stage in the FS. This may be
+                            NULL in which case the implied input is solid white (all ones).
+                            TODO: Better system for communicating optimization info (e.g. input
+                            color is solid white, trans black, known to be opaque, etc.) that allows
+                            the effect to communicate back similar known info about its output.
+        @param samplers     One entry for each GrTextureAccess of the GrEffect that generated the
+                            GrGLEffect. These can be passed to the builder to emit texture
+                            reads in the generated code.
+        */
+    virtual void emitCode(GrGLShaderBuilder* builder,
+                          const GrEffect& effect,
+                          StageKey key,
+                          const char* vertexCoords,
+                          const char* outputColor,
+                          const char* inputColor,
+                          const TextureSamplerArray& samplers) = 0;
+
+    /** A GrGLEffect instance can be reused with any GrEffect that produces the same stage
+        key; this function reads data from a stage and uploads any uniform variables required
+        by the shaders created in emitCode(). */
+    virtual void setData(const GrGLUniformManager&, const GrEffect&);
+
+    const char* name() const { return fFactory.name(); }
+
+    static StageKey GenTextureKey(const GrEffect&, const GrGLCaps&);
+
+protected:
+
+    const GrProgramStageFactory& fFactory;
+};
+
+/**
+ * This allows program stages that implemented an older set of virtual functions on GrGLEffect
+ * to continue to work by change their parent class to this class. New program stages should not use
+ * this interface. It will be removed once older stages are modified to implement emitCode().
+ */
+class GrGLLegacyProgramStage : public GrGLEffect {
+public:
+    GrGLLegacyProgramStage(const GrProgramStageFactory& factory) : GrGLEffect(factory) {}
+
+    virtual void setupVariables(GrGLShaderBuilder* builder) {};
+    virtual void emitVS(GrGLShaderBuilder* builder,
+                        const char* vertexCoords) = 0;
+    virtual void emitFS(GrGLShaderBuilder* builder,
+                        const char* outputColor,
+                        const char* inputColor,
+                        const TextureSamplerArray&) = 0;
+
+    virtual void emitCode(GrGLShaderBuilder* builder,
+                          const GrEffect&,
+                          StageKey,
+                          const char* vertexCoords,
+                          const char* outputColor,
+                          const char* inputColor,
+                          const TextureSamplerArray& samplers) {
+        this->setupVariables(builder);
+        this->emitVS(builder, vertexCoords);
+        this->emitFS(builder, outputColor, inputColor, samplers);
+    }
+};
+
+#endif
index ae957e9f9dcbfacb14b1dcf28fc6d1ce13048d62..e817c1afc39c3d6f556e6b68b4740e831027b2d0 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "GrAllocator.h"
 #include "GrEffect.h"
-#include "GrGLProgramStage.h"
+#include "GrGLEffect.h"
 #include "gl/GrGLShaderBuilder.h"
 #include "GrGLShaderVar.h"
 #include "GrProgramStageFactory.h"
@@ -896,7 +896,7 @@ void GrGLProgram::initSamplerUniforms() {
 // Stage code generation
 
 // TODO: Move this function to GrGLShaderBuilder
-GrGLProgramStage* GrGLProgram::GenStageCode(const GrEffect* effect,
+GrGLEffect* GrGLProgram::GenStageCode(const GrEffect* effect,
                                             const StageDesc& desc,
                                             StageUniforms* uniforms,
                                             const char* fsInColor, // NULL means no incoming color
@@ -904,7 +904,7 @@ GrGLProgramStage* GrGLProgram::GenStageCode(const GrEffect* effect,
                                             const char* vsInCoord,
                                             GrGLShaderBuilder* builder) {
 
-    GrGLProgramStage* glStage = effect->getFactory().createGLInstance(*effect);
+    GrGLEffect* glStage = effect->getFactory().createGLInstance(*effect);
 
     /// Vertex Shader Stuff
 
index 056b7edf588445cfa75811de211a1cc1bd86aff5..91239acaa96381ebfbb65c03c8ef40360dcb6718 100644 (file)
@@ -19,7 +19,7 @@
 #include "SkXfermode.h"
 
 class GrBinHashKeyBuilder;
-class GrGLProgramStage;
+class GrGLEffect;
 class GrGLShaderBuilder;
 
 // optionally compile the experimental GS code. Set to GR_DEBUG
@@ -175,7 +175,7 @@ private:
 
     void genInputColor(GrGLShaderBuilder* builder, SkString* inColor);
 
-    static GrGLProgramStage* GenStageCode(const GrEffect* effect,
+    static GrGLEffect* GenStageCode(const GrEffect* effect,
                                           const StageDesc& desc, // TODO: Eliminate this
                                           StageUniforms* stageUniforms, // TODO: Eliminate this
                                           const char* fsInColor, // NULL means no incoming color
@@ -254,7 +254,7 @@ private:
     GrMatrix                    fTextureMatrices[GrDrawState::kNumStages];
     GrGLTexture::Orientation    fTextureOrientation[GrDrawState::kNumStages];
 
-    GrGLProgramStage*           fProgramStage[GrDrawState::kNumStages];
+    GrGLEffect*           fProgramStage[GrDrawState::kNumStages];
 
     Desc fDesc;
     const GrGLContextInfo&      fContextInfo;
diff --git a/src/gpu/gl/GrGLProgramStage.cpp b/src/gpu/gl/GrGLProgramStage.cpp
deleted file mode 100644 (file)
index cc4cc91..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "GrGLSL.h"
-#include "GrGLProgramStage.h"
-
-GrGLProgramStage::GrGLProgramStage(const GrProgramStageFactory& factory)
-    : fFactory(factory) {
-}
-
-GrGLProgramStage::~GrGLProgramStage() {
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-void GrGLProgramStage::setData(const GrGLUniformManager&, const GrEffect&) {
-}
-
-GrGLProgramStage::StageKey GrGLProgramStage::GenTextureKey(const GrEffect& effect,
-                                                           const GrGLCaps& caps) {
-    StageKey key = 0;
-    for (int index = 0; index < effect.numTextures(); ++index) {
-        const GrTextureAccess& access = effect.textureAccess(index);
-        StageKey value = GrGLShaderBuilder::KeyForTextureAccess(access, caps) << index;
-        GrAssert(0 == (value & key)); // keys for each access ought not to overlap
-        key |= value;
-    }
-    return key;
-}
diff --git a/src/gpu/gl/GrGLProgramStage.h b/src/gpu/gl/GrGLProgramStage.h
deleted file mode 100644 (file)
index 190ea8a..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrGLProgramStage_DEFINED
-#define GrGLProgramStage_DEFINED
-
-#include "GrAllocator.h"
-#include "GrEffect.h"
-#include "GrGLProgram.h"
-#include "GrGLShaderBuilder.h"
-#include "GrGLShaderVar.h"
-#include "GrGLSL.h"
-
-struct GrGLInterface;
-class GrGLTexture;
-
-/** @file
-    This file contains specializations for OpenGL of the shader stages declared in
-    include/gpu/GrEffect.h. Objects of type GrGLProgramStage are responsible for emitting the
-    GLSL code that implements a GrEffect and for uploading uniforms at draw time. They also
-    must have a function:
-        static inline StageKey GenKey(const GrEffect&, const GrGLCaps&)
-    that is used to implement a program cache. When two GrEffects produce the same key this means
-    that their GrGLProgramStages would emit the same GLSL code.
-
-    These objects are created by the factory object returned by the GrEffect::getFactory().
-*/
-
-class GrGLProgramStage {
-
-public:
-    typedef GrEffect::StageKey StageKey;
-    enum {
-        // the number of bits in StageKey available to GenKey
-        kProgramStageKeyBits = GrProgramStageFactory::kProgramStageKeyBits,
-    };
-
-    typedef GrGLShaderBuilder::TextureSamplerArray TextureSamplerArray;
-
-    GrGLProgramStage(const GrProgramStageFactory&);
-
-    virtual ~GrGLProgramStage();
-
-    /** Called when the program stage should insert its code into the shaders. The code in each
-        shader will be in its own block ({}) and so locally scoped names will not collide across
-        stages.
-
-        @param builder      Interface used to emit code in the shaders.
-        @param effect       The effect that generated this program stage.
-        @param key          The key that was computed by StageKey() from the generating GrEffect.
-        @param vertexCoords A vec2 of texture coordinates in the VS, which may be altered. This will
-                            be removed soon and stages will be responsible for computing their own
-                            coords.
-        @param outputColor  A predefined vec4 in the FS in which the stage should place its output
-                            color (or coverage).
-        @param inputColor   A vec4 that holds the input color to the stage in the FS. This may be
-                            NULL in which case the implied input is solid white (all ones).
-                            TODO: Better system for communicating optimization info (e.g. input
-                            color is solid white, trans black, known to be opaque, etc.) that allows
-                            the effect to communicate back similar known info about its output.
-        @param samplers     One entry for each GrTextureAccess of the GrEffect that generated the
-                            GrGLProgramStage. These can be passed to the builder to emit texture
-                            reads in the generated code.
-        */
-    virtual void emitCode(GrGLShaderBuilder* builder,
-                          const GrEffect& effect,
-                          StageKey key,
-                          const char* vertexCoords,
-                          const char* outputColor,
-                          const char* inputColor,
-                          const TextureSamplerArray& samplers) = 0;
-
-    /** A GrGLProgramStage instance can be reused with any GrEffect that produces the same stage
-        key; this function reads data from a stage and uploads any uniform variables required
-        by the shaders created in emitCode(). */
-    virtual void setData(const GrGLUniformManager&, const GrEffect&);
-
-    const char* name() const { return fFactory.name(); }
-
-    static StageKey GenTextureKey(const GrEffect&, const GrGLCaps&);
-
-protected:
-
-    const GrProgramStageFactory& fFactory;
-};
-
-/**
- * This allows program stages that implemented an older set of virtual functions on GrGLProgramStage
- * to continue to work by change their parent class to this class. New program stages should not use
- * this interface. It will be removed once older stages are modified to implement emitCode().
- */
-class GrGLLegacyProgramStage : public GrGLProgramStage {
-public:
-    GrGLLegacyProgramStage(const GrProgramStageFactory& factory) : GrGLProgramStage(factory) {}
-
-    virtual void setupVariables(GrGLShaderBuilder* builder) {};
-    virtual void emitVS(GrGLShaderBuilder* builder,
-                        const char* vertexCoords) = 0;
-    virtual void emitFS(GrGLShaderBuilder* builder,
-                        const char* outputColor,
-                        const char* inputColor,
-                        const TextureSamplerArray&) = 0;
-
-    virtual void emitCode(GrGLShaderBuilder* builder,
-                          const GrEffect&,
-                          StageKey,
-                          const char* vertexCoords,
-                          const char* outputColor,
-                          const char* inputColor,
-                          const TextureSamplerArray& samplers) {
-        this->setupVariables(builder);
-        this->emitVS(builder, vertexCoords);
-        this->emitFS(builder, outputColor, inputColor, samplers);
-    }
-};
-
-#endif
index af0da296eeb87d50e33904af585dc352a1f33c7e..c0d3d5e596ce06d4c55a01601ecd282b96233d12 100644 (file)
@@ -153,7 +153,7 @@ GrSLConstantVec GrGLSLModulate4f(SkString* outAppend,
  * mulFactor may be either "" or NULL. In this case either nothing will be appended (kOnes) or an
  * assignment of vec(0,0,0,0) will be appended (kZeros). The assignment is prepended by tabCnt tabs.
  * A semicolon and newline are added after the assignment. (TODO: Remove tabCnt when we auto-insert
- * tabs to GrGLProgramStage-generated lines.) If a zeros vec is assigned then the return value is
+ * tabs to GrGLEffect-generated lines.) If a zeros vec is assigned then the return value is
  * kZeros, otherwise kNone.
  */
 GrSLConstantVec GrGLSLMulVarBy4f(SkString* outAppend,
index 5bc84f80551341bdb45e5bc365338ab62d4d72e9..c6a8e90f0b3d7ea1c9ee0cced9ca3b4d835dc244 100644 (file)
@@ -8,7 +8,7 @@
 #include "GrGpuGL.h"
 
 #include "GrEffect.h"
-#include "GrGLProgramStage.h"
+#include "GrGLEffect.h"
 #include "GrGpuVertex.h"
 
 typedef GrGLUniformManager::UniformHandle UniformHandle;