| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkArithmeticMode_gpu.h" | 8 #include "SkArithmeticMode_gpu.h" |
| 9 | 9 |
| 10 #if SK_SUPPORT_GPU | 10 #if SK_SUPPORT_GPU |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 GrArithmeticFP::GrArithmeticFP(float k1, float k2, float k3, float k4, bool enfo
rcePMColor, | 99 GrArithmeticFP::GrArithmeticFP(float k1, float k2, float k3, float k4, bool enfo
rcePMColor, |
| 100 const GrFragmentProcessor* dst) | 100 const GrFragmentProcessor* dst) |
| 101 : fK1(k1), fK2(k2), fK3(k3), fK4(k4), fEnforcePMColor(enforcePMColor) { | 101 : fK1(k1), fK2(k2), fK3(k3), fK4(k4), fEnforcePMColor(enforcePMColor) { |
| 102 this->initClassID<GrArithmeticFP>(); | 102 this->initClassID<GrArithmeticFP>(); |
| 103 | 103 |
| 104 SkASSERT(dst); | 104 SkASSERT(dst); |
| 105 SkDEBUGCODE(int dstIndex = )this->registerChildProcessor(dst); | 105 SkDEBUGCODE(int dstIndex = )this->registerChildProcessor(dst); |
| 106 SkASSERT(0 == dstIndex); | 106 SkASSERT(0 == dstIndex); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void GrArithmeticFP::onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyB
uilder* b) const { | 109 void GrArithmeticFP::onGetGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKe
yBuilder* b) const { |
| 110 GLArithmeticFP::GenKey(*this, caps, b); | 110 GLArithmeticFP::GenKey(*this, caps, b); |
| 111 } | 111 } |
| 112 | 112 |
| 113 GrGLSLFragmentProcessor* GrArithmeticFP::onCreateGLInstance() const { | 113 GrGLSLFragmentProcessor* GrArithmeticFP::onCreateGLSLInstance() const { |
| 114 return new GLArithmeticFP(*this); | 114 return new GLArithmeticFP(*this); |
| 115 } | 115 } |
| 116 | 116 |
| 117 bool GrArithmeticFP::onIsEqual(const GrFragmentProcessor& fpBase) const { | 117 bool GrArithmeticFP::onIsEqual(const GrFragmentProcessor& fpBase) const { |
| 118 const GrArithmeticFP& fp = fpBase.cast<GrArithmeticFP>(); | 118 const GrArithmeticFP& fp = fpBase.cast<GrArithmeticFP>(); |
| 119 return fK1 == fp.fK1 && | 119 return fK1 == fp.fK1 && |
| 120 fK2 == fp.fK2 && | 120 fK2 == fp.fK2 && |
| 121 fK3 == fp.fK3 && | 121 fK3 == fp.fK3 && |
| 122 fK4 == fp.fK4 && | 122 fK4 == fp.fK4 && |
| 123 fEnforcePMColor == fp.fEnforcePMColor; | 123 fEnforcePMColor == fp.fEnforcePMColor; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 147 // Xfer Processor | 147 // Xfer Processor |
| 148 /////////////////////////////////////////////////////////////////////////////// | 148 /////////////////////////////////////////////////////////////////////////////// |
| 149 | 149 |
| 150 class ArithmeticXP : public GrXferProcessor { | 150 class ArithmeticXP : public GrXferProcessor { |
| 151 public: | 151 public: |
| 152 ArithmeticXP(const DstTexture*, bool hasMixedSamples, | 152 ArithmeticXP(const DstTexture*, bool hasMixedSamples, |
| 153 float k1, float k2, float k3, float k4, bool enforcePMColor); | 153 float k1, float k2, float k3, float k4, bool enforcePMColor); |
| 154 | 154 |
| 155 const char* name() const override { return "Arithmetic"; } | 155 const char* name() const override { return "Arithmetic"; } |
| 156 | 156 |
| 157 GrGLSLXferProcessor* createGLInstance() const override; | 157 GrGLSLXferProcessor* createGLSLInstance() const override; |
| 158 | 158 |
| 159 float k1() const { return fK1; } | 159 float k1() const { return fK1; } |
| 160 float k2() const { return fK2; } | 160 float k2() const { return fK2; } |
| 161 float k3() const { return fK3; } | 161 float k3() const { return fK3; } |
| 162 float k4() const { return fK4; } | 162 float k4() const { return fK4; } |
| 163 bool enforcePMColor() const { return fEnforcePMColor; } | 163 bool enforcePMColor() const { return fEnforcePMColor; } |
| 164 | 164 |
| 165 private: | 165 private: |
| 166 GrXferProcessor::OptFlags onGetOptimizations(const GrProcOptInfo& colorPOI, | 166 GrXferProcessor::OptFlags onGetOptimizations(const GrProcOptInfo& colorPOI, |
| 167 const GrProcOptInfo& coveragePO
I, | 167 const GrProcOptInfo& coveragePO
I, |
| 168 bool doesStencilWrite, | 168 bool doesStencilWrite, |
| 169 GrColor* overrideColor, | 169 GrColor* overrideColor, |
| 170 const GrCaps& caps) override; | 170 const GrCaps& caps) override; |
| 171 | 171 |
| 172 void onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c
onst override; | 172 void onGetGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b)
const override; |
| 173 | 173 |
| 174 bool onIsEqual(const GrXferProcessor& xpBase) const override { | 174 bool onIsEqual(const GrXferProcessor& xpBase) const override { |
| 175 const ArithmeticXP& xp = xpBase.cast<ArithmeticXP>(); | 175 const ArithmeticXP& xp = xpBase.cast<ArithmeticXP>(); |
| 176 if (fK1 != xp.fK1 || | 176 if (fK1 != xp.fK1 || |
| 177 fK2 != xp.fK2 || | 177 fK2 != xp.fK2 || |
| 178 fK3 != xp.fK3 || | 178 fK3 != xp.fK3 || |
| 179 fK4 != xp.fK4 || | 179 fK4 != xp.fK4 || |
| 180 fEnforcePMColor != xp.fEnforcePMColor) { | 180 fEnforcePMColor != xp.fEnforcePMColor) { |
| 181 return false; | 181 return false; |
| 182 } | 182 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 float k1, float k2, float k3, float k4, bool enforceP
MColor) | 238 float k1, float k2, float k3, float k4, bool enforceP
MColor) |
| 239 : INHERITED(dstTexture, true, hasMixedSamples) | 239 : INHERITED(dstTexture, true, hasMixedSamples) |
| 240 , fK1(k1) | 240 , fK1(k1) |
| 241 , fK2(k2) | 241 , fK2(k2) |
| 242 , fK3(k3) | 242 , fK3(k3) |
| 243 , fK4(k4) | 243 , fK4(k4) |
| 244 , fEnforcePMColor(enforcePMColor) { | 244 , fEnforcePMColor(enforcePMColor) { |
| 245 this->initClassID<ArithmeticXP>(); | 245 this->initClassID<ArithmeticXP>(); |
| 246 } | 246 } |
| 247 | 247 |
| 248 void ArithmeticXP::onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBui
lder* b) const { | 248 void ArithmeticXP::onGetGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyB
uilder* b) const { |
| 249 GLArithmeticXP::GenKey(*this, caps, b); | 249 GLArithmeticXP::GenKey(*this, caps, b); |
| 250 } | 250 } |
| 251 | 251 |
| 252 GrGLSLXferProcessor* ArithmeticXP::createGLInstance() const { return new GLArith
meticXP(*this); } | 252 GrGLSLXferProcessor* ArithmeticXP::createGLSLInstance() const { return new GLAri
thmeticXP(*this); } |
| 253 | 253 |
| 254 GrXferProcessor::OptFlags ArithmeticXP::onGetOptimizations(const GrProcOptInfo&
colorPOI, | 254 GrXferProcessor::OptFlags ArithmeticXP::onGetOptimizations(const GrProcOptInfo&
colorPOI, |
| 255 const GrProcOptInfo&
coveragePOI, | 255 const GrProcOptInfo&
coveragePOI, |
| 256 bool doesStencilWrite
, | 256 bool doesStencilWrite
, |
| 257 GrColor* overrideColo
r, | 257 GrColor* overrideColo
r, |
| 258 const GrCaps& caps) { | 258 const GrCaps& caps) { |
| 259 return GrXferProcessor::kNone_OptFlags; | 259 return GrXferProcessor::kNone_OptFlags; |
| 260 } | 260 } |
| 261 | 261 |
| 262 /////////////////////////////////////////////////////////////////////////////// | 262 /////////////////////////////////////////////////////////////////////////////// |
| (...skipping 30 matching lines...) Expand all Loading... |
| 293 float k1 = d->fRandom->nextF(); | 293 float k1 = d->fRandom->nextF(); |
| 294 float k2 = d->fRandom->nextF(); | 294 float k2 = d->fRandom->nextF(); |
| 295 float k3 = d->fRandom->nextF(); | 295 float k3 = d->fRandom->nextF(); |
| 296 float k4 = d->fRandom->nextF(); | 296 float k4 = d->fRandom->nextF(); |
| 297 bool enforcePMColor = d->fRandom->nextBool(); | 297 bool enforcePMColor = d->fRandom->nextBool(); |
| 298 | 298 |
| 299 return GrArithmeticXPFactory::Create(k1, k2, k3, k4, enforcePMColor); | 299 return GrArithmeticXPFactory::Create(k1, k2, k3, k4, enforcePMColor); |
| 300 } | 300 } |
| 301 | 301 |
| 302 #endif | 302 #endif |
| OLD | NEW |