aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLProgram.cpp
diff options
context:
space:
mode:
authorGravatar egdaniel <egdaniel@google.com>2014-11-03 10:07:07 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-11-03 10:07:07 -0800
commit37b4d866b1446d35c989f9a97885a777ddc7d1c8 (patch)
treee94222292d7dc9a2fc90de96b7d25ed19f381691 /src/gpu/gl/GrGLProgram.cpp
parent37dd331b20a92ce79cc26556e065dec98a66cb0b (diff)
Force input coverage to be only a byte in gpu shaders.
Prime coverage invariant output calculations with single component BUG=skia: Review URL: https://codereview.chromium.org/649783003
Diffstat (limited to 'src/gpu/gl/GrGLProgram.cpp')
-rw-r--r--src/gpu/gl/GrGLProgram.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
index f152173e99..319dcceff1 100644
--- a/src/gpu/gl/GrGLProgram.cpp
+++ b/src/gpu/gl/GrGLProgram.cpp
@@ -63,7 +63,7 @@ GrGLProgram::GrGLProgram(GrGpuGL* gpu,
GrGLInstalledGeoProc* geometryProcessor,
GrGLInstalledFragProcs* fragmentProcessors)
: fColor(GrColor_ILLEGAL)
- , fCoverage(GrColor_ILLEGAL)
+ , fCoverage(0)
, fDstCopyTexUnit(-1)
, fBuiltinUniformHandles(builtinUniforms)
, fProgramID(programID)
@@ -131,7 +131,7 @@ void GrGLProgram::setData(const GrOptDrawState& optState,
GrGpu::DrawType drawType,
const GrDeviceCoordTexture* dstCopy) {
GrColor color = optState.getColor();
- GrColor coverage = optState.getCoverageColor();
+ uint8_t coverage = optState.getCoverage();
this->setColor(optState, color);
this->setCoverage(optState, coverage);
@@ -223,7 +223,7 @@ void GrGLProgram::setColor(const GrOptDrawState& optState, GrColor color) {
}
}
-void GrGLProgram::setCoverage(const GrOptDrawState& optState, GrColor coverage) {
+void GrGLProgram::setCoverage(const GrOptDrawState& optState, uint8_t coverage) {
const GrProgramDesc::KeyHeader& header = fDesc.header();
switch (header.fCoverageInput) {
case GrProgramDesc::kAttribute_ColorInput:
@@ -232,9 +232,9 @@ void GrGLProgram::setCoverage(const GrOptDrawState& optState, GrColor coverage)
case GrProgramDesc::kUniform_ColorInput:
if (fCoverage != coverage) {
// OpenGL ES doesn't support unsigned byte varieties of glUniform
- GrGLfloat c[4];
- GrColorToRGBAFloat(coverage, c);
- fProgramDataManager.set4fv(fBuiltinUniformHandles.fCoverageUni, 1, c);
+ static const float ONE_OVER_255 = 1.f / 255.f;
+ GrGLfloat c = coverage * ONE_OVER_255;
+ fProgramDataManager.set1f(fBuiltinUniformHandles.fCoverageUni, c);
fCoverage = coverage;
}
break;