blob: 9d9570fe85ec9b84e141794df795df31fa5e96ec [file] [log] [blame]
bsalomon53469832015-08-18 09:20:09 -07001/*
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 GrDiscardBatch(GrRenderTarget* rt)
19 : fRenderTarget(rt) {
20 this->initClassID<GrDiscardBatch>();
21 fBounds = SkRect::MakeWH(SkIntToScalar(rt->width()), SkIntToScalar(rt->height()));
22 }
23
24 const char* name() const override { return "Discard"; }
25
26 uint32_t renderTargetUniqueID() const override { return fRenderTarget.get()->getUniqueID(); }
27
28 SkString dumpInfo() const {
29 SkString string;
30 string.printf("RT: 0x%p", fRenderTarget.get());
31 return string;
32 }
33
34private:
35 bool onCombineIfPossible(GrBatch* that, const GrCaps& caps) override {
36 return fRenderTarget == that->cast<GrDiscardBatch>()->fRenderTarget;
37 }
38
39 void onPrepare(GrBatchFlushState*) override {}
40
41 void onDraw(GrBatchFlushState* state) override {
42 state->gpu()->discard(fRenderTarget.get());
43 }
44
45 GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget;
46};
47
48#endif