aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--expectations/gm/ignored-tests.txt4
-rw-r--r--src/gpu/SkGpuDevice.cpp7
2 files changed, 10 insertions, 1 deletions
diff --git a/expectations/gm/ignored-tests.txt b/expectations/gm/ignored-tests.txt
index 5d0ad0637e..51f6d120b1 100644
--- a/expectations/gm/ignored-tests.txt
+++ b/expectations/gm/ignored-tests.txt
@@ -68,3 +68,7 @@ shadertext2
# Changing this GM to add more test cases (failing at the moment)
# Need to rebaseline when they are fixed
stroketext
+
+# yunchao: https://codereview.chromium.org/292943002/
+# changed the rendering result of this gm case to respect paint's alpha
+vertices_80
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index ec471ecc68..431238b9db 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -1649,8 +1649,13 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
if (NULL != colors) {
// need to convert byte order and from non-PM to PM
convertedColors.reset(vertexCount);
+ SkColor color;
for (int i = 0; i < vertexCount; ++i) {
- convertedColors[i] = SkColor2GrColor(colors[i]);
+ color = colors[i];
+ if (paint.getAlpha() != 255) {
+ color = SkColorSetA(color, SkMulDiv255Round(SkColorGetA(color), paint.getAlpha()));
+ }
+ convertedColors[i] = SkColor2GrColor(color);
}
colors = convertedColors.get();
}