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

Side by Side Diff: src/gpu/effects/GrDistanceFieldTextureEffect.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 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 "gl/GrGLEffect.h" 9 #include "gl/GrGLEffect.h"
10 #include "gl/GrGLShaderBuilder.h" 10 #include "gl/GrGLShaderBuilder.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 builder->fsCodeAppend("\tvec4 gammaColor = "); 118 builder->fsCodeAppend("\tvec4 gammaColor = ");
119 builder->fsAppendTextureLookup(samplers[1], "uv", kVec2f_GrSLType); 119 builder->fsAppendTextureLookup(samplers[1], "uv", kVec2f_GrSLType);
120 builder->fsCodeAppend(";\n"); 120 builder->fsCodeAppend(";\n");
121 builder->fsCodeAppend("\tval = gammaColor.r;\n"); 121 builder->fsCodeAppend("\tval = gammaColor.r;\n");
122 #endif 122 #endif
123 123
124 builder->fsCodeAppendf("\t%s = %s;\n", outputColor, 124 builder->fsCodeAppendf("\t%s = %s;\n", outputColor,
125 (GrGLSLExpr4(inputColor) * GrGLSLExpr1("val") ).c_str()); 125 (GrGLSLExpr4(inputColor) * GrGLSLExpr1("val") ).c_str());
126 } 126 }
127 127
128 virtual void setData(const GrGLUniformManager& uman, 128 virtual void setData(const GrGLProgramResourceManager& prman,
129 const GrDrawEffect& drawEffect) SK_OVERRIDE { 129 const GrDrawEffect& drawEffect) SK_OVERRIDE {
130 SkASSERT(fTextureSizeUni.isValid()); 130 SkASSERT(fTextureSizeUni.isValid());
131 131
132 GrTexture* texture = drawEffect.effect()->texture(0); 132 GrTexture* texture = drawEffect.effect()->texture(0);
133 if (texture->width() != fTextureSize.width() || 133 if (texture->width() != fTextureSize.width() ||
134 texture->height() != fTextureSize.height()) { 134 texture->height() != fTextureSize.height()) {
135 fTextureSize = SkISize::Make(texture->width(), texture->height()); 135 fTextureSize = SkISize::Make(texture->width(), texture->height());
136 uman.set2f(fTextureSizeUni, 136 prman.set2f(fTextureSizeUni,
137 SkIntToScalar(fTextureSize.width()), 137 SkIntToScalar(fTextureSize.width()),
138 SkIntToScalar(fTextureSize.height())); 138 SkIntToScalar(fTextureSize.height()));
139 } 139 }
140 #ifdef SK_GAMMA_APPLY_TO_A8 140 #ifdef SK_GAMMA_APPLY_TO_A8
141 const GrDistanceFieldTextureEffect& dfTexEffect = 141 const GrDistanceFieldTextureEffect& dfTexEffect =
142 drawEffect.castEffect<GrDistanceFi eldTextureEffect>(); 142 drawEffect.castEffect<GrDistanceFi eldTextureEffect>();
143 float luminance = dfTexEffect.getLuminance(); 143 float luminance = dfTexEffect.getLuminance();
144 if (luminance != fLuminance) { 144 if (luminance != fLuminance) {
145 uman.set1f(fLuminanceUni, luminance); 145 prman.set1f(fLuminanceUni, luminance);
146 fLuminance = luminance; 146 fLuminance = luminance;
147 } 147 }
148 #endif 148 #endif
149 } 149 }
150 150
151 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&, 151 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&,
152 GrEffectKeyBuilder* b) { 152 GrEffectKeyBuilder* b) {
153 const GrDistanceFieldTextureEffect& dfTexEffect = 153 const GrDistanceFieldTextureEffect& dfTexEffect =
154 drawEffect.castEffect<GrDistanceFi eldTextureEffect>(); 154 drawEffect.castEffect<GrDistanceFi eldTextureEffect>();
155 155
156 b->add32(dfTexEffect.isSimilarity()); 156 b->add32(dfTexEffect.isSimilarity());
157 } 157 }
158 158
159 private: 159 private:
160 GrGLUniformManager::UniformHandle fTextureSizeUni; 160 GrGLProgramResourceManager::UniformHandle fTextureSizeUni;
bsalomon 2014/07/29 13:08:17 align
161 SkISize fTextureSize; 161 SkISize fTextureSize;
162 GrGLUniformManager::UniformHandle fLuminanceUni; 162 GrGLProgramResourceManager::UniformHandle fLuminanceUni;
163 float fLuminance; 163 float fLuminance;
164 164
165 typedef GrGLVertexEffect INHERITED; 165 typedef GrGLVertexEffect INHERITED;
166 }; 166 };
167 167
168 /////////////////////////////////////////////////////////////////////////////// 168 ///////////////////////////////////////////////////////////////////////////////
169 169
170 GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrTexture* texture, 170 GrDistanceFieldTextureEffect::GrDistanceFieldTextureEffect(GrTexture* texture,
171 const GrTextureParams & params, 171 const GrTextureParams & params,
172 #ifdef SK_GAMMA_APPLY_TO_A8 172 #ifdef SK_GAMMA_APPLY_TO_A8
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 builder->fsCodeAppendf("\tuv = vec2(val.z, %s.z);\n", textColorUniName); 374 builder->fsCodeAppendf("\tuv = vec2(val.z, %s.z);\n", textColorUniName);
375 builder->fsCodeAppend("\tgammaColor = "); 375 builder->fsCodeAppend("\tgammaColor = ");
376 builder->fsAppendTextureLookup(samplers[1], "uv", kVec2f_GrSLType); 376 builder->fsAppendTextureLookup(samplers[1], "uv", kVec2f_GrSLType);
377 builder->fsCodeAppend(";\n"); 377 builder->fsCodeAppend(";\n");
378 builder->fsCodeAppend("\tval.z = gammaColor.r;\n"); 378 builder->fsCodeAppend("\tval.z = gammaColor.r;\n");
379 379
380 builder->fsCodeAppendf("\t%s = %s;\n", outputColor, 380 builder->fsCodeAppendf("\t%s = %s;\n", outputColor,
381 (GrGLSLExpr4(inputColor) * GrGLSLExpr4("val")).c_ str()); 381 (GrGLSLExpr4(inputColor) * GrGLSLExpr4("val")).c_ str());
382 } 382 }
383 383
384 virtual void setData(const GrGLUniformManager& uman, 384 virtual void setData(const GrGLProgramResourceManager& prman,
385 const GrDrawEffect& drawEffect) SK_OVERRIDE { 385 const GrDrawEffect& drawEffect) SK_OVERRIDE {
386 SkASSERT(fTextureSizeUni.isValid()); 386 SkASSERT(fTextureSizeUni.isValid());
387 SkASSERT(fTextColorUni.isValid()); 387 SkASSERT(fTextColorUni.isValid());
388 388
389 const GrDistanceFieldLCDTextureEffect& dfTexEffect = 389 const GrDistanceFieldLCDTextureEffect& dfTexEffect =
390 drawEffect.castEffect<GrDistanceFieldLCDText ureEffect>(); 390 drawEffect.castEffect<GrDistanceFieldLCDText ureEffect>();
391 GrTexture* texture = drawEffect.effect()->texture(0); 391 GrTexture* texture = drawEffect.effect()->texture(0);
392 if (texture->width() != fTextureSize.width() || 392 if (texture->width() != fTextureSize.width() ||
393 texture->height() != fTextureSize.height()) { 393 texture->height() != fTextureSize.height()) {
394 fTextureSize = SkISize::Make(texture->width(), texture->height()); 394 fTextureSize = SkISize::Make(texture->width(), texture->height());
395 float delta = 1.0f/(3.0f*texture->width()); 395 float delta = 1.0f/(3.0f*texture->width());
396 if (dfTexEffect.useBGR()) { 396 if (dfTexEffect.useBGR()) {
397 delta = -delta; 397 delta = -delta;
398 } 398 }
399 uman.set3f(fTextureSizeUni, 399 prman.set3f(fTextureSizeUni,
400 SkIntToScalar(fTextureSize.width()), 400 SkIntToScalar(fTextureSize.width()),
401 SkIntToScalar(fTextureSize.height()), 401 SkIntToScalar(fTextureSize.height()),
402 delta); 402 delta);
403 } 403 }
404 404
405 GrColor textColor = dfTexEffect.getTextColor(); 405 GrColor textColor = dfTexEffect.getTextColor();
406 if (textColor != fTextColor) { 406 if (textColor != fTextColor) {
407 static const float ONE_OVER_255 = 1.f / 255.f; 407 static const float ONE_OVER_255 = 1.f / 255.f;
408 uman.set3f(fTextColorUni, 408 prman.set3f(fTextColorUni,
409 GrColorUnpackR(textColor) * ONE_OVER_255, 409 GrColorUnpackR(textColor) * ONE_OVER_255,
410 GrColorUnpackG(textColor) * ONE_OVER_255, 410 GrColorUnpackG(textColor) * ONE_OVER_255,
411 GrColorUnpackB(textColor) * ONE_OVER_255); 411 GrColorUnpackB(textColor) * ONE_OVER_255);
412 fTextColor = textColor; 412 fTextColor = textColor;
413 } 413 }
414 } 414 }
415 415
416 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&, 416 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&,
417 GrEffectKeyBuilder* b) { 417 GrEffectKeyBuilder* b) {
418 const GrDistanceFieldLCDTextureEffect& dfTexEffect = 418 const GrDistanceFieldLCDTextureEffect& dfTexEffect =
419 drawEffect.castEffect<GrDistanceField LCDTextureEffect>(); 419 drawEffect.castEffect<GrDistanceField LCDTextureEffect>();
420 420
421 b->add32(dfTexEffect.isUniformScale()); 421 b->add32(dfTexEffect.isUniformScale());
422 } 422 }
423 423
424 private: 424 private:
425 GrGLUniformManager::UniformHandle fTextureSizeUni; 425 GrGLProgramResourceManager::UniformHandle fTextureSizeUni;
bsalomon 2014/07/29 13:08:17 align
426 SkISize fTextureSize; 426 SkISize fTextureSize;
427 GrGLUniformManager::UniformHandle fTextColorUni; 427 GrGLProgramResourceManager::UniformHandle fTextColorUni;
428 SkColor fTextColor; 428 SkColor fTextColor;
429 429
430 typedef GrGLVertexEffect INHERITED; 430 typedef GrGLVertexEffect INHERITED;
431 }; 431 };
432 432
433 /////////////////////////////////////////////////////////////////////////////// 433 ///////////////////////////////////////////////////////////////////////////////
434 434
435 GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect( 435 GrDistanceFieldLCDTextureEffect::GrDistanceFieldLCDTextureEffect(
436 GrTexture* texture, const GrTe xtureParams& params, 436 GrTexture* texture, const GrTe xtureParams& params,
437 GrTexture* gamma, const GrText ureParams& gParams, 437 GrTexture* gamma, const GrText ureParams& gParams,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 GrTextureParams::kNone_FilterMode); 494 GrTextureParams::kNone_FilterMode);
495 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256), 495 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256),
496 random->nextULessThan(256), 496 random->nextULessThan(256),
497 random->nextULessThan(256), 497 random->nextULessThan(256),
498 random->nextULessThan(256)); 498 random->nextULessThan(256));
499 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, 499 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params,
500 textures[texIdx2], params2, 500 textures[texIdx2], params2,
501 textColor, 501 textColor,
502 random->nextBool(), random->n extBool()); 502 random->nextBool(), random->n extBool());
503 } 503 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698