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

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

Issue 1121463002: Move bounds to GrBatch (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: tweak 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/GrInOrderDrawBuffer.cpp ('k') | src/gpu/GrTargetCommands.h » ('j') | 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 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 "GrBatch.h" 10 #include "GrBatch.h"
(...skipping 818 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 instanceCount -= drawInfo.instanceCount(); 829 instanceCount -= drawInfo.instanceCount();
830 } 830 }
831 } 831 }
832 832
833 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 833 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
834 834
835 private: 835 private:
836 CircleBatch(const Geometry& geometry) { 836 CircleBatch(const Geometry& geometry) {
837 this->initClassID<CircleBatch>(); 837 this->initClassID<CircleBatch>();
838 fGeoData.push_back(geometry); 838 fGeoData.push_back(geometry);
839
840 this->setBounds(geometry.fDevBounds);
839 } 841 }
840 842
841 bool onCombineIfPossible(GrBatch* t) override { 843 bool onCombineIfPossible(GrBatch* t) override {
842 CircleBatch* that = t->cast<CircleBatch>(); 844 CircleBatch* that = t->cast<CircleBatch>();
843 845
844 // TODO use vertex color to avoid breaking batches 846 // TODO use vertex color to avoid breaking batches
845 if (this->color() != that->color()) { 847 if (this->color() != that->color()) {
846 return false; 848 return false;
847 } 849 }
848 850
849 if (this->stroke() != that->stroke()) { 851 if (this->stroke() != that->stroke()) {
850 return false; 852 return false;
851 } 853 }
852 854
853 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 855 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
854 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 856 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
855 return false; 857 return false;
856 } 858 }
857 859
858 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 860 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
861 this->joinBounds(that->bounds());
859 return true; 862 return true;
860 } 863 }
861 864
862 GrColor color() const { return fBatch.fColor; } 865 GrColor color() const { return fBatch.fColor; }
863 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 866 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
864 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 867 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
865 bool stroke() const { return fBatch.fStroke; } 868 bool stroke() const { return fBatch.fStroke; }
866 869
867 struct BatchTracker { 870 struct BatchTracker {
868 GrColor fColor; 871 GrColor fColor;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 void GrOvalRenderer::drawCircle(GrDrawTarget* target, 938 void GrOvalRenderer::drawCircle(GrDrawTarget* target,
936 GrPipelineBuilder* pipelineBuilder, 939 GrPipelineBuilder* pipelineBuilder,
937 GrColor color, 940 GrColor color,
938 const SkMatrix& viewMatrix, 941 const SkMatrix& viewMatrix,
939 bool useCoverageAA, 942 bool useCoverageAA,
940 const SkRect& circle, 943 const SkRect& circle,
941 const SkStrokeRec& stroke) { 944 const SkStrokeRec& stroke) {
942 SkRect bounds; 945 SkRect bounds;
943 SkAutoTUnref<GrBatch> batch(create_circle_batch(color, viewMatrix, useCovera geAA, circle, 946 SkAutoTUnref<GrBatch> batch(create_circle_batch(color, viewMatrix, useCovera geAA, circle,
944 stroke, &bounds)); 947 stroke, &bounds));
945 target->drawBatch(pipelineBuilder, batch, &bounds); 948 target->drawBatch(pipelineBuilder, batch);
946 } 949 }
947 950
948 /////////////////////////////////////////////////////////////////////////////// 951 ///////////////////////////////////////////////////////////////////////////////
949 952
950 class EllipseBatch : public GrBatch { 953 class EllipseBatch : public GrBatch {
951 public: 954 public:
952 struct Geometry { 955 struct Geometry {
953 GrColor fColor; 956 GrColor fColor;
954 SkMatrix fViewMatrix; 957 SkMatrix fViewMatrix;
955 SkScalar fXRadius; 958 SkScalar fXRadius;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 instanceCount -= drawInfo.instanceCount(); 1099 instanceCount -= drawInfo.instanceCount();
1097 } 1100 }
1098 } 1101 }
1099 1102
1100 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 1103 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
1101 1104
1102 private: 1105 private:
1103 EllipseBatch(const Geometry& geometry) { 1106 EllipseBatch(const Geometry& geometry) {
1104 this->initClassID<EllipseBatch>(); 1107 this->initClassID<EllipseBatch>();
1105 fGeoData.push_back(geometry); 1108 fGeoData.push_back(geometry);
1109
1110 this->setBounds(geometry.fDevBounds);
1106 } 1111 }
1107 1112
1108 bool onCombineIfPossible(GrBatch* t) override { 1113 bool onCombineIfPossible(GrBatch* t) override {
1109 EllipseBatch* that = t->cast<EllipseBatch>(); 1114 EllipseBatch* that = t->cast<EllipseBatch>();
1110 1115
1111 // TODO use vertex color to avoid breaking batches 1116 // TODO use vertex color to avoid breaking batches
1112 if (this->color() != that->color()) { 1117 if (this->color() != that->color()) {
1113 return false; 1118 return false;
1114 } 1119 }
1115 1120
1116 if (this->stroke() != that->stroke()) { 1121 if (this->stroke() != that->stroke()) {
1117 return false; 1122 return false;
1118 } 1123 }
1119 1124
1120 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 1125 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
1121 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 1126 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
1122 return false; 1127 return false;
1123 } 1128 }
1124 1129
1125 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 1130 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
1131 this->joinBounds(that->bounds());
1126 return true; 1132 return true;
1127 } 1133 }
1128 1134
1129 GrColor color() const { return fBatch.fColor; } 1135 GrColor color() const { return fBatch.fColor; }
1130 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 1136 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
1131 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 1137 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
1132 bool stroke() const { return fBatch.fStroke; } 1138 bool stroke() const { return fBatch.fStroke; }
1133 1139
1134 struct BatchTracker { 1140 struct BatchTracker {
1135 GrColor fColor; 1141 GrColor fColor;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1243 bool useCoverageAA, 1249 bool useCoverageAA,
1244 const SkRect& ellipse, 1250 const SkRect& ellipse,
1245 const SkStrokeRec& stroke) { 1251 const SkStrokeRec& stroke) {
1246 SkRect bounds; 1252 SkRect bounds;
1247 SkAutoTUnref<GrBatch> batch(create_ellipse_batch(color, viewMatrix, useCover ageAA, ellipse, 1253 SkAutoTUnref<GrBatch> batch(create_ellipse_batch(color, viewMatrix, useCover ageAA, ellipse,
1248 stroke, &bounds)); 1254 stroke, &bounds));
1249 if (!batch) { 1255 if (!batch) {
1250 return false; 1256 return false;
1251 } 1257 }
1252 1258
1253 target->drawBatch(pipelineBuilder, batch, &bounds); 1259 target->drawBatch(pipelineBuilder, batch);
1254 return true; 1260 return true;
1255 } 1261 }
1256 1262
1257 //////////////////////////////////////////////////////////////////////////////// ///////////////// 1263 //////////////////////////////////////////////////////////////////////////////// /////////////////
1258 1264
1259 class DIEllipseBatch : public GrBatch { 1265 class DIEllipseBatch : public GrBatch {
1260 public: 1266 public:
1261 struct Geometry { 1267 struct Geometry {
1262 GrColor fColor; 1268 GrColor fColor;
1263 SkMatrix fViewMatrix; 1269 SkMatrix fViewMatrix;
1264 SkScalar fXRadius; 1270 SkScalar fXRadius;
1265 SkScalar fYRadius; 1271 SkScalar fYRadius;
1266 SkScalar fInnerXRadius; 1272 SkScalar fInnerXRadius;
1267 SkScalar fInnerYRadius; 1273 SkScalar fInnerYRadius;
1268 SkScalar fGeoDx; 1274 SkScalar fGeoDx;
1269 SkScalar fGeoDy; 1275 SkScalar fGeoDy;
1270 DIEllipseEdgeEffect::Mode fMode; 1276 DIEllipseEdgeEffect::Mode fMode;
1271 SkRect fBounds; 1277 SkRect fBounds;
1272 }; 1278 };
1273 1279
1274 static GrBatch* Create(const Geometry& geometry) { 1280 static GrBatch* Create(const Geometry& geometry, const SkRect& bounds) {
1275 return SkNEW_ARGS(DIEllipseBatch, (geometry)); 1281 return SkNEW_ARGS(DIEllipseBatch, (geometry, bounds));
1276 } 1282 }
1277 1283
1278 const char* name() const override { return "DIEllipseBatch"; } 1284 const char* name() const override { return "DIEllipseBatch"; }
1279 1285
1280 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { 1286 void getInvariantOutputColor(GrInitInvariantOutput* out) const override {
1281 // When this is called on a batch, there is only one geometry bundle 1287 // When this is called on a batch, there is only one geometry bundle
1282 out->setKnownFourComponents(fGeoData[0].fColor); 1288 out->setKnownFourComponents(fGeoData[0].fColor);
1283 } 1289 }
1284 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { 1290 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override {
1285 out->setUnknownSingleComponent(); 1291 out->setUnknownSingleComponent();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 batchTarget->draw(drawInfo); 1401 batchTarget->draw(drawInfo);
1396 1402
1397 drawInfo.setStartVertex(drawInfo.startVertex() + drawInfo.vertexCoun t()); 1403 drawInfo.setStartVertex(drawInfo.startVertex() + drawInfo.vertexCoun t());
1398 instanceCount -= drawInfo.instanceCount(); 1404 instanceCount -= drawInfo.instanceCount();
1399 } 1405 }
1400 } 1406 }
1401 1407
1402 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 1408 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
1403 1409
1404 private: 1410 private:
1405 DIEllipseBatch(const Geometry& geometry) { 1411 DIEllipseBatch(const Geometry& geometry, const SkRect& bounds) {
1406 this->initClassID<DIEllipseBatch>(); 1412 this->initClassID<DIEllipseBatch>();
1407 fGeoData.push_back(geometry); 1413 fGeoData.push_back(geometry);
1414
1415 this->setBounds(bounds);
1408 } 1416 }
1409 1417
1410 bool onCombineIfPossible(GrBatch* t) override { 1418 bool onCombineIfPossible(GrBatch* t) override {
1411 DIEllipseBatch* that = t->cast<DIEllipseBatch>(); 1419 DIEllipseBatch* that = t->cast<DIEllipseBatch>();
1412 1420
1413 // TODO use vertex color to avoid breaking batches 1421 // TODO use vertex color to avoid breaking batches
1414 if (this->color() != that->color()) { 1422 if (this->color() != that->color()) {
1415 return false; 1423 return false;
1416 } 1424 }
1417 1425
1418 if (this->mode() != that->mode()) { 1426 if (this->mode() != that->mode()) {
1419 return false; 1427 return false;
1420 } 1428 }
1421 1429
1422 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 1430 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
1423 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 1431 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
1424 return false; 1432 return false;
1425 } 1433 }
1426 1434
1427 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 1435 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
1436 this->joinBounds(that->bounds());
1428 return true; 1437 return true;
1429 } 1438 }
1430 1439
1431 GrColor color() const { return fBatch.fColor; } 1440 GrColor color() const { return fBatch.fColor; }
1432 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 1441 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
1433 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 1442 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
1434 DIEllipseEdgeEffect::Mode mode() const { return fBatch.fMode; } 1443 DIEllipseEdgeEffect::Mode mode() const { return fBatch.fMode; }
1435 1444
1436 struct BatchTracker { 1445 struct BatchTracker {
1437 GrColor fColor; 1446 GrColor fColor;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1518 geometry.fXRadius = xRadius; 1527 geometry.fXRadius = xRadius;
1519 geometry.fYRadius = yRadius; 1528 geometry.fYRadius = yRadius;
1520 geometry.fInnerXRadius = innerXRadius; 1529 geometry.fInnerXRadius = innerXRadius;
1521 geometry.fInnerYRadius = innerYRadius; 1530 geometry.fInnerYRadius = innerYRadius;
1522 geometry.fGeoDx = geoDx; 1531 geometry.fGeoDx = geoDx;
1523 geometry.fGeoDy = geoDy; 1532 geometry.fGeoDy = geoDy;
1524 geometry.fMode = mode; 1533 geometry.fMode = mode;
1525 geometry.fBounds = *bounds; 1534 geometry.fBounds = *bounds;
1526 1535
1527 viewMatrix.mapRect(bounds); 1536 viewMatrix.mapRect(bounds);
1528 return DIEllipseBatch::Create(geometry); 1537 return DIEllipseBatch::Create(geometry, *bounds);
1529 } 1538 }
1530 1539
1531 bool GrOvalRenderer::drawDIEllipse(GrDrawTarget* target, 1540 bool GrOvalRenderer::drawDIEllipse(GrDrawTarget* target,
1532 GrPipelineBuilder* pipelineBuilder, 1541 GrPipelineBuilder* pipelineBuilder,
1533 GrColor color, 1542 GrColor color,
1534 const SkMatrix& viewMatrix, 1543 const SkMatrix& viewMatrix,
1535 bool useCoverageAA, 1544 bool useCoverageAA,
1536 const SkRect& ellipse, 1545 const SkRect& ellipse,
1537 const SkStrokeRec& stroke) { 1546 const SkStrokeRec& stroke) {
1538 SkRect bounds; 1547 SkRect bounds;
1539 SkAutoTUnref<GrBatch> batch(create_diellipse_batch(color, viewMatrix, useCov erageAA, ellipse, 1548 SkAutoTUnref<GrBatch> batch(create_diellipse_batch(color, viewMatrix, useCov erageAA, ellipse,
1540 stroke, &bounds)); 1549 stroke, &bounds));
1541 if (!batch) { 1550 if (!batch) {
1542 return false; 1551 return false;
1543 } 1552 }
1544 target->drawBatch(pipelineBuilder, batch, &bounds); 1553 target->drawBatch(pipelineBuilder, batch);
1545 return true; 1554 return true;
1546 } 1555 }
1547 1556
1548 /////////////////////////////////////////////////////////////////////////////// 1557 ///////////////////////////////////////////////////////////////////////////////
1549 1558
1550 static const uint16_t gRRectIndices[] = { 1559 static const uint16_t gRRectIndices[] = {
1551 // corners 1560 // corners
1552 0, 1, 5, 0, 5, 4, 1561 0, 1, 5, 0, 5, 4,
1553 2, 3, 7, 2, 7, 6, 1562 2, 3, 7, 2, 7, 6,
1554 8, 9, 13, 8, 13, 12, 1563 8, 9, 13, 8, 13, 12,
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1796 } 1805 }
1797 } 1806 }
1798 1807
1799 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 1808 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
1800 1809
1801 private: 1810 private:
1802 RRectCircleRendererBatch(const Geometry& geometry, const GrIndexBuffer* inde xBuffer) 1811 RRectCircleRendererBatch(const Geometry& geometry, const GrIndexBuffer* inde xBuffer)
1803 : fIndexBuffer(indexBuffer) { 1812 : fIndexBuffer(indexBuffer) {
1804 this->initClassID<RRectCircleRendererBatch>(); 1813 this->initClassID<RRectCircleRendererBatch>();
1805 fGeoData.push_back(geometry); 1814 fGeoData.push_back(geometry);
1815
1816 this->setBounds(geometry.fDevBounds);
1806 } 1817 }
1807 1818
1808 bool onCombineIfPossible(GrBatch* t) override { 1819 bool onCombineIfPossible(GrBatch* t) override {
1809 RRectCircleRendererBatch* that = t->cast<RRectCircleRendererBatch>(); 1820 RRectCircleRendererBatch* that = t->cast<RRectCircleRendererBatch>();
1810 1821
1811 // TODO use vertex color to avoid breaking batches 1822 // TODO use vertex color to avoid breaking batches
1812 if (this->color() != that->color()) { 1823 if (this->color() != that->color()) {
1813 return false; 1824 return false;
1814 } 1825 }
1815 1826
1816 if (this->stroke() != that->stroke()) { 1827 if (this->stroke() != that->stroke()) {
1817 return false; 1828 return false;
1818 } 1829 }
1819 1830
1820 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 1831 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
1821 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 1832 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
1822 return false; 1833 return false;
1823 } 1834 }
1824 1835
1825 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 1836 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
1837 this->joinBounds(that->bounds());
1826 return true; 1838 return true;
1827 } 1839 }
1828 1840
1829 GrColor color() const { return fBatch.fColor; } 1841 GrColor color() const { return fBatch.fColor; }
1830 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 1842 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
1831 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 1843 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
1832 bool stroke() const { return fBatch.fStroke; } 1844 bool stroke() const { return fBatch.fStroke; }
1833 1845
1834 struct BatchTracker { 1846 struct BatchTracker {
1835 GrColor fColor; 1847 GrColor fColor;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
2015 } 2027 }
2016 } 2028 }
2017 2029
2018 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 2030 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
2019 2031
2020 private: 2032 private:
2021 RRectEllipseRendererBatch(const Geometry& geometry, const GrIndexBuffer* ind exBuffer) 2033 RRectEllipseRendererBatch(const Geometry& geometry, const GrIndexBuffer* ind exBuffer)
2022 : fIndexBuffer(indexBuffer) { 2034 : fIndexBuffer(indexBuffer) {
2023 this->initClassID<RRectEllipseRendererBatch>(); 2035 this->initClassID<RRectEllipseRendererBatch>();
2024 fGeoData.push_back(geometry); 2036 fGeoData.push_back(geometry);
2037
2038 this->setBounds(geometry.fDevBounds);
2025 } 2039 }
2026 2040
2027 bool onCombineIfPossible(GrBatch* t) override { 2041 bool onCombineIfPossible(GrBatch* t) override {
2028 RRectEllipseRendererBatch* that = t->cast<RRectEllipseRendererBatch>(); 2042 RRectEllipseRendererBatch* that = t->cast<RRectEllipseRendererBatch>();
2029 2043
2030 // TODO use vertex color to avoid breaking batches 2044 // TODO use vertex color to avoid breaking batches
2031 if (this->color() != that->color()) { 2045 if (this->color() != that->color()) {
2032 return false; 2046 return false;
2033 } 2047 }
2034 2048
2035 if (this->stroke() != that->stroke()) { 2049 if (this->stroke() != that->stroke()) {
2036 return false; 2050 return false;
2037 } 2051 }
2038 2052
2039 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 2053 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
2040 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 2054 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
2041 return false; 2055 return false;
2042 } 2056 }
2043 2057
2044 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 2058 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
2059 this->joinBounds(that->bounds());
2045 return true; 2060 return true;
2046 } 2061 }
2047 2062
2048 GrColor color() const { return fBatch.fColor; } 2063 GrColor color() const { return fBatch.fColor; }
2049 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 2064 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
2050 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 2065 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
2051 bool stroke() const { return fBatch.fStroke; } 2066 bool stroke() const { return fBatch.fStroke; }
2052 2067
2053 struct BatchTracker { 2068 struct BatchTracker {
2054 GrColor fColor; 2069 GrColor fColor;
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 } 2287 }
2273 2288
2274 SkRect bounds; 2289 SkRect bounds;
2275 SkAutoTUnref<GrBatch> batch(create_rrect_batch(color, viewMatrix, rrect, str oke, &bounds, 2290 SkAutoTUnref<GrBatch> batch(create_rrect_batch(color, viewMatrix, rrect, str oke, &bounds,
2276 &fStrokeRRectIndexBuffer, &fR RectIndexBuffer, 2291 &fStrokeRRectIndexBuffer, &fR RectIndexBuffer,
2277 fGpu)); 2292 fGpu));
2278 if (!batch) { 2293 if (!batch) {
2279 return false; 2294 return false;
2280 } 2295 }
2281 2296
2282 target->drawBatch(pipelineBuilder, batch, &bounds); 2297 target->drawBatch(pipelineBuilder, batch);
2283 return true; 2298 return true;
2284 } 2299 }
2285 2300
2286 //////////////////////////////////////////////////////////////////////////////// /////////////////// 2301 //////////////////////////////////////////////////////////////////////////////// ///////////////////
2287 2302
2288 #ifdef GR_TEST_UTILS 2303 #ifdef GR_TEST_UTILS
2289 2304
2290 static SkStrokeRec random_strokerec(SkRandom* random) { 2305 static SkStrokeRec random_strokerec(SkRandom* random) {
2291 SkStrokeRec::InitStyle style = 2306 SkStrokeRec::InitStyle style =
2292 SkStrokeRec::InitStyle(random->nextULessThan(SkStrokeRec::kFill_Init Style + 1)); 2307 SkStrokeRec::InitStyle(random->nextULessThan(SkStrokeRec::kFill_Init Style + 1));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2333 const SkRRect& rrect = GrTest::TestRRectSimple(random); 2348 const SkRRect& rrect = GrTest::TestRRectSimple(random);
2334 2349
2335 static GrIndexBuffer* gStrokeRRectIndexBuffer; 2350 static GrIndexBuffer* gStrokeRRectIndexBuffer;
2336 static GrIndexBuffer* gRRectIndexBuffer; 2351 static GrIndexBuffer* gRRectIndexBuffer;
2337 SkRect bounds; 2352 SkRect bounds;
2338 return create_rrect_batch(color, viewMatrix, rrect, random_strokerec(random) , &bounds, 2353 return create_rrect_batch(color, viewMatrix, rrect, random_strokerec(random) , &bounds,
2339 &gStrokeRRectIndexBuffer, &gRRectIndexBuffer, cont ext->getGpu()); 2354 &gStrokeRRectIndexBuffer, &gRRectIndexBuffer, cont ext->getGpu());
2340 } 2355 }
2341 2356
2342 #endif 2357 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrInOrderDrawBuffer.cpp ('k') | src/gpu/GrTargetCommands.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698