Index: src/gpu/SkGpuDevice.cpp |
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp |
index ed80c505818d222feb5052a6cd0189865270255f..684e9b45579f06e97ec9c79c8a1582e9020b25d8 100644 |
--- a/src/gpu/SkGpuDevice.cpp |
+++ b/src/gpu/SkGpuDevice.cpp |
@@ -575,6 +575,13 @@ inline bool skPaint2GrPaintShader(SkGpuDevice* dev, |
if (NULL != effect.get()) { |
grPaint->addColorEffect(effect); |
// Now setup the rest of the paint. |
+ // If the shader's bitmap is kA8_Config, the paint's RGB is used, and |
+ // modulated by the shader's alpha. Otherwise, the shader's RGB is used, |
+ // modulated by the paint's alpha. |
+ SkBitmap* bitmap = shader->getBitmap(); |
+ if (NULL != bitmap && SkBitmap::kA8_Config == bitmap->config()) { |
+ return skPaint2GrPaintNoShader(dev, skPaint, false, true, grPaint); |
+ } |
return skPaint2GrPaintNoShader(dev, skPaint, true, false, grPaint); |
} else { |
// We still don't have SkColorShader::asNewEffect() implemented. |