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

Side by Side Diff: src/gpu/effects/GrPorterDuffXferProcessor.cpp

Issue 776843004: Use static XPF for porter duff xp factories. (Closed) Base URL: https://skia.googlesource.com/skia.git@xferFactorySolo
Patch Set: Remove extra line Created 6 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 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 "GrPorterDuffXferProcessor.h" 8 #include "GrPorterDuffXferProcessor.h"
9 9
10 #include "GrBackendProcessorFactory.h" 10 #include "GrBackendProcessorFactory.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 const GrBackendFragmentProcessorFactory& GrPorterDuffXferProcessor::getFactory() const { 54 const GrBackendFragmentProcessorFactory& GrPorterDuffXferProcessor::getFactory() const {
55 return GrTBackendFragmentProcessorFactory<GrPorterDuffXferProcessor>::getIns tance(); 55 return GrTBackendFragmentProcessorFactory<GrPorterDuffXferProcessor>::getIns tance();
56 } 56 }
57 57
58 void GrPorterDuffXferProcessor::onComputeInvariantOutput(GrInvariantOutput* inou t) const { 58 void GrPorterDuffXferProcessor::onComputeInvariantOutput(GrInvariantOutput* inou t) const {
59 inout->setToUnknown(GrInvariantOutput::kWillNot_ReadInput); 59 inout->setToUnknown(GrInvariantOutput::kWillNot_ReadInput);
60 } 60 }
61 61
62 /////////////////////////////////////////////////////////////////////////////// 62 ///////////////////////////////////////////////////////////////////////////////
63 63
64 GrXPFactory* GrPorterDuffXPFactory::Create(SkXfermode::Mode mode) {
65 switch (mode) {
66 case SkXfermode::kClear_Mode:
67 GR_CREATE_STATIC_XP_FACTORY(gClearPDXPF, GrPorterDuffXPFactory, (kZe ro_GrBlendCoeff,
68 kZe ro_GrBlendCoeff));
69 return SkRef(gClearPDXPF);
70 break;
71 case SkXfermode::kSrc_Mode:
72 GR_CREATE_STATIC_XP_FACTORY(gSrcPDXPF, GrPorterDuffXPFactory, (kOne_ GrBlendCoeff,
73 kZero _GrBlendCoeff));
74 return SkRef(gSrcPDXPF);
75 break;
76 case SkXfermode::kDst_Mode:
77 GR_CREATE_STATIC_XP_FACTORY(gDstPDXPF, GrPorterDuffXPFactory, (kZero _GrBlendCoeff,
78 kOne_ GrBlendCoeff));
79 return SkRef(gDstPDXPF);
80 break;
81 case SkXfermode::kSrcOver_Mode:
82 GR_CREATE_STATIC_XP_FACTORY(gSrcOverPDXPF, GrPorterDuffXPFactory, (k One_GrBlendCoeff,
83 k ISA_GrBlendCoeff));
84 return SkRef(gSrcOverPDXPF);
85 break;
86 case SkXfermode::kDstOver_Mode:
87 GR_CREATE_STATIC_XP_FACTORY(gDstOverPDXPF, GrPorterDuffXPFactory, (k IDA_GrBlendCoeff,
88 k One_GrBlendCoeff));
89 return SkRef(gDstOverPDXPF);
90 break;
91 case SkXfermode::kSrcIn_Mode:
92 GR_CREATE_STATIC_XP_FACTORY(gSrcInPDXPF, GrPorterDuffXPFactory, (kDA _GrBlendCoeff,
93 kZe ro_GrBlendCoeff));
94 return SkRef(gSrcInPDXPF);
95 break;
96 case SkXfermode::kDstIn_Mode:
97 GR_CREATE_STATIC_XP_FACTORY(gDstInPDXPF, GrPorterDuffXPFactory, (kZe ro_GrBlendCoeff,
98 kSA _GrBlendCoeff));
99 return SkRef(gDstInPDXPF);
100 break;
101 case SkXfermode::kSrcOut_Mode:
102 GR_CREATE_STATIC_XP_FACTORY(gSrcOutPDXPF, GrPorterDuffXPFactory, (kI DA_GrBlendCoeff,
103 kZ ero_GrBlendCoeff));
104 return SkRef(gSrcOutPDXPF);
105 break;
106 case SkXfermode::kDstOut_Mode:
107 GR_CREATE_STATIC_XP_FACTORY(gDstOutPDXPF, GrPorterDuffXPFactory, (kZ ero_GrBlendCoeff,
108 kI SA_GrBlendCoeff));
109 return SkRef(gDstOutPDXPF);
110 break;
111 case SkXfermode::kSrcATop_Mode:
112 GR_CREATE_STATIC_XP_FACTORY(gSrcATopPDXPF, GrPorterDuffXPFactory, (k DA_GrBlendCoeff,
113 k ISA_GrBlendCoeff));
114 return SkRef(gSrcATopPDXPF);
115 break;
116 case SkXfermode::kDstATop_Mode:
117 GR_CREATE_STATIC_XP_FACTORY(gDstATopPDXPF, GrPorterDuffXPFactory, (k IDA_GrBlendCoeff,
118 k SA_GrBlendCoeff));
119 return SkRef(gDstATopPDXPF);
120 break;
121 case SkXfermode::kXor_Mode:
122 GR_CREATE_STATIC_XP_FACTORY(gXorPDXPF, GrPorterDuffXPFactory, (kIDA_ GrBlendCoeff,
123 kISA_ GrBlendCoeff));
124 return SkRef(gXorPDXPF);
125 break;
126 case SkXfermode::kPlus_Mode:
127 GR_CREATE_STATIC_XP_FACTORY(gPlusPDXPF, GrPorterDuffXPFactory, (kOne _GrBlendCoeff,
128 kOne _GrBlendCoeff));
129 return SkRef(gPlusPDXPF);
130 break;
131 case SkXfermode::kModulate_Mode:
132 GR_CREATE_STATIC_XP_FACTORY(gModulatePDXPF, GrPorterDuffXPFactory, ( kZero_GrBlendCoeff,
133 kSC_GrBlendCoeff));
134 return SkRef(gModulatePDXPF);
135 break;
136 case SkXfermode::kScreen_Mode:
137 GR_CREATE_STATIC_XP_FACTORY(gScreenPDXPF, GrPorterDuffXPFactory, (kO ne_GrBlendCoeff,
138 kI SC_GrBlendCoeff));
139 return SkRef(gScreenPDXPF);
140 break;
141 default:
142 return NULL;
143 }
144 }
145
64 const GrXferProcessor* GrPorterDuffXPFactory::createXferProcessor() const { 146 const GrXferProcessor* GrPorterDuffXPFactory::createXferProcessor() const {
65 return GrPorterDuffXferProcessor::Create(fSrc, fDst); 147 return GrPorterDuffXferProcessor::Create(fSrc, fDst);
66 } 148 }
67 149
68 bool GrPorterDuffXPFactory::supportsRGBCoverage(GrColor /*knownColor*/, 150 bool GrPorterDuffXPFactory::supportsRGBCoverage(GrColor /*knownColor*/,
69 uint32_t knownColorFlags) const { 151 uint32_t knownColorFlags) const {
70 if (kOne_GrBlendCoeff == fSrc && kISA_GrBlendCoeff == fDst && 152 if (kOne_GrBlendCoeff == fSrc && kISA_GrBlendCoeff == fDst &&
71 kRGBA_GrColorComponentFlags == knownColorFlags) { 153 kRGBA_GrColorComponentFlags == knownColorFlags) {
72 return true; 154 return true;
73 } 155 }
74 return false; 156 return false;
75 } 157 }
76 158
OLDNEW
« include/gpu/GrXferProcessor.h ('K') | « src/gpu/effects/GrPorterDuffXferProcessor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698