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

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

Issue 2180803005: Add color gamut xform helpers to GrGLSLShaderBuilder (Closed) Base URL: https://skia.googlesource.com/skia.git@xform-storage
Patch Set: Rebase Created 4 years, 3 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 "GrBicubicEffect.h" 8 #include "GrBicubicEffect.h"
9 #include "GrInvariantOutput.h" 9 #include "GrInvariantOutput.h"
10 #include "glsl/GrGLSLColorSpaceXformHelper.h" 10 #include "glsl/GrGLSLColorSpaceXformHelper.h"
(...skipping 12 matching lines...) Expand all
23 23
24 24
25 class GrGLBicubicEffect : public GrGLSLFragmentProcessor { 25 class GrGLBicubicEffect : public GrGLSLFragmentProcessor {
26 public: 26 public:
27 void emitCode(EmitArgs&) override; 27 void emitCode(EmitArgs&) override;
28 28
29 static inline void GenKey(const GrProcessor& effect, const GrGLSLCaps&, 29 static inline void GenKey(const GrProcessor& effect, const GrGLSLCaps&,
30 GrProcessorKeyBuilder* b) { 30 GrProcessorKeyBuilder* b) {
31 const GrBicubicEffect& bicubicEffect = effect.cast<GrBicubicEffect>(); 31 const GrBicubicEffect& bicubicEffect = effect.cast<GrBicubicEffect>();
32 b->add32(GrTextureDomain::GLDomain::DomainKey(bicubicEffect.domain())); 32 b->add32(GrTextureDomain::GLDomain::DomainKey(bicubicEffect.domain()));
33 b->add32(SkToInt(SkToBool(bicubicEffect.colorSpaceXform()))); 33 b->add32(GrColorSpaceXform::XformKey(bicubicEffect.colorSpaceXform()));
34 } 34 }
35 35
36 protected: 36 protected:
37 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ; 37 void onSetData(const GrGLSLProgramDataManager&, const GrProcessor&) override ;
38 38
39 private: 39 private:
40 typedef GrGLSLProgramDataManager::UniformHandle UniformHandle; 40 typedef GrGLSLProgramDataManager::UniformHandle UniformHandle;
41 41
42 UniformHandle fCoefficientsUni; 42 UniformHandle fCoefficientsUni;
43 UniformHandle fImageIncrementUni; 43 UniformHandle fImageIncrementUni;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 coord, 107 coord,
108 args.fTexSamplers[0]); 108 args.fTexSamplers[0]);
109 } 109 }
110 fragBuilder->codeAppendf( 110 fragBuilder->codeAppendf(
111 "\tvec4 s%d = %s(%s, f.x, rowColors[0], rowColors[1], rowColors[2], rowColors[3]);\n", 111 "\tvec4 s%d = %s(%s, f.x, rowColors[0], rowColors[1], rowColors[2], rowColors[3]);\n",
112 y, cubicBlendName.c_str(), coeff); 112 y, cubicBlendName.c_str(), coeff);
113 } 113 }
114 SkString bicubicColor; 114 SkString bicubicColor;
115 bicubicColor.printf("%s(%s, f.y, s0, s1, s2, s3)", cubicBlendName.c_str(), c oeff); 115 bicubicColor.printf("%s(%s, f.y, s0, s1, s2, s3)", cubicBlendName.c_str(), c oeff);
116 if (colorSpaceHelper.getXformMatrix()) { 116 if (colorSpaceHelper.getXformMatrix()) {
117 bicubicColor.appendf(" * %s", colorSpaceHelper.getXformMatrix()); 117 SkString xformedColor;
118 fragBuilder->appendColorGamutXform(&xformedColor, bicubicColor.c_str(), &colorSpaceHelper);
119 bicubicColor.swap(xformedColor);
118 } 120 }
119 fragBuilder->codeAppendf("\t%s = %s;\n", 121 fragBuilder->codeAppendf("\t%s = %s;\n",
120 args.fOutputColor, (GrGLSLExpr4(bicubicColor.c_str( )) * 122 args.fOutputColor, (GrGLSLExpr4(bicubicColor.c_str( )) *
121 GrGLSLExpr4(args.fInputColor)). c_str()); 123 GrGLSLExpr4(args.fInputColor)). c_str());
122 } 124 }
123 125
124 void GrGLBicubicEffect::onSetData(const GrGLSLProgramDataManager& pdman, 126 void GrGLBicubicEffect::onSetData(const GrGLSLProgramDataManager& pdman,
125 const GrProcessor& processor) { 127 const GrProcessor& processor) {
126 const GrBicubicEffect& bicubicEffect = processor.cast<GrBicubicEffect>(); 128 const GrBicubicEffect& bicubicEffect = processor.cast<GrBicubicEffect>();
127 const GrTexture& texture = *processor.texture(0); 129 const GrTexture& texture = *processor.texture(0);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 // Use bilerp to handle rotation or fractional translation. 233 // Use bilerp to handle rotation or fractional translation.
232 *filterMode = GrTextureParams::kBilerp_FilterMode; 234 *filterMode = GrTextureParams::kBilerp_FilterMode;
233 } 235 }
234 return false; 236 return false;
235 } 237 }
236 // When we use the bicubic filtering effect each sample is read from the tex ture using 238 // When we use the bicubic filtering effect each sample is read from the tex ture using
237 // nearest neighbor sampling. 239 // nearest neighbor sampling.
238 *filterMode = GrTextureParams::kNone_FilterMode; 240 *filterMode = GrTextureParams::kNone_FilterMode;
239 return true; 241 return true;
240 } 242 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698