aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects/GrConstColorProcessor.cpp
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2015-04-02 08:33:54 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-04-02 08:33:54 -0700
commit599ea40cec8da11da7ad7c37a2ff0ef4797dbd4a (patch)
tree5be5ff8e698eca5ec8049c101a62395f83e99a91 /src/gpu/effects/GrConstColorProcessor.cpp
parent11106f196eea7a49059e8157e84179b17426e1a4 (diff)
Revert of Add constant color GrFP. (patchset #10 id:180001 of https://codereview.chromium.org/978713002/)
Reason for revert: Revert while investigating assertions. Original issue's description: > Add constant color GrFP. > > Committed: https://skia.googlesource.com/skia/+/dfbbec436cbcacc3270d4b28357c8393e67d6494 TBR=egdaniel@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1055023002
Diffstat (limited to 'src/gpu/effects/GrConstColorProcessor.cpp')
-rw-r--r--src/gpu/effects/GrConstColorProcessor.cpp133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/gpu/effects/GrConstColorProcessor.cpp b/src/gpu/effects/GrConstColorProcessor.cpp
deleted file mode 100644
index 5f28694634..0000000000
--- 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);
-}