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

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

Issue 1132323003: Revert of Preliminary attempt to remove batch tracker (Closed) Base URL: https://skia.googlesource.com/skia.git@cleanup5
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/GrAADistanceFieldPathRenderer.cpp ('k') | src/gpu/GrAARectRenderer.cpp » ('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 2011 Google Inc. 2 * Copyright 2011 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 "GrAAHairLinePathRenderer.h" 8 #include "GrAAHairLinePathRenderer.h"
9 9
10 #include "GrBatch.h" 10 #include "GrBatch.h"
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 767
768 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 768 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
769 this->joinBounds(that->bounds()); 769 this->joinBounds(that->bounds());
770 return true; 770 return true;
771 } 771 }
772 772
773 GrColor color() const { return fBatch.fColor; } 773 GrColor color() const { return fBatch.fColor; }
774 uint8_t coverage() const { return fBatch.fCoverage; } 774 uint8_t coverage() const { return fBatch.fCoverage; }
775 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 775 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
776 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 776 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
777 bool coverageIgnored() const { return fBatch.fCoverageIgnored; }
778 777
779 struct BatchTracker { 778 struct BatchTracker {
780 GrColor fColor; 779 GrColor fColor;
781 uint8_t fCoverage; 780 uint8_t fCoverage;
782 SkRect fDevBounds; 781 SkRect fDevBounds;
783 bool fUsesLocalCoords; 782 bool fUsesLocalCoords;
784 bool fColorIgnored; 783 bool fColorIgnored;
785 bool fCoverageIgnored; 784 bool fCoverageIgnored;
786 }; 785 };
787 786
(...skipping 21 matching lines...) Expand all
809 toSrc = &invert; 808 toSrc = &invert;
810 } 809 }
811 810
812 // Setup geometry processors for worst case 811 // Setup geometry processors for worst case
813 uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType | 812 uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType |
814 GrDefaultGeoProcFactory::kCoverage_GPType; 813 GrDefaultGeoProcFactory::kCoverage_GPType;
815 814
816 SkAutoTUnref<const GrGeometryProcessor> lineGP( 815 SkAutoTUnref<const GrGeometryProcessor> lineGP(
817 GrDefaultGeoProcFactory::Create(gpFlags, 816 GrDefaultGeoProcFactory::Create(gpFlags,
818 this->color(), 817 this->color(),
819 this->usesLocalCoords(),
820 this->coverageIgnored(),
821 *geometryProcessorViewM, 818 *geometryProcessorViewM,
822 *geometryProcessorLocalM, 819 *geometryProcessorLocalM,
823 this->coverage())); 820 this->coverage()));
824 821
825 SkAutoTUnref<const GrGeometryProcessor> quadGP( 822 SkAutoTUnref<const GrGeometryProcessor> quadGP(
826 GrQuadEffect::Create(this->color(), 823 GrQuadEffect::Create(this->color(),
827 *geometryProcessorViewM, 824 *geometryProcessorViewM,
828 kHairlineAA_GrProcessorEdgeType, 825 kHairlineAA_GrProcessorEdgeType,
829 batchTarget->caps(), 826 batchTarget->caps(),
830 *geometryProcessorLocalM, 827 *geometryProcessorLocalM,
831 this->usesLocalCoords(),
832 this->coverage())); 828 this->coverage()));
833 829
834 SkAutoTUnref<const GrGeometryProcessor> conicGP( 830 SkAutoTUnref<const GrGeometryProcessor> conicGP(
835 GrConicEffect::Create(this->color(), 831 GrConicEffect::Create(this->color(),
836 *geometryProcessorViewM, 832 *geometryProcessorViewM,
837 kHairlineAA_GrProcessorEdgeType, 833 kHairlineAA_GrProcessorEdgeType,
838 batchTarget->caps(), 834 batchTarget->caps(),
839 *geometryProcessorLocalM, 835 *geometryProcessorLocalM,
840 this->usesLocalCoords(),
841 this->coverage())); 836 this->coverage()));
842 837
843 // This is hand inlined for maximum performance. 838 // This is hand inlined for maximum performance.
844 PREALLOC_PTARRAY(128) lines; 839 PREALLOC_PTARRAY(128) lines;
845 PREALLOC_PTARRAY(128) quads; 840 PREALLOC_PTARRAY(128) quads;
846 PREALLOC_PTARRAY(128) conics; 841 PREALLOC_PTARRAY(128) conics;
847 IntArray qSubdivs; 842 IntArray qSubdivs;
848 FloatArray cWeights; 843 FloatArray cWeights;
849 int quadCount = 0; 844 int quadCount = 0;
850 845
851 int instanceCount = fGeoData.count(); 846 int instanceCount = fGeoData.count();
852 for (int i = 0; i < instanceCount; i++) { 847 for (int i = 0; i < instanceCount; i++) {
853 const Geometry& args = fGeoData[i]; 848 const Geometry& args = fGeoData[i];
854 quadCount += gather_lines_and_quads(args.fPath, args.fViewMatrix, args.f DevClipBounds, 849 quadCount += gather_lines_and_quads(args.fPath, args.fViewMatrix, args.f DevClipBounds,
855 &lines, &quads, &conics, &qSubdivs, &cWeights); 850 &lines, &quads, &conics, &qSubdivs, &cWeights);
856 } 851 }
857 852
858 int lineCount = lines.count() / 2; 853 int lineCount = lines.count() / 2;
859 int conicCount = conics.count() / 3; 854 int conicCount = conics.count() / 3;
860 855
861 // do lines first 856 // do lines first
862 if (lineCount) { 857 if (lineCount) {
863 SkAutoTUnref<const GrIndexBuffer> linesIndexBuffer( 858 SkAutoTUnref<const GrIndexBuffer> linesIndexBuffer(
864 ref_lines_index_buffer(batchTarget->resourceProvider())); 859 ref_lines_index_buffer(batchTarget->resourceProvider()));
865 batchTarget->initDraw(lineGP, pipeline); 860 batchTarget->initDraw(lineGP, pipeline);
866 861
862 // TODO remove this when batch is everywhere
863 GrPipelineInfo init;
864 init.fColorIgnored = fBatch.fColorIgnored;
865 init.fOverrideColor = GrColor_ILLEGAL;
866 init.fCoverageIgnored = fBatch.fCoverageIgnored;
867 init.fUsesLocalCoords = this->usesLocalCoords();
868 lineGP->initBatchTracker(batchTarget->currentBatchTracker(), init);
869
867 const GrVertexBuffer* vertexBuffer; 870 const GrVertexBuffer* vertexBuffer;
868 int firstVertex; 871 int firstVertex;
869 872
870 size_t vertexStride = lineGP->getVertexStride(); 873 size_t vertexStride = lineGP->getVertexStride();
871 int vertexCount = kLineSegNumVertices * lineCount; 874 int vertexCount = kLineSegNumVertices * lineCount;
872 LineVertex* verts = reinterpret_cast<LineVertex*>( 875 LineVertex* verts = reinterpret_cast<LineVertex*>(
873 batchTarget->makeVertSpace(vertexStride, vertexCount, &vertexBuffer, &firstVertex)); 876 batchTarget->makeVertSpace(vertexStride, vertexCount, &vertexBuffer, &firstVertex));
874 877
875 if (!verts|| !linesIndexBuffer) { 878 if (!verts|| !linesIndexBuffer) {
876 SkDebugf("Could not allocate vertices\n"); 879 SkDebugf("Could not allocate vertices\n");
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 } 922 }
920 923
921 // Start Conics 924 // Start Conics
922 for (int i = 0; i < conicCount; ++i) { 925 for (int i = 0; i < conicCount; ++i) {
923 add_conics(&conics[3*i], cWeights[i], toDevice, toSrc, &verts); 926 add_conics(&conics[3*i], cWeights[i], toDevice, toSrc, &verts);
924 } 927 }
925 928
926 if (quadCount > 0) { 929 if (quadCount > 0) {
927 batchTarget->initDraw(quadGP, pipeline); 930 batchTarget->initDraw(quadGP, pipeline);
928 931
932 // TODO remove this when batch is everywhere
933 GrPipelineInfo init;
934 init.fColorIgnored = fBatch.fColorIgnored;
935 init.fOverrideColor = GrColor_ILLEGAL;
936 init.fCoverageIgnored = fBatch.fCoverageIgnored;
937 init.fUsesLocalCoords = this->usesLocalCoords();
938 quadGP->initBatchTracker(batchTarget->currentBatchTracker(), init);
939
929 { 940 {
930 GrVertices verts; 941 GrVertices verts;
931 verts.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, qu adsIndexBuffer, 942 verts.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, qu adsIndexBuffer,
932 firstVertex, kQuadNumVertices, kIdxsPerQuad, quadCount, 943 firstVertex, kQuadNumVertices, kIdxsPerQuad, quadCount,
933 kQuadsNumInIdxBuffer); 944 kQuadsNumInIdxBuffer);
934 batchTarget->draw(verts); 945 batchTarget->draw(verts);
935 firstVertex += quadCount * kQuadNumVertices; 946 firstVertex += quadCount * kQuadNumVertices;
936 } 947 }
937 } 948 }
938 949
939 if (conicCount > 0) { 950 if (conicCount > 0) {
940 batchTarget->initDraw(conicGP, pipeline); 951 batchTarget->initDraw(conicGP, pipeline);
941 952
953 // TODO remove this when batch is everywhere
954 GrPipelineInfo init;
955 init.fColorIgnored = fBatch.fColorIgnored;
956 init.fOverrideColor = GrColor_ILLEGAL;
957 init.fCoverageIgnored = fBatch.fCoverageIgnored;
958 init.fUsesLocalCoords = this->usesLocalCoords();
959 conicGP->initBatchTracker(batchTarget->currentBatchTracker(), init);
960
942 { 961 {
943 GrVertices verts; 962 GrVertices verts;
944 verts.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, qu adsIndexBuffer, 963 verts.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, qu adsIndexBuffer,
945 firstVertex, kQuadNumVertices, kIdxsPerQuad, conicCount, 964 firstVertex, kQuadNumVertices, kIdxsPerQuad, conicCount,
946 kQuadsNumInIdxBuffer); 965 kQuadsNumInIdxBuffer);
947 batchTarget->draw(verts); 966 batchTarget->draw(verts);
948 } 967 }
949 } 968 }
950 } 969 }
951 } 970 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 GrColor color = GrRandomColor(random); 1016 GrColor color = GrRandomColor(random);
998 SkMatrix viewMatrix = GrTest::TestMatrix(random); 1017 SkMatrix viewMatrix = GrTest::TestMatrix(random);
999 GrStrokeInfo stroke(SkStrokeRec::kHairline_InitStyle); 1018 GrStrokeInfo stroke(SkStrokeRec::kHairline_InitStyle);
1000 SkPath path = GrTest::TestPath(random); 1019 SkPath path = GrTest::TestPath(random);
1001 SkIRect devClipBounds; 1020 SkIRect devClipBounds;
1002 devClipBounds.setEmpty(); 1021 devClipBounds.setEmpty();
1003 return create_hairline_batch(color, viewMatrix, path, stroke, devClipBounds) ; 1022 return create_hairline_batch(color, viewMatrix, path, stroke, devClipBounds) ;
1004 } 1023 }
1005 1024
1006 #endif 1025 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrAADistanceFieldPathRenderer.cpp ('k') | src/gpu/GrAARectRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698