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

Side by Side Diff: tests/GrPorterDuffTest.cpp

Issue 1149883004: Fix LCD coverage regression in GrPorterDuffXPFactory (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: clang warning 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"
13 #include "GrContextFactory.h" 14 #include "GrContextFactory.h"
14 #include "GrGpu.h" 15 #include "GrGpu.h"
15 #include "GrXferProcessor.h" 16 #include "GrXferProcessor.h"
16 #include "effects/GrPorterDuffXferProcessor.h" 17 #include "effects/GrPorterDuffXferProcessor.h"
17 18
18 //////////////////////////////////////////////////////////////////////////////// 19 ////////////////////////////////////////////////////////////////////////////////
19 20
20 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps); 21 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps);
21 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps); 22 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps);
22 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps); 23 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps);
23 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps); 24 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps);
24 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps); 25 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps);
25 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps); 26 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);
26 28
27 DEF_GPUTEST(GrPorterDuff, reporter, factory) { 29 DEF_GPUTEST(GrPorterDuff, reporter, factory) {
28 GrContext* ctx = factory->get(GrContextFactory::kNull_GLContextType); 30 GrContext* ctx = factory->get(GrContextFactory::kNull_GLContextType);
29 if (!ctx) { 31 if (!ctx) {
30 SkFAIL("Failed to create null context."); 32 SkFAIL("Failed to create null context.");
31 return; 33 return;
32 } 34 }
33 35
34 const GrCaps& caps = *ctx->getGpu()->caps(); 36 const GrCaps& caps = *ctx->getGpu()->caps();
35 if (!caps.shaderCaps()->dualSourceBlendingSupport()) { 37 if (!caps.shaderCaps()->dualSourceBlendingSupport()) {
36 SkFAIL("Null context does not support dual source blending."); 38 SkFAIL("Null context does not support dual source blending.");
37 return; 39 return;
38 } 40 }
39 41
40 test_alpha_unknown_with_coverage(reporter, caps); 42 test_alpha_unknown_with_coverage(reporter, caps);
41 test_alpha_unknown_no_coverage(reporter, caps); 43 test_alpha_unknown_no_coverage(reporter, caps);
42 test_alpha_opaque_with_coverage(reporter, caps); 44 test_alpha_opaque_with_coverage(reporter, caps);
43 test_alpha_opaque_no_coverage(reporter, caps); 45 test_alpha_opaque_no_coverage(reporter, caps);
44 test_color_white_with_coverage(reporter, caps); 46 test_color_white_with_coverage(reporter, caps);
45 test_color_white_with_coverage(reporter, caps); 47 test_color_white_with_coverage(reporter, caps);
46 test_color_white_no_coverage(reporter, caps); 48 test_color_white_no_coverage(reporter, caps);
49 test_lcd_coverage(reporter, caps);
47 } 50 }
48 51
49 //////////////////////////////////////////////////////////////////////////////// 52 ////////////////////////////////////////////////////////////////////////////////
50 53
51 #define TEST_ASSERT(...) REPORTER_ASSERT(reporter, __VA_ARGS__) 54 #define TEST_ASSERT(...) REPORTER_ASSERT(reporter, __VA_ARGS__)
52 55
53 enum { 56 enum {
54 kNone_OutputType, 57 kNone_OutputType,
55 kCoverage_OutputType, 58 kCoverage_OutputType,
56 kModulate_OutputType, 59 kModulate_OutputType,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 }; 96 };
94 97
95 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) { 98 static void test_alpha_unknown_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
96 GrProcOptInfo colorPOI, covPOI; 99 GrProcOptInfo colorPOI, covPOI;
97 colorPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, fals e); 100 colorPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, fals e);
98 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 101 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
99 102
100 SkASSERT(!colorPOI.isOpaque()); 103 SkASSERT(!colorPOI.isOpaque());
101 SkASSERT(!colorPOI.isSolidWhite()); 104 SkASSERT(!colorPOI.isSolidWhite());
102 SkASSERT(!covPOI.isSolidWhite()); 105 SkASSERT(!covPOI.isSolidWhite());
106 SkASSERT(!covPOI.isFourChannelOutput());
103 107
104 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 108 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
105 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 109 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
106 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 110 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
107 111
108 switch (xfermode) { 112 switch (xfermode) {
109 case SkXfermode::kClear_Mode: 113 case SkXfermode::kClear_Mode:
110 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 114 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst);
111 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 115 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
112 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 116 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 287
284 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps) { 288 static void test_alpha_unknown_no_coverage(skiatest::Reporter* reporter, const G rCaps& caps) {
285 GrProcOptInfo colorPOI, covPOI; 289 GrProcOptInfo colorPOI, covPOI;
286 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(229, 0, 154, 0), 290 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(229, 0, 154, 0),
287 kR_GrColorComponentFlag | kB_GrColorComponent Flag, false); 291 kR_GrColorComponentFlag | kB_GrColorComponent Flag, false);
288 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true); 292 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true);
289 293
290 SkASSERT(!colorPOI.isOpaque()); 294 SkASSERT(!colorPOI.isOpaque());
291 SkASSERT(!colorPOI.isSolidWhite()); 295 SkASSERT(!colorPOI.isSolidWhite());
292 SkASSERT(covPOI.isSolidWhite()); 296 SkASSERT(covPOI.isSolidWhite());
297 SkASSERT(!covPOI.isFourChannelOutput());
293 298
294 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 299 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
295 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 300 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
296 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 301 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
297 302
298 switch (xfermode) { 303 switch (xfermode) {
299 case SkXfermode::kClear_Mode: 304 case SkXfermode::kClear_Mode:
300 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 305 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst);
301 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 306 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor);
302 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 307 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 } 489 }
485 490
486 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) { 491 static void test_alpha_opaque_with_coverage(skiatest::Reporter* reporter, const GrCaps& caps) {
487 GrProcOptInfo colorPOI, covPOI; 492 GrProcOptInfo colorPOI, covPOI;
488 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kA_GrColorCompon entFlag, false); 493 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kA_GrColorCompon entFlag, false);
489 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 494 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
490 495
491 SkASSERT(colorPOI.isOpaque()); 496 SkASSERT(colorPOI.isOpaque());
492 SkASSERT(!colorPOI.isSolidWhite()); 497 SkASSERT(!colorPOI.isSolidWhite());
493 SkASSERT(!covPOI.isSolidWhite()); 498 SkASSERT(!covPOI.isSolidWhite());
499 SkASSERT(!covPOI.isFourChannelOutput());
494 500
495 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 501 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
496 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 502 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
497 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 503 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
498 504
499 switch (xfermode) { 505 switch (xfermode) {
500 case SkXfermode::kClear_Mode: 506 case SkXfermode::kClear_Mode:
501 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 507 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst);
502 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 508 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
503 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 509 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 683
678 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps) { 684 static void test_alpha_opaque_no_coverage(skiatest::Reporter* reporter, const Gr Caps& caps) {
679 GrProcOptInfo colorPOI, covPOI; 685 GrProcOptInfo colorPOI, covPOI;
680 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(0, 82, 0, 255), 686 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackRGBA(0, 82, 0, 255),
681 kG_GrColorComponentFlag | kA_GrColorComponent Flag, false); 687 kG_GrColorComponentFlag | kA_GrColorComponent Flag, false);
682 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true); 688 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true);
683 689
684 SkASSERT(colorPOI.isOpaque()); 690 SkASSERT(colorPOI.isOpaque());
685 SkASSERT(!colorPOI.isSolidWhite()); 691 SkASSERT(!colorPOI.isSolidWhite());
686 SkASSERT(covPOI.isSolidWhite()); 692 SkASSERT(covPOI.isSolidWhite());
693 SkASSERT(!covPOI.isFourChannelOutput());
687 694
688 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 695 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
689 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 696 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
690 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 697 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
691 698
692 switch (xfermode) { 699 switch (xfermode) {
693 case SkXfermode::kClear_Mode: 700 case SkXfermode::kClear_Mode:
694 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 701 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst);
695 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 702 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor);
696 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 703 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 } 890 }
884 891
885 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps) { 892 static void test_color_white_with_coverage(skiatest::Reporter* reporter, const G rCaps& caps) {
886 GrProcOptInfo colorPOI, covPOI; 893 GrProcOptInfo colorPOI, covPOI;
887 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false); 894 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false);
888 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true); 895 covPOI.calcWithInitialValues(NULL, 0, 0, kNone_GrColorComponentFlags, true);
889 896
890 SkASSERT(colorPOI.isOpaque()); 897 SkASSERT(colorPOI.isOpaque());
891 SkASSERT(colorPOI.isSolidWhite()); 898 SkASSERT(colorPOI.isSolidWhite());
892 SkASSERT(!covPOI.isSolidWhite()); 899 SkASSERT(!covPOI.isSolidWhite());
900 SkASSERT(!covPOI.isFourChannelOutput());
893 901
894 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 902 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
895 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 903 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
896 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 904 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
897 905
898 switch (xfermode) { 906 switch (xfermode) {
899 case SkXfermode::kClear_Mode: 907 case SkXfermode::kClear_Mode:
900 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst); 908 TEST_ASSERT(xpi.fInvariantOutput.fWillBlendWithDst);
901 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 909 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
902 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags); 910 TEST_ASSERT((kIgnoreColor_OptFlag) == xpi.fOptFlags);
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 } 1083 }
1076 1084
1077 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps) { 1085 static void test_color_white_no_coverage(skiatest::Reporter* reporter, const GrC aps& caps) {
1078 GrProcOptInfo colorPOI, covPOI; 1086 GrProcOptInfo colorPOI, covPOI;
1079 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false); 1087 colorPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCom ponentFlags, false);
1080 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true); 1088 covPOI.calcWithInitialValues(NULL, 0, GrColorPackA4(255), kRGBA_GrColorCompo nentFlags, true);
1081 1089
1082 SkASSERT(colorPOI.isOpaque()); 1090 SkASSERT(colorPOI.isOpaque());
1083 SkASSERT(colorPOI.isSolidWhite()); 1091 SkASSERT(colorPOI.isSolidWhite());
1084 SkASSERT(covPOI.isSolidWhite()); 1092 SkASSERT(covPOI.isSolidWhite());
1093 SkASSERT(!covPOI.isFourChannelOutput());
1085 1094
1086 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) { 1095 for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
1087 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m); 1096 SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
1088 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI); 1097 const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, colorPOI, c ovPOI);
1089 1098
1090 switch (xfermode) { 1099 switch (xfermode) {
1091 case SkXfermode::kClear_Mode: 1100 case SkXfermode::kClear_Mode:
1092 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst); 1101 TEST_ASSERT(!xpi.fInvariantOutput.fWillBlendWithDst);
1093 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor); 1102 TEST_ASSERT(0 == xpi.fInvariantOutput.fBlendedColor);
1094 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags); 1103 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fInvariantOutput. fBlendedColorFlags);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1269 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend); 1278 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
1270 TEST_ASSERT(xpi.fBlendInfo.fWriteColor); 1279 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
1271 break; 1280 break;
1272 default: 1281 default:
1273 ERRORF(reporter, "Invalid xfermode."); 1282 ERRORF(reporter, "Invalid xfermode.");
1274 break; 1283 break;
1275 } 1284 }
1276 } 1285 }
1277 } 1286 }
1278 1287
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
1279 #endif 1335 #endif
1280 1336
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