diff options
author | 2017-03-30 16:48:26 -0400 | |
---|---|---|
committer | 2017-03-31 02:10:25 +0000 | |
commit | 4fc774060036ef04fbc1d92a018e42df8704ff50 (patch) | |
tree | 22071209fee2d5d92c0ec9109bd9264519a5c3f2 /src/gpu/instanced/InstancedRendering.cpp | |
parent | 8517b4c87ee5b8c30aa9aa642fd3a7cbf9131688 (diff) |
Respect xfer barriers in InstancedRendering::Op
Fixes a bug introduced when this Op stopped storing a GrPipeline.
Change-Id: I1a39814cebe18b321ea369f005bb7759f233cfe6
Reviewed-on: https://skia-review.googlesource.com/10804
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/gpu/instanced/InstancedRendering.cpp')
-rw-r--r-- | src/gpu/instanced/InstancedRendering.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gpu/instanced/InstancedRendering.cpp b/src/gpu/instanced/InstancedRendering.cpp index ad61eb6dfd..4abaef69b3 100644 --- a/src/gpu/instanced/InstancedRendering.cpp +++ b/src/gpu/instanced/InstancedRendering.cpp @@ -234,6 +234,7 @@ InstancedRendering::Op::Op(uint32_t classID, GrPaint&& paint, InstancedRendering , fInstancedRendering(ir) , fProcessors(std::move(paint)) , fIsTracked(false) + , fRequiresBarrierOnOverlap(false) , fNumDraws(1) , fNumChangesInGeometry(0) { fHeadDraw = fTailDraw = fInstancedRendering->fDrawPool.allocate(); @@ -370,6 +371,7 @@ bool InstancedRendering::Op::xpRequiresDstTexture(const GrCaps& caps, const GrAp fInfo.fCannotTweakAlphaForCoverage = !analysis.isCompatibleWithCoverageAsAlpha(); fInfo.fUsesLocalCoords = analysis.usesLocalCoords(); + fRequiresBarrierOnOverlap = analysis.requiresBarrierBetweenOverlappingDraws(); return analysis.requiresDstTexture(); } @@ -390,6 +392,10 @@ bool InstancedRendering::Op::onCombineIfPossible(GrOp* other, const GrCaps& caps return false; } + SkASSERT(fRequiresBarrierOnOverlap == that->fRequiresBarrierOnOverlap); + if (fRequiresBarrierOnOverlap && this->bounds().intersects(that->bounds())) { + return false; + } OpInfo combinedInfo = fInfo | that->fInfo; if (!combinedInfo.isSimpleRects()) { // This threshold was chosen with the "shapes_mixed" bench on a MacBook with Intel graphics. |