| Index: src/gpu/gl/GrGpuGL.cpp
|
| diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
|
| index ebc34572fed1f1660e43246f7601edfd47afdc4c..a01f7b74ff7a08a8369cc411535c55fc34fb40db 100644
|
| --- a/src/gpu/gl/GrGpuGL.cpp
|
| +++ b/src/gpu/gl/GrGpuGL.cpp
|
| @@ -1931,7 +1931,7 @@ void GrGpuGL::flushStencil(DrawType type) {
|
| }
|
| }
|
|
|
| -void GrGpuGL::flushAAState(DrawType type) {
|
| +void GrGpuGL::flushAAState(const GrOptDrawState& optState, DrawType type) {
|
| // At least some ATI linux drivers will render GL_LINES incorrectly when MSAA state is enabled but
|
| // the target is not multisampled. Single pixel wide lines are rendered thicker than 1 pixel wide.
|
| #if 0
|
| @@ -1941,13 +1941,13 @@ void GrGpuGL::flushAAState(DrawType type) {
|
| #define RT_HAS_MSAA (rt->isMultisampled() || kDrawLines_DrawType == type)
|
| #endif
|
|
|
| - const GrRenderTarget* rt = this->getDrawState().getRenderTarget();
|
| + const GrRenderTarget* rt = optState.getRenderTarget();
|
| if (kGL_GrGLStandard == this->glStandard()) {
|
| if (RT_HAS_MSAA) {
|
| // FIXME: GL_NV_pr doesn't seem to like MSAA disabled. The paths
|
| // convex hulls of each segment appear to get filled.
|
| bool enableMSAA = kStencilPath_DrawType == type ||
|
| - this->getDrawState().isHWAntialiasState();
|
| + optState.isHWAntialiasState();
|
| if (enableMSAA) {
|
| if (kYes_TriState != fMSAAEnabled) {
|
| GL_CALL(Enable(GR_GL_MULTISAMPLE));
|
| @@ -1963,9 +1963,8 @@ void GrGpuGL::flushAAState(DrawType type) {
|
| }
|
| }
|
|
|
| -void GrGpuGL::flushBlend(bool isLines,
|
| - GrBlendCoeff srcCoeff,
|
| - GrBlendCoeff dstCoeff) {
|
| +void GrGpuGL::flushBlend(const GrOptDrawState& optState, bool isLines,
|
| + GrBlendCoeff srcCoeff, GrBlendCoeff dstCoeff) {
|
| // Any optimization to disable blending should have already been applied and
|
| // tweaked the coeffs to (1, 0).
|
| bool blendOff = kOne_GrBlendCoeff == srcCoeff && kZero_GrBlendCoeff == dstCoeff;
|
| @@ -1986,7 +1985,7 @@ void GrGpuGL::flushBlend(bool isLines,
|
| fHWBlendState.fSrcCoeff = srcCoeff;
|
| fHWBlendState.fDstCoeff = dstCoeff;
|
| }
|
| - GrColor blendConst = this->getDrawState().getBlendConstant();
|
| + GrColor blendConst = optState.getBlendConstant();
|
| if ((BlendCoeffReferencesConstant(srcCoeff) ||
|
| BlendCoeffReferencesConstant(dstCoeff)) &&
|
| (!fHWBlendState.fConstColorValid ||
|
| @@ -2109,11 +2108,8 @@ void GrGpuGL::bindTexture(int unitIdx, const GrTextureParams& params, GrGLTextur
|
| texture->setCachedTexParams(newTexParams, this->getResetTimestamp());
|
| }
|
|
|
| -void GrGpuGL::flushMiscFixedFunctionState() {
|
| -
|
| - const GrDrawState& drawState = this->getDrawState();
|
| -
|
| - if (drawState.isDitherState()) {
|
| +void GrGpuGL::flushMiscFixedFunctionState(const GrOptDrawState& optState) {
|
| + if (optState.isDitherState()) {
|
| if (kYes_TriState != fHWDitherEnabled) {
|
| GL_CALL(Enable(GR_GL_DITHER));
|
| fHWDitherEnabled = kYes_TriState;
|
| @@ -2125,7 +2121,7 @@ void GrGpuGL::flushMiscFixedFunctionState() {
|
| }
|
| }
|
|
|
| - if (drawState.isColorWriteDisabled()) {
|
| + if (optState.isColorWriteDisabled()) {
|
| if (kNo_TriState != fHWWriteToColor) {
|
| GL_CALL(ColorMask(GR_GL_FALSE, GR_GL_FALSE,
|
| GR_GL_FALSE, GR_GL_FALSE));
|
| @@ -2138,8 +2134,8 @@ void GrGpuGL::flushMiscFixedFunctionState() {
|
| }
|
| }
|
|
|
| - if (fHWDrawFace != drawState.getDrawFace()) {
|
| - switch (this->getDrawState().getDrawFace()) {
|
| + if (fHWDrawFace != optState.getDrawFace()) {
|
| + switch (optState.getDrawFace()) {
|
| case GrDrawState::kCCW_DrawFace:
|
| GL_CALL(Enable(GR_GL_CULL_FACE));
|
| GL_CALL(CullFace(GR_GL_BACK));
|
| @@ -2154,7 +2150,7 @@ void GrGpuGL::flushMiscFixedFunctionState() {
|
| default:
|
| SkFAIL("Unknown draw face.");
|
| }
|
| - fHWDrawFace = drawState.getDrawFace();
|
| + fHWDrawFace = optState.getDrawFace();
|
| }
|
| }
|
|
|
|
|