| Index: src/core/SkDevice.cpp
|
| diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp
|
| index 78aa3ee52f9bcbd2419cf69db5016b16ae1534c3..adf13ab208e9201e894361d3cd2c27825739706e 100644
|
| --- a/src/core/SkDevice.cpp
|
| +++ b/src/core/SkDevice.cpp
|
| @@ -442,3 +442,55 @@ uint32_t SkBaseDevice::filterTextFlags(const SkPaint& paint) const {
|
| return flags;
|
| }
|
|
|
| +//////////////////////////////////////////////////////////////////////////////////////////
|
| +
|
| +void SkBaseDevice::logDrawScaleFactor(const SkMatrix& matrix, SkFilterQuality filterQuality) const {
|
| + enum ScaleFactor {
|
| + kUpscale_ScaleFactor,
|
| + kNoScale_ScaleFactor,
|
| + kDownscale_ScaleFactor,
|
| + kLargeDownscale_ScaleFactor,
|
| + };
|
| +
|
| + SkASSERT(filterQuality != kNone_SkFilterQuality);
|
| + enum { kScaleFactorCount = kLargeDownscale_ScaleFactor + 1 };
|
| + float raw_scale_factor = matrix.getMinScale();
|
| +
|
| + ScaleFactor scale_factor;
|
| + if (raw_scale_factor < 0.5f) {
|
| + scale_factor = kLargeDownscale_ScaleFactor;
|
| + } else if (raw_scale_factor < 1.0f) {
|
| + scale_factor = kDownscale_ScaleFactor;
|
| + } else if (raw_scale_factor > 1.0f) {
|
| + scale_factor = kUpscale_ScaleFactor;
|
| + } else {
|
| + scale_factor = kNoScale_ScaleFactor;
|
| + }
|
| +
|
| + switch (filterQuality) {
|
| + case kNone_SkFilterQuality:
|
| + SK_HISTOGRAM_ENUMERATION("DrawScaleFactor.NoneFilterQuality", scale_factor,
|
| + kScaleFactorCount);
|
| + break;
|
| + case kLow_SkFilterQuality:
|
| + SK_HISTOGRAM_ENUMERATION("DrawScaleFactor.LowFilterQuality", scale_factor,
|
| + kScaleFactorCount);
|
| + break;
|
| + case kMedium_SkFilterQuality:
|
| + SK_HISTOGRAM_ENUMERATION("DrawScaleFactor.MediumFilterQuality", scale_factor,
|
| + kScaleFactorCount);
|
| + break;
|
| + case kHigh_SkFilterQuality:
|
| + SK_HISTOGRAM_ENUMERATION("DrawScaleFactor.HighFilterQuality", scale_factor,
|
| + kScaleFactorCount);
|
| + break;
|
| + }
|
| +
|
| + // Also log filter quality independent scale factor.
|
| + SK_HISTOGRAM_ENUMERATION("DrawScaleFactor.AnyFilterQuality", scale_factor, kScaleFactorCount);
|
| +
|
| + // Also log an overall histogram of filter quality.
|
| + enum { kFilterQualityCount = kHigh_SkFilterQuality + 1 };
|
| + SK_HISTOGRAM_ENUMERATION("FilterQuality", filterQuality, kFilterQualityCount);
|
| +}
|
| +
|
|
|