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/batches/GrAAHairLinePathRenderer.cpp

Issue 2041113004: sk_sp for gpu. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Reserve correctly. Created 4 years, 6 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
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 "GrBatchFlushState.h" 10 #include "GrBatchFlushState.h"
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 const Geometry& args = fGeoData[i]; 824 const Geometry& args = fGeoData[i];
825 quadCount += gather_lines_and_quads(args.fPath, args.fViewMatrix, args.f DevClipBounds, 825 quadCount += gather_lines_and_quads(args.fPath, args.fViewMatrix, args.f DevClipBounds,
826 &lines, &quads, &conics, &qSubdivs, &cWeights); 826 &lines, &quads, &conics, &qSubdivs, &cWeights);
827 } 827 }
828 828
829 int lineCount = lines.count() / 2; 829 int lineCount = lines.count() / 2;
830 int conicCount = conics.count() / 3; 830 int conicCount = conics.count() / 3;
831 831
832 // do lines first 832 // do lines first
833 if (lineCount) { 833 if (lineCount) {
834 SkAutoTUnref<const GrGeometryProcessor> lineGP; 834 sk_sp<GrGeometryProcessor> lineGP;
835 { 835 {
836 using namespace GrDefaultGeoProcFactory; 836 using namespace GrDefaultGeoProcFactory;
837 837
838 Color color(this->color()); 838 Color color(this->color());
839 Coverage coverage(Coverage::kAttribute_Type); 839 Coverage coverage(Coverage::kAttribute_Type);
840 LocalCoords localCoords(this->usesLocalCoords() ? LocalCoords::kUseP osition_Type : 840 LocalCoords localCoords(this->usesLocalCoords() ? LocalCoords::kUseP osition_Type :
841 LocalCoords::kUnused_Type); 841 LocalCoords::kUnused_Type);
842 localCoords.fMatrix = geometryProcessorLocalM; 842 localCoords.fMatrix = geometryProcessorLocalM;
843 lineGP.reset(GrDefaultGeoProcFactory::Create(color, coverage, localC oords, 843 lineGP = GrDefaultGeoProcFactory::Make(color, coverage, localCoords,
844 *geometryProcessorViewM )); 844 *geometryProcessorViewM);
845 } 845 }
846 846
847 SkAutoTUnref<const GrBuffer> linesIndexBuffer( 847 SkAutoTUnref<const GrBuffer> linesIndexBuffer(
848 ref_lines_index_buffer(target->resourceProvider())); 848 ref_lines_index_buffer(target->resourceProvider()));
849 849
850 const GrBuffer* vertexBuffer; 850 const GrBuffer* vertexBuffer;
851 int firstVertex; 851 int firstVertex;
852 852
853 size_t vertexStride = lineGP->getVertexStride(); 853 size_t vertexStride = lineGP->getVertexStride();
854 int vertexCount = kLineSegNumVertices * lineCount; 854 int vertexCount = kLineSegNumVertices * lineCount;
855 LineVertex* verts = reinterpret_cast<LineVertex*>( 855 LineVertex* verts = reinterpret_cast<LineVertex*>(
856 target->makeVertexSpace(vertexStride, vertexCount, &vertexBuffer, &f irstVertex)); 856 target->makeVertexSpace(vertexStride, vertexCount, &vertexBuffer, &f irstVertex));
857 857
858 if (!verts|| !linesIndexBuffer) { 858 if (!verts|| !linesIndexBuffer) {
859 SkDebugf("Could not allocate vertices\n"); 859 SkDebugf("Could not allocate vertices\n");
860 return; 860 return;
861 } 861 }
862 862
863 SkASSERT(lineGP->getVertexStride() == sizeof(LineVertex)); 863 SkASSERT(lineGP->getVertexStride() == sizeof(LineVertex));
864 864
865 for (int i = 0; i < lineCount; ++i) { 865 for (int i = 0; i < lineCount; ++i) {
866 add_line(&lines[2*i], toSrc, this->coverage(), &verts); 866 add_line(&lines[2*i], toSrc, this->coverage(), &verts);
867 } 867 }
868 868
869 GrMesh mesh; 869 GrMesh mesh;
870 mesh.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, linesIndexB uffer, 870 mesh.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, linesIndexB uffer,
871 firstVertex, kLineSegNumVertices, kIdxsPerLineSeg, li neCount, 871 firstVertex, kLineSegNumVertices, kIdxsPerLineSeg, li neCount,
872 kLineSegsNumInIdxBuffer); 872 kLineSegsNumInIdxBuffer);
873 target->draw(lineGP, mesh); 873 target->draw(lineGP.get(), mesh);
874 } 874 }
875 875
876 if (quadCount || conicCount) { 876 if (quadCount || conicCount) {
877 SkAutoTUnref<const GrGeometryProcessor> quadGP( 877 sk_sp<GrGeometryProcessor> quadGP(
878 GrQuadEffect::Create(this->color(), 878 GrQuadEffect::Make(this->color(),
879 *geometryProcessorViewM, 879 *geometryProcessorViewM,
880 kHairlineAA_GrProcessorEdgeType, 880 kHairlineAA_GrProcessorEdgeType,
881 target->caps(), 881 target->caps(),
882 *geometryProcessorLocalM, 882 *geometryProcessorLocalM,
883 this->usesLocalCoords(), 883 this->usesLocalCoords(),
884 this->coverage())); 884 this->coverage()));
885 885
886 SkAutoTUnref<const GrGeometryProcessor> conicGP( 886 sk_sp<GrGeometryProcessor> conicGP(
887 GrConicEffect::Create(this->color(), 887 GrConicEffect::Make(this->color(),
888 *geometryProcessorViewM, 888 *geometryProcessorViewM,
889 kHairlineAA_GrProcessorEdgeType, 889 kHairlineAA_GrProcessorEdgeType,
890 target->caps(), 890 target->caps(),
891 *geometryProcessorLocalM, 891 *geometryProcessorLocalM,
892 this->usesLocalCoords(), 892 this->usesLocalCoords(),
893 this->coverage())); 893 this->coverage()));
894 894
895 const GrBuffer* vertexBuffer; 895 const GrBuffer* vertexBuffer;
896 int firstVertex; 896 int firstVertex;
897 897
898 SkAutoTUnref<const GrBuffer> quadsIndexBuffer( 898 SkAutoTUnref<const GrBuffer> quadsIndexBuffer(
899 ref_quads_index_buffer(target->resourceProvider())); 899 ref_quads_index_buffer(target->resourceProvider()));
900 900
901 size_t vertexStride = sizeof(BezierVertex); 901 size_t vertexStride = sizeof(BezierVertex);
902 int vertexCount = kQuadNumVertices * quadCount + kQuadNumVertices * coni cCount; 902 int vertexCount = kQuadNumVertices * quadCount + kQuadNumVertices * coni cCount;
903 void *vertices = target->makeVertexSpace(vertexStride, vertexCount, 903 void *vertices = target->makeVertexSpace(vertexStride, vertexCount,
(...skipping 16 matching lines...) Expand all
920 // Start Conics 920 // Start Conics
921 for (int i = 0; i < conicCount; ++i) { 921 for (int i = 0; i < conicCount; ++i) {
922 add_conics(&conics[3*i], cWeights[i], toDevice, toSrc, &bezVerts); 922 add_conics(&conics[3*i], cWeights[i], toDevice, toSrc, &bezVerts);
923 } 923 }
924 924
925 if (quadCount > 0) { 925 if (quadCount > 0) {
926 GrMesh mesh; 926 GrMesh mesh;
927 mesh.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, quadsIn dexBuffer, 927 mesh.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, quadsIn dexBuffer,
928 firstVertex, kQuadNumVertices, kIdxsPerQuad, quad Count, 928 firstVertex, kQuadNumVertices, kIdxsPerQuad, quad Count,
929 kQuadsNumInIdxBuffer); 929 kQuadsNumInIdxBuffer);
930 target->draw(quadGP, mesh); 930 target->draw(quadGP.get(), mesh);
931 firstVertex += quadCount * kQuadNumVertices; 931 firstVertex += quadCount * kQuadNumVertices;
932 } 932 }
933 933
934 if (conicCount > 0) { 934 if (conicCount > 0) {
935 GrMesh mesh; 935 GrMesh mesh;
936 mesh.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, quadsIn dexBuffer, 936 mesh.initInstanced(kTriangles_GrPrimitiveType, vertexBuffer, quadsIn dexBuffer,
937 firstVertex, kQuadNumVertices, kIdxsPerQuad, coni cCount, 937 firstVertex, kQuadNumVertices, kIdxsPerQuad, coni cCount,
938 kQuadsNumInIdxBuffer); 938 kQuadsNumInIdxBuffer);
939 target->draw(conicGP, mesh); 939 target->draw(conicGP.get(), mesh);
940 } 940 }
941 } 941 }
942 } 942 }
943 943
944 static GrDrawBatch* create_hairline_batch(GrColor color, 944 static GrDrawBatch* create_hairline_batch(GrColor color,
945 const SkMatrix& viewMatrix, 945 const SkMatrix& viewMatrix,
946 const SkPath& path, 946 const SkPath& path,
947 const GrStyle& style, 947 const GrStyle& style,
948 const SkIRect& devClipBounds) { 948 const SkIRect& devClipBounds) {
949 SkScalar hairlineCoverage; 949 SkScalar hairlineCoverage;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 DRAW_BATCH_TEST_DEFINE(AAHairlineBatch) { 989 DRAW_BATCH_TEST_DEFINE(AAHairlineBatch) {
990 GrColor color = GrRandomColor(random); 990 GrColor color = GrRandomColor(random);
991 SkMatrix viewMatrix = GrTest::TestMatrix(random); 991 SkMatrix viewMatrix = GrTest::TestMatrix(random);
992 SkPath path = GrTest::TestPath(random); 992 SkPath path = GrTest::TestPath(random);
993 SkIRect devClipBounds; 993 SkIRect devClipBounds;
994 devClipBounds.setEmpty(); 994 devClipBounds.setEmpty();
995 return create_hairline_batch(color, viewMatrix, path, GrStyle::SimpleHairlin e(), devClipBounds); 995 return create_hairline_batch(color, viewMatrix, path, GrStyle::SimpleHairlin e(), devClipBounds);
996 } 996 }
997 997
998 #endif 998 #endif
OLDNEW
« no previous file with comments | « src/gpu/batches/GrAAFillRectBatch.cpp ('k') | src/gpu/batches/GrAALinearizingConvexPathRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698