1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2018 Google Inc.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#include "src/gpu/ops/DrawableOp.h"
9cb93a386Sopenharmony_ci
10cb93a386Sopenharmony_ci#include "include/core/SkDrawable.h"
11cb93a386Sopenharmony_ci#include "include/gpu/GrRecordingContext.h"
12cb93a386Sopenharmony_ci#include "src/gpu/GrMemoryPool.h"
13cb93a386Sopenharmony_ci#include "src/gpu/GrOpFlushState.h"
14cb93a386Sopenharmony_ci#include "src/gpu/GrOpsRenderPass.h"
15cb93a386Sopenharmony_ci#include "src/gpu/GrRecordingContextPriv.h"
16cb93a386Sopenharmony_ci
17cb93a386Sopenharmony_cinamespace skgpu::v1 {
18cb93a386Sopenharmony_ci
19cb93a386Sopenharmony_ciGrOp::Owner DrawableOp::Make(GrRecordingContext* context,
20cb93a386Sopenharmony_ci                             std::unique_ptr<SkDrawable::GpuDrawHandler> drawable,
21cb93a386Sopenharmony_ci                             const SkRect& bounds) {
22cb93a386Sopenharmony_ci    return GrOp::Make<DrawableOp>(context, std::move(drawable), bounds);
23cb93a386Sopenharmony_ci}
24cb93a386Sopenharmony_ci
25cb93a386Sopenharmony_ciDrawableOp::DrawableOp(std::unique_ptr<SkDrawable::GpuDrawHandler> drawable,
26cb93a386Sopenharmony_ci                       const SkRect& bounds)
27cb93a386Sopenharmony_ci        : GrOp(ClassID())
28cb93a386Sopenharmony_ci        , fDrawable(std::move(drawable)) {
29cb93a386Sopenharmony_ci    this->setBounds(bounds, HasAABloat::kNo, IsHairline::kNo);
30cb93a386Sopenharmony_ci}
31cb93a386Sopenharmony_ci
32cb93a386Sopenharmony_civoid DrawableOp::onExecute(GrOpFlushState* state, const SkRect& chainBounds) {
33cb93a386Sopenharmony_ci    SkASSERT(state->opsRenderPass());
34cb93a386Sopenharmony_ci    state->opsRenderPass()->executeDrawable(std::move(fDrawable));
35cb93a386Sopenharmony_ci}
36cb93a386Sopenharmony_ci
37cb93a386Sopenharmony_ci} // namespace skgpu::v1
38