Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Unified Diff: src/gpu/GrAARectRenderer.cpp

Issue 15715012: Decrease GPU drawn brightness for < 1 pixel wide/high rects (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Address code review comment Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrAARectRenderer.cpp
===================================================================
--- src/gpu/GrAARectRenderer.cpp (revision 9269)
+++ src/gpu/GrAARectRenderer.cpp (working copy)
@@ -10,6 +10,7 @@
#include "GrGpu.h"
#include "gl/GrGLEffect.h"
#include "GrTBackendEffectFactory.h"
+#include "SkColorPriv.h"
SK_DEFINE_INST_COUNT(GrAARectRenderer)
@@ -389,6 +390,9 @@
GrPoint* fan0Pos = reinterpret_cast<GrPoint*>(verts);
GrPoint* fan1Pos = reinterpret_cast<GrPoint*>(verts + 4 * vsize);
+ SkScalar inset = SkMinScalar(devRect.width(), SK_Scalar1);
+ inset = SK_ScalarHalf * SkMinScalar(inset, devRect.height());
+
if (combinedMatrix.rectStaysRect()) {
// Temporarily #if'ed out. We don't want to pass in the devRect but
// right now it is computed in GrContext::apply_aa_to_rect and we don't
@@ -399,7 +403,7 @@
#endif
set_inset_fan(fan0Pos, vsize, devRect, -SK_ScalarHalf, -SK_ScalarHalf);
- set_inset_fan(fan1Pos, vsize, devRect, SK_ScalarHalf, SK_ScalarHalf);
+ set_inset_fan(fan1Pos, vsize, devRect, inset, inset);
} else {
// compute transformed (1, 0) and (0, 1) vectors
SkVector vec[2] = {
@@ -443,11 +447,23 @@
*reinterpret_cast<GrColor*>(verts + i * vsize) = 0;
}
+ int scale;
+ if (inset < SK_ScalarHalf) {
+ scale = SkScalarFloorToInt(512.0f * inset / (inset + SK_ScalarHalf));
+ SkASSERT(scale >= 0 && scale <= 255);
+ } else {
+ scale = 0xff;
+ }
+
GrColor innerColor;
if (useVertexCoverage) {
- innerColor = 0xffffffff;
+ innerColor = scale | (scale << 8) | (scale << 16) | (scale << 24);
} else {
- innerColor = target->getDrawState().getColor();
+ if (0xff == scale) {
+ innerColor = target->getDrawState().getColor();
+ } else {
+ innerColor = SkAlphaMulQ(target->getDrawState().getColor(), scale);
+ }
}
verts += 4 * vsize;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698