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

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

Issue 14882011: Pass bounds into draw calls in path renderers. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 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 | Annotate | Revision Log
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "GrAAHairLinePathRenderer.h" 9 #include "GrAAHairLinePathRenderer.h"
10 10
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 // the edge effects share this stage with glyph rendering 809 // the edge effects share this stage with glyph rendering
810 // (kGlyphMaskStage in GrTextContext) && SW path rendering 810 // (kGlyphMaskStage in GrTextContext) && SW path rendering
811 // (kPathMaskStage in GrSWMaskHelper) 811 // (kPathMaskStage in GrSWMaskHelper)
812 kEdgeEffectStage = GrPaint::kTotalStages, 812 kEdgeEffectStage = GrPaint::kTotalStages,
813 }; 813 };
814 static const int kEdgeAttrIndex = 1; 814 static const int kEdgeAttrIndex = 1;
815 815
816 GrEffectRef* hairLineEffect = HairLineEdgeEffect::Create(); 816 GrEffectRef* hairLineEffect = HairLineEdgeEffect::Create();
817 GrEffectRef* hairQuadEffect = HairQuadEdgeEffect::Create(); 817 GrEffectRef* hairQuadEffect = HairQuadEdgeEffect::Create();
818 818
819 SkRect devBounds;
820 GetPathDevBounds(path, drawState->getRenderTarget(), adcd.getOriginalMatrix( ), &devBounds);
821
819 target->setIndexSourceToBuffer(fLinesIndexBuffer); 822 target->setIndexSourceToBuffer(fLinesIndexBuffer);
820 int lines = 0; 823 int lines = 0;
821 int nBufLines = fLinesIndexBuffer->maxQuads(); 824 int nBufLines = fLinesIndexBuffer->maxQuads();
822 drawState->setEffect(kEdgeEffectStage, hairLineEffect, kEdgeAttrIndex)->unre f(); 825 drawState->setEffect(kEdgeEffectStage, hairLineEffect, kEdgeAttrIndex)->unre f();
823 while (lines < lineCnt) { 826 while (lines < lineCnt) {
824 int n = GrMin(lineCnt - lines, nBufLines); 827 int n = GrMin(lineCnt - lines, nBufLines);
825 target->drawIndexed(kTriangles_GrPrimitiveType, 828 target->drawIndexed(kTriangles_GrPrimitiveType,
826 kVertsPerLineSeg*lines, // startV 829 kVertsPerLineSeg*lines, // startV
827 0, // startI 830 0, // startI
828 kVertsPerLineSeg*n, // vCount 831 kVertsPerLineSeg*n, // vCount
829 kIdxsPerLineSeg*n); // iCount 832 kIdxsPerLineSeg*n,
833 &devBounds); // iCount
830 lines += n; 834 lines += n;
831 } 835 }
832 836
833 target->setIndexSourceToBuffer(fQuadsIndexBuffer); 837 target->setIndexSourceToBuffer(fQuadsIndexBuffer);
834 int quads = 0; 838 int quads = 0;
835 drawState->setEffect(kEdgeEffectStage, hairQuadEffect, kEdgeAttrIndex)->unre f(); 839 drawState->setEffect(kEdgeEffectStage, hairQuadEffect, kEdgeAttrIndex)->unre f();
836 while (quads < quadCnt) { 840 while (quads < quadCnt) {
837 int n = GrMin(quadCnt - quads, kNumQuadsInIdxBuffer); 841 int n = GrMin(quadCnt - quads, kNumQuadsInIdxBuffer);
838 target->drawIndexed(kTriangles_GrPrimitiveType, 842 target->drawIndexed(kTriangles_GrPrimitiveType,
839 4 * lineCnt + kVertsPerQuad*quads, // startV 843 4 * lineCnt + kVertsPerQuad*quads, // startV
840 0, // startI 844 0, // startI
841 kVertsPerQuad*n, // vCount 845 kVertsPerQuad*n, // vCount
842 kIdxsPerQuad*n); // iCount 846 kIdxsPerQuad*n, // iCount
847 &devBounds);
843 quads += n; 848 quads += n;
844 } 849 }
845 target->resetIndexSource(); 850 target->resetIndexSource();
846 851
847 return true; 852 return true;
848 } 853 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698