| Index: src/gpu/gl/GrGLProgram.cpp
|
| diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
|
| index 1ad05eb9c902cab578bd75dc3b7356237e9b424b..112cecd99537d98687b90d04a45f0c432e38966a 100644
|
| --- a/src/gpu/gl/GrGLProgram.cpp
|
| +++ b/src/gpu/gl/GrGLProgram.cpp
|
| @@ -4,7 +4,6 @@
|
| * Use of this source code is governed by a BSD-style license that can be
|
| * found in the LICENSE file.
|
| */
|
| -
|
| #include "GrGLProgram.h"
|
|
|
| #include "GrAllocator.h"
|
| @@ -15,6 +14,7 @@
|
| #include "GrGLPathRendering.h"
|
| #include "GrGLShaderVar.h"
|
| #include "GrGLSL.h"
|
| +#include "GrOptDrawState.h"
|
| #include "SkXfermode.h"
|
|
|
| #define GL_CALL(X) GR_GL_CALL(fGpu->glInterface(), X)
|
| @@ -108,31 +108,19 @@ void GrGLProgram::initSamplerUniforms() {
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| -void GrGLProgram::setData(GrGpu::DrawType drawType,
|
| - GrDrawState::BlendOptFlags blendOpts,
|
| +void GrGLProgram::setData(const GrOptDrawState& optState,
|
| + GrGpu::DrawType drawType,
|
| const GrEffectStage* geometryProcessor,
|
| const GrEffectStage* colorStages[],
|
| const GrEffectStage* coverageStages[],
|
| const GrDeviceCoordTexture* dstCopy,
|
| SharedGLState* sharedState) {
|
| - const GrDrawState& drawState = fGpu->getDrawState();
|
| -
|
| - GrColor color;
|
| - GrColor coverage;
|
| - if (blendOpts & GrDrawState::kEmitTransBlack_BlendOptFlag) {
|
| - color = 0;
|
| - coverage = 0;
|
| - } else if (blendOpts & GrDrawState::kEmitCoverage_BlendOptFlag) {
|
| - color = 0xffffffff;
|
| - coverage = drawState.getCoverageColor();
|
| - } else {
|
| - color = drawState.getColor();
|
| - coverage = drawState.getCoverageColor();
|
| - }
|
| + GrColor color = optState.getColor();
|
| + GrColor coverage = optState.getCoverageColor();
|
|
|
| - this->setColor(drawState, color, sharedState);
|
| - this->setCoverage(drawState, coverage, sharedState);
|
| - this->setMatrixAndRenderTargetHeight(drawType, drawState);
|
| + this->setColor(optState, color, sharedState);
|
| + this->setCoverage(optState, coverage, sharedState);
|
| + this->setMatrixAndRenderTargetHeight(drawType, optState);
|
|
|
| if (dstCopy) {
|
| if (fBuiltinUniformHandles.fDstCopyTopLeftUni.isValid()) {
|
| @@ -170,11 +158,11 @@ void GrGLProgram::setData(GrGpu::DrawType drawType,
|
| }
|
| }
|
|
|
| -void GrGLProgram::setColor(const GrDrawState& drawState,
|
| +void GrGLProgram::setColor(const GrOptDrawState& optState,
|
| GrColor color,
|
| SharedGLState* sharedState) {
|
| const GrGLProgramDesc::KeyHeader& header = fDesc.getHeader();
|
| - if (!drawState.hasColorVertexAttribute() || drawState.canIgnoreColorAttribute()) {
|
| + if (!optState.hasColorVertexAttribute()) {
|
| switch (header.fColorInput) {
|
| case GrGLProgramDesc::kAttribute_ColorInput:
|
| SkASSERT(-1 != header.fColorAttributeIndex);
|
| @@ -209,11 +197,11 @@ void GrGLProgram::setColor(const GrDrawState& drawState,
|
| }
|
| }
|
|
|
| -void GrGLProgram::setCoverage(const GrDrawState& drawState,
|
| +void GrGLProgram::setCoverage(const GrOptDrawState& optState,
|
| GrColor coverage,
|
| SharedGLState* sharedState) {
|
| const GrGLProgramDesc::KeyHeader& header = fDesc.getHeader();
|
| - if (!drawState.hasCoverageVertexAttribute()) {
|
| + if (!optState.hasCoverageVertexAttribute()) {
|
| switch (header.fCoverageInput) {
|
| case GrGLProgramDesc::kAttribute_ColorInput:
|
| if (sharedState->fConstAttribCoverage != coverage ||
|
| @@ -248,8 +236,8 @@ void GrGLProgram::setCoverage(const GrDrawState& drawState,
|
| }
|
|
|
| void GrGLProgram::setMatrixAndRenderTargetHeight(GrGpu::DrawType drawType,
|
| - const GrDrawState& drawState) {
|
| - const GrRenderTarget* rt = drawState.getRenderTarget();
|
| + const GrOptDrawState& optState) {
|
| + const GrRenderTarget* rt = optState.getRenderTarget();
|
| SkISize size;
|
| size.set(rt->width(), rt->height());
|
|
|
| @@ -261,13 +249,13 @@ void GrGLProgram::setMatrixAndRenderTargetHeight(GrGpu::DrawType drawType,
|
| }
|
|
|
| if (GrGpu::IsPathRenderingDrawType(drawType)) {
|
| - fGpu->glPathRendering()->setProjectionMatrix(drawState.getViewMatrix(), size, rt->origin());
|
| + fGpu->glPathRendering()->setProjectionMatrix(optState.getViewMatrix(), size, rt->origin());
|
| } else if (fMatrixState.fRenderTargetOrigin != rt->origin() ||
|
| fMatrixState.fRenderTargetSize != size ||
|
| - !fMatrixState.fViewMatrix.cheapEqualTo(drawState.getViewMatrix())) {
|
| + !fMatrixState.fViewMatrix.cheapEqualTo(optState.getViewMatrix())) {
|
| SkASSERT(fBuiltinUniformHandles.fViewMatrixUni.isValid());
|
|
|
| - fMatrixState.fViewMatrix = drawState.getViewMatrix();
|
| + fMatrixState.fViewMatrix = optState.getViewMatrix();
|
| fMatrixState.fRenderTargetSize = size;
|
| fMatrixState.fRenderTargetOrigin = rt->origin();
|
|
|
|
|