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 17 class GrRecordingContext; 18 19 class GrDrawableOp final : public GrOp { 20 public: 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 name()27 const char* name() const override { return "Drawable"; } 28 29 #ifdef SK_DEBUG dumpInfo()30 SkString dumpInfo() const override { 31 return INHERITED::dumpInfo(); 32 } 33 #endif 34 35 private: 36 friend class GrOpMemoryPool; // for ctor 37 38 GrDrawableOp(std::unique_ptr<SkDrawable::GpuDrawHandler>, const SkRect& bounds); 39 onCombineIfPossible(GrOp * that,GrRecordingContext::Arenas *,const GrCaps & caps)40 CombineResult onCombineIfPossible(GrOp* that, GrRecordingContext::Arenas*, 41 const GrCaps& caps) override { 42 return CombineResult::kCannotCombine; 43 } onPrepare(GrOpFlushState *)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