1/*
2 * Copyright 2018 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 GrDrawableOp_DEFINED
9#define GrDrawableOp_DEFINED
10
11#include "src/gpu/ops/GrOp.h"
12
13#include "include/core/SkDrawable.h"
14#include "include/core/SkMatrix.h"
15#include "src/gpu/GrSemaphore.h"
16
17class GrRecordingContext;
18
19class GrDrawableOp final : public GrOp {
20public:
21 DEFINE_OP_CLASS_ID
22
23 static std::unique_ptr<GrDrawableOp> Make(GrRecordingContext*,
24 std::unique_ptr<SkDrawable::GpuDrawHandler> drawable,
25 const SkRect& bounds);
26
27 const char* name() const override { return "Drawable"; }
28
29private:
30 friend class GrOpMemoryPool; // for ctor
31
32 GrDrawableOp(std::unique_ptr<SkDrawable::GpuDrawHandler>, const SkRect& bounds);
33
34 CombineResult onCombineIfPossible(GrOp* that, GrRecordingContext::Arenas*,
35 const GrCaps& caps) override {
36 return CombineResult::kCannotCombine;
37 }
38
39 void onPrePrepare(GrRecordingContext*,
40 const GrSurfaceProxyView* writeView,
41 GrAppliedClip*,
42 const GrXferProcessor::DstProxyView&) override {}
43
44 void onPrepare(GrOpFlushState*) override {}
45
46 void onExecute(GrOpFlushState*, const SkRect& chainBounds) override;
47
48 std::unique_ptr<SkDrawable::GpuDrawHandler> fDrawable;
49
50 typedef GrOp INHERITED;
51};
52
53#endif
54
55