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

Side by Side Diff: tests/GrPorterDuffTest.cpp

Issue 1161273005: Update XPF invariant info to not account for conflation (Closed) Base URL: https://skia.googlesource.com/skia.git@upload_reenablebea
Patch Set: rebase Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « src/gpu/effects/GrPorterDuffXferProcessor.cpp ('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 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 "SkXfermode.h" 8 #include "SkXfermode.h"
9 #include "Test.h" 9 #include "Test.h"
10 10
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 }; 70 };
71 71
72 class GrPorterDuffTest { 72 class GrPorterDuffTest {
73 public: 73 public:
74 struct XPInfo { 74 struct XPInfo {
75 XPInfo(skiatest::Reporter* reporter, SkXfermode::Mode xfermode, const Gr Caps& caps, 75 XPInfo(skiatest::Reporter* reporter, SkXfermode::Mode xfermode, const Gr Caps& caps,
76 const GrProcOptInfo& colorPOI, const GrProcOptInfo& covPOI) { 76 const GrProcOptInfo& colorPOI, const GrProcOptInfo& covPOI) {
77 SkAutoTUnref<GrXPFactory> xpf(GrPorterDuffXPFactory::Create(xfermode )); 77 SkAutoTUnref<GrXPFactory> xpf(GrPorterDuffXPFactory::Create(xfermode ));
78 SkAutoTUnref<GrXferProcessor> xp(xpf->createXferProcessor(colorPOI, covPOI, 0, caps)); 78 SkAutoTUnref<GrXferProcessor> xp(xpf->createXferProcessor(colorPOI, covPOI, 0, caps));
79 TEST_ASSERT(!xpf->willNeedDstTexture(caps, colorPOI, covPOI)); 79 TEST_ASSERT(!xpf->willNeedDstTexture(caps, colorPOI, covPOI));
80 xpf->getInvariantOutput(colorPOI, covPOI, &fInvariantOutput); 80 xpf->getInvariantBlendedColor(colorPOI, &fBlendedColor);
81 fOptFlags = xp->getOptimizations(colorPOI, covPOI, false, 0, caps); 81 fOptFlags = xp->getOptimizations(colorPOI, covPOI, false, 0, caps);
82 GetXPOutputTypes(xp, &fPrimaryOutputType, &fSecondaryOutputType); 82 GetXPOutputTypes(xp, &fPrimaryOutputType, &fSecondaryOutputType);
83 xp->getBlendInfo(&fBlendInfo); 83 xp->getBlendInfo(&fBlendInfo);
84 TEST_ASSERT(!xp->willReadDstColor()); 84 TEST_ASSERT(!xp->willReadDstColor());
85 TEST_ASSERT(xp->hasSecondaryOutput() == GrBlendCoeffRefsSrc2(fBlendI nfo.fDstBlend)); 85 TEST_ASSERT(xp->hasSecondaryOutput() == GrBlendCoeffRefsSrc2(fBlendI nfo.fDstBlend));
86 } 86 }
87 87
88 GrXPFactory::InvariantOutput fInvariantOutput; 88 GrXPFactory::InvariantBlendedColor fBlendedColor;
89 int fOptFlags; 89 int fOptFlags;
90 int fPrimaryOutputType; 90 int fPrimaryOutputType;
91 int fSecondaryOutputType; 91 int fSecondaryOutputType;
92 GrXferProcessor::BlendInfo fBlendInfo; 92 GrXferProcessor::BlendInfo fBlendInfo;
93 }; 93 };
94 94
95 static void GetXPOutputTypes(const GrXferProcessor* xp, int* outPrimary, int * outSecondary) { 95 static void GetXPOutputTypes(const GrXferProcessor* xp, int* outPrimary, int * outSecondary) {
96 GrPorterDuffXPFactory::TestGetXPOutputTypes(xp, outPrimary, outSecondary ); 96 GrPorterDuffXPFactory::TestGetXPOutputTypes(xp, outPrimary, outSecondary );
97 } 97 }
98 }; 98 };
99 99
100 static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) { 100 static void test_color_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
101 GrProcOptInfo colorPOI, covPOI; 101 GrProcOptInfo colorPOI, covPOI;
102 colorPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, fals e); 102 colorPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, fals e);
103 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 103 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
104 104
105 SkASSERT(!colorPOI.isOpaque()); 105 SkASSERT(!colorPOI.isOpaque());
106 SkASSERT(!colorPOI.isSolidWhite()); 106 SkASSERT(!colorPOI.isSolidWhite());
107 SkASSERT(!covPOI.isSolidWhite()); 107 SkASSERT(!covPOI.isSolidWhite());
108 SkASSERT(!covPOI.isFourChannelOutput()); 108 SkASSERT(!covPOI.isFourChannelOutput());
109 109
110 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 110 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
111 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 111 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
112 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 112 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
113 113
114 switch (xfermode) { 114 switch (xfermode) {
115 case SkXfermode::kClear_Mode: 115 case SkXfermode::kClear_Mode:
116 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 116 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
117 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 117 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
118 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
118 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 119 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
119 TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); 120 TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType);
120 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 121 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
121 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation); 122 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation);
122 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 123 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
123 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 124 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
124 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 125 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
125 break; 126 break;
126 case SkXfermode::kSrc_Mode: 127 case SkXfermode::kSrc_Mode:
127 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 128 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
128 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 129 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
129 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 130 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
130 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 131 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
131 TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); 132 TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType);
132 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 133 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
133 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 134 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
134 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 135 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
135 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 136 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
136 break; 137 break;
137 case SkXfermode::kDst_Mode: 138 case SkXfermode::kDst_Mode:
138 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 139 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
139 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 140 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
140 TEST_ASSERT((kSkipDraw_OptFlag | 141 TEST_ASSERT((kSkipDraw_OptFlag |
141 kIgnoreColor_OptFlag | 142 kIgnoreColor_OptFlag |
142 kIgnoreCoverage_OptFlag | 143 kIgnoreCoverage_OptFlag |
143 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 144 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
144 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 145 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
145 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 146 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
146 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 147 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
147 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 148 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
148 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 149 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
149 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); 150 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
150 break; 151 break;
151 case SkXfermode::kSrcOver_Mode: 152 case SkXfermode::kSrcOver_Mode:
152 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 153 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
153 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 154 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
154 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 155 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
155 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 156 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
156 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 157 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
157 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 158 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
158 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 159 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
159 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 160 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
160 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 161 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
161 break; 162 break;
162 case SkXfermode::kDstOver_Mode: 163 case SkXfermode::kDstOver_Mode:
163 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 164 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
164 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 165 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
165 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 166 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
166 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 167 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
167 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 168 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
168 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 169 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
169 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 170 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
170 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 171 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
171 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 172 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
172 break; 173 break;
173 case SkXfermode::kSrcIn_Mode: 174 case SkXfermode::kSrcIn_Mode:
174 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 175 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
175 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 176 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
176 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 177 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
177 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 178 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
178 TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); 179 TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType);
179 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 180 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
180 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 181 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
181 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 182 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
182 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 183 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
183 break; 184 break;
184 case SkXfermode::kDstIn_Mode: 185 case SkXfermode::kDstIn_Mode:
185 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 186 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
186 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 187 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
187 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 188 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
188 TEST_ASSERT(kISAModulate_OutputType == xpi.fPrimaryOutputType); 189 TEST_ASSERT(kISAModulate_OutputType == xpi.fPrimaryOutputType);
189 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 190 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
190 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation); 191 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation);
191 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 192 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
192 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 193 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
193 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 194 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
194 break; 195 break;
195 case SkXfermode::kSrcOut_Mode: 196 case SkXfermode::kSrcOut_Mode:
196 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 197 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
197 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 198 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
198 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 199 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
199 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 200 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
200 TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType); 201 TEST_ASSERT(kCoverage_OutputType == xpi.fSecondaryOutputType);
201 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 202 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
202 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 203 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
203 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 204 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
204 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 205 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
205 break; 206 break;
206 case SkXfermode::kDstOut_Mode: 207 case SkXfermode::kDstOut_Mode:
207 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 208 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
208 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 209 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
209 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 210 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
210 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 211 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
211 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 212 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
212 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 213 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
213 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 214 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
214 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 215 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
215 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 216 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
216 break; 217 break;
217 case SkXfermode::kSrcATop_Mode: 218 case SkXfermode::kSrcATop_Mode:
218 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 219 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
219 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 220 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
220 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 221 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
221 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 222 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
222 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 223 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
223 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 224 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
224 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 225 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
225 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 226 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
226 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 227 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
227 break; 228 break;
228 case SkXfermode::kDstATop_Mode: 229 case SkXfermode::kDstATop_Mode:
229 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 230 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
230 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 231 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
231 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 232 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
232 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 233 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
233 TEST_ASSERT(kISAModulate_OutputType == xpi.fSecondaryOutputType) ; 234 TEST_ASSERT(kISAModulate_OutputType == xpi.fSecondaryOutputType) ;
234 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 235 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
235 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 236 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
236 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 237 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
237 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 238 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
238 break; 239 break;
239 case SkXfermode::kXor_Mode: 240 case SkXfermode::kXor_Mode:
240 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 241 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
241 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 242 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
242 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 243 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
243 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 244 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
244 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 245 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
245 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 246 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
246 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 247 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
247 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 248 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
248 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 249 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
249 break; 250 break;
250 case SkXfermode::kPlus_Mode: 251 case SkXfermode::kPlus_Mode:
251 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 252 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
252 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 253 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
253 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 254 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
254 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 255 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
255 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 256 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
256 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 257 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
257 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 258 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
258 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 259 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
259 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 260 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
260 break; 261 break;
261 case SkXfermode::kModulate_Mode: 262 case SkXfermode::kModulate_Mode:
262 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 263 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
263 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 264 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
264 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 265 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
265 TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType); 266 TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType);
266 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 267 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
267 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation); 268 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation);
268 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 269 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
269 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 270 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
270 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 271 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
271 break; 272 break;
272 case SkXfermode::kScreen_Mode: 273 case SkXfermode::kScreen_Mode:
273 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 274 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
274 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 275 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
275 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 276 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
276 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 277 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
277 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 278 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
278 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 279 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
279 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 280 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
280 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 281 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
281 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 282 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
282 break; 283 break;
283 default: 284 default:
284 ERRORF(reporter, "Invalid xfermode."); 285 ERRORF(reporter, "Invalid xfermode.");
(...skipping 12 matching lines...) Expand all
297 SkASSERT(!colorPOI.isSolidWhite()); 298 SkASSERT(!colorPOI.isSolidWhite());
298 SkASSERT(covPOI.isSolidWhite()); 299 SkASSERT(covPOI.isSolidWhite());
299 SkASSERT(!covPOI.isFourChannelOutput()); 300 SkASSERT(!covPOI.isFourChannelOutput());
300 301
301 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 302 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
302 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 303 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
303 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 304 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
304 305
305 switch (xfermode) { 306 switch (xfermode) {
306 case SkXfermode::kClear_Mode: 307 case SkXfermode::kClear_Mode:
307 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 308 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
308 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 309 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
309 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 310 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
310 TEST_ASSERT((kIgnoreColor_OptFlag | 311 TEST_ASSERT((kIgnoreColor_OptFlag |
311 kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 312 kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
312 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 313 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
313 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 314 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
314 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 315 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
315 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 316 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
316 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 317 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
317 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 318 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
318 break; 319 break;
319 case SkXfermode::kSrc_Mode: 320 case SkXfermode::kSrc_Mode:
320 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 321 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
321 TEST_ASSERT(229 == GrColorUnpackR(xpi.fInvariantOutput.fBlendedC olor)); 322 TEST_ASSERT(229 == GrColorUnpackR(xpi.fBlendedColor.fKnownColor) );
322 TEST_ASSERT(154 == GrColorUnpackB(xpi.fInvariantOutput.fBlendedC olor)); 323 TEST_ASSERT(154 == GrColorUnpackB(xpi.fBlendedColor.fKnownColor) );
323 TEST_ASSERT((kR_GrColorComponentFlag | 324 TEST_ASSERT((kR_GrColorComponentFlag |
324 kB_GrColorComponentFlag) == xpi.fInvariantOutput.fB lendedColorFlags); 325 kB_GrColorComponentFlag) == xpi.fBlendedColor.fKnow nColorFlags);
325 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 326 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
326 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 327 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
327 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 328 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
328 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 329 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
329 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 330 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
330 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 331 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
331 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 332 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
332 break; 333 break;
333 case SkXfermode::kDst_Mode: 334 case SkXfermode::kDst_Mode:
334 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 335 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
335 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 336 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
336 TEST_ASSERT((kSkipDraw_OptFlag | 337 TEST_ASSERT((kSkipDraw_OptFlag |
337 kIgnoreColor_OptFlag | 338 kIgnoreColor_OptFlag |
338 kIgnoreCoverage_OptFlag | 339 kIgnoreCoverage_OptFlag |
339 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 340 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
340 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 341 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
341 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 342 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
342 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 343 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
343 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 344 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
344 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 345 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
345 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); 346 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
346 break; 347 break;
347 case SkXfermode::kSrcOver_Mode: 348 case SkXfermode::kSrcOver_Mode:
348 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 349 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
349 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 350 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
350 TEST_ASSERT((kIgnoreCoverage_OptFlag | 351 TEST_ASSERT((kIgnoreCoverage_OptFlag |
351 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 352 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
352 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 353 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
353 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 354 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
354 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 355 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
355 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 356 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
356 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 357 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
357 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 358 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
358 break; 359 break;
359 case SkXfermode::kDstOver_Mode: 360 case SkXfermode::kDstOver_Mode:
360 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 361 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
361 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 362 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
362 TEST_ASSERT((kIgnoreCoverage_OptFlag | 363 TEST_ASSERT((kIgnoreCoverage_OptFlag |
363 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 364 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
364 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 365 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
365 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 366 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
366 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 367 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
367 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 368 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
368 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 369 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
369 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 370 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
370 break; 371 break;
371 case SkXfermode::kSrcIn_Mode: 372 case SkXfermode::kSrcIn_Mode:
372 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 373 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
373 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 374 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
374 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 375 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
375 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 376 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
376 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 377 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
377 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 378 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
378 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 379 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
379 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 380 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
380 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 381 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
381 break; 382 break;
382 case SkXfermode::kDstIn_Mode: 383 case SkXfermode::kDstIn_Mode:
383 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 384 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
384 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 385 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
385 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 386 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
386 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 387 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
387 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 388 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
388 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 389 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
389 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 390 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
390 TEST_ASSERT(kSA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 391 TEST_ASSERT(kSA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
391 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 392 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
392 break; 393 break;
393 case SkXfermode::kSrcOut_Mode: 394 case SkXfermode::kSrcOut_Mode:
394 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 395 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
395 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 396 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
396 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 397 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
397 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 398 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
398 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 399 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
399 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 400 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
400 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 401 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
401 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 402 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
402 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 403 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
403 break; 404 break;
404 case SkXfermode::kDstOut_Mode: 405 case SkXfermode::kDstOut_Mode:
405 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 406 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
406 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 407 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
407 TEST_ASSERT((kIgnoreCoverage_OptFlag | 408 TEST_ASSERT((kIgnoreCoverage_OptFlag |
408 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 409 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
409 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 410 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
410 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 411 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
411 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 412 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
412 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 413 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
413 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 414 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
414 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 415 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
415 break; 416 break;
416 case SkXfermode::kSrcATop_Mode: 417 case SkXfermode::kSrcATop_Mode:
417 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 418 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
418 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 419 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
419 TEST_ASSERT((kIgnoreCoverage_OptFlag | 420 TEST_ASSERT((kIgnoreCoverage_OptFlag |
420 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 421 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
421 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 422 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
422 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 423 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
423 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 424 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
424 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 425 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
425 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 426 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
426 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 427 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
427 break; 428 break;
428 case SkXfermode::kDstATop_Mode: 429 case SkXfermode::kDstATop_Mode:
429 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 430 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
430 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 431 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
431 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 432 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
432 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 433 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
433 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 434 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
434 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 435 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
435 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 436 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
436 TEST_ASSERT(kSA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 437 TEST_ASSERT(kSA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
437 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 438 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
438 break; 439 break;
439 case SkXfermode::kXor_Mode: 440 case SkXfermode::kXor_Mode:
440 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 441 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
441 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 442 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
442 TEST_ASSERT((kIgnoreCoverage_OptFlag | 443 TEST_ASSERT((kIgnoreCoverage_OptFlag |
443 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 444 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
444 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 445 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
445 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 446 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
446 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 447 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
447 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 448 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
448 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 449 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
449 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 450 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
450 break; 451 break;
451 case SkXfermode::kPlus_Mode: 452 case SkXfermode::kPlus_Mode:
452 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 453 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
453 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 454 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
454 TEST_ASSERT((kIgnoreCoverage_OptFlag | 455 TEST_ASSERT((kIgnoreCoverage_OptFlag |
455 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 456 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
456 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 457 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
457 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 458 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
458 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 459 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
459 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 460 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
460 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 461 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
461 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 462 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
462 break; 463 break;
463 case SkXfermode::kModulate_Mode: 464 case SkXfermode::kModulate_Mode:
464 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 465 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
465 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 466 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
466 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 467 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
467 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 468 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
468 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 469 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
469 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 470 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
470 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 471 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
471 TEST_ASSERT(kSC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 472 TEST_ASSERT(kSC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
472 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 473 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
473 break; 474 break;
474 case SkXfermode::kScreen_Mode: 475 case SkXfermode::kScreen_Mode:
475 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 476 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
476 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 477 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
477 TEST_ASSERT((kIgnoreCoverage_OptFlag | 478 TEST_ASSERT((kIgnoreCoverage_OptFlag |
478 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 479 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
479 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 480 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
480 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 481 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
481 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 482 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
482 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 483 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
483 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 484 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
484 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 485 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
485 break; 486 break;
486 default: 487 default:
(...skipping 12 matching lines...) Expand all
499 SkASSERT(!colorPOI.isSolidWhite()); 500 SkASSERT(!colorPOI.isSolidWhite());
500 SkASSERT(!covPOI.isSolidWhite()); 501 SkASSERT(!covPOI.isSolidWhite());
501 SkASSERT(!covPOI.isFourChannelOutput()); 502 SkASSERT(!covPOI.isFourChannelOutput());
502 503
503 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 504 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
504 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 505 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
505 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 506 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
506 507
507 switch (xfermode) { 508 switch (xfermode) {
508 case SkXfermode::kClear_Mode: 509 case SkXfermode::kClear_Mode:
509 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 510 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
510 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 511 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
512 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
511 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 513 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
512 TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); 514 TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType);
513 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 515 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
514 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation); 516 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation);
515 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 517 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
516 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 518 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
517 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 519 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
518 break; 520 break;
519 case SkXfermode::kSrc_Mode: 521 case SkXfermode::kSrc_Mode:
520 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 522 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
521 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 523 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor) );
524 TEST_ASSERT(kA_GrColorComponentFlag == xpi.fBlendedColor.fKnownC olorFlags);
522 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 525 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
523 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 526 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
524 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 527 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
525 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 528 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
526 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 529 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
527 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 530 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
528 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 531 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
529 break; 532 break;
530 case SkXfermode::kDst_Mode: 533 case SkXfermode::kDst_Mode:
531 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 534 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
532 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 535 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
533 TEST_ASSERT((kSkipDraw_OptFlag | 536 TEST_ASSERT((kSkipDraw_OptFlag |
534 kIgnoreColor_OptFlag | 537 kIgnoreColor_OptFlag |
535 kIgnoreCoverage_OptFlag | 538 kIgnoreCoverage_OptFlag |
536 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 539 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
537 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 540 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
538 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 541 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
539 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 542 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
540 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 543 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
541 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 544 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
542 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); 545 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
543 break; 546 break;
544 case SkXfermode::kSrcOver_Mode: 547 case SkXfermode::kSrcOver_Mode:
545 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 548 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
546 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 549 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor) );
550 TEST_ASSERT(kA_GrColorComponentFlag == xpi.fBlendedColor.fKnownC olorFlags);
547 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 551 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
548 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 552 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
549 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 553 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
550 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 554 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
551 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 555 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
552 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 556 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
553 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 557 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
554 break; 558 break;
555 case SkXfermode::kDstOver_Mode: 559 case SkXfermode::kDstOver_Mode:
556 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 560 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
557 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 561 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
558 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 562 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
559 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 563 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
560 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 564 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
561 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 565 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
562 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 566 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
563 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 567 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
564 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 568 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
565 break; 569 break;
566 case SkXfermode::kSrcIn_Mode: 570 case SkXfermode::kSrcIn_Mode:
567 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 571 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
568 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 572 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
569 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 573 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
570 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 574 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
571 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 575 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
572 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 576 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
573 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 577 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
574 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 578 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
575 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 579 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
576 break; 580 break;
577 case SkXfermode::kDstIn_Mode: 581 case SkXfermode::kDstIn_Mode:
578 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 582 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
579 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 583 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
580 TEST_ASSERT((kSkipDraw_OptFlag | 584 TEST_ASSERT((kSkipDraw_OptFlag |
581 kIgnoreColor_OptFlag | 585 kIgnoreColor_OptFlag |
582 kIgnoreCoverage_OptFlag | 586 kIgnoreCoverage_OptFlag |
583 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 587 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
584 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 588 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
585 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 589 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
586 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 590 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
587 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 591 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
588 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 592 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
589 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); 593 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
590 break; 594 break;
591 case SkXfermode::kSrcOut_Mode: 595 case SkXfermode::kSrcOut_Mode:
592 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 596 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
593 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 597 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
594 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 598 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
595 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 599 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
596 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 600 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
597 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 601 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
598 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 602 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
599 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 603 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
600 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 604 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
601 break; 605 break;
602 case SkXfermode::kDstOut_Mode: 606 case SkXfermode::kDstOut_Mode:
603 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 607 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
604 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 608 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
609 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
605 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 610 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
606 TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType); 611 TEST_ASSERT(kCoverage_OutputType == xpi.fPrimaryOutputType);
607 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 612 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
608 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation); 613 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation);
609 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 614 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
610 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 615 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
611 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 616 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
612 break; 617 break;
613 case SkXfermode::kSrcATop_Mode: 618 case SkXfermode::kSrcATop_Mode:
614 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 619 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
615 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 620 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
616 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 621 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
617 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 622 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
618 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 623 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
619 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 624 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
620 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 625 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
621 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 626 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
622 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 627 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
623 break; 628 break;
624 case SkXfermode::kDstATop_Mode: 629 case SkXfermode::kDstATop_Mode:
625 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 630 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
626 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 631 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
627 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 632 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
628 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 633 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
629 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 634 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
630 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 635 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
631 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 636 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
632 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 637 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
633 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 638 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
634 break; 639 break;
635 case SkXfermode::kXor_Mode: 640 case SkXfermode::kXor_Mode:
636 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 641 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
637 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 642 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
638 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 643 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
639 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 644 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
640 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 645 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
641 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 646 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
642 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 647 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
643 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 648 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
644 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 649 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
645 break; 650 break;
646 case SkXfermode::kPlus_Mode: 651 case SkXfermode::kPlus_Mode:
647 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 652 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
648 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 653 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
649 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 654 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
650 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 655 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
651 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 656 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
652 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 657 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
653 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 658 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
654 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 659 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
655 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 660 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
656 break; 661 break;
657 case SkXfermode::kModulate_Mode: 662 case SkXfermode::kModulate_Mode:
658 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 663 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
659 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 664 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
660 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags); 665 TEST_ASSERT((kNone_Opt) == xpi.fOptFlags);
661 TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType); 666 TEST_ASSERT(kISCModulate_OutputType == xpi.fPrimaryOutputType);
662 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 667 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
663 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation); 668 TEST_ASSERT(kReverseSubtract_GrBlendEquation == xpi.fBlendInfo.f Equation);
664 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 669 TEST_ASSERT(kDC_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
665 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 670 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
666 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 671 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
667 break; 672 break;
668 case SkXfermode::kScreen_Mode: 673 case SkXfermode::kScreen_Mode:
669 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 674 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
670 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 675 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
671 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 676 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
672 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 677 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
673 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 678 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
674 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 679 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
675 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 680 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
676 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 681 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
677 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 682 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
678 break; 683 break;
679 default: 684 default:
680 ERRORF(reporter, "Invalid xfermode."); 685 ERRORF(reporter, "Invalid xfermode.");
(...skipping 12 matching lines...) Expand all
693 SkASSERT(!colorPOI.isSolidWhite()); 698 SkASSERT(!colorPOI.isSolidWhite());
694 SkASSERT(covPOI.isSolidWhite()); 699 SkASSERT(covPOI.isSolidWhite());
695 SkASSERT(!covPOI.isFourChannelOutput()); 700 SkASSERT(!covPOI.isFourChannelOutput());
696 701
697 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 702 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
698 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 703 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
699 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 704 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
700 705
701 switch (xfermode) { 706 switch (xfermode) {
702 case SkXfermode::kClear_Mode: 707 case SkXfermode::kClear_Mode:
703 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 708 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
704 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 709 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
705 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 710 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
706 TEST_ASSERT((kIgnoreColor_OptFlag | 711 TEST_ASSERT((kIgnoreColor_OptFlag |
707 kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 712 kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
708 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 713 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
709 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 714 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
710 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 715 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
711 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 716 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
712 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 717 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
713 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 718 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
714 break; 719 break;
715 case SkXfermode::kSrc_Mode: 720 case SkXfermode::kSrc_Mode:
716 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 721 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
717 TEST_ASSERT(82 == GrColorUnpackG(xpi.fInvariantOutput.fBlendedCo lor)); 722 TEST_ASSERT(82 == GrColorUnpackG(xpi.fBlendedColor.fKnownColor)) ;
718 TEST_ASSERT(255 == GrColorUnpackA(xpi.fInvariantOutput.fBlendedC olor)); 723 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor) );
719 TEST_ASSERT((kG_GrColorComponentFlag | 724 TEST_ASSERT((kG_GrColorComponentFlag |
720 kA_GrColorComponentFlag) == xpi.fInvariantOutput.fB lendedColorFlags); 725 kA_GrColorComponentFlag) == xpi.fBlendedColor.fKnow nColorFlags);
721 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 726 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
722 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 727 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
723 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 728 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
724 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 729 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
725 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 730 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
726 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 731 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
727 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 732 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
728 break; 733 break;
729 case SkXfermode::kDst_Mode: 734 case SkXfermode::kDst_Mode:
730 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 735 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
731 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 736 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
732 TEST_ASSERT((kSkipDraw_OptFlag | 737 TEST_ASSERT((kSkipDraw_OptFlag |
733 kIgnoreColor_OptFlag | 738 kIgnoreColor_OptFlag |
734 kIgnoreCoverage_OptFlag | 739 kIgnoreCoverage_OptFlag |
735 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 740 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
736 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 741 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
737 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 742 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
738 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 743 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
739 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 744 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
740 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 745 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
741 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); 746 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
742 break; 747 break;
743 case SkXfermode::kSrcOver_Mode: 748 case SkXfermode::kSrcOver_Mode:
744 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 749 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
745 TEST_ASSERT(82 == GrColorUnpackG(xpi.fInvariantOutput.fBlendedCo lor)); 750 TEST_ASSERT(82 == GrColorUnpackG(xpi.fBlendedColor.fKnownColor)) ;
746 TEST_ASSERT(255 == GrColorUnpackA(xpi.fInvariantOutput.fBlendedC olor)); 751 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor) );
747 TEST_ASSERT((kG_GrColorComponentFlag | 752 TEST_ASSERT((kG_GrColorComponentFlag |
748 kA_GrColorComponentFlag) == xpi.fInvariantOutput.fB lendedColorFlags); 753 kA_GrColorComponentFlag) == xpi.fBlendedColor.fKnow nColorFlags);
749 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 754 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
750 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 755 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
751 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 756 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
752 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 757 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
753 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 758 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
754 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 759 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
755 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 760 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
756 break; 761 break;
757 case SkXfermode::kDstOver_Mode: 762 case SkXfermode::kDstOver_Mode:
758 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 763 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
759 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 764 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
760 TEST_ASSERT((kIgnoreCoverage_OptFlag | 765 TEST_ASSERT((kIgnoreCoverage_OptFlag |
761 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 766 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
762 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 767 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
763 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 768 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
764 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 769 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
765 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 770 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
766 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 771 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
767 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 772 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
768 break; 773 break;
769 case SkXfermode::kSrcIn_Mode: 774 case SkXfermode::kSrcIn_Mode:
770 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 775 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
771 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 776 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
772 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 777 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
773 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 778 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
774 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 779 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
775 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 780 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
776 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 781 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
777 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 782 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
778 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 783 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
779 break; 784 break;
780 case SkXfermode::kDstIn_Mode: 785 case SkXfermode::kDstIn_Mode:
781 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 786 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
782 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 787 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
783 TEST_ASSERT((kSkipDraw_OptFlag | 788 TEST_ASSERT((kSkipDraw_OptFlag |
784 kIgnoreColor_OptFlag | 789 kIgnoreColor_OptFlag |
785 kIgnoreCoverage_OptFlag | 790 kIgnoreCoverage_OptFlag |
786 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 791 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
787 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 792 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
788 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 793 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
789 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 794 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
790 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 795 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
791 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 796 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
792 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor); 797 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
793 break; 798 break;
794 case SkXfermode::kSrcOut_Mode: 799 case SkXfermode::kSrcOut_Mode:
795 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 800 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
796 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 801 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
797 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 802 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
798 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 803 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
799 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 804 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
800 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 805 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
801 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 806 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
802 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 807 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
803 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 808 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
804 break; 809 break;
805 case SkXfermode::kDstOut_Mode: 810 case SkXfermode::kDstOut_Mode:
806 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 811 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
807 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 812 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
808 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 813 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
809 TEST_ASSERT((kIgnoreColor_OptFlag | 814 TEST_ASSERT((kIgnoreColor_OptFlag |
810 kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 815 kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
811 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType); 816 TEST_ASSERT(kNone_OutputType == xpi.fPrimaryOutputType);
812 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 817 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
813 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 818 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
814 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 819 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
815 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 820 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
816 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 821 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
817 break; 822 break;
818 case SkXfermode::kSrcATop_Mode: 823 case SkXfermode::kSrcATop_Mode:
819 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 824 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
820 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 825 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
821 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 826 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
822 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 827 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
823 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 828 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
824 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 829 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
825 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 830 TEST_ASSERT(kDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
826 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 831 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
827 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 832 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
828 break; 833 break;
829 case SkXfermode::kDstATop_Mode: 834 case SkXfermode::kDstATop_Mode:
830 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 835 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
831 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 836 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
832 TEST_ASSERT((kIgnoreCoverage_OptFlag | 837 TEST_ASSERT((kIgnoreCoverage_OptFlag |
833 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 838 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
834 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 839 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
835 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 840 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
836 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 841 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
837 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 842 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
838 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 843 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
839 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 844 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
840 break; 845 break;
841 case SkXfermode::kXor_Mode: 846 case SkXfermode::kXor_Mode:
842 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 847 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
843 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 848 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
844 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 849 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
845 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 850 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
846 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 851 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
847 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 852 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
848 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 853 TEST_ASSERT(kIDA_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
849 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 854 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
850 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 855 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
851 break; 856 break;
852 case SkXfermode::kPlus_Mode: 857 case SkXfermode::kPlus_Mode:
853 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 858 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
854 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 859 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
855 TEST_ASSERT((kIgnoreCoverage_OptFlag | 860 TEST_ASSERT((kIgnoreCoverage_OptFlag |
856 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 861 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
857 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 862 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
858 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 863 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
859 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 864 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
860 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 865 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
861 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 866 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
862 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 867 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
863 break; 868 break;
864 case SkXfermode::kModulate_Mode: 869 case SkXfermode::kModulate_Mode:
865 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 870 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
866 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 871 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
867 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags); 872 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
868 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 873 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
869 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 874 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
870 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 875 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
871 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 876 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
872 TEST_ASSERT(kSC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 877 TEST_ASSERT(kSC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
873 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 878 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
874 break; 879 break;
875 case SkXfermode::kScreen_Mode: 880 case SkXfermode::kScreen_Mode:
876 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 881 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
877 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 882 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKn ownColorFlags);
878 TEST_ASSERT((kIgnoreCoverage_OptFlag | 883 TEST_ASSERT((kIgnoreCoverage_OptFlag |
879 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags ); 884 kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags );
880 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType); 885 TEST_ASSERT(kModulate_OutputType == xpi.fPrimaryOutputType);
881 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType); 886 TEST_ASSERT(kNone_OutputType == xpi.fSecondaryOutputType);
882 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation); 887 TEST_ASSERT(kAdd_GrBlendEquation == xpi.fBlendInfo.fEquation);
883 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend); 888 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fSrcBlend);
884 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 889 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
885 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 890 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
886 break; 891 break;
887 default: 892 default:
(...skipping 30 matching lines...) Expand all
918 923
919 SkAutoTUnref<GrXPFactory> xpf(GrPorterDuffXPFactory::Create(SkXfermode::kSrc Over_Mode)); 924 SkAutoTUnref<GrXPFactory> xpf(GrPorterDuffXPFactory::Create(SkXfermode::kSrc Over_Mode));
920 TEST_ASSERT(!xpf->willNeedDstTexture(caps, colorPOI, covPOI)); 925 TEST_ASSERT(!xpf->willNeedDstTexture(caps, colorPOI, covPOI));
921 926
922 SkAutoTUnref<GrXferProcessor> xp(xpf->createXferProcessor(colorPOI, covPOI, 0, caps)); 927 SkAutoTUnref<GrXferProcessor> xp(xpf->createXferProcessor(colorPOI, covPOI, 0, caps));
923 if (!xp) { 928 if (!xp) {
924 ERRORF(reporter, "Failed to create an XP with LCD coverage."); 929 ERRORF(reporter, "Failed to create an XP with LCD coverage.");
925 return; 930 return;
926 } 931 }
927 932
928 GrXPFactory::InvariantOutput invariantOutput; 933 GrXPFactory::InvariantBlendedColor blendedColor;
929 xpf->getInvariantOutput(colorPOI, covPOI, &invariantOutput); 934 xpf->getInvariantBlendedColor(colorPOI, &blendedColor);
930 TEST_ASSERT(invariantOutput.fWillBlendWithDst); 935 TEST_ASSERT(blendedColor.fWillBlendWithDst);
931 TEST_ASSERT(kNone_GrColorComponentFlags == invariantOutput.fBlendedColorFlag s); 936 TEST_ASSERT(kNone_GrColorComponentFlags == blendedColor.fKnownColorFlags);
932 937
933 GrColor overrideColor; 938 GrColor overrideColor;
934 xp->getOptimizations(colorPOI, covPOI, false, &overrideColor, caps); 939 xp->getOptimizations(colorPOI, covPOI, false, &overrideColor, caps);
935 940
936 GrXferProcessor::BlendInfo blendInfo; 941 GrXferProcessor::BlendInfo blendInfo;
937 xp->getBlendInfo(&blendInfo); 942 xp->getBlendInfo(&blendInfo);
938 TEST_ASSERT(blendInfo.fWriteColor); 943 TEST_ASSERT(blendInfo.fWriteColor);
939 } 944 }
940 945
941 static void test_no_dual_source_blending(skiatest::Reporter* reporter) { 946 static void test_no_dual_source_blending(skiatest::Reporter* reporter) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 TEST_ASSERT(!xp->hasSecondaryOutput()); 1007 TEST_ASSERT(!xp->hasSecondaryOutput());
1003 xp->getOptimizations(colorPOI, covPOI, false, 0, caps); 1008 xp->getOptimizations(colorPOI, covPOI, false, 0, caps);
1004 TEST_ASSERT(!xp->hasSecondaryOutput()); 1009 TEST_ASSERT(!xp->hasSecondaryOutput());
1005 } 1010 }
1006 } 1011 }
1007 } 1012 }
1008 } 1013 }
1009 1014
1010 #endif 1015 #endif
1011 1016
OLDNEW
« no previous file with comments | « src/gpu/effects/GrPorterDuffXferProcessor.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698