diff options
author | 2014-11-03 10:07:07 -0800 | |
---|---|---|
committer | 2014-11-03 10:07:07 -0800 | |
commit | 37b4d866b1446d35c989f9a97885a777ddc7d1c8 (patch) | |
tree | e94222292d7dc9a2fc90de96b7d25ed19f381691 /src/gpu/gl/GrGLProgram.cpp | |
parent | 37dd331b20a92ce79cc26556e065dec98a66cb0b (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.cpp | 12 |
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; |