Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Unified Diff: src/gpu/effects/GrConstColorProcessor.cpp

Issue 1055023002: Revert of Add constant color GrFP. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrProcessor.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
-}
« no previous file with comments | « src/gpu/GrProcessor.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698