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

Side by Side Diff: src/gpu/SkGpuDevice.cpp

Issue 1285283002: Refactor helper function for SkBitmapShader to GrFragmentProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 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
« no previous file with comments | « src/core/SkBitmapProcShader.cpp ('k') | src/gpu/SkGr.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 2011 Google Inc. 2 * Copyright 2011 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 "SkGpuDevice.h" 8 #include "SkGpuDevice.h"
9 9
10 #include "GrBlurUtils.h" 10 #include "GrBlurUtils.h"
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 1027
1028 // If there is no mask filter than it is OK to handle the src rect -> dst re ct scaling using 1028 // If there is no mask filter than it is OK to handle the src rect -> dst re ct scaling using
1029 // the view matrix rather than a local matrix. 1029 // the view matrix rather than a local matrix.
1030 SkMatrix m; 1030 SkMatrix m;
1031 m.setScale(dstSize.fWidth / srcRect.width(), 1031 m.setScale(dstSize.fWidth / srcRect.width(),
1032 dstSize.fHeight / srcRect.height()); 1032 dstSize.fHeight / srcRect.height());
1033 SkMatrix viewM = *draw.fMatrix; 1033 SkMatrix viewM = *draw.fMatrix;
1034 viewM.preConcat(m); 1034 viewM.preConcat(m);
1035 1035
1036 GrTextureParams params; 1036 GrTextureParams params;
1037 SkFilterQuality paintFilterQuality = paint.getFilterQuality(); 1037 bool doBicubic;
1038 GrTextureParams::FilterMode textureFilterMode; 1038 GrTextureParams::FilterMode textureFilterMode =
1039 1039 GrSkFilterQualityToGrFilterMode(paint.getFilterQuality(), viewM, SkM atrix::I(),
1040 bool doBicubic = false; 1040 &doBicubic);
1041
1042 switch(paintFilterQuality) {
1043 case kNone_SkFilterQuality:
1044 textureFilterMode = GrTextureParams::kNone_FilterMode;
1045 break;
1046 case kLow_SkFilterQuality:
1047 textureFilterMode = GrTextureParams::kBilerp_FilterMode;
1048 break;
1049 case kMedium_SkFilterQuality:
1050 if (viewM.getMinScale() < SK_Scalar1) {
1051 textureFilterMode = GrTextureParams::kMipMap_FilterMode;
1052 } else {
1053 // Don't trigger MIP level generation unnecessarily.
1054 textureFilterMode = GrTextureParams::kBilerp_FilterMode;
1055 }
1056 break;
1057 case kHigh_SkFilterQuality:
1058 // Minification can look bad with the bicubic effect.
1059 doBicubic =
1060 GrBicubicEffect::ShouldUseBicubic(viewM, &textureFilterMode);
1061 break;
1062 default:
1063 SkErrorInternals::SetError( kInvalidPaint_SkError,
1064 "Sorry, I don't understand the filtering "
1065 "mode you asked for. Falling back to "
1066 "MIPMaps.");
1067 textureFilterMode = GrTextureParams::kMipMap_FilterMode;
1068 break;
1069 }
1070 1041
1071 int tileFilterPad; 1042 int tileFilterPad;
1072 if (doBicubic) { 1043 if (doBicubic) {
1073 tileFilterPad = GrBicubicEffect::kFilterTexelPad; 1044 tileFilterPad = GrBicubicEffect::kFilterTexelPad;
1074 } else if (GrTextureParams::kNone_FilterMode == textureFilterMode) { 1045 } else if (GrTextureParams::kNone_FilterMode == textureFilterMode) {
1075 tileFilterPad = 0; 1046 tileFilterPad = 0;
1076 } else { 1047 } else {
1077 tileFilterPad = 1; 1048 tileFilterPad = 1;
1078 } 1049 }
1079 params.setFilterMode(textureFilterMode); 1050 params.setFilterMode(textureFilterMode);
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
1866 #endif 1837 #endif
1867 } 1838 }
1868 1839
1869 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() { 1840 SkImageFilter::Cache* SkGpuDevice::getImageFilterCache() {
1870 // We always return a transient cache, so it is freed after each 1841 // We always return a transient cache, so it is freed after each
1871 // filter traversal. 1842 // filter traversal.
1872 return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize); 1843 return SkImageFilter::Cache::Create(kDefaultImageFilterCacheSize);
1873 } 1844 }
1874 1845
1875 #endif 1846 #endif
OLDNEW
« no previous file with comments | « src/core/SkBitmapProcShader.cpp ('k') | src/gpu/SkGr.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698