aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-23 08:09:26 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-05-23 08:09:26 +0000
commitc93e68161f78542d90b28b6cf9911b1de3788054 (patch)
tree673987236febe3d3bb2aac0977dbc35be3dc3d72 /src/gpu
parent7693dbf46e9bf0159cc9032059738d418469a7ad (diff)
fix the visual diff of raster vs gpu -- vertices_80. The sw-raster is correct, all images are blurry.
While some images generated by gpu doesn't respect SkPaint's alpha value. In gpu path, when pass SkPaint's alpha and color to GrPaint by SkPaint2GrPaintNoShader, either alpha or colors can't not be passed. We can't pass both of them by the API. Premultiply paint's alpha to colors's alpha in drawVertices, and pass colors to GrPaint. The rendering result will respect colors in drawVertices, and the alpha value set in SkPaint as well. BUG=skia:2592 R=bsalomon@google.com Author: yunchao.he@intel.com Review URL: https://codereview.chromium.org/292943002 git-svn-id: http://skia.googlecode.com/svn/trunk@14863 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/SkGpuDevice.cpp7
1 files changed, 6 insertions, 1 deletions
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();
}