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

Side by Side Diff: src/gpu/effects/GrRRectEffect.cpp

Issue 365853002: Rename GrGLUniformManager to GrGLProgramResourceManager (Closed) Base URL: https://skia.googlesource.com/skia.git@02-path-program-fragment
Patch Set: rebase Created 6 years, 4 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 2014 Google Inc. 2 * Copyright 2014 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 "GrRRectEffect.h" 8 #include "GrRRectEffect.h"
9 9
10 #include "gl/GrGLEffect.h" 10 #include "gl/GrGLEffect.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 virtual void emitCode(GrGLShaderBuilder* builder, 137 virtual void emitCode(GrGLShaderBuilder* builder,
138 const GrDrawEffect& drawEffect, 138 const GrDrawEffect& drawEffect,
139 const GrEffectKey& key, 139 const GrEffectKey& key,
140 const char* outputColor, 140 const char* outputColor,
141 const char* inputColor, 141 const char* inputColor,
142 const TransformedCoordsArray&, 142 const TransformedCoordsArray&,
143 const TextureSamplerArray&) SK_OVERRIDE; 143 const TextureSamplerArray&) SK_OVERRIDE;
144 144
145 static inline void GenKey(const GrDrawEffect&, const GrGLCaps&, GrEffectKeyB uilder*); 145 static inline void GenKey(const GrDrawEffect&, const GrGLCaps&, GrEffectKeyB uilder*);
146 146
147 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER RIDE; 147 virtual void setData(const GrGLProgramResourceManager&, const GrDrawEffect&) SK_OVERRIDE;
148 148
149 private: 149 private:
150 GrGLUniformManager::UniformHandle fInnerRectUniform; 150 GrGLProgramResourceManager::UniformHandle fInnerRectUniform;
151 GrGLUniformManager::UniformHandle fRadiusPlusHalfUniform; 151 GrGLProgramResourceManager::UniformHandle fRadiusPlusHalfUniform;
152 SkRRect fPrevRRect; 152 SkRRect fPrevRRect;
153 typedef GrGLEffect INHERITED; 153 typedef GrGLEffect INHERITED;
154 }; 154 };
155 155
156 GLCircularRRectEffect::GLCircularRRectEffect(const GrBackendEffectFactory& facto ry, 156 GLCircularRRectEffect::GLCircularRRectEffect(const GrBackendEffectFactory& facto ry,
157 const GrDrawEffect& drawEffect) 157 const GrDrawEffect& drawEffect)
158 : INHERITED (factory) { 158 : INHERITED (factory) {
159 fPrevRRect.setEmpty(); 159 fPrevRRect.setEmpty();
160 } 160 }
161 161
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_st r()); 291 (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_st r());
292 } 292 }
293 293
294 void GLCircularRRectEffect::GenKey(const GrDrawEffect& drawEffect, const GrGLCap s&, 294 void GLCircularRRectEffect::GenKey(const GrDrawEffect& drawEffect, const GrGLCap s&,
295 GrEffectKeyBuilder* b) { 295 GrEffectKeyBuilder* b) {
296 const CircularRRectEffect& crre = drawEffect.castEffect<CircularRRectEffect> (); 296 const CircularRRectEffect& crre = drawEffect.castEffect<CircularRRectEffect> ();
297 GR_STATIC_ASSERT(kGrEffectEdgeTypeCnt <= 8); 297 GR_STATIC_ASSERT(kGrEffectEdgeTypeCnt <= 8);
298 b->add32((crre.getCircularCornerFlags() << 3) | crre.getEdgeType()); 298 b->add32((crre.getCircularCornerFlags() << 3) | crre.getEdgeType());
299 } 299 }
300 300
301 void GLCircularRRectEffect::setData(const GrGLUniformManager& uman, 301 void GLCircularRRectEffect::setData(const GrGLProgramResourceManager& prman,
302 const GrDrawEffect& drawEffect) { 302 const GrDrawEffect& drawEffect) {
303 const CircularRRectEffect& crre = drawEffect.castEffect<CircularRRectEffect> (); 303 const CircularRRectEffect& crre = drawEffect.castEffect<CircularRRectEffect> ();
304 const SkRRect& rrect = crre.getRRect(); 304 const SkRRect& rrect = crre.getRRect();
305 if (rrect != fPrevRRect) { 305 if (rrect != fPrevRRect) {
306 SkRect rect = rrect.getBounds(); 306 SkRect rect = rrect.getBounds();
307 SkScalar radius = 0; 307 SkScalar radius = 0;
308 switch (crre.getCircularCornerFlags()) { 308 switch (crre.getCircularCornerFlags()) {
309 case CircularRRectEffect::kAll_CornerFlags: 309 case CircularRRectEffect::kAll_CornerFlags:
310 SkASSERT(rrect.isSimpleCircular()); 310 SkASSERT(rrect.isSimpleCircular());
311 radius = rrect.getSimpleRadii().fX; 311 radius = rrect.getSimpleRadii().fX;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 case CircularRRectEffect::kBottom_CornerFlags: 364 case CircularRRectEffect::kBottom_CornerFlags:
365 radius = rrect.radii(SkRRect::kLowerLeft_Corner).fX; 365 radius = rrect.radii(SkRRect::kLowerLeft_Corner).fX;
366 rect.fLeft += radius; 366 rect.fLeft += radius;
367 rect.fTop -= 0.5f; 367 rect.fTop -= 0.5f;
368 rect.fRight -= radius; 368 rect.fRight -= radius;
369 rect.fBottom -= radius; 369 rect.fBottom -= radius;
370 break; 370 break;
371 default: 371 default:
372 SkFAIL("Should have been one of the above cases."); 372 SkFAIL("Should have been one of the above cases.");
373 } 373 }
374 uman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect.f Bottom); 374 prman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect. fBottom);
375 uman.set1f(fRadiusPlusHalfUniform, radius + 0.5f); 375 prman.set1f(fRadiusPlusHalfUniform, radius + 0.5f);
376 fPrevRRect = rrect; 376 fPrevRRect = rrect;
377 } 377 }
378 } 378 }
379 379
380 ////////////////////////////////////////////////////////////////////////////// 380 //////////////////////////////////////////////////////////////////////////////
381 381
382 class GLEllipticalRRectEffect; 382 class GLEllipticalRRectEffect;
383 383
384 class EllipticalRRectEffect : public GrEffect { 384 class EllipticalRRectEffect : public GrEffect {
385 public: 385 public:
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 virtual void emitCode(GrGLShaderBuilder* builder, 489 virtual void emitCode(GrGLShaderBuilder* builder,
490 const GrDrawEffect& drawEffect, 490 const GrDrawEffect& drawEffect,
491 const GrEffectKey& key, 491 const GrEffectKey& key,
492 const char* outputColor, 492 const char* outputColor,
493 const char* inputColor, 493 const char* inputColor,
494 const TransformedCoordsArray&, 494 const TransformedCoordsArray&,
495 const TextureSamplerArray&) SK_OVERRIDE; 495 const TextureSamplerArray&) SK_OVERRIDE;
496 496
497 static inline void GenKey(const GrDrawEffect&, const GrGLCaps&, GrEffectKeyB uilder*); 497 static inline void GenKey(const GrDrawEffect&, const GrGLCaps&, GrEffectKeyB uilder*);
498 498
499 virtual void setData(const GrGLUniformManager&, const GrDrawEffect&) SK_OVER RIDE; 499 virtual void setData(const GrGLProgramResourceManager&, const GrDrawEffect&) SK_OVERRIDE;
500 500
501 private: 501 private:
502 GrGLUniformManager::UniformHandle fInnerRectUniform; 502 GrGLProgramResourceManager::UniformHandle fInnerRectUniform;
bsalomon 2014/07/29 13:08:18 align
503 GrGLUniformManager::UniformHandle fInvRadiiSqdUniform; 503 GrGLProgramResourceManager::UniformHandle fInvRadiiSqdUniform;
504 SkRRect fPrevRRect; 504 SkRRect fPrevRRect;
505 typedef GrGLEffect INHERITED; 505 typedef GrGLEffect INHERITED;
506 }; 506 };
507 507
508 GLEllipticalRRectEffect::GLEllipticalRRectEffect(const GrBackendEffectFactory& f actory, 508 GLEllipticalRRectEffect::GLEllipticalRRectEffect(const GrBackendEffectFactory& f actory,
509 const GrDrawEffect& drawEffect) 509 const GrDrawEffect& drawEffect)
510 : INHERITED (factory) { 510 : INHERITED (factory) {
511 fPrevRRect.setEmpty(); 511 fPrevRRect.setEmpty();
512 } 512 }
513 513
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_st r()); 586 (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_st r());
587 } 587 }
588 588
589 void GLEllipticalRRectEffect::GenKey(const GrDrawEffect& drawEffect, const GrGLC aps&, 589 void GLEllipticalRRectEffect::GenKey(const GrDrawEffect& drawEffect, const GrGLC aps&,
590 GrEffectKeyBuilder* b) { 590 GrEffectKeyBuilder* b) {
591 const EllipticalRRectEffect& erre = drawEffect.castEffect<EllipticalRRectEff ect>(); 591 const EllipticalRRectEffect& erre = drawEffect.castEffect<EllipticalRRectEff ect>();
592 GR_STATIC_ASSERT(kLast_GrEffectEdgeType < (1 << 3)); 592 GR_STATIC_ASSERT(kLast_GrEffectEdgeType < (1 << 3));
593 b->add32(erre.getRRect().getType() | erre.getEdgeType() << 3); 593 b->add32(erre.getRRect().getType() | erre.getEdgeType() << 3);
594 } 594 }
595 595
596 void GLEllipticalRRectEffect::setData(const GrGLUniformManager& uman, 596 void GLEllipticalRRectEffect::setData(const GrGLProgramResourceManager& prman,
597 const GrDrawEffect& drawEffect) { 597 const GrDrawEffect& drawEffect) {
598 const EllipticalRRectEffect& erre = drawEffect.castEffect<EllipticalRRectEff ect>(); 598 const EllipticalRRectEffect& erre = drawEffect.castEffect<EllipticalRRectEff ect>();
599 const SkRRect& rrect = erre.getRRect(); 599 const SkRRect& rrect = erre.getRRect();
600 if (rrect != fPrevRRect) { 600 if (rrect != fPrevRRect) {
601 SkRect rect = rrect.getBounds(); 601 SkRect rect = rrect.getBounds();
602 const SkVector& r0 = rrect.radii(SkRRect::kUpperLeft_Corner); 602 const SkVector& r0 = rrect.radii(SkRRect::kUpperLeft_Corner);
603 SkASSERT(r0.fX >= kRadiusMin); 603 SkASSERT(r0.fX >= kRadiusMin);
604 SkASSERT(r0.fY >= kRadiusMin); 604 SkASSERT(r0.fY >= kRadiusMin);
605 switch (erre.getRRect().getType()) { 605 switch (erre.getRRect().getType()) {
606 case SkRRect::kSimple_Type: 606 case SkRRect::kSimple_Type:
607 rect.inset(r0.fX, r0.fY); 607 rect.inset(r0.fX, r0.fY);
608 uman.set2f(fInvRadiiSqdUniform, 1.f / (r0.fX * r0.fX), 608 prman.set2f(fInvRadiiSqdUniform, 1.f / (r0.fX * r0.fX),
609 1.f / (r0.fY * r0.fY)); 609 1.f / (r0.fY * r0.fY));
610 break; 610 break;
611 case SkRRect::kNinePatch_Type: { 611 case SkRRect::kNinePatch_Type: {
612 const SkVector& r1 = rrect.radii(SkRRect::kLowerRight_Corner); 612 const SkVector& r1 = rrect.radii(SkRRect::kLowerRight_Corner);
613 SkASSERT(r1.fX >= kRadiusMin); 613 SkASSERT(r1.fX >= kRadiusMin);
614 SkASSERT(r1.fY >= kRadiusMin); 614 SkASSERT(r1.fY >= kRadiusMin);
615 rect.fLeft += r0.fX; 615 rect.fLeft += r0.fX;
616 rect.fTop += r0.fY; 616 rect.fTop += r0.fY;
617 rect.fRight -= r1.fX; 617 rect.fRight -= r1.fX;
618 rect.fBottom -= r1.fY; 618 rect.fBottom -= r1.fY;
619 uman.set4f(fInvRadiiSqdUniform, 1.f / (r0.fX * r0.fX), 619 prman.set4f(fInvRadiiSqdUniform, 1.f / (r0.fX * r0.fX),
620 1.f / (r0.fY * r0.fY), 620 1.f / (r0.fY * r0.fY),
621 1.f / (r1.fX * r1.fX), 621 1.f / (r1.fX * r1.fX),
622 1.f / (r1.fY * r1.fY)); 622 1.f / (r1.fY * r1.fY));
623 break; 623 break;
624 } 624 }
625 default: 625 default:
626 SkFAIL("RRect should always be simple or nine-patch."); 626 SkFAIL("RRect should always be simple or nine-patch.");
627 } 627 }
628 uman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect.f Bottom); 628 prman.set4f(fInnerRectUniform, rect.fLeft, rect.fTop, rect.fRight, rect. fBottom);
629 fPrevRRect = rrect; 629 fPrevRRect = rrect;
630 } 630 }
631 } 631 }
632 632
633 ////////////////////////////////////////////////////////////////////////////// 633 //////////////////////////////////////////////////////////////////////////////
634 634
635 GrEffect* GrRRectEffect::Create(GrEffectEdgeType edgeType, const SkRRect& rrect) { 635 GrEffect* GrRRectEffect::Create(GrEffectEdgeType edgeType, const SkRRect& rrect) {
636 if (rrect.isRect()) { 636 if (rrect.isRect()) {
637 return GrConvexPolyEffect::Create(edgeType, rrect.getBounds()); 637 return GrConvexPolyEffect::Create(edgeType, rrect.getBounds());
638 } 638 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 if (rrect.isNinePatch()) { 721 if (rrect.isNinePatch()) {
722 return EllipticalRRectEffect::Create(edgeType, rrect); 722 return EllipticalRRectEffect::Create(edgeType, rrect);
723 } 723 }
724 return NULL; 724 return NULL;
725 } 725 }
726 } 726 }
727 } 727 }
728 728
729 return NULL; 729 return NULL;
730 } 730 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698