aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrAARectRenderer.cpp
diff options
context:
space:
mode:
authorGravatar egdaniel <egdaniel@google.com>2014-11-06 08:00:48 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-11-06 08:00:48 -0800
commite27065ae243575f6d5d545909ad3030773c14db8 (patch)
tree063ba7743599a7989fdade48304625fa9cb9e7e5 /src/gpu/GrAARectRenderer.cpp
parentcdccd75925185b25972b8b80f8492bd9d263028d (diff)
Send coverage VA as floats instead of bytes
NOTREECHECKS=True BUG=skia: Review URL: https://codereview.chromium.org/700943005
Diffstat (limited to 'src/gpu/GrAARectRenderer.cpp')
-rw-r--r--src/gpu/GrAARectRenderer.cpp37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp
index 6843acad7a..ead4ea16a3 100644
--- a/src/gpu/GrAARectRenderer.cpp
+++ b/src/gpu/GrAARectRenderer.cpp
@@ -265,7 +265,7 @@ namespace {
extern const GrVertexAttrib gAARectAttribs[] = {
{kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding},
{kVec4ub_GrVertexAttribType, sizeof(SkPoint), kColor_GrVertexAttribBinding},
- {kUByte_GrVertexAttribType, sizeof(SkPoint) + sizeof(SkColor), kCoverage_GrVertexAttribBinding},
+ {kFloat_GrVertexAttribType, sizeof(SkPoint) + sizeof(SkColor), kCoverage_GrVertexAttribBinding},
};
// Should the coverage be multiplied into the color attrib or use a separate attrib.
@@ -280,7 +280,8 @@ static CoverageAttribType set_rect_attribs(GrDrawState* drawState) {
drawState->setVertexAttribs<gAARectAttribs>(2, sizeof(SkPoint) + sizeof(SkColor));
return kUseColor_CoverageAttribType;
} else {
- drawState->setVertexAttribs<gAARectAttribs>(3, sizeof(SkPoint) + 2 * sizeof(SkColor));
+ drawState->setVertexAttribs<gAARectAttribs>(3, sizeof(SkPoint) + sizeof(SkColor) +
+ sizeof(float));
return kUseCoverage_CoverageAttribType;
}
}
@@ -512,7 +513,7 @@ void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target,
for (int i = 0; i < 4; ++i) {
if (kUseCoverage_CoverageAttribType == covAttribType) {
*reinterpret_cast<GrColor*>(verts + i * vstride) = color;
- *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = 0;
+ *reinterpret_cast<float*>(verts + i * vstride + sizeof(GrColor)) = 0;
} else {
*reinterpret_cast<GrColor*>(verts + i * vstride) = 0;
}
@@ -526,19 +527,17 @@ void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target,
scale = 0xff;
}
- GrColor innerCoverage;
- if (kUseCoverage_CoverageAttribType == covAttribType) {
- innerCoverage = GrColorPackRGBA(scale, scale, scale, scale);
- } else {
- innerCoverage = (0xff == scale) ? color : SkAlphaMulQ(color, scale);
- }
verts += 4 * vstride;
+
+ float innerCoverage = GrNormalizeByteToFloat(scale);
+ GrColor scaledColor = (0xff == scale) ? color : SkAlphaMulQ(color, scale);
+
for (int i = 0; i < 4; ++i) {
if (kUseCoverage_CoverageAttribType == covAttribType) {
*reinterpret_cast<GrColor*>(verts + i * vstride) = color;
- *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = innerCoverage;
+ *reinterpret_cast<float*>(verts + i * vstride + sizeof(GrColor)) = innerCoverage;
} else {
- *reinterpret_cast<GrColor*>(verts + i * vstride) = innerCoverage;
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = scaledColor;
}
}
@@ -850,7 +849,7 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
for (int i = 0; i < outerVertexNum; ++i) {
if (kUseCoverage_CoverageAttribType == covAttribType) {
*reinterpret_cast<GrColor*>(verts + i * vstride) = color;
- *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = 0;
+ *reinterpret_cast<float*>(verts + i * vstride + sizeof(GrColor)) = 0;
} else {
*reinterpret_cast<GrColor*>(verts + i * vstride) = 0;
}
@@ -865,20 +864,16 @@ void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
scale = 0xff;
}
- verts += outerVertexNum * vstride;
- GrColor innerCoverage;
- if (kUseCoverage_CoverageAttribType == covAttribType) {
- innerCoverage = GrColorPackRGBA(scale, scale, scale, scale);
- } else {
- innerCoverage = (0xff == scale) ? color : SkAlphaMulQ(color, scale);
- }
+ float innerCoverage = GrNormalizeByteToFloat(scale);
+ GrColor scaledColor = (0xff == scale) ? color : SkAlphaMulQ(color, scale);
+ verts += outerVertexNum * vstride;
for (int i = 0; i < outerVertexNum + innerVertexNum; ++i) {
if (kUseCoverage_CoverageAttribType == covAttribType) {
*reinterpret_cast<GrColor*>(verts + i * vstride) = color;
- *reinterpret_cast<GrColor*>(verts + i * vstride + sizeof(GrColor)) = innerCoverage;
+ *reinterpret_cast<float*>(verts + i * vstride + sizeof(GrColor)) = innerCoverage;
} else {
- *reinterpret_cast<GrColor*>(verts + i * vstride) = innerCoverage;
+ *reinterpret_cast<GrColor*>(verts + i * vstride) = scaledColor;
}
}