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

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

Issue 20362002: make the filter mode for GrTextureAccess an enum so we can plumb down (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: fall back to mipmaps for HQ sampling (for now) Created 7 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 | Annotate | Revision Log
« no previous file with comments | « src/gpu/effects/GrTextureDomainEffect.h ('k') | src/gpu/gl/GrGpuGL.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 2012 Google Inc. 2 * Copyright 2012 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 "GrTextureDomainEffect.h" 8 #include "GrTextureDomainEffect.h"
9 #include "GrSimpleTextureEffect.h" 9 #include "GrSimpleTextureEffect.h"
10 #include "GrTBackendEffectFactory.h" 10 #include "GrTBackendEffectFactory.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 return key | matrixKey; 146 return key | matrixKey;
147 } 147 }
148 148
149 149
150 /////////////////////////////////////////////////////////////////////////////// 150 ///////////////////////////////////////////////////////////////////////////////
151 151
152 GrEffectRef* GrTextureDomainEffect::Create(GrTexture* texture, 152 GrEffectRef* GrTextureDomainEffect::Create(GrTexture* texture,
153 const SkMatrix& matrix, 153 const SkMatrix& matrix,
154 const SkRect& domain, 154 const SkRect& domain,
155 WrapMode wrapMode, 155 WrapMode wrapMode,
156 bool bilerp, 156 GrTextureParams::FilterMode filterMod e,
157 CoordsType coordsType) { 157 CoordsType coordsType) {
158 static const SkRect kFullRect = {0, 0, SK_Scalar1, SK_Scalar1}; 158 static const SkRect kFullRect = {0, 0, SK_Scalar1, SK_Scalar1};
159 if (kClamp_WrapMode == wrapMode && domain.contains(kFullRect)) { 159 if (kClamp_WrapMode == wrapMode && domain.contains(kFullRect)) {
160 return GrSimpleTextureEffect::Create(texture, matrix, bilerp); 160 return GrSimpleTextureEffect::Create(texture, matrix, filterMode);
161 } else { 161 } else {
162 SkRect clippedDomain; 162 SkRect clippedDomain;
163 // We don't currently handle domains that are empty or don't intersect t he texture. 163 // We don't currently handle domains that are empty or don't intersect t he texture.
164 // It is OK if the domain rect is a line or point, but it should not be inverted. We do not 164 // It is OK if the domain rect is a line or point, but it should not be inverted. We do not
165 // handle rects that do not intersect the [0..1]x[0..1] rect. 165 // handle rects that do not intersect the [0..1]x[0..1] rect.
166 GrAssert(domain.fLeft <= domain.fRight); 166 GrAssert(domain.fLeft <= domain.fRight);
167 GrAssert(domain.fTop <= domain.fBottom); 167 GrAssert(domain.fTop <= domain.fBottom);
168 clippedDomain.fLeft = SkMaxScalar(domain.fLeft, kFullRect.fLeft); 168 clippedDomain.fLeft = SkMaxScalar(domain.fLeft, kFullRect.fLeft);
169 clippedDomain.fRight = SkMinScalar(domain.fRight, kFullRect.fRight); 169 clippedDomain.fRight = SkMinScalar(domain.fRight, kFullRect.fRight);
170 clippedDomain.fTop = SkMaxScalar(domain.fTop, kFullRect.fTop); 170 clippedDomain.fTop = SkMaxScalar(domain.fTop, kFullRect.fTop);
171 clippedDomain.fBottom = SkMinScalar(domain.fBottom, kFullRect.fBottom); 171 clippedDomain.fBottom = SkMinScalar(domain.fBottom, kFullRect.fBottom);
172 GrAssert(clippedDomain.fLeft <= clippedDomain.fRight); 172 GrAssert(clippedDomain.fLeft <= clippedDomain.fRight);
173 GrAssert(clippedDomain.fTop <= clippedDomain.fBottom); 173 GrAssert(clippedDomain.fTop <= clippedDomain.fBottom);
174 174
175 AutoEffectUnref effect(SkNEW_ARGS(GrTextureDomainEffect, (texture, 175 AutoEffectUnref effect(SkNEW_ARGS(GrTextureDomainEffect, (texture,
176 matrix, 176 matrix,
177 clippedDomain, 177 clippedDomain,
178 wrapMode, 178 wrapMode,
179 bilerp, 179 filterMode,
180 coordsType))); 180 coordsType)));
181 return CreateEffectRef(effect); 181 return CreateEffectRef(effect);
182 182
183 } 183 }
184 } 184 }
185 185
186 GrTextureDomainEffect::GrTextureDomainEffect(GrTexture* texture, 186 GrTextureDomainEffect::GrTextureDomainEffect(GrTexture* texture,
187 const SkMatrix& matrix, 187 const SkMatrix& matrix,
188 const SkRect& domain, 188 const SkRect& domain,
189 WrapMode wrapMode, 189 WrapMode wrapMode,
190 bool bilerp, 190 GrTextureParams::FilterMode filterM ode,
191 CoordsType coordsType) 191 CoordsType coordsType)
192 : GrSingleTextureEffect(texture, matrix, bilerp, coordsType) 192 : GrSingleTextureEffect(texture, matrix, filterMode, coordsType)
193 , fWrapMode(wrapMode) 193 , fWrapMode(wrapMode)
194 , fTextureDomain(domain) { 194 , fTextureDomain(domain) {
195 } 195 }
196 196
197 GrTextureDomainEffect::~GrTextureDomainEffect() { 197 GrTextureDomainEffect::~GrTextureDomainEffect() {
198 198
199 } 199 }
200 200
201 const GrBackendEffectFactory& GrTextureDomainEffect::getFactory() const { 201 const GrBackendEffectFactory& GrTextureDomainEffect::getFactory() const {
202 return GrTBackendEffectFactory<GrTextureDomainEffect>::getInstance(); 202 return GrTBackendEffectFactory<GrTextureDomainEffect>::getInstance();
(...skipping 29 matching lines...) Expand all
232 domain.fTop = random->nextUScalar1(); 232 domain.fTop = random->nextUScalar1();
233 domain.fBottom = random->nextRangeScalar(domain.fTop, SK_Scalar1); 233 domain.fBottom = random->nextRangeScalar(domain.fTop, SK_Scalar1);
234 WrapMode wrapMode = random->nextBool() ? kClamp_WrapMode : kDecal_WrapMode; 234 WrapMode wrapMode = random->nextBool() ? kClamp_WrapMode : kDecal_WrapMode;
235 const SkMatrix& matrix = GrEffectUnitTest::TestMatrix(random); 235 const SkMatrix& matrix = GrEffectUnitTest::TestMatrix(random);
236 bool bilerp = random->nextBool(); 236 bool bilerp = random->nextBool();
237 CoordsType coords = random->nextBool() ? kLocal_CoordsType : kPosition_Coord sType; 237 CoordsType coords = random->nextBool() ? kLocal_CoordsType : kPosition_Coord sType;
238 return GrTextureDomainEffect::Create(textures[texIdx], 238 return GrTextureDomainEffect::Create(textures[texIdx],
239 matrix, 239 matrix,
240 domain, 240 domain,
241 wrapMode, 241 wrapMode,
242 bilerp, 242 bilerp ? GrTextureParams::kBilerp_Filte rMode : GrTextureParams::kNone_FilterMode,
243 coords); 243 coords);
244 } 244 }
OLDNEW
« no previous file with comments | « src/gpu/effects/GrTextureDomainEffect.h ('k') | src/gpu/gl/GrGpuGL.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698