Fix handling of dynamic state in GrAAFillRRectOp

Bug: skia:
Change-Id: Id16684acc209aad943dae25d0077776e4b196453
Reviewed-on: https://skia-review.googlesource.com/c/171960
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This commit is contained in:
Chris Dalton 2018-11-19 13:37:31 -07:00 committed by Skia Commit-Bot
parent 5369e1422f
commit 8fa1625b11

View File

@ -476,13 +476,16 @@ void GrAAFillRRectOp::onExecute(GrOpFlushState* flushState, const SkRect& chainB
initArgs.fCaps = &flushState->caps();
initArgs.fResourceProvider = flushState->resourceProvider();
initArgs.fDstProxy = flushState->drawOpArgs().fDstProxy;
GrPipeline pipeline(initArgs, std::move(fProcessors), flushState->detachAppliedClip());
auto clip = flushState->detachAppliedClip();
GrPipeline::FixedDynamicState fixedDynamicState(clip.scissorState().rect());
GrPipeline pipeline(initArgs, std::move(fProcessors), std::move(clip));
GrMesh mesh(GrPrimitiveType::kTriangles);
mesh.setIndexedInstanced(indexBuffer.get(), SK_ARRAY_COUNT(kIndexData), fInstanceBuffer,
fInstanceCount, fBaseInstance, GrPrimitiveRestart::kNo);
mesh.setVertexData(vertexBuffer.get());
flushState->rtCommandBuffer()->draw(proc, pipeline, nullptr, nullptr, &mesh, 1, this->bounds());
flushState->rtCommandBuffer()->draw(proc, pipeline, &fixedDynamicState, nullptr, &mesh, 1,
this->bounds());
}
// Will the given corner look good if we use HW derivatives?