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

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

Issue 385713005: Allow GrGLEffects to produce variable length keys. (Closed) Base URL: https://skia.googlesource.com/skia.git@key
Patch Set: rebase Created 6 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
« no previous file with comments | « src/gpu/effects/GrDashingEffect.cpp ('k') | src/gpu/effects/GrDitherEffect.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 "gl/GrGLEffect.h" 9 #include "gl/GrGLEffect.h"
10 #include "gl/GrGLShaderBuilder.h" 10 #include "gl/GrGLShaderBuilder.h"
(...skipping 20 matching lines...) Expand all
31 31
32 class GrGLDistanceFieldTextureEffect : public GrGLVertexEffect { 32 class GrGLDistanceFieldTextureEffect : public GrGLVertexEffect {
33 public: 33 public:
34 GrGLDistanceFieldTextureEffect(const GrBackendEffectFactory& factory, 34 GrGLDistanceFieldTextureEffect(const GrBackendEffectFactory& factory,
35 const GrDrawEffect& drawEffect) 35 const GrDrawEffect& drawEffect)
36 : INHERITED (factory) 36 : INHERITED (factory)
37 , fTextureSize(SkISize::Make(-1,-1)) {} 37 , fTextureSize(SkISize::Make(-1,-1)) {}
38 38
39 virtual void emitCode(GrGLFullShaderBuilder* builder, 39 virtual void emitCode(GrGLFullShaderBuilder* builder,
40 const GrDrawEffect& drawEffect, 40 const GrDrawEffect& drawEffect,
41 EffectKey key, 41 const GrEffectKey& key,
42 const char* outputColor, 42 const char* outputColor,
43 const char* inputColor, 43 const char* inputColor,
44 const TransformedCoordsArray&, 44 const TransformedCoordsArray&,
45 const TextureSamplerArray& samplers) SK_OVERRIDE { 45 const TextureSamplerArray& samplers) SK_OVERRIDE {
46 SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldTextureEffect>().numV ertexAttribs()); 46 SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldTextureEffect>().numV ertexAttribs());
47 47
48 SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva tives_GLSLFeature)); 48 SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva tives_GLSLFeature));
49 const GrDistanceFieldTextureEffect& dfTexEffect = 49 const GrDistanceFieldTextureEffect& dfTexEffect =
50 drawEffect.castEffect<GrDistanceFi eldTextureEffect>(); 50 drawEffect.castEffect<GrDistanceFi eldTextureEffect>();
51 51
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 uman.set1f(fLuminanceUni, luminance);
146 fLuminance = luminance; 146 fLuminance = luminance;
147 } 147 }
148 #endif 148 #endif
149 } 149 }
150 150
151 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrGLCap s&) { 151 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&,
152 GrEffectKeyBuilder* b) {
152 const GrDistanceFieldTextureEffect& dfTexEffect = 153 const GrDistanceFieldTextureEffect& dfTexEffect =
153 drawEffect.castEffect<GrDistanceFi eldTextureEffect>(); 154 drawEffect.castEffect<GrDistanceFi eldTextureEffect>();
154 155
155 return dfTexEffect.isSimilarity() ? 0x1 : 0x0; 156 b->add32(dfTexEffect.isSimilarity());
156 } 157 }
157 158
158 private: 159 private:
159 GrGLUniformManager::UniformHandle fTextureSizeUni; 160 GrGLUniformManager::UniformHandle fTextureSizeUni;
160 SkISize fTextureSize; 161 SkISize fTextureSize;
161 GrGLUniformManager::UniformHandle fLuminanceUni; 162 GrGLUniformManager::UniformHandle fLuminanceUni;
162 float fLuminance; 163 float fLuminance;
163 164
164 typedef GrGLVertexEffect INHERITED; 165 typedef GrGLVertexEffect INHERITED;
165 }; 166 };
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 249
249 class GrGLDistanceFieldLCDTextureEffect : public GrGLVertexEffect { 250 class GrGLDistanceFieldLCDTextureEffect : public GrGLVertexEffect {
250 public: 251 public:
251 GrGLDistanceFieldLCDTextureEffect(const GrBackendEffectFactory& factory, 252 GrGLDistanceFieldLCDTextureEffect(const GrBackendEffectFactory& factory,
252 const GrDrawEffect& drawEffect) 253 const GrDrawEffect& drawEffect)
253 : INHERITED (factory) 254 : INHERITED (factory)
254 , fTextureSize(SkISize::Make(-1,-1)) {} 255 , fTextureSize(SkISize::Make(-1,-1)) {}
255 256
256 virtual void emitCode(GrGLFullShaderBuilder* builder, 257 virtual void emitCode(GrGLFullShaderBuilder* builder,
257 const GrDrawEffect& drawEffect, 258 const GrDrawEffect& drawEffect,
258 EffectKey key, 259 const GrEffectKey& key,
259 const char* outputColor, 260 const char* outputColor,
260 const char* inputColor, 261 const char* inputColor,
261 const TransformedCoordsArray&, 262 const TransformedCoordsArray&,
262 const TextureSamplerArray& samplers) SK_OVERRIDE { 263 const TextureSamplerArray& samplers) SK_OVERRIDE {
263 SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>().n umVertexAttribs()); 264 SkASSERT(1 == drawEffect.castEffect<GrDistanceFieldLCDTextureEffect>().n umVertexAttribs());
264 265
265 SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva tives_GLSLFeature)); 266 SkAssertResult(builder->enableFeature(GrGLShaderBuilder::kStandardDeriva tives_GLSLFeature));
266 const GrDistanceFieldLCDTextureEffect& dfTexEffect = 267 const GrDistanceFieldLCDTextureEffect& dfTexEffect =
267 drawEffect.castEffect<GrDistanceField LCDTextureEffect>(); 268 drawEffect.castEffect<GrDistanceField LCDTextureEffect>();
268 269
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 if (textColor != fTextColor) { 406 if (textColor != fTextColor) {
406 static const float ONE_OVER_255 = 1.f / 255.f; 407 static const float ONE_OVER_255 = 1.f / 255.f;
407 uman.set3f(fTextColorUni, 408 uman.set3f(fTextColorUni,
408 GrColorUnpackR(textColor) * ONE_OVER_255, 409 GrColorUnpackR(textColor) * ONE_OVER_255,
409 GrColorUnpackG(textColor) * ONE_OVER_255, 410 GrColorUnpackG(textColor) * ONE_OVER_255,
410 GrColorUnpackB(textColor) * ONE_OVER_255); 411 GrColorUnpackB(textColor) * ONE_OVER_255);
411 fTextColor = textColor; 412 fTextColor = textColor;
412 } 413 }
413 } 414 }
414 415
415 static inline EffectKey GenKey(const GrDrawEffect& drawEffect, const GrGLCap s&) { 416 static inline void GenKey(const GrDrawEffect& drawEffect, const GrGLCaps&,
417 GrEffectKeyBuilder* b) {
416 const GrDistanceFieldLCDTextureEffect& dfTexEffect = 418 const GrDistanceFieldLCDTextureEffect& dfTexEffect =
417 drawEffect.castEffect<GrDistanceField LCDTextureEffect>(); 419 drawEffect.castEffect<GrDistanceField LCDTextureEffect>();
418 420
419 return dfTexEffect.isUniformScale() ? 0x01 : 0x00;; 421 b->add32(dfTexEffect.isUniformScale());
420 } 422 }
421 423
422 private: 424 private:
423 GrGLUniformManager::UniformHandle fTextureSizeUni; 425 GrGLUniformManager::UniformHandle fTextureSizeUni;
424 SkISize fTextureSize; 426 SkISize fTextureSize;
425 GrGLUniformManager::UniformHandle fTextColorUni; 427 GrGLUniformManager::UniformHandle fTextColorUni;
426 SkColor fTextColor; 428 SkColor fTextColor;
427 429
428 typedef GrGLVertexEffect INHERITED; 430 typedef GrGLVertexEffect INHERITED;
429 }; 431 };
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 GrTextureParams::kNone_FilterMode); 494 GrTextureParams::kNone_FilterMode);
493 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256), 495 GrColor textColor = GrColorPackRGBA(random->nextULessThan(256),
494 random->nextULessThan(256), 496 random->nextULessThan(256),
495 random->nextULessThan(256), 497 random->nextULessThan(256),
496 random->nextULessThan(256)); 498 random->nextULessThan(256));
497 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params, 499 return GrDistanceFieldLCDTextureEffect::Create(textures[texIdx], params,
498 textures[texIdx2], params2, 500 textures[texIdx2], params2,
499 textColor, 501 textColor,
500 random->nextBool(), random->n extBool()); 502 random->nextBool(), random->n extBool());
501 } 503 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrDashingEffect.cpp ('k') | src/gpu/effects/GrDitherEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698