| Index: cc/software_renderer.cc
|
| diff --git a/cc/software_renderer.cc b/cc/software_renderer.cc
|
| index 6ea015113ca3babd0a363143adc4f8a6ee377b26..ba7b2f4714228c06404e03c277babe5902b8c58f 100644
|
| --- a/cc/software_renderer.cc
|
| +++ b/cc/software_renderer.cc
|
| @@ -53,6 +53,15 @@ void toSkMatrix(SkMatrix* flattened, const WebTransformationMatrix& m)
|
| flattened->set(8, m.m44());
|
| }
|
|
|
| +bool isScaleAndTranslate(const SkMatrix& matrix)
|
| +{
|
| + return SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) &&
|
| + SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) &&
|
| + SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) &&
|
| + SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) &&
|
| + SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f);
|
| +}
|
| +
|
| } // anonymous namespace
|
|
|
| PassOwnPtr<CCRendererSoftware> CCRendererSoftware::create(CCRendererClient* client, CCResourceProvider* resourceProvider, WebCompositorSoftwareOutputDevice* outputDevice)
|
| @@ -178,6 +187,10 @@ void CCRendererSoftware::drawQuad(DrawingFrame& frame, const CCDrawQuad* quad)
|
| m_skCurrentCanvas->setMatrix(skDeviceMatrix);
|
|
|
| m_skCurrentPaint.reset();
|
| + if (!isScaleAndTranslate(skDeviceMatrix)) {
|
| + m_skCurrentPaint.setAntiAlias(true);
|
| + m_skCurrentPaint.setFilterBitmap(true);
|
| + }
|
| if (quad->needsBlending()) {
|
| m_skCurrentPaint.setAlpha(quad->opacity() * 255);
|
| m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
|
|
|