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

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

Issue 783763002: Initial CL to move color / coverage off of drawstate (Closed) Base URL: https://skia.googlesource.com/skia.git@no-static-gp
Patch Set: bug fix Created 6 years 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') | tests/GLProgramsTest.cpp » ('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 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 GrGLProgramDataManager::UniformHandle fTextureSizeUni; 158 GrGLProgramDataManager::UniformHandle fTextureSizeUni;
159 SkISize fTextureSize; 159 SkISize fTextureSize;
160 GrGLProgramDataManager::UniformHandle fLuminanceUni; 160 GrGLProgramDataManager::UniformHandle fLuminanceUni;
161 float fLuminance; 161 float fLuminance;
162 162
163 typedef GrGLGeometryProcessor INHERITED; 163 typedef GrGLGeometryProcessor INHERITED;
164 }; 164 };
165 165
166 /////////////////////////////////////////////////////////////////////////////// 166 ///////////////////////////////////////////////////////////////////////////////
167 167
168 GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrTexture* texture, 168 GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrColor color,
169 GrTexture* texture,
169 const GrTextureParams & params, 170 const GrTextureParams & params,
170 #ifdef SK_GAMMA_APPLY_TO_A8 171 #ifdef SK_GAMMA_APPLY_TO_A8
171 GrTexture* gamma, 172 GrTexture* gamma,
172 const GrTextureParams & gammaParams, 173 const GrTextureParams & gammaParams,
173 float luminance, 174 float luminance,
174 #endif 175 #endif
175 uint32_t flags) 176 uint32_t flags)
176 : fTextureAccess(texture, params) 177 : INHERITED(color)
178 , fTextureAccess(texture, params)
177 #ifdef SK_GAMMA_APPLY_TO_A8 179 #ifdef SK_GAMMA_APPLY_TO_A8
178 , fGammaTextureAccess(gamma, gammaParams) 180 , fGammaTextureAccess(gamma, gammaParams)
179 , fLuminance(luminance) 181 , fLuminance(luminance)
180 #endif 182 #endif
181 , fFlags(flags & kNonLCD_DistanceFieldEffectMask) 183 , fFlags(flags & kNonLCD_DistanceFieldEffectMask)
182 , fInColor(NULL) { 184 , fInColor(NULL) {
183 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask)); 185 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
184 this->initClassID<GrDistanceFieldTextureEffect>(); 186 this->initClassID<GrDistanceFieldTextureEffect>();
185 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType)); 187 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType));
186 if (flags & kColorAttr_DistanceFieldEffectFlag) { 188 if (flags & kColorAttr_DistanceFieldEffectFlag) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 244 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
243 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 245 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
244 }; 246 };
245 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode : 247 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode :
246 GrTextureParams::kNon e_FilterMode); 248 GrTextureParams::kNon e_FilterMode);
247 #ifdef SK_GAMMA_APPLY_TO_A8 249 #ifdef SK_GAMMA_APPLY_TO_A8
248 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode : 250 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode :
249 GrTextureParams::kNo ne_FilterMode); 251 GrTextureParams::kNo ne_FilterMode);
250 #endif 252 #endif
251 253
252 return GrDistanceFieldTextureEffect::Create(textures[texIdx], params, 254 return GrDistanceFieldTextureEffect::Create(GrRandomColor(random), textures[ texIdx], params,
253 #ifdef SK_GAMMA_APPLY_TO_A8 255 #ifdef SK_GAMMA_APPLY_TO_A8
254 textures[texIdx2], params2, 256 textures[texIdx2], params2,
255 random->nextF(), 257 random->nextF(),
256 #endif 258 #endif
257 random->nextBool() ? 259 random->nextBool() ?
258 kSimilarity_DistanceFieldEff ectFlag : 0); 260 kSimilarity_DistanceFieldEff ectFlag : 0);
259 } 261 }
260 262
261 /////////////////////////////////////////////////////////////////////////////// 263 ///////////////////////////////////////////////////////////////////////////////
262 264
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 373
372 private: 374 private:
373 GrGLProgramDataManager::UniformHandle fTextureSizeUni; 375 GrGLProgramDataManager::UniformHandle fTextureSizeUni;
374 SkISize fTextureSize; 376 SkISize fTextureSize;
375 377
376 typedef GrGLGeometryProcessor INHERITED; 378 typedef GrGLGeometryProcessor INHERITED;
377 }; 379 };
378 380
379 /////////////////////////////////////////////////////////////////////////////// 381 ///////////////////////////////////////////////////////////////////////////////
380 382
381 GrDistanceFieldNoGammaTextureEffect::GrDistanceFieldNoGammaTextureEffect(GrTextu re* texture, 383 GrDistanceFieldNoGammaTextureEffect::GrDistanceFieldNoGammaTextureEffect(
382 const GrText ureParams& params, 384 GrColor color,
383 uint32_t fla gs) 385 GrTexture* texture,
384 : fTextureAccess(texture, params) 386 const GrTextureParams& params,
387 uint32_t flags)
388 : INHERITED(color)
389 , fTextureAccess(texture, params)
385 , fFlags(flags & kNonLCD_DistanceFieldEffectMask) 390 , fFlags(flags & kNonLCD_DistanceFieldEffectMask)
386 , fInColor(NULL) { 391 , fInColor(NULL) {
387 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask)); 392 SkASSERT(!(flags & ~kNonLCD_DistanceFieldEffectMask));
388 this->initClassID<GrDistanceFieldNoGammaTextureEffect>(); 393 this->initClassID<GrDistanceFieldNoGammaTextureEffect>();
389 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType)); 394 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType));
390 if (flags & kColorAttr_DistanceFieldEffectFlag) { 395 if (flags & kColorAttr_DistanceFieldEffectFlag) {
391 fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVerte xAttribType)); 396 fInColor = &this->addVertexAttrib(GrAttribute("inColor", kVec4ub_GrVerte xAttribType));
392 this->setHasVertexColor(); 397 this->setHasVertexColor();
393 } 398 }
394 fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords", 399 fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords",
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 SkShader::kRepeat_TileMode, 437 SkShader::kRepeat_TileMode,
433 SkShader::kMirror_TileMode, 438 SkShader::kMirror_TileMode,
434 }; 439 };
435 SkShader::TileMode tileModes[] = { 440 SkShader::TileMode tileModes[] = {
436 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 441 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
437 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))], 442 kTileModes[random->nextULessThan(SK_ARRAY_COUNT(kTileModes))],
438 }; 443 };
439 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode 444 GrTextureParams params(tileModes, random->nextBool() ? GrTextureParams::kBil erp_FilterMode
440 : GrTextureParams::kNon e_FilterMode); 445 : GrTextureParams::kNon e_FilterMode);
441 446
442 return GrDistanceFieldNoGammaTextureEffect::Create(textures[texIdx], params, 447 return GrDistanceFieldNoGammaTextureEffect::Create(GrRandomColor(random), te xtures[texIdx],
448 params,
443 random->nextBool() ? kSimilarity_DistanceFieldEffectFlag : 0); 449 random->nextBool() ? kSimilarity_DistanceFieldEffectFlag : 0);
444 } 450 }
445 451
446 /////////////////////////////////////////////////////////////////////////////// 452 ///////////////////////////////////////////////////////////////////////////////
447 453
448 class GrGLDistanceFieldLCDTextureEffect : public GrGLGeometryProcessor { 454 class GrGLDistanceFieldLCDTextureEffect : public GrGLGeometryProcessor {
449 public: 455 public:
450 GrGLDistanceFieldLCDTextureEffect(const GrGeometryProcessor&, 456 GrGLDistanceFieldLCDTextureEffect(const GrGeometryProcessor&,
451 const GrBatchTracker&) 457 const GrBatchTracker&)
452 : fTextureSize(SkISize::Make(-1,-1)) 458 : fTextureSize(SkISize::Make(-1,-1))
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 SkISize fTextureSize; 633 SkISize fTextureSize;
628 GrGLProgramDataManager::UniformHandle fTextColorUni; 634 GrGLProgramDataManager::UniformHandle fTextColorUni;
629 SkColor fTextColor; 635 SkColor fTextColor;
630 636
631 typedef GrGLGeometryProcessor INHERITED; 637 typedef GrGLGeometryProcessor INHERITED;
632 }; 638 };
633 639
634 /////////////////////////////////////////////////////////////////////////////// 640 ///////////////////////////////////////////////////////////////////////////////
635 641
636 GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect( 642 GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect(
643 GrColor color,
637 GrTexture* texture, const GrTe xtureParams& params, 644 GrTexture* texture, const GrTe xtureParams& params,
638 GrTexture* gamma, const GrText ureParams& gParams, 645 GrTexture* gamma, const GrText ureParams& gParams,
639 SkColor textColor, 646 SkColor textColor,
640 uint32_t flags) 647 uint32_t flags)
641 : fTextureAccess(texture, params) 648 : INHERITED(color)
649 , fTextureAccess(texture, params)
642 , fGammaTextureAccess(gamma, gParams) 650 , fGammaTextureAccess(gamma, gParams)
643 , fTextColor(textColor) 651 , fTextColor(textColor)
644 , fFlags(flags & kLCD_DistanceFieldEffectMask){ 652 , fFlags(flags & kLCD_DistanceFieldEffectMask){
645 SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_Distan ceFieldEffectFlag)); 653 SkASSERT(!(flags & ~kLCD_DistanceFieldEffectMask) && (flags & kUseLCD_Distan ceFieldEffectFlag));
646 this->initClassID<GrDistanceFieldLCDTextureEffect>(); 654 this->initClassID<GrDistanceFieldLCDTextureEffect>();
647 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType)); 655 fInPosition = &this->addVertexAttrib(GrAttribute("inPosition", kVec2f_GrVert exAttribType));
648 fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords", 656 fInTextureCoords = &this->addVertexAttrib(GrAttribute("inTextureCoords",
649 kVec2f_GrVertexAttribT ype)); 657 kVec2f_GrVertexAttribT ype));
650 this->addTextureAccess(&fTextureAccess); 658 this->addTextureAccess(&fTextureAccess);
651 this->addTextureAccess(&fGammaTextureAccess); 659 this->addTextureAccess(&fGammaTextureAccess);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 GrTextureParams::kNone_FilterMode); 706 GrTextureParams::kNone_FilterMode);
699 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode : 707 GrTextureParams params2(tileModes, random->nextBool() ? GrTextureParams::kBi lerp_FilterMode :
700 GrTextureParams::kNone_FilterMode); 708 GrTextureParams::kNone_FilterMode);
701 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256), 709 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256),
702 random->nextULessThan(256), 710 random->nextULessThan(256),
703 random->nextULessThan(256), 711 random->nextULessThan(256),
704 random->nextULessThan(256)); 712 random->nextULessThan(256));
705 uint32_t flags = kUseLCD_DistanceFieldEffectFlag; 713 uint32_t flags = kUseLCD_DistanceFieldEffectFlag;
706 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0; 714 flags |= random->nextBool() ? kUniformScale_DistanceFieldEffectMask : 0;
707 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0; 715 flags |= random->nextBool() ? kBGR_DistanceFieldEffectFlag : 0;
708 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, 716 return GrDistanceFieldLCDTextureEffect::Create(GrRandomColor(random), textur es[texIdx], params,
709 textures[texIdx2], params2, 717 textures[texIdx2], params2,
710 textColor, 718 textColor,
711 flags); 719 flags);
712 } 720 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrDistanceFieldTextureEffect.h ('k') | tests/GLProgramsTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698