Create MSAA render target for blur mask texture
authorderekf <derekf@osg.samsung.com>
Mon, 6 Oct 2014 19:19:12 +0000 (12:19 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 6 Oct 2014 19:19:12 +0000 (12:19 -0700)
Original Author: Henry Song <henrysong@samsung.com>

Review URL: https://codereview.chromium.org/616923004

src/gpu/SkGpuDevice.cpp

index 6eaed89..6a9c31d 100644 (file)
@@ -21,6 +21,7 @@
 #include "GrRecordReplaceDraw.h"
 #include "GrStrokeInfo.h"
 #include "GrTracing.h"
+#include "GrGpu.h"
 
 #include "SkGrTexturePixelRef.h"
 
@@ -643,15 +644,19 @@ bool create_mask_GPU(GrContext* context,
                      const SkPath& devPath,
                      const GrStrokeInfo& strokeInfo,
                      bool doAA,
-                     GrAutoScratchTexture* mask) {
+                     GrAutoScratchTexture* mask,
+                     int SampleCnt) {
     GrTextureDesc desc;
     desc.fFlags = kRenderTarget_GrTextureFlagBit;
     desc.fWidth = SkScalarCeilToInt(maskRect.width());
     desc.fHeight = SkScalarCeilToInt(maskRect.height());
+    desc.fSampleCnt = SampleCnt;
     // We actually only need A8, but it often isn't supported as a
     // render target so default to RGBA_8888
     desc.fConfig = kRGBA_8888_GrPixelConfig;
-    if (context->isConfigRenderable(kAlpha_8_GrPixelConfig, false)) {
+
+    if (context->isConfigRenderable(kAlpha_8_GrPixelConfig,
+                                    desc.fSampleCnt > 0)) {
         desc.fConfig = kAlpha_8_GrPixelConfig;
     }
 
@@ -785,7 +790,7 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath,
             GrAutoScratchTexture mask;
 
             if (create_mask_GPU(fContext, maskRect, *devPathPtr, strokeInfo,
-                                grPaint.isAntiAlias(), &mask)) {
+                                grPaint.isAntiAlias(), &mask, fRenderTarget->numSamples())) {
                 GrTexture* filtered;
 
                 if (paint.getMaskFilter()->filterMaskGPU(mask.texture(),