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

Side by Side Diff: tests/GrPorterDuffTest.cpp

Issue 1153803005: Revert of Fix LCD coverage regression in GrPorterDuffXPFactory (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 7 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
11 #if SK_SUPPORT_GPU 11 #if SK_SUPPORT_GPU
12 12
13 #include "GrBatch.h"
14 #include "GrContextFactory.h" 13 #include "GrContextFactory.h"
15 #include "GrGpu.h" 14 #include "GrGpu.h"
16 #include "GrXferProcessor.h" 15 #include "GrXferProcessor.h"
17 #include "effects/GrPorterDuffXferProcessor.h" 16 #include "effects/GrPorterDuffXferProcessor.h"
18 17
19 //////////////////////////////////////////////////////////////////////////////// 18 ////////////////////////////////////////////////////////////////////////////////
20 19
21 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps); 20 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps);
22 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps); 21 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps);
23 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps); 22 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps);
24 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps); 23 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps);
25 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps); 24 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps);
26 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps); 25 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps);
27 static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps);
28 26
29 DEF_GPUTEST(GrPorterDuff, reporter, factory) { 27 DEF_GPUTEST(GrPorterDuff, reporter, factory) {
30 GrContext* ctx = factory->get(GrContextFactory::kNull_GLContextType); 28 GrContext* ctx = factory->get(GrContextFactory::kNull_GLContextType);
31 if (!ctx) { 29 if (!ctx) {
32 SkFAIL("Failed to create null context."); 30 SkFAIL("Failed to create null context.");
33 return; 31 return;
34 } 32 }
35 33
36 const GrCaps& caps = *ctx->getGpu()->caps(); 34 const GrCaps& caps = *ctx->getGpu()->caps();
37 if (!caps.shaderCaps()->dualSourceBlendingSupport()) { 35 if (!caps.shaderCaps()->dualSourceBlendingSupport()) {
38 SkFAIL("Null context does not support dual source blending."); 36 SkFAIL("Null context does not support dual source blending.");
39 return; 37 return;
40 } 38 }
41 39
42 test_alpha_unknown_with_coverage(reporter, caps); 40 test_alpha_unknown_with_coverage(reporter, caps);
43 test_alpha_unknown_no_coverage(reporter, caps); 41 test_alpha_unknown_no_coverage(reporter, caps);
44 test_alpha_opaque_with_coverage(reporter, caps); 42 test_alpha_opaque_with_coverage(reporter, caps);
45 test_alpha_opaque_no_coverage(reporter, caps); 43 test_alpha_opaque_no_coverage(reporter, caps);
46 test_color_white_with_coverage(reporter, caps); 44 test_color_white_with_coverage(reporter, caps);
47 test_color_white_with_coverage(reporter, caps); 45 test_color_white_with_coverage(reporter, caps);
48 test_color_white_no_coverage(reporter, caps); 46 test_color_white_no_coverage(reporter, caps);
49 test_lcd_coverage(reporter, caps);
50 } 47 }
51 48
52 //////////////////////////////////////////////////////////////////////////////// 49 ////////////////////////////////////////////////////////////////////////////////
53 50
54 #define TEST_ASSERT(...) REPORTER_ASSERT(reporter, __VA_ARGS__) 51 #define TEST_ASSERT(...) REPORTER_ASSERT(reporter, __VA_ARGS__)
55 52
56 enum { 53 enum {
57 kNone_OutputType, 54 kNone_OutputType,
58 kCoverage_OutputType, 55 kCoverage_OutputType,
59 kModulate_OutputType, 56 kModulate_OutputType,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 }; 93 };
97 94
98 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) { 95 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
99 GrProcOptInfo colorPOI, covPOI; 96 GrProcOptInfo colorPOI, covPOI;
100 colorPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, fals e); 97 colorPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, fals e);
101 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 98 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
102 99
103 SkASSERT(!colorPOI.isOpaque()); 100 SkASSERT(!colorPOI.isOpaque());
104 SkASSERT(!colorPOI.isSolidWhite()); 101 SkASSERT(!colorPOI.isSolidWhite());
105 SkASSERT(!covPOI.isSolidWhite()); 102 SkASSERT(!covPOI.isSolidWhite());
106 SkASSERT(!covPOI.isFourChannelOutput());
107 103
108 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 104 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
109 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 105 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
110 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 106 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
111 107
112 switch (xfermode) { 108 switch (xfermode) {
113 case SkXfermode::kClear_Mode: 109 case SkXfermode::kClear_Mode:
114 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 110 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst);
115 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 111 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
116 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 112 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 283
288 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps) { 284 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps) {
289 GrProcOptInfo colorPOI, covPOI; 285 GrProcOptInfo colorPOI, covPOI;
290 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(229, 0, 154, 0), 286 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(229, 0, 154, 0),
291 kR_GrColorComponentFlag | kB_GrColorComponent Flag, false); 287 kR_GrColorComponentFlag | kB_GrColorComponent Flag, false);
292 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true); 288 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true);
293 289
294 SkASSERT(!colorPOI.isOpaque()); 290 SkASSERT(!colorPOI.isOpaque());
295 SkASSERT(!colorPOI.isSolidWhite()); 291 SkASSERT(!colorPOI.isSolidWhite());
296 SkASSERT(covPOI.isSolidWhite()); 292 SkASSERT(covPOI.isSolidWhite());
297 SkASSERT(!covPOI.isFourChannelOutput());
298 293
299 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 294 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
300 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 295 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
301 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 296 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
302 297
303 switch (xfermode) { 298 switch (xfermode) {
304 case SkXfermode::kClear_Mode: 299 case SkXfermode::kClear_Mode:
305 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 300 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst);
306 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 301 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor);
307 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 302 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 } 484 }
490 485
491 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) { 486 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
492 GrProcOptInfo colorPOI, covPOI; 487 GrProcOptInfo colorPOI, covPOI;
493 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kA_GrColorCompon entFlag, false); 488 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kA_GrColorCompon entFlag, false);
494 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 489 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
495 490
496 SkASSERT(colorPOI.isOpaque()); 491 SkASSERT(colorPOI.isOpaque());
497 SkASSERT(!colorPOI.isSolidWhite()); 492 SkASSERT(!colorPOI.isSolidWhite());
498 SkASSERT(!covPOI.isSolidWhite()); 493 SkASSERT(!covPOI.isSolidWhite());
499 SkASSERT(!covPOI.isFourChannelOutput());
500 494
501 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 495 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
502 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 496 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
503 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 497 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
504 498
505 switch (xfermode) { 499 switch (xfermode) {
506 case SkXfermode::kClear_Mode: 500 case SkXfermode::kClear_Mode:
507 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 501 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst);
508 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 502 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
509 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 503 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 677
684 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps) { 678 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps) {
685 GrProcOptInfo colorPOI, covPOI; 679 GrProcOptInfo colorPOI, covPOI;
686 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(0, 82, 0, 255), 680 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(0, 82, 0, 255),
687 kG_GrColorComponentFlag | kA_GrColorComponent Flag, false); 681 kG_GrColorComponentFlag | kA_GrColorComponent Flag, false);
688 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true); 682 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true);
689 683
690 SkASSERT(colorPOI.isOpaque()); 684 SkASSERT(colorPOI.isOpaque());
691 SkASSERT(!colorPOI.isSolidWhite()); 685 SkASSERT(!colorPOI.isSolidWhite());
692 SkASSERT(covPOI.isSolidWhite()); 686 SkASSERT(covPOI.isSolidWhite());
693 SkASSERT(!covPOI.isFourChannelOutput());
694 687
695 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 688 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
696 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 689 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
697 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 690 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
698 691
699 switch (xfermode) { 692 switch (xfermode) {
700 case SkXfermode::kClear_Mode: 693 case SkXfermode::kClear_Mode:
701 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 694 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst);
702 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 695 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor);
703 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 696 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 } 883 }
891 884
892 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps) { 885 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps) {
893 GrProcOptInfo colorPOI, covPOI; 886 GrProcOptInfo colorPOI, covPOI;
894 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false); 887 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false);
895 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 888 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
896 889
897 SkASSERT(colorPOI.isOpaque()); 890 SkASSERT(colorPOI.isOpaque());
898 SkASSERT(colorPOI.isSolidWhite()); 891 SkASSERT(colorPOI.isSolidWhite());
899 SkASSERT(!covPOI.isSolidWhite()); 892 SkASSERT(!covPOI.isSolidWhite());
900 SkASSERT(!covPOI.isFourChannelOutput());
901 893
902 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 894 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
903 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 895 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
904 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 896 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
905 897
906 switch (xfermode) { 898 switch (xfermode) {
907 case SkXfermode::kClear_Mode: 899 case SkXfermode::kClear_Mode:
908 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 900 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst);
909 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 901 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
910 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 902 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 } 1075 }
1084 1076
1085 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps) { 1077 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps) {
1086 GrProcOptInfo colorPOI, covPOI; 1078 GrProcOptInfo colorPOI, covPOI;
1087 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false); 1079 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false);
1088 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true); 1080 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true);
1089 1081
1090 SkASSERT(colorPOI.isOpaque()); 1082 SkASSERT(colorPOI.isOpaque());
1091 SkASSERT(colorPOI.isSolidWhite()); 1083 SkASSERT(colorPOI.isSolidWhite());
1092 SkASSERT(covPOI.isSolidWhite()); 1084 SkASSERT(covPOI.isSolidWhite());
1093 SkASSERT(!covPOI.isFourChannelOutput());
1094 1085
1095 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 1086 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
1096 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 1087 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
1097 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 1088 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
1098 1089
1099 switch (xfermode) { 1090 switch (xfermode) {
1100 case SkXfermode::kClear_Mode: 1091 case SkXfermode::kClear_Mode:
1101 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 1092 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst);
1102 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 1093 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor);
1103 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 1094 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 1269 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
1279 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 1270 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
1280 break; 1271 break;
1281 default: 1272 default:
1282 ERRORF(reporter, "Invalid xfermode."); 1273 ERRORF(reporter, "Invalid xfermode.");
1283 break; 1274 break;
1284 } 1275 }
1285 } 1276 }
1286 } 1277 }
1287 1278
1288 static void test_lcd_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
1289 class : public GrBatch {
1290 void getInvariantOutputColor(GrInitInvariantOutput* out) const override {
1291 out->setKnownFourComponents(GrColorPackRGBA(123, 45, 67, 221));
1292 }
1293
1294 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const overri de {
1295 out->setUnknownFourComponents();
1296 out->setUsingLCDCoverage();
1297 }
1298
1299 const char* name() const override { return "Test LCD Text Batch"; }
1300 void initBatchTracker(const GrPipelineInfo&) override {}
1301 bool onCombineIfPossible(GrBatch*) override { return false; }
1302 void generateGeometry(GrBatchTarget*, const GrPipeline*) override {}
1303
1304 } testLCDCoverageBatch;
1305
1306 GrProcOptInfo colorPOI, covPOI;
1307 colorPOI.calcColorWithBatch(&testLCDCoverageBatch, NULL, 0);
1308 covPOI.calcCoverageWithBatch(&testLCDCoverageBatch, NULL, 0);
1309
1310 SkASSERT(kRGBA_GrColorComponentFlags == colorPOI.validFlags());
1311 SkASSERT(covPOI.isFourChannelOutput());
1312
1313 SkAutoTUnref<GrXPFactory> xpf(GrPorterDuffXPFactory::Create(SkXfermode::kSrc Over_Mode));
1314 TEST_ASSERT(!xpf->willNeedDstCopy(caps, colorPOI, covPOI));
1315
1316 GrXPFactory::InvariantOutput invariantOutput;
1317 xpf->getInvariantOutput(colorPOI, covPOI, &invariantOutput);
1318 TEST_ASSERT(invariantOutput.fWillBlendWithDst);
1319 TEST_ASSERT(kNone_GrColorComponentFlags == invariantOutput.fBlendedColorFlag s);
1320
1321 SkAutoTUnref<GrXferProcessor> xp(xpf->createXferProcessor(colorPOI, covPOI, 0, caps));
1322 if (!xp) {
1323 ERRORF(reporter, "Failed to create an XP with LCD coverage.");
1324 return;
1325 }
1326
1327 GrColor overrideColor;
1328 xp->getOptimizations(colorPOI, covPOI, false, &overrideColor, caps);
1329
1330 GrXferProcessor::BlendInfo blendInfo;
1331 xp->getBlendInfo(&blendInfo);
1332 TEST_ASSERT(blendInfo.fWriteColor);
1333 }
1334
1335 #endif 1279 #endif
1336 1280
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