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

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: Block case statements 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
« no previous file with comments | « src/gpu/effects/GrPorterDuffXferProcessor.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 static GrPorterDuffXPFactory gClearPDXPF(kZero_GrBlendCoeff, kZero_G rBlendCoeff);
68 return SkRef(&gClearPDXPF);
69 break;
70 }
71 case SkXfermode::kSrc_Mode: {
72 static GrPorterDuffXPFactory gSrcPDXPF(kOne_GrBlendCoeff, kZero_GrBl endCoeff);
73 return SkRef(&gSrcPDXPF);
74 break;
75 }
76 case SkXfermode::kDst_Mode: {
77 static GrPorterDuffXPFactory gDstPDXPF(kZero_GrBlendCoeff, kOne_GrBl endCoeff);
78 return SkRef(&gDstPDXPF);
79 break;
80 }
81 case SkXfermode::kSrcOver_Mode: {
82 static GrPorterDuffXPFactory gSrcOverPDXPF(kOne_GrBlendCoeff, kISA_G rBlendCoeff);
83 return SkRef(&gSrcOverPDXPF);
84 break;
85 }
86 case SkXfermode::kDstOver_Mode: {
87 static GrPorterDuffXPFactory gDstOverPDXPF(kIDA_GrBlendCoeff, kOne_G rBlendCoeff);
88 return SkRef(&gDstOverPDXPF);
89 break;
90 }
91 case SkXfermode::kSrcIn_Mode: {
92 static GrPorterDuffXPFactory gSrcInPDXPF(kDA_GrBlendCoeff, kZero_GrB lendCoeff);
93 return SkRef(&gSrcInPDXPF);
94 break;
95 }
96 case SkXfermode::kDstIn_Mode: {
97 static GrPorterDuffXPFactory gDstInPDXPF(kZero_GrBlendCoeff, kSA_GrB lendCoeff);
98 return SkRef(&gDstInPDXPF);
99 break;
100 }
101 case SkXfermode::kSrcOut_Mode: {
102 static GrPorterDuffXPFactory gSrcOutPDXPF(kIDA_GrBlendCoeff, kZero_G rBlendCoeff);
103 return SkRef(&gSrcOutPDXPF);
104 break;
105 }
106 case SkXfermode::kDstOut_Mode: {
107 static GrPorterDuffXPFactory gDstOutPDXPF(kZero_GrBlendCoeff, kISA_G rBlendCoeff);
108 return SkRef(&gDstOutPDXPF);
109 break;
110 }
111 case SkXfermode::kSrcATop_Mode: {
112 static GrPorterDuffXPFactory gSrcATopPDXPF(kDA_GrBlendCoeff, kISA_Gr BlendCoeff);
113 return SkRef(&gSrcATopPDXPF);
114 break;
115 }
116 case SkXfermode::kDstATop_Mode: {
117 static GrPorterDuffXPFactory gDstATopPDXPF(kIDA_GrBlendCoeff, kSA_Gr BlendCoeff);
118 return SkRef(&gDstATopPDXPF);
119 break;
120 }
121 case SkXfermode::kXor_Mode: {
122 static GrPorterDuffXPFactory gXorPDXPF(kIDA_GrBlendCoeff, kISA_GrBle ndCoeff);
123 return SkRef(&gXorPDXPF);
124 break;
125 }
126 case SkXfermode::kPlus_Mode: {
127 static GrPorterDuffXPFactory gPlusPDXPF(kOne_GrBlendCoeff, kOne_GrBl endCoeff);
128 return SkRef(&gPlusPDXPF);
129 break;
130 }
131 case SkXfermode::kModulate_Mode: {
132 static GrPorterDuffXPFactory gModulatePDXPF(kZero_GrBlendCoeff, kSC_ GrBlendCoeff);
133 return SkRef(&gModulatePDXPF);
134 break;
135 }
136 case SkXfermode::kScreen_Mode: {
137 static GrPorterDuffXPFactory gScreenPDXPF(kOne_GrBlendCoeff, kISC_Gr BlendCoeff);
138 return SkRef(&gScreenPDXPF);
139 break;
140 }
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
« no previous file with comments | « src/gpu/effects/GrPorterDuffXferProcessor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698