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

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

Issue 815553003: Move ViewMatrix off of drawstate (Closed) Base URL: https://skia.googlesource.com/skia.git@remove-fragment-stage
Patch Set: more cleaning 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/effects/GrDistanceFieldTextureEffect.h ('k') | no next file » | 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 2013 Google Inc. 2 * Copyright 2013 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 "GrDistanceFieldTextureEffect.h" 8 #include "GrDistanceFieldTextureEffect.h"
9 #include "GrInvariantOutput.h" 9 #include "GrInvariantOutput.h"
10 #include "GrTexture.h" 10 #include "GrTexture.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 SkISize fTextureSize; 179 SkISize fTextureSize;
180 UniformHandle fLuminanceUni; 180 UniformHandle fLuminanceUni;
181 float fLuminance; 181 float fLuminance;
182 182
183 typedef GrGLGeometryProcessor INHERITED; 183 typedef GrGLGeometryProcessor INHERITED;
184 }; 184 };
185 185
186 /////////////////////////////////////////////////////////////////////////////// 186 ///////////////////////////////////////////////////////////////////////////////
187 187
188 GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrColor color, 188 GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrColor color,
189 const SkMatrix& viewM atrix,
189 GrTexture* texture, 190 GrTexture* texture,
190 const GrTextureParams & params, 191 const GrTextureParams & params,
191 #ifdef SK_GAMMA_APPLY_TO_A8 192 #ifdef SK_GAMMA_APPLY_TO_A8
192 GrTexture* gamma, 193 GrTexture* gamma,
193 const GrTextureParams & gammaParams, 194 const GrTextureParams & gammaParams,
194 float luminance, 195 float luminance,
195 #endif 196 #endif
196 uint32_t flags, bool opaqueVertexColors) 197 uint32_t flags, bool opaqueVertexColors)
197 : INHERITED(color, opaqueVertexColors) 198 : INHERITED(color, viewMatrix, SkMatrix::I(), opaqueVertexColors)
198 , fTextureAccess(texture, params) 199 , fTextureAccess(texture, params)
199 #ifdef SK_GAMMA_APPLY_TO_A8 200 #ifdef SK_GAMMA_APPLY_TO_A8
200 , fGammaTextureAccess(gamma, gammaParams) 201 , fGammaTextureAccess(gamma, gammaParams)
201 , fLuminance(luminance) 202 , fLuminance(luminance)
202 #endif 203 #endif
203 , fFlags(flags & kNonLCD_DistanceFieldEffectMask) 204 , fFlags(flags & kNonLCD_DistanceFieldEffectMask)
204 , fInColor(NULL) { 205 , fInColor(NULL) {
205 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask)); 206 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
206 this->initClassID<GrDistanceFieldTextureEffect>(); 207 this->initClassID<GrDistanceFieldTextureEffect>();
207 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType)); 208 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType));
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 283 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
283 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 284 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
284 }; 285 };
285 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode : 286 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode :
286 GrTextureParams::kNon e_FilterMode); 287 GrTextureParams::kNon e_FilterMode);
287 #ifdef SK_GAMMA_APPLY_TO_A8 288 #ifdef SK_GAMMA_APPLY_TO_A8
288 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode : 289 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode :
289 GrTextureParams::kNo ne_FilterMode); 290 GrTextureParams::kNo ne_FilterMode);
290 #endif 291 #endif
291 292
292 return GrDistanceFieldTextureEffect::Create(GrRandomColor(random), textures[ texIdx], params, 293 return GrDistanceFieldTextureEffect::Create(GrRandomColor(random),
294 GrProcessorUnitTest::TestMatrix( random),
295 textures[texIdx], params,
293 #ifdef SK_GAMMA_APPLY_TO_A8 296 #ifdef SK_GAMMA_APPLY_TO_A8
294 textures[texIdx2], params2, 297 textures[texIdx2], params2,
295 random->nextF(), 298 random->nextF(),
296 #endif 299 #endif
297 random->nextBool() ? 300 random->nextBool() ?
298 kSimilarity_DistanceFieldEff ectFlag : 0, 301 kSimilarity_DistanceFieldEff ectFlag : 0,
299 random->nextBool()); 302 random->nextBool());
300 } 303 }
301 304
302 /////////////////////////////////////////////////////////////////////////////// 305 ///////////////////////////////////////////////////////////////////////////////
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 GrColor fColor; 439 GrColor fColor;
437 SkISize fTextureSize; 440 SkISize fTextureSize;
438 441
439 typedef GrGLGeometryProcessor INHERITED; 442 typedef GrGLGeometryProcessor INHERITED;
440 }; 443 };
441 444
442 /////////////////////////////////////////////////////////////////////////////// 445 ///////////////////////////////////////////////////////////////////////////////
443 446
444 GrDistanceFieldNoGammaTextureEffect::GrDistanceFieldNoGammaTextureEffect( 447 GrDistanceFieldNoGammaTextureEffect::GrDistanceFieldNoGammaTextureEffect(
445 GrColor color, 448 GrColor color,
449 const SkMatrix& viewMatrix,
446 GrTexture* texture, 450 GrTexture* texture,
447 const GrTextureParams& params, 451 const GrTextureParams& params,
448 uint32_t flags, 452 uint32_t flags,
449 bool opaqueVertexColors) 453 bool opaqueVertexColors)
450 : INHERITED(color, opaqueVertexColors) 454 : INHERITED(color, viewMatrix, SkMatrix::I(), opaqueVertexColors)
451 , fTextureAccess(texture, params) 455 , fTextureAccess(texture, params)
452 , fFlags(flags & kNonLCD_DistanceFieldEffectMask) 456 , fFlags(flags & kNonLCD_DistanceFieldEffectMask)
453 , fInColor(NULL) { 457 , fInColor(NULL) {
454 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask)); 458 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
455 this->initClassID<GrDistanceFieldNoGammaTextureEffect>(); 459 this->initClassID<GrDistanceFieldNoGammaTextureEffect>();
456 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType)); 460 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType));
457 if (flags & kColorAttr_DistanceFieldEffectFlag) { 461 if (flags & kColorAttr_DistanceFieldEffectFlag) {
458 fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVerte xAttribType)); 462 fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVerte xAttribType));
459 this->setHasVertexColor(); 463 this->setHasVertexColor();
460 } 464 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 SkShader::kRepeat_TileMode, 522 SkShader::kRepeat_TileMode,
519 SkShader::kMirror_TileMode, 523 SkShader::kMirror_TileMode,
520 }; 524 };
521 SkShader::TileMode tileModes[] = { 525 SkShader::TileMode tileModes[] = {
522 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 526 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
523 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 527 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
524 }; 528 };
525 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode 529 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode
526 : GrTextureParams::kNon e_FilterMode); 530 : GrTextureParams::kNon e_FilterMode);
527 531
528 return GrDistanceFieldNoGammaTextureEffect::Create(GrRandomColor(random), te xtures[texIdx], 532 return GrDistanceFieldNoGammaTextureEffect::Create(GrRandomColor(random),
533 GrProcessorUnitTest::Test Matrix(random),
534 textures[texIdx],
529 params, 535 params,
530 random->nextBool() ? kSimilarity_DistanceFieldEffectFlag : 0, random->ne xtBool()); 536 random->nextBool() ? kSimilarity_DistanceFieldEffectFlag : 0, random->ne xtBool());
531 } 537 }
532 538
533 /////////////////////////////////////////////////////////////////////////////// 539 ///////////////////////////////////////////////////////////////////////////////
534 540
535 struct DistanceFieldLCDBatchTracker { 541 struct DistanceFieldLCDBatchTracker {
536 GrGPInput fInputColorType; 542 GrGPInput fInputColorType;
537 GrColor fColor; 543 GrColor fColor;
538 bool fUsesLocalCoords; 544 bool fUsesLocalCoords;
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 SkISize fTextureSize; 747 SkISize fTextureSize;
742 UniformHandle fTextColorUni; 748 UniformHandle fTextColorUni;
743 SkColor fTextColor; 749 SkColor fTextColor;
744 750
745 typedef GrGLGeometryProcessor INHERITED; 751 typedef GrGLGeometryProcessor INHERITED;
746 }; 752 };
747 753
748 /////////////////////////////////////////////////////////////////////////////// 754 ///////////////////////////////////////////////////////////////////////////////
749 755
750 GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect( 756 GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect(
751 GrColor color, 757 GrColor color, const SkMatrix& viewMatrix,
752 GrTexture* texture, const GrTe xtureParams& params, 758 GrTexture* texture, const GrTe xtureParams& params,
753 GrTexture* gamma, const GrText ureParams& gParams, 759 GrTexture* gamma, const GrText ureParams& gParams,
754 SkColor textColor, 760 SkColor textColor,
755 uint32_t flags) 761 uint32_t flags)
756 : INHERITED(color) 762 : INHERITED(color, viewMatrix, SkMatrix::I())
757 , fTextureAccess(texture, params) 763 , fTextureAccess(texture, params)
758 , fGammaTextureAccess(gamma, gParams) 764 , fGammaTextureAccess(gamma, gParams)
759 , fTextColor(textColor) 765 , fTextColor(textColor)
760 , fFlags(flags & kLCD_DistanceFieldEffectMask){ 766 , fFlags(flags & kLCD_DistanceFieldEffectMask){
761 SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_Distan ceFieldEffectFlag)); 767 SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_Distan ceFieldEffectFlag));
762 this->initClassID<GrDistanceFieldLCDTextureEffect>(); 768 this->initClassID<GrDistanceFieldLCDTextureEffect>();
763 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType)); 769 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType));
764 fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords", 770 fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords",
765 kVec2f_GrVertexAttribT ype)); 771 kVec2f_GrVertexAttribT ype));
766 this->addTextureAccess(&fTextureAccess); 772 this->addTextureAccess(&fTextureAccess);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 GrTextureParams::kNone_FilterMode); 838 GrTextureParams::kNone_FilterMode);
833 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode : 839 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode :
834 GrTextureParams::kNone_FilterMode); 840 GrTextureParams::kNone_FilterMode);
835 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256), 841 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256),
836 random->nextULessThan(256), 842 random->nextULessThan(256),
837 random->nextULessThan(256), 843 random->nextULessThan(256),
838 random->nextULessThan(256)); 844 random->nextULessThan(256));
839 uint32_t flags = kUseLCD_DistanceFieldEffectFlag; 845 uint32_t flags = kUseLCD_DistanceFieldEffectFlag;
840 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0; 846 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0;
841 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0; 847 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0;
842 return GrDistanceFieldLCDTextureEffect::Create(GrRandomColor(random), textur es[texIdx], params, 848 return GrDistanceFieldLCDTextureEffect::Create(GrRandomColor(random),
849 GrProcessorUnitTest::TestMatr ix(random),
850 textures[texIdx], params,
843 textures[texIdx2], params2, 851 textures[texIdx2], params2,
844 textColor, 852 textColor,
845 flags); 853 flags);
846 } 854 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrDistanceFieldTextureEffect.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698