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

Side by Side Diff: src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp

Issue 1225673007: Initial CL to create dummy GrShaderDataManager and thread it through (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 5 years, 5 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 /* 2 /*
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 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 "SkTwoPointConicalGradient_gpu.h" 9 #include "SkTwoPointConicalGradient_gpu.h"
10 10
11 #include "SkTwoPointConicalGradient.h" 11 #include "SkTwoPointConicalGradient.h"
12 12
13 #if SK_SUPPORT_GPU 13 #if SK_SUPPORT_GPU
14 #include "GrPaint.h"
14 #include "gl/builders/GrGLProgramBuilder.h" 15 #include "gl/builders/GrGLProgramBuilder.h"
15 // For brevity 16 // For brevity
16 typedef GrGLProgramDataManager::UniformHandle UniformHandle; 17 typedef GrGLProgramDataManager::UniformHandle UniformHandle;
17 18
18 static const SkScalar kErrorTol = 0.00001f; 19 static const SkScalar kErrorTol = 0.00001f;
19 static const SkScalar kEdgeErrorTol = 5.f * kErrorTol; 20 static const SkScalar kEdgeErrorTol = 5.f * kErrorTol;
20 21
21 /** 22 /**
22 * We have three general cases for 2pt conical gradients. First we always assume that 23 * We have three general cases for 2pt conical gradients. First we always assume that
23 * the start radius <= end radius. Our first case (kInside_) is when the start c ircle 24 * the start radius <= end radius. Our first case (kInside_) is when the start c ircle
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 SkScalar* stops = stopsArray; 210 SkScalar* stops = stopsArray;
210 SkShader::TileMode tm; 211 SkShader::TileMode tm;
211 int colorCount = RandomGradientParams(random, colors, &stops, &tm); 212 int colorCount = RandomGradientParams(random, colors, &stops, &tm);
212 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 213 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
213 center 2, radius2, 214 center 2, radius2,
214 colors , stops, colorCount, 215 colors , stops, colorCount,
215 tm)); 216 tm));
216 SkPaint paint; 217 SkPaint paint;
217 GrFragmentProcessor* fp; 218 GrFragmentProcessor* fp;
218 GrColor paintColor; 219 GrColor paintColor;
220 GrPaint grPaint;
219 SkAssertResult(shader->asFragmentProcessor(context, paint, 221 SkAssertResult(shader->asFragmentProcessor(context, paint,
220 GrTest::TestMatrix(random), NULL, 222 GrTest::TestMatrix(random), NULL,
221 &paintColor, &fp)); 223 &paintColor, grPaint.getShaderDat aManager(), &fp));
222 return fp; 224 return fp;
223 } 225 }
224 226
225 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&) 227 GLEdge2PtConicalEffect::GLEdge2PtConicalEffect(const GrProcessor&)
226 : fVSVaryingName(NULL) 228 : fVSVaryingName(NULL)
227 , fFSVaryingName(NULL) 229 , fFSVaryingName(NULL)
228 , fCachedRadius(-SK_ScalarMax) 230 , fCachedRadius(-SK_ScalarMax)
229 , fCachedDiffRadius(-SK_ScalarMax) {} 231 , fCachedDiffRadius(-SK_ScalarMax) {}
230 232
231 void GLEdge2PtConicalEffect::emitCode(GrGLFPBuilder* builder, 233 void GLEdge2PtConicalEffect::emitCode(GrGLFPBuilder* builder,
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 SkScalar* stops = stopsArray; 497 SkScalar* stops = stopsArray;
496 SkShader::TileMode tm; 498 SkShader::TileMode tm;
497 int colorCount = RandomGradientParams(random, colors, &stops, &tm); 499 int colorCount = RandomGradientParams(random, colors, &stops, &tm);
498 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 500 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
499 center 2, radius2, 501 center 2, radius2,
500 colors , stops, colorCount, 502 colors , stops, colorCount,
501 tm)); 503 tm));
502 SkPaint paint; 504 SkPaint paint;
503 GrFragmentProcessor* effect; 505 GrFragmentProcessor* effect;
504 GrColor paintColor; 506 GrColor paintColor;
505 507 GrPaint grPaint;
506 SkAssertResult(shader->asFragmentProcessor(context, paint, 508 SkAssertResult(shader->asFragmentProcessor(context, paint,
507 GrTest::TestMatrix(random), NULL, 509 GrTest::TestMatrix(random), NULL,
508 &paintColor, &effect)); 510 &paintColor, grPaint.getShaderDat aManager(),
511 &effect));
509 return effect; 512 return effect;
510 } 513 }
511 514
512 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor & processor) 515 GLFocalOutside2PtConicalEffect::GLFocalOutside2PtConicalEffect(const GrProcessor & processor)
513 : fVSVaryingName(NULL) 516 : fVSVaryingName(NULL)
514 , fFSVaryingName(NULL) 517 , fFSVaryingName(NULL)
515 , fCachedFocal(SK_ScalarMax) { 518 , fCachedFocal(SK_ScalarMax) {
516 const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon icalEffect>(); 519 const FocalOutside2PtConicalEffect& data = processor.cast<FocalOutside2PtCon icalEffect>();
517 fIsFlipped = data.isFlipped(); 520 fIsFlipped = data.isFlipped();
518 } 521 }
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 SkScalar* stops = stopsArray; 719 SkScalar* stops = stopsArray;
717 SkShader::TileMode tm; 720 SkShader::TileMode tm;
718 int colorCount = RandomGradientParams(random, colors, &stops, &tm); 721 int colorCount = RandomGradientParams(random, colors, &stops, &tm);
719 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 722 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
720 center 2, radius2, 723 center 2, radius2,
721 colors , stops, colorCount, 724 colors , stops, colorCount,
722 tm)); 725 tm));
723 SkPaint paint; 726 SkPaint paint;
724 GrColor paintColor; 727 GrColor paintColor;
725 GrFragmentProcessor* fp; 728 GrFragmentProcessor* fp;
729 GrPaint grPaint;
726 SkAssertResult(shader->asFragmentProcessor(context, paint, 730 SkAssertResult(shader->asFragmentProcessor(context, paint,
727 GrTest::TestMatrix(random), NULL, 731 GrTest::TestMatrix(random), NULL,
728 &paintColor, &fp)); 732 &paintColor, grPaint.getShaderDat aManager(), &fp));
729 return fp; 733 return fp;
730 } 734 }
731 735
732 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&) 736 GLFocalInside2PtConicalEffect::GLFocalInside2PtConicalEffect(const GrProcessor&)
733 : fVSVaryingName(NULL) 737 : fVSVaryingName(NULL)
734 , fFSVaryingName(NULL) 738 , fFSVaryingName(NULL)
735 , fCachedFocal(SK_ScalarMax) {} 739 , fCachedFocal(SK_ScalarMax) {}
736 740
737 void GLFocalInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder, 741 void GLFocalInside2PtConicalEffect::emitCode(GrGLFPBuilder* builder,
738 const GrFragmentProcessor& fp, 742 const GrFragmentProcessor& fp,
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 SkScalar stopsArray[kMaxRandomGradientColors]; 974 SkScalar stopsArray[kMaxRandomGradientColors];
971 SkScalar* stops = stopsArray; 975 SkScalar* stops = stopsArray;
972 SkShader::TileMode tm; 976 SkShader::TileMode tm;
973 int colorCount = RandomGradientParams(random, colors, &stops, &tm); 977 int colorCount = RandomGradientParams(random, colors, &stops, &tm);
974 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 978 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
975 center 2, radius2, 979 center 2, radius2,
976 colors , stops, colorCount, 980 colors , stops, colorCount,
977 tm)); 981 tm));
978 SkPaint paint; 982 SkPaint paint;
979 GrColor paintColor; 983 GrColor paintColor;
980 GrFragmentProcessor* processor; 984 GrFragmentProcessor* fp;
985 GrPaint grPaint;
981 SkAssertResult(shader->asFragmentProcessor(context, paint, 986 SkAssertResult(shader->asFragmentProcessor(context, paint,
982 GrTest::TestMatrix(random), NULL, 987 GrTest::TestMatrix(random), NULL,
983 &paintColor, &processor)); 988 &paintColor, grPaint.getShaderDat aManager(), &fp));
984 return processor; 989 return fp;
985 } 990 }
986 991
987 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor & processor) 992 GLCircleInside2PtConicalEffect::GLCircleInside2PtConicalEffect(const GrProcessor & processor)
988 : fVSVaryingName(NULL) 993 : fVSVaryingName(NULL)
989 , fFSVaryingName(NULL) 994 , fFSVaryingName(NULL)
990 , fCachedCenterX(SK_ScalarMax) 995 , fCachedCenterX(SK_ScalarMax)
991 , fCachedCenterY(SK_ScalarMax) 996 , fCachedCenterY(SK_ScalarMax)
992 , fCachedA(SK_ScalarMax) 997 , fCachedA(SK_ScalarMax)
993 , fCachedB(SK_ScalarMax) 998 , fCachedB(SK_ScalarMax)
994 , fCachedC(SK_ScalarMax) {} 999 , fCachedC(SK_ScalarMax) {}
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1210 SkScalar stopsArray[kMaxRandomGradientColors]; 1215 SkScalar stopsArray[kMaxRandomGradientColors];
1211 SkScalar* stops = stopsArray; 1216 SkScalar* stops = stopsArray;
1212 SkShader::TileMode tm; 1217 SkShader::TileMode tm;
1213 int colorCount = RandomGradientParams(random, colors, &stops, &tm); 1218 int colorCount = RandomGradientParams(random, colors, &stops, &tm);
1214 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1, 1219 SkAutoTUnref<SkShader> shader(SkGradientShader::CreateTwoPointConical(center 1, radius1,
1215 center 2, radius2, 1220 center 2, radius2,
1216 colors , stops, colorCount, 1221 colors , stops, colorCount,
1217 tm)); 1222 tm));
1218 SkPaint paint; 1223 SkPaint paint;
1219 GrColor paintColor; 1224 GrColor paintColor;
1220 GrFragmentProcessor* processor; 1225 GrFragmentProcessor* fp;
1221 1226 GrPaint grPaint;
1222 SkAssertResult(shader->asFragmentProcessor(context, paint, 1227 SkAssertResult(shader->asFragmentProcessor(context, paint,
1223 GrTest::TestMatrix(random), NULL, 1228 GrTest::TestMatrix(random), NULL,
1224 &paintColor, &processor)); 1229 &paintColor, grPaint.getShaderDat aManager(), &fp));
1225 return processor; 1230 return fp;
1226 } 1231 }
1227 1232
1228 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess or& processor) 1233 GLCircleOutside2PtConicalEffect::GLCircleOutside2PtConicalEffect(const GrProcess or& processor)
1229 : fVSVaryingName(NULL) 1234 : fVSVaryingName(NULL)
1230 , fFSVaryingName(NULL) 1235 , fFSVaryingName(NULL)
1231 , fCachedCenterX(SK_ScalarMax) 1236 , fCachedCenterX(SK_ScalarMax)
1232 , fCachedCenterY(SK_ScalarMax) 1237 , fCachedCenterY(SK_ScalarMax)
1233 , fCachedA(SK_ScalarMax) 1238 , fCachedA(SK_ScalarMax)
1234 , fCachedB(SK_ScalarMax) 1239 , fCachedB(SK_ScalarMax)
1235 , fCachedC(SK_ScalarMax) 1240 , fCachedC(SK_ScalarMax)
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1371 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf o); 1376 return CircleInside2PtConicalEffect::Create(ctx, shader, matrix, tm, inf o);
1372 } else if (type == kEdge_ConicalType) { 1377 } else if (type == kEdge_ConicalType) {
1373 set_matrix_edge_conical(shader, &matrix); 1378 set_matrix_edge_conical(shader, &matrix);
1374 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm); 1379 return Edge2PtConicalEffect::Create(ctx, shader, matrix, tm);
1375 } else { 1380 } else {
1376 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in fo); 1381 return CircleOutside2PtConicalEffect::Create(ctx, shader, matrix, tm, in fo);
1377 } 1382 }
1378 } 1383 }
1379 1384
1380 #endif 1385 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698