1/* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#ifndef GrDiscardBatch_DEFINED 9#define GrDiscardBatch_DEFINED 10 11#include "GrBatch.h" 12#include "GrBatchFlushState.h" 13#include "GrGpu.h" 14#include "GrRenderTarget.h" 15 16class GrDiscardBatch final : public GrBatch { 17public: 18 DEFINE_BATCH_CLASS_ID 19 20 GrDiscardBatch(GrRenderTarget* rt) 21 : INHERITED(ClassID()) 22 , fRenderTarget(rt) { 23 fBounds = SkRect::MakeWH(SkIntToScalar(rt->width()), SkIntToScalar(rt->height())); 24 } 25 26 const char* name() const override { return "Discard"; } 27 28 uint32_t renderTargetUniqueID() const override { return fRenderTarget.get()->getUniqueID(); } 29 GrRenderTarget* renderTarget() const override { return fRenderTarget.get(); } 30 31 SkString dumpInfo() const override { 32 SkString string; 33 string.printf("RT: %d", fRenderTarget.get()->getUniqueID()); 34 return string; 35 } 36 37private: 38 bool onCombineIfPossible(GrBatch* that, const GrCaps& caps) override { 39 return fRenderTarget == that->cast<GrDiscardBatch>()->fRenderTarget; 40 } 41 42 void onPrepare(GrBatchFlushState*) override {} 43 44 void onDraw(GrBatchFlushState* state) override { 45 state->gpu()->discard(fRenderTarget.get()); 46 } 47 48 GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget; 49 50 typedef GrBatch INHERITED; 51}; 52 53#endif 54