Index: src/gpu/effects/GrConstColorProcessor.cpp |
diff --git a/src/gpu/effects/GrConstColorProcessor.cpp b/src/gpu/effects/GrConstColorProcessor.cpp |
deleted file mode 100644 |
index 5f286946348c7ba2e771833722b775ff78692a09..0000000000000000000000000000000000000000 |
--- a/src/gpu/effects/GrConstColorProcessor.cpp |
+++ /dev/null |
@@ -1,133 +0,0 @@ |
-/* |
- * Copyright 2015 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include "effects/GrConstColorProcessor.h" |
-#include "gl/GrGLProcessor.h" |
-#include "gl/GrGLSL.h" |
-#include "gl/builders/GrGLProgramBuilder.h" |
- |
-class GLConstColorProcessor : public GrGLFragmentProcessor { |
-public: |
- GLConstColorProcessor() : fPrevColor(GrColor_ILLEGAL) {} |
- |
- void emitCode(GrGLFPBuilder* builder, |
- const GrFragmentProcessor& fp, |
- const char* outputColor, |
- const char* inputColor, |
- const TransformedCoordsArray& coords, |
- const TextureSamplerArray& samplers) override { |
- GrGLFPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
- const char* colorUni; |
- fColorUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
- kVec4f_GrSLType, kMedium_GrSLPrecision, "constantColor", |
- &colorUni); |
- switch (fp.cast<GrConstColorProcessor>().inputMode()) { |
- case GrConstColorProcessor::kIgnore_InputMode: |
- fsBuilder->codeAppendf("%s = %s;", outputColor, colorUni); |
- break; |
- case GrConstColorProcessor::kModulateRGBA_InputMode: |
- fsBuilder->codeAppendf("%s = %s * %s;", outputColor, inputColor, colorUni); |
- break; |
- case GrConstColorProcessor::kModulateA_InputMode: |
- fsBuilder->codeAppendf("%s = %s.a * %s;", outputColor, inputColor, colorUni); |
- break; |
- } |
- } |
- |
- void setData(const GrGLProgramDataManager& pdm, const GrProcessor& processor) override { |
- GrColor color = processor.cast<GrConstColorProcessor>().color(); |
- // We use the "illegal" color value as an uninit sentinel. However, ut isn't inherently |
- // illegal to use this processor with unpremul colors. So we correctly handle the case |
- // when the "illegal" color is used but we will always upload it. |
- if (GrColor_ILLEGAL == color || fPrevColor != color) { |
- static const GrGLfloat scale = 1.f / 255.f; |
- GrGLfloat floatColor[4] = { |
- GrColorUnpackR(color) * scale, |
- GrColorUnpackG(color) * scale, |
- GrColorUnpackB(color) * scale, |
- GrColorUnpackA(color) * scale, |
- }; |
- pdm.set4fv(fColorUniform, 1, floatColor); |
- fPrevColor = color; |
- } |
- } |
- |
-private: |
- GrGLProgramDataManager::UniformHandle fColorUniform; |
- GrColor fPrevColor; |
- |
- typedef GrGLFragmentProcessor INHERITED; |
-}; |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-void GrConstColorProcessor::onComputeInvariantOutput(GrInvariantOutput* inout) const { |
- if (kIgnore_InputMode == fMode) { |
- inout->setToOther(kRGBA_GrColorComponentFlags, fColor, GrInvariantOutput::kWill_ReadInput); |
- } else { |
- GrColor r = GrColorUnpackR(fColor); |
- bool colorIsSingleChannel = r == GrColorUnpackG(fColor) && r == GrColorUnpackB(fColor) && |
- r == GrColorUnpackA(fColor); |
- if (kModulateRGBA_InputMode == fMode) { |
- if (colorIsSingleChannel) { |
- inout->mulByKnownSingleComponent(r); |
- } else { |
- inout->mulByKnownFourComponents(fColor); |
- } |
- } else { |
- if (colorIsSingleChannel) { |
- inout->mulAlphaByKnownSingleComponent(r); |
- } else { |
- inout->mulAlphaByKnownFourComponents(fColor); |
- } |
- } |
- } |
-} |
- |
-void GrConstColorProcessor::getGLProcessorKey(const GrGLCaps&, GrProcessorKeyBuilder* b) const { |
- b->add32(fMode); |
-} |
- |
-GrGLFragmentProcessor* GrConstColorProcessor::createGLInstance() const { |
- return SkNEW(GLConstColorProcessor); |
-} |
- |
-bool GrConstColorProcessor::onIsEqual(const GrFragmentProcessor& other) const { |
- const GrConstColorProcessor& that = other.cast<GrConstColorProcessor>(); |
- return fMode == that.fMode && fColor == that.fColor; |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
- |
-GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrConstColorProcessor); |
- |
-GrFragmentProcessor* GrConstColorProcessor::TestCreate(SkRandom* random, |
- GrContext*, |
- const GrDrawTargetCaps&, |
- GrTexture*[]) { |
- GrColor color; |
- int colorPicker = random->nextULessThan(3); |
- switch (colorPicker) { |
- case 0: { |
- uint32_t a = random->nextULessThan(0x100); |
- uint32_t r = random->nextULessThan(a+1); |
- uint32_t g = random->nextULessThan(a+1); |
- uint32_t b = random->nextULessThan(a+1); |
- color = GrColorPackRGBA(r, g, b, a); |
- break; |
- } |
- case 1: |
- color = 0; |
- break; |
- case 2: |
- color = random->nextULessThan(0x100); |
- color = color | (color << 8) | (color << 16) | (color << 24); |
- break; |
- } |
- InputMode mode = static_cast<InputMode>(random->nextULessThan(kInputModeCnt)); |
- return GrConstColorProcessor::Create(color, mode); |
-} |