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

Side by Side Diff: src/gpu/GrOvalRenderer.cpp

Issue 1467553002: New API for computing optimization invariants. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "GrOvalRenderer.h" 8 #include "GrOvalRenderer.h"
9 9
10 #include "GrBatchFlushState.h" 10 #include "GrBatchFlushState.h"
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 fGeoData[i].fColor, 660 fGeoData[i].fColor,
661 fGeoData[i].fDevBounds.fLeft, fGeoData[i].fDevBounds. fTop, 661 fGeoData[i].fDevBounds.fLeft, fGeoData[i].fDevBounds. fTop,
662 fGeoData[i].fDevBounds.fRight, fGeoData[i].fDevBounds .fBottom, 662 fGeoData[i].fDevBounds.fRight, fGeoData[i].fDevBounds .fBottom,
663 fGeoData[i].fInnerRadius, 663 fGeoData[i].fInnerRadius,
664 fGeoData[i].fOuterRadius); 664 fGeoData[i].fOuterRadius);
665 } 665 }
666 string.append(INHERITED::dumpInfo()); 666 string.append(INHERITED::dumpInfo());
667 return string; 667 return string;
668 } 668 }
669 669
670 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { 670 void computeBatchToXPOverrides(GrInitInvariantOutput* color, GrInitInvariant Output* coverage,
671 bool* usePLSDstRead) const override {
671 // When this is called on a batch, there is only one geometry bundle 672 // When this is called on a batch, there is only one geometry bundle
672 out->setKnownFourComponents(fGeoData[0].fColor); 673 color->setKnownFourComponents(fGeoData[0].fColor);
673 } 674 coverage->setUnknownSingleComponent();
674 675 *usePLSDstRead = false;
675 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
676 out->setUnknownSingleComponent();
677 } 676 }
678 677
679 private: 678 private:
680 void initBatchTracker(const GrPipelineOptimizations& opt) override { 679 void initBatchTracker(const GrPipelineOptimizations& opt) override {
681 // Handle any color overrides 680 // Handle any color overrides
682 if (!opt.readsColor()) { 681 if (!opt.readsColor()) {
683 fGeoData[0].fColor = GrColor_ILLEGAL; 682 fGeoData[0].fColor = GrColor_ILLEGAL;
684 } 683 }
685 opt.getOverrideColorIfSet(&fGeoData[0].fColor); 684 opt.getOverrideColorIfSet(&fGeoData[0].fColor);
686 685
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 SkScalar fInnerXRadius; 879 SkScalar fInnerXRadius;
881 SkScalar fInnerYRadius; 880 SkScalar fInnerYRadius;
882 GrColor fColor; 881 GrColor fColor;
883 bool fStroke; 882 bool fStroke;
884 }; 883 };
885 884
886 static GrDrawBatch* Create(const Geometry& geometry) { return new EllipseBat ch(geometry); } 885 static GrDrawBatch* Create(const Geometry& geometry) { return new EllipseBat ch(geometry); }
887 886
888 const char* name() const override { return "EllipseBatch"; } 887 const char* name() const override { return "EllipseBatch"; }
889 888
890 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { 889 void computeBatchToXPOverrides(GrInitInvariantOutput* color, GrInitInvariant Output* coverage,
890 bool* usePLSDstRead) const {
891 // When this is called on a batch, there is only one geometry bundle 891 // When this is called on a batch, there is only one geometry bundle
892 out->setKnownFourComponents(fGeoData[0].fColor); 892 color->setKnownFourComponents(fGeoData[0].fColor);
893 } 893 coverage->setUnknownSingleComponent();
894 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { 894 *usePLSDstRead = false;
895 out->setUnknownSingleComponent();
896 } 895 }
897 896
898 private: 897 private:
899 void initBatchTracker(const GrPipelineOptimizations& opt) override { 898 void initBatchTracker(const GrPipelineOptimizations& opt) override {
900 // Handle any color overrides 899 // Handle any color overrides
901 if (!opt.readsCoverage()) { 900 if (!opt.readsCoverage()) {
902 fGeoData[0].fColor = GrColor_ILLEGAL; 901 fGeoData[0].fColor = GrColor_ILLEGAL;
903 } 902 }
904 opt.getOverrideColorIfSet(&fGeoData[0].fColor); 903 opt.getOverrideColorIfSet(&fGeoData[0].fColor);
905 904
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 GrColor fColor; 1150 GrColor fColor;
1152 DIEllipseEdgeEffect::Mode fMode; 1151 DIEllipseEdgeEffect::Mode fMode;
1153 }; 1152 };
1154 1153
1155 static GrDrawBatch* Create(const Geometry& geometry, const SkRect& bounds) { 1154 static GrDrawBatch* Create(const Geometry& geometry, const SkRect& bounds) {
1156 return new DIEllipseBatch(geometry, bounds); 1155 return new DIEllipseBatch(geometry, bounds);
1157 } 1156 }
1158 1157
1159 const char* name() const override { return "DIEllipseBatch"; } 1158 const char* name() const override { return "DIEllipseBatch"; }
1160 1159
1161 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { 1160 void computeBatchToXPOverrides(GrInitInvariantOutput* color, GrInitInvariant Output* coverage,
1161 bool* usePLSDstRead) const {
1162 // When this is called on a batch, there is only one geometry bundle 1162 // When this is called on a batch, there is only one geometry bundle
1163 out->setKnownFourComponents(fGeoData[0].fColor); 1163 color->setKnownFourComponents(fGeoData[0].fColor);
1164 } 1164 coverage->setUnknownSingleComponent();
1165 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { 1165 *usePLSDstRead = false;
1166 out->setUnknownSingleComponent();
1167 } 1166 }
1168 1167
1169 private: 1168 private:
1170 1169
1171 void initBatchTracker(const GrPipelineOptimizations& opt) override { 1170 void initBatchTracker(const GrPipelineOptimizations& opt) override {
1172 // Handle any color overrides 1171 // Handle any color overrides
1173 if (!opt.readsColor()) { 1172 if (!opt.readsColor()) {
1174 fGeoData[0].fColor = GrColor_ILLEGAL; 1173 fGeoData[0].fColor = GrColor_ILLEGAL;
1175 } 1174 }
1176 opt.getOverrideColorIfSet(&fGeoData[0].fColor); 1175 opt.getOverrideColorIfSet(&fGeoData[0].fColor);
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 GrColor fColor; 1505 GrColor fColor;
1507 bool fStroke; 1506 bool fStroke;
1508 }; 1507 };
1509 1508
1510 static GrDrawBatch* Create(const Geometry& geometry) { 1509 static GrDrawBatch* Create(const Geometry& geometry) {
1511 return new RRectCircleRendererBatch(geometry); 1510 return new RRectCircleRendererBatch(geometry);
1512 } 1511 }
1513 1512
1514 const char* name() const override { return "RRectCircleBatch"; } 1513 const char* name() const override { return "RRectCircleBatch"; }
1515 1514
1516 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { 1515 void computeBatchToXPOverrides(GrInitInvariantOutput* color, GrInitInvariant Output* coverage,
1516 bool* usePLSDstRead) const {
1517 // When this is called on a batch, there is only one geometry bundle 1517 // When this is called on a batch, there is only one geometry bundle
1518 out->setKnownFourComponents(fGeoData[0].fColor); 1518 color->setKnownFourComponents(fGeoData[0].fColor);
1519 } 1519 coverage->setUnknownSingleComponent();
1520 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { 1520 *usePLSDstRead = false;
1521 out->setUnknownSingleComponent();
1522 } 1521 }
1523 1522
1524 private: 1523 private:
1525 void initBatchTracker(const GrPipelineOptimizations& opt) override { 1524 void initBatchTracker(const GrPipelineOptimizations& opt) override {
1526 // Handle any color overrides 1525 // Handle any color overrides
1527 if (!opt.readsColor()) { 1526 if (!opt.readsColor()) {
1528 fGeoData[0].fColor = GrColor_ILLEGAL; 1527 fGeoData[0].fColor = GrColor_ILLEGAL;
1529 } 1528 }
1530 opt.getOverrideColorIfSet(&fGeoData[0].fColor); 1529 opt.getOverrideColorIfSet(&fGeoData[0].fColor);
1531 1530
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1685 GrColor fColor; 1684 GrColor fColor;
1686 bool fStroke; 1685 bool fStroke;
1687 }; 1686 };
1688 1687
1689 static GrDrawBatch* Create(const Geometry& geometry) { 1688 static GrDrawBatch* Create(const Geometry& geometry) {
1690 return new RRectEllipseRendererBatch(geometry); 1689 return new RRectEllipseRendererBatch(geometry);
1691 } 1690 }
1692 1691
1693 const char* name() const override { return "RRectEllipseRendererBatch"; } 1692 const char* name() const override { return "RRectEllipseRendererBatch"; }
1694 1693
1695 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { 1694 void computeBatchToXPOverrides(GrInitInvariantOutput* color, GrInitInvariant Output* coverage,
1695 bool* usePLSDstRead) const {
1696 // When this is called on a batch, there is only one geometry bundle 1696 // When this is called on a batch, there is only one geometry bundle
1697 out->setKnownFourComponents(fGeoData[0].fColor); 1697 color->setKnownFourComponents(fGeoData[0].fColor);
1698 } 1698 coverage->setUnknownSingleComponent();
1699 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { 1699 *usePLSDstRead = false;
1700 out->setUnknownSingleComponent();
1701 } 1700 }
1702 1701
1703 private: 1702 private:
1704 void initBatchTracker(const GrPipelineOptimizations& opt) override { 1703 void initBatchTracker(const GrPipelineOptimizations& opt) override {
1705 // Handle any color overrides 1704 // Handle any color overrides
1706 if (!opt.readsColor()) { 1705 if (!opt.readsColor()) {
1707 fGeoData[0].fColor = GrColor_ILLEGAL; 1706 fGeoData[0].fColor = GrColor_ILLEGAL;
1708 } 1707 }
1709 opt.getOverrideColorIfSet(&fGeoData[0].fColor); 1708 opt.getOverrideColorIfSet(&fGeoData[0].fColor);
1710 1709
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
2073 } 2072 }
2074 2073
2075 DRAW_BATCH_TEST_DEFINE(RRectBatch) { 2074 DRAW_BATCH_TEST_DEFINE(RRectBatch) {
2076 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); 2075 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random);
2077 GrColor color = GrRandomColor(random); 2076 GrColor color = GrRandomColor(random);
2078 const SkRRect& rrect = GrTest::TestRRectSimple(random); 2077 const SkRRect& rrect = GrTest::TestRRectSimple(random);
2079 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra ndom)); 2078 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra ndom));
2080 } 2079 }
2081 2080
2082 #endif 2081 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698