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

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

Issue 818233002: Remove coordchanges from drawstate (Closed) Base URL: https://skia.googlesource.com/skia.git@coord-change-off-paint
Patch Set: adding test to ignore Created 5 years, 11 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/GrAAConvexPathRenderer.cpp ('k') | src/gpu/GrAARectRenderer.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 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 "GrContext.h" 10 #include "GrContext.h"
(...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 PREALLOC_PTARRAY(128) lines; 825 PREALLOC_PTARRAY(128) lines;
826 PREALLOC_PTARRAY(128) quads; 826 PREALLOC_PTARRAY(128) quads;
827 PREALLOC_PTARRAY(128) conics; 827 PREALLOC_PTARRAY(128) conics;
828 IntArray qSubdivs; 828 IntArray qSubdivs;
829 FloatArray cWeights; 829 FloatArray cWeights;
830 quadCnt = generate_lines_and_quads(path, drawState->getViewMatrix(), devClip Bounds, 830 quadCnt = generate_lines_and_quads(path, drawState->getViewMatrix(), devClip Bounds,
831 &lines, &quads, &conics, &qSubdivs, &cWei ghts); 831 &lines, &quads, &conics, &qSubdivs, &cWei ghts);
832 lineCnt = lines.count() / 2; 832 lineCnt = lines.count() / 2;
833 conicCnt = conics.count() / 3; 833 conicCnt = conics.count() / 3;
834 834
835 // createGeom transforms the geometry to device space when the matrix does n ot have
836 // perspective.
837 GrDrawState::AutoViewMatrixRestore avmr;
838 SkMatrix invert = SkMatrix::I();
839 if (!drawState->getViewMatrix().hasPerspective()) {
840 avmr.setIdentity(drawState);
841 if (!drawState->getViewMatrix().invert(&invert)) {
842 return false;
843 }
844 }
845
835 // do lines first 846 // do lines first
836 if (lineCnt) { 847 if (lineCnt) {
837 GrDrawTarget::AutoReleaseGeometry arg; 848 GrDrawTarget::AutoReleaseGeometry arg;
838 SkRect devBounds; 849 SkRect devBounds;
839 850
851 GrDrawState::AutoRestoreEffects are(drawState);
840 uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType | 852 uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType |
841 GrDefaultGeoProcFactory::kCoverage_GPType; 853 GrDefaultGeoProcFactory::kCoverage_GPType;
842 GrDrawState::AutoRestoreEffects are(drawState);
843 SkAutoTUnref<const GrGeometryProcessor> gp(GrDefaultGeoProcFactory::Crea te(color, 854 SkAutoTUnref<const GrGeometryProcessor> gp(GrDefaultGeoProcFactory::Crea te(color,
844 gpFlags, 855 gpFlags,
845 false, 856 false,
846 newCoverage)); 857 newCoverage,
858 invert));
847 859
848 if (!this->createLineGeom(target, 860 if (!this->createLineGeom(target,
849 drawState, 861 drawState,
850 newCoverage, 862 newCoverage,
851 gp->getVertexStride(), 863 gp->getVertexStride(),
852 &arg, 864 &arg,
853 &devBounds, 865 &devBounds,
854 path, 866 path,
855 lines, 867 lines,
856 lineCnt)) { 868 lineCnt)) {
857 return false; 869 return false;
858 } 870 }
859 871
860 // createLineGeom transforms the geometry to device space when the matri x does not have
861 // perspective.
862 GrDrawState::AutoViewMatrixRestore avmr;
863 if (!drawState->getViewMatrix().hasPerspective() && !avmr.setIdentity(dr awState)) {
864 return false;
865 }
866
867 // Check devBounds 872 // Check devBounds
868 SkASSERT(check_bounds<LineVertex>(drawState, devBounds, arg.vertices(), 873 SkASSERT(check_bounds<LineVertex>(drawState, devBounds, arg.vertices(),
869 kLineSegNumVertices * lineCnt)); 874 kLineSegNumVertices * lineCnt));
870 875
871 { 876 {
872 target->setIndexSourceToBuffer(fLinesIndexBuffer); 877 target->setIndexSourceToBuffer(fLinesIndexBuffer);
873 int lines = 0; 878 int lines = 0;
874 while (lines < lineCnt) { 879 while (lines < lineCnt) {
875 int n = SkTMin(lineCnt - lines, kLineSegsNumInIdxBuffer); 880 int n = SkTMin(lineCnt - lines, kLineSegsNumInIdxBuffer);
876 target->drawIndexed(drawState, 881 target->drawIndexed(drawState,
(...skipping 22 matching lines...) Expand all
899 quads, 904 quads,
900 quadCnt, 905 quadCnt,
901 conics, 906 conics,
902 conicCnt, 907 conicCnt,
903 qSubdivs, 908 qSubdivs,
904 cWeights, 909 cWeights,
905 sizeof(BezierVertex))) { 910 sizeof(BezierVertex))) {
906 return false; 911 return false;
907 } 912 }
908 913
909 // createGeom transforms the geometry to device space when the matrix do es not have
910 // perspective.
911 GrDrawState::AutoViewMatrixRestore avmr;
912 if (!drawState->getViewMatrix().hasPerspective() && !avmr.setIdentity(dr awState)) {
913 return false;
914 }
915
916
917 // Check devBounds 914 // Check devBounds
918 SkASSERT(check_bounds<BezierVertex>(drawState, devBounds, arg.vertices() , 915 SkASSERT(check_bounds<BezierVertex>(drawState, devBounds, arg.vertices() ,
919 kQuadNumVertices * quadCnt + kQuadNu mVertices * conicCnt)); 916 kQuadNumVertices * quadCnt + kQuadNu mVertices * conicCnt));
920 917
921 if (quadCnt > 0) { 918 if (quadCnt > 0) {
922 SkAutoTUnref<GrGeometryProcessor> hairQuadProcessor( 919 SkAutoTUnref<GrGeometryProcessor> hairQuadProcessor(
923 GrQuadEffect::Create(color, 920 GrQuadEffect::Create(color,
924 kHairlineAA_GrProcessorEdgeType, 921 kHairlineAA_GrProcessorEdgeType,
925 *target->caps(), 922 *target->caps(),
923 invert,
926 newCoverage)); 924 newCoverage));
927 SkASSERT(hairQuadProcessor); 925 SkASSERT(hairQuadProcessor);
928 GrDrawState::AutoRestoreEffects are(drawState); 926 GrDrawState::AutoRestoreEffects are(drawState);
929 target->setIndexSourceToBuffer(fQuadsIndexBuffer); 927 target->setIndexSourceToBuffer(fQuadsIndexBuffer);
930 928
931 int quads = 0; 929 int quads = 0;
932 while (quads < quadCnt) { 930 while (quads < quadCnt) {
933 int n = SkTMin(quadCnt - quads, kQuadsNumInIdxBuffer); 931 int n = SkTMin(quadCnt - quads, kQuadsNumInIdxBuffer);
934 target->drawIndexed(drawState, 932 target->drawIndexed(drawState,
935 hairQuadProcessor, 933 hairQuadProcessor,
936 kTriangles_GrPrimitiveType, 934 kTriangles_GrPrimitiveType,
937 kQuadNumVertices*quads, // sta rtV 935 kQuadNumVertices*quads, // sta rtV
938 0, // sta rtI 936 0, // sta rtI
939 kQuadNumVertices*n, // vCo unt 937 kQuadNumVertices*n, // vCo unt
940 kIdxsPerQuad*n, // iCo unt 938 kIdxsPerQuad*n, // iCo unt
941 &devBounds); 939 &devBounds);
942 quads += n; 940 quads += n;
943 } 941 }
944 } 942 }
945 943
946 if (conicCnt > 0) { 944 if (conicCnt > 0) {
947 SkAutoTUnref<GrGeometryProcessor> hairConicProcessor( 945 SkAutoTUnref<GrGeometryProcessor> hairConicProcessor(
948 GrConicEffect::Create(color, kHairlineAA_GrProcessorEdgeType , *target->caps(), 946 GrConicEffect::Create(color, kHairlineAA_GrProcessorEdgeType , *target->caps(),
949 newCoverage)); 947 invert, newCoverage));
950 SkASSERT(hairConicProcessor); 948 SkASSERT(hairConicProcessor);
951 GrDrawState::AutoRestoreEffects are(drawState); 949 GrDrawState::AutoRestoreEffects are(drawState);
952 target->setIndexSourceToBuffer(fQuadsIndexBuffer); 950 target->setIndexSourceToBuffer(fQuadsIndexBuffer);
953 951
954 int conics = 0; 952 int conics = 0;
955 while (conics < conicCnt) { 953 while (conics < conicCnt) {
956 int n = SkTMin(conicCnt - conics, kQuadsNumInIdxBuffer); 954 int n = SkTMin(conicCnt - conics, kQuadsNumInIdxBuffer);
957 target->drawIndexed(drawState, 955 target->drawIndexed(drawState,
958 hairConicProcessor, 956 hairConicProcessor,
959 kTriangles_GrPrimitiveType, 957 kTriangles_GrPrimitiveType,
960 kQuadNumVertices*(quadCnt + conics), // sta rtV 958 kQuadNumVertices*(quadCnt + conics), // sta rtV
961 0, // sta rtI 959 0, // sta rtI
962 kQuadNumVertices*n, // vCo unt 960 kQuadNumVertices*n, // vCo unt
963 kIdxsPerQuad*n, // iCo unt 961 kIdxsPerQuad*n, // iCo unt
964 &devBounds); 962 &devBounds);
965 conics += n; 963 conics += n;
966 } 964 }
967 } 965 }
968 } 966 }
969 967
970 target->resetIndexSource(); 968 target->resetIndexSource();
971 969
972 return true; 970 return true;
973 } 971 }
OLDNEW
« no previous file with comments | « src/gpu/GrAAConvexPathRenderer.cpp ('k') | src/gpu/GrAARectRenderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698