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

Side by Side Diff: src/core/SkBitmapProcShader.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: Created 7 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 | Annotate | Revision Log
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkBitmapProcShader.h" 8 #include "SkBitmapProcShader.h"
9 #include "SkColorPriv.h" 9 #include "SkColorPriv.h"
10 #include "SkFlattenableBuffers.h" 10 #include "SkFlattenableBuffers.h"
11 #include "SkPixelRef.h" 11 #include "SkPixelRef.h"
12 #include "SkErrorInternals.h"
12 13
13 bool SkBitmapProcShader::CanDo(const SkBitmap& bm, TileMode tx, TileMode ty) { 14 bool SkBitmapProcShader::CanDo(const SkBitmap& bm, TileMode tx, TileMode ty) {
14 switch (bm.config()) { 15 switch (bm.config()) {
15 case SkBitmap::kA8_Config: 16 case SkBitmap::kA8_Config:
16 case SkBitmap::kRGB_565_Config: 17 case SkBitmap::kRGB_565_Config:
17 case SkBitmap::kIndex8_Config: 18 case SkBitmap::kIndex8_Config:
18 case SkBitmap::kARGB_8888_Config: 19 case SkBitmap::kARGB_8888_Config:
19 // if (tx == ty && (kClamp_TileMode == tx || kRepeat_TileMode == tx)) 20 // if (tx == ty && (kClamp_TileMode == tx || kRepeat_TileMode == tx))
20 return true; 21 return true;
21 default: 22 default:
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 return NULL; 347 return NULL;
347 } 348 }
348 matrix.preConcat(inverse); 349 matrix.preConcat(inverse);
349 } 350 }
350 SkShader::TileMode tm[] = { 351 SkShader::TileMode tm[] = {
351 (TileMode)fState.fTileModeX, 352 (TileMode)fState.fTileModeX,
352 (TileMode)fState.fTileModeY, 353 (TileMode)fState.fTileModeY,
353 }; 354 };
354 355
355 // Must set wrap and filter on the sampler before requesting a texture. 356 // Must set wrap and filter on the sampler before requesting a texture.
356 GrTextureParams params(tm, paint.isFilterBitmap()); 357 SkPaint::FilterLevel paintFilterLevel = paint.getFilterLevel();
358 GrTextureParams::FilterMode textureFilterMode;
359 switch(paintFilterLevel) {
360 case SkPaint::kNone_FilterLevel:
361 textureFilterMode = GrTextureParams::kNone_FilterMode;
362 break;
363 case SkPaint::kLow_FilterLevel:
364 textureFilterMode = GrTextureParams::kBilerp_FilterMode;
365 break;
366 case SkPaint::kMedium_FilterLevel:
367 textureFilterMode = GrTextureParams::kMipMap_FilterMode;
368 break;
369 case SkPaint::kHigh_FilterLevel:
370 SkErrorInternals::SetError( kInvalidPaint_SkError,
371 "Sorry, I don't yet support high quality "
bsalomon 2013/07/25 17:41:48 can we log the error but just continue using mips?
humper 2013/07/25 18:18:13 sure. Done.
372 "filtering on the GPU.");
373 return NULL;
374 }
375 GrTextureParams params(tm, textureFilterMode);
357 GrTexture* texture = GrLockAndRefCachedBitmapTexture(context, fRawBitmap, &p arams); 376 GrTexture* texture = GrLockAndRefCachedBitmapTexture(context, fRawBitmap, &p arams);
358 377
359 if (NULL == texture) { 378 if (NULL == texture) {
360 SkDebugf("Couldn't convert bitmap to texture.\n"); 379 SkDebugf("Couldn't convert bitmap to texture.\n");
361 return NULL; 380 return NULL;
362 } 381 }
363 382
364 GrEffectRef* effect = GrSimpleTextureEffect::Create(texture, matrix, params) ; 383 GrEffectRef* effect = GrSimpleTextureEffect::Create(texture, matrix, params) ;
365 GrUnlockAndUnrefCachedBitmapTexture(texture); 384 GrUnlockAndUnrefCachedBitmapTexture(texture);
366 return effect; 385 return effect;
367 } 386 }
368 #endif 387 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698