diff options
Diffstat (limited to 'src/gpu/ops')
-rw-r--r-- | src/gpu/ops/GrClearOp.h | 7 | ||||
-rw-r--r-- | src/gpu/ops/GrDiscardOp.h | 29 |
2 files changed, 29 insertions, 7 deletions
diff --git a/src/gpu/ops/GrClearOp.h b/src/gpu/ops/GrClearOp.h index 1314d47c5d..5340af1172 100644 --- a/src/gpu/ops/GrClearOp.h +++ b/src/gpu/ops/GrClearOp.h @@ -55,14 +55,17 @@ public: const char* name() const override { return "Clear"; } SkString dumpInfo() const override { - SkString string("Scissor ["); + SkString string; + string.appendf("rtID: %d proxyID: %d Scissor [", + fRenderTarget.get()->uniqueID().asUInt(), + fProxyUniqueID.asUInt()); if (fClip.scissorEnabled()) { const SkIRect& r = fClip.scissorRect(); string.appendf("L: %d, T: %d, R: %d, B: %d", r.fLeft, r.fTop, r.fRight, r.fBottom); } else { string.append("disabled"); } - string.appendf("], Color: 0x%08x, RT: %d", fColor, fProxyUniqueID.asUInt()); + string.appendf("], Color: 0x%08x ", fColor); string.append(INHERITED::dumpInfo()); return string; } diff --git a/src/gpu/ops/GrDiscardOp.h b/src/gpu/ops/GrDiscardOp.h index 098df63e7a..ca7f0007de 100644 --- a/src/gpu/ops/GrDiscardOp.h +++ b/src/gpu/ops/GrDiscardOp.h @@ -16,23 +16,39 @@ class GrDiscardOp final : public GrOp { public: DEFINE_OP_CLASS_ID - static std::unique_ptr<GrOp> Make(GrRenderTarget* rt) { - return std::unique_ptr<GrOp>(new GrDiscardOp(rt)); + + // MDB TODO: replace the renderTargetContext with just the renderTargetProxy. + // For now, we need the renderTargetContext for its accessRenderTarget powers. + static std::unique_ptr<GrOp> Make(GrRenderTargetContext* rtc) { + + // MDB TODO: remove this. In this hybrid state we need to be sure the RT is instantiable + // so it can carry the IO refs. In the future we will just get the proxy and + // it carry the IO refs. + if (!rtc->accessRenderTarget()) { + return nullptr; + } + + return std::unique_ptr<GrOp>(new GrDiscardOp(rtc)); } const char* name() const override { return "Discard"; } SkString dumpInfo() const override { SkString string; - string.printf("RT: %d", fRenderTarget.get()->uniqueID().asUInt()); + string.printf("rtID: %d proxyID: %d ", fRenderTarget.get()->uniqueID().asUInt(), + fProxyUniqueID.asUInt()); string.append(INHERITED::dumpInfo()); return string; } private: - GrDiscardOp(GrRenderTarget* rt) : INHERITED(ClassID()), fRenderTarget(rt) { - this->setBounds(SkRect::MakeIWH(rt->width(), rt->height()), HasAABloat::kNo, + GrDiscardOp(GrRenderTargetContext* rtc) + : INHERITED(ClassID()) + , fProxyUniqueID(rtc->asSurfaceProxy()->uniqueID()) { + this->setBounds(SkRect::MakeIWH(rtc->width(), rtc->height()), HasAABloat::kNo, IsZeroArea::kNo); + + fRenderTarget.reset(rtc->accessRenderTarget()); } bool onCombineIfPossible(GrOp* that, const GrCaps& caps) override { @@ -42,9 +58,12 @@ private: void onPrepare(GrOpFlushState*) override {} void onExecute(GrOpFlushState* state) override { + // MDB TODO: instantiate the renderTarget from the proxy in here state->commandBuffer()->discard(fRenderTarget.get()); } + // MDB TODO: remove this. When the renderTargetProxy carries the refs this will be redundant. + GrSurfaceProxy::UniqueID fProxyUniqueID; GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget; typedef GrOp INHERITED; |