Chromium Code Reviews| Index: src/gpu/GrDrawTarget.cpp |
| diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp |
| index bae4cabaae3876c104db7ae520a34784617d8942..6ea064fd04bc246cee2e2ee9f52cb43e9729ec50 100644 |
| --- a/src/gpu/GrDrawTarget.cpp |
| +++ b/src/gpu/GrDrawTarget.cpp |
| @@ -20,6 +20,7 @@ |
| #include "GrSurfacePriv.h" |
| #include "GrTexture.h" |
| #include "GrVertexBuffer.h" |
| +#include "gl/GrGLRenderTarget.h" |
| #include "SkStrokeRec.h" |
| @@ -212,6 +213,8 @@ void GrDrawTarget::drawBatches(GrBatchFlushState* flushState) { |
| } |
| fBatches[i]->draw(flushState); |
| } |
| + |
| + fGpu->performFlushWorkaround(); |
| } |
| void GrDrawTarget::reset() { |
| @@ -523,6 +526,33 @@ bool GrDrawTarget::installPipelineInDrawBatch(const GrPipelineBuilder* pipelineB |
| args.fCaps = this->caps(); |
| args.fScissor = scissor; |
| batch->getPipelineOptimizations(&args.fOpts); |
| + #ifdef ENABLE_PLS |
|
bsalomon
2016/01/13 19:15:33
untab
|
| + GrScissorState finalScissor; |
| + if (args.fOpts.fOverrides.fUsePLSDstRead) { |
| + GrRenderTarget* rt = pipelineBuilder->getRenderTarget(); |
| + GrGLIRect viewport; |
| + viewport.fLeft = 0; |
| + viewport.fBottom = 0; |
| + viewport.fWidth = rt->width(); |
| + viewport.fHeight = rt->height(); |
| + SkIRect ibounds; |
| + ibounds.fLeft = SkTPin(SkScalarFloorToInt(batch->bounds().fLeft), viewport.fLeft, |
| + viewport.fWidth); |
| + ibounds.fTop = SkTPin(SkScalarFloorToInt(batch->bounds().fTop), viewport.fBottom, |
| + viewport.fHeight); |
| + ibounds.fRight = SkTPin(SkScalarCeilToInt(batch->bounds().fRight), viewport.fLeft, |
| + viewport.fWidth); |
| + ibounds.fBottom = SkTPin(SkScalarCeilToInt(batch->bounds().fBottom), viewport.fBottom, |
| + viewport.fHeight); |
| + if (scissor != nullptr && scissor->enabled()) { |
| + if (!ibounds.intersect(scissor->rect())) { |
| + ibounds = scissor->rect(); |
| + } |
| + } |
| + finalScissor.set(ibounds); |
| + args.fScissor = &finalScissor; |
| + } |
| + #endif |
| args.fOpts.fColorPOI.completeCalculations(pipelineBuilder->fColorFragmentProcessors.begin(), |
| pipelineBuilder->numColorFragmentProcessors()); |
| args.fOpts.fCoveragePOI.completeCalculations( |