diff options
Diffstat (limited to 'src/gpu/batches/GrClearBatch.h')
-rw-r--r-- | src/gpu/batches/GrClearBatch.h | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/src/gpu/batches/GrClearBatch.h b/src/gpu/batches/GrClearBatch.h index 9a653a3962..00a1c84de6 100644 --- a/src/gpu/batches/GrClearBatch.h +++ b/src/gpu/batches/GrClearBatch.h @@ -18,12 +18,8 @@ class GrClearBatch final : public GrBatch { public: DEFINE_BATCH_CLASS_ID - GrClearBatch(const SkIRect& rect, GrColor color, GrRenderTarget* rt) - : INHERITED(ClassID()) - , fRect(rect) - , fColor(color) - , fRenderTarget(rt) { - this->setBounds(SkRect::Make(rect), HasAABloat::kNo, IsZeroArea::kNo); + static sk_sp<GrBatch> Make(const SkIRect& rect, GrColor color, GrRenderTarget* rt) { + return sk_sp<GrBatch>(new GrClearBatch(rect, color, rt)); } const char* name() const override { return "Clear"; } @@ -41,6 +37,14 @@ public: } private: + GrClearBatch(const SkIRect& rect, GrColor color, GrRenderTarget* rt) + : INHERITED(ClassID()) + , fRect(rect) + , fColor(color) + , fRenderTarget(rt) { + this->setBounds(SkRect::Make(rect), HasAABloat::kNo, IsZeroArea::kNo); + } + bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override { // This could be much more complicated. Currently we look at cases where the new clear // contains the old clear, or when the new clear is a subset of the old clear and is the @@ -71,46 +75,4 @@ private: typedef GrBatch INHERITED; }; -class GrClearStencilClipBatch final : public GrBatch { -public: - DEFINE_BATCH_CLASS_ID - - GrClearStencilClipBatch(const SkIRect& rect, bool insideClip, GrRenderTarget* rt) - : INHERITED(ClassID()) - , fRect(rect) - , fInsideClip(insideClip) - , fRenderTarget(rt) { - this->setBounds(SkRect::Make(rect), HasAABloat::kNo, IsZeroArea::kNo); - } - - const char* name() const override { return "ClearStencilClip"; } - - uint32_t renderTargetUniqueID() const override { return fRenderTarget.get()->getUniqueID(); } - GrRenderTarget* renderTarget() const override { return fRenderTarget.get(); } - - SkString dumpInfo() const override { - SkString string; - string.printf("Rect [L: %d, T: %d, R: %d, B: %d], IC: %d, RT: 0x%p", - fRect.fLeft, fRect.fTop, fRect.fRight, fRect.fBottom, fInsideClip, - fRenderTarget.get()); - string.append(INHERITED::dumpInfo()); - return string; - } - -private: - bool onCombineIfPossible(GrBatch* t, const GrCaps& caps) override { return false; } - - void onPrepare(GrBatchFlushState*) override {} - - void onDraw(GrBatchFlushState* state) override { - state->commandBuffer()->clearStencilClip(fRect, fInsideClip, fRenderTarget.get()); - } - - SkIRect fRect; - bool fInsideClip; - GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget; - - typedef GrBatch INHERITED; -}; - #endif |