| OLD | NEW | 
|---|
| 1 | 1 | 
| 2 /* | 2 /* | 
| 3  * Copyright 2014 Google Inc. | 3  * Copyright 2014 Google Inc. | 
| 4  * | 4  * | 
| 5  * Use of this source code is governed by a BSD-style license that can be | 5  * Use of this source code is governed by a BSD-style license that can be | 
| 6  * found in the LICENSE file. | 6  * found in the LICENSE file. | 
| 7  */ | 7  */ | 
| 8 | 8 | 
| 9 #include "effects/GrCoverageSetOpXP.h" | 9 #include "effects/GrCoverageSetOpXP.h" | 
| 10 #include "GrCaps.h" | 10 #include "GrCaps.h" | 
| 11 #include "GrColor.h" | 11 #include "GrColor.h" | 
| 12 #include "GrProcessor.h" | 12 #include "GrProcessor.h" | 
| 13 #include "GrProcOptInfo.h" | 13 #include "GrProcOptInfo.h" | 
| 14 #include "glsl/GrGLSLBlend.h" | 14 #include "glsl/GrGLSLBlend.h" | 
| 15 #include "glsl/GrGLSLProgramBuilder.h" |  | 
| 16 #include "glsl/GrGLSLFragmentShaderBuilder.h" | 15 #include "glsl/GrGLSLFragmentShaderBuilder.h" | 
|  | 16 #include "glsl/GrGLSLUniformHandler.h" | 
| 17 #include "glsl/GrGLSLXferProcessor.h" | 17 #include "glsl/GrGLSLXferProcessor.h" | 
| 18 | 18 | 
| 19 class CoverageSetOpXP : public GrXferProcessor { | 19 class CoverageSetOpXP : public GrXferProcessor { | 
| 20 public: | 20 public: | 
| 21     static GrXferProcessor* Create(SkRegion::Op regionOp, bool invertCoverage) { | 21     static GrXferProcessor* Create(SkRegion::Op regionOp, bool invertCoverage) { | 
| 22         return new CoverageSetOpXP(regionOp, invertCoverage); | 22         return new CoverageSetOpXP(regionOp, invertCoverage); | 
| 23     } | 23     } | 
| 24 | 24 | 
| 25     ~CoverageSetOpXP() override; | 25     ~CoverageSetOpXP() override; | 
| 26 | 26 | 
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 193 class GLShaderCSOXferProcessor : public GrGLSLXferProcessor { | 193 class GLShaderCSOXferProcessor : public GrGLSLXferProcessor { | 
| 194 public: | 194 public: | 
| 195     static void GenKey(const GrProcessor& processor, GrProcessorKeyBuilder* b) { | 195     static void GenKey(const GrProcessor& processor, GrProcessorKeyBuilder* b) { | 
| 196         const ShaderCSOXferProcessor& xp = processor.cast<ShaderCSOXferProcessor
     >(); | 196         const ShaderCSOXferProcessor& xp = processor.cast<ShaderCSOXferProcessor
     >(); | 
| 197         b->add32(xp.regionOp()); | 197         b->add32(xp.regionOp()); | 
| 198         uint32_t key = xp.invertCoverage() ?  0x0 : 0x1; | 198         uint32_t key = xp.invertCoverage() ?  0x0 : 0x1; | 
| 199         b->add32(key); | 199         b->add32(key); | 
| 200     } | 200     } | 
| 201 | 201 | 
| 202 private: | 202 private: | 
| 203     void emitBlendCodeForDstRead(GrGLSLXPBuilder* pb, | 203     void emitBlendCodeForDstRead(GrGLSLXPFragmentBuilder* fragBuilder, | 
| 204                                  GrGLSLXPFragmentBuilder* fragBuilder, | 204                                  GrGLSLUniformHandler* uniformHandler, | 
| 205                                  const char* srcColor, | 205                                  const char* srcColor, | 
| 206                                  const char* srcCoverage, | 206                                  const char* srcCoverage, | 
| 207                                  const char* dstColor, | 207                                  const char* dstColor, | 
| 208                                  const char* outColor, | 208                                  const char* outColor, | 
| 209                                  const char* outColorSecondary, | 209                                  const char* outColorSecondary, | 
| 210                                  const GrXferProcessor& proc) override { | 210                                  const GrXferProcessor& proc) override { | 
| 211         const ShaderCSOXferProcessor& xp = proc.cast<ShaderCSOXferProcessor>(); | 211         const ShaderCSOXferProcessor& xp = proc.cast<ShaderCSOXferProcessor>(); | 
| 212 | 212 | 
| 213         if (xp.invertCoverage()) { | 213         if (xp.invertCoverage()) { | 
| 214             fragBuilder->codeAppendf("%s = 1.0 - %s;", outColor, srcCoverage); | 214             fragBuilder->codeAppendf("%s = 1.0 - %s;", outColor, srcCoverage); | 
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 333 } | 333 } | 
| 334 | 334 | 
| 335 GR_DEFINE_XP_FACTORY_TEST(GrCoverageSetOpXPFactory); | 335 GR_DEFINE_XP_FACTORY_TEST(GrCoverageSetOpXPFactory); | 
| 336 | 336 | 
| 337 const GrXPFactory* GrCoverageSetOpXPFactory::TestCreate(GrProcessorTestData* d) 
     { | 337 const GrXPFactory* GrCoverageSetOpXPFactory::TestCreate(GrProcessorTestData* d) 
     { | 
| 338     SkRegion::Op regionOp = SkRegion::Op(d->fRandom->nextULessThan(SkRegion::kLa
     stOp + 1)); | 338     SkRegion::Op regionOp = SkRegion::Op(d->fRandom->nextULessThan(SkRegion::kLa
     stOp + 1)); | 
| 339     bool invertCoverage = !d->fRenderTarget->hasMixedSamples() && d->fRandom->ne
     xtBool(); | 339     bool invertCoverage = !d->fRenderTarget->hasMixedSamples() && d->fRandom->ne
     xtBool(); | 
| 340     return GrCoverageSetOpXPFactory::Create(regionOp, invertCoverage); | 340     return GrCoverageSetOpXPFactory::Create(regionOp, invertCoverage); | 
| 341 } | 341 } | 
| 342 | 342 | 
| OLD | NEW | 
|---|