xref: /third_party/skia/src/gpu/ops/DrawableOp.cpp (revision cb93a386)
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#include "src/gpu/ops/DrawableOp.h"
9
10#include "include/core/SkDrawable.h"
11#include "include/gpu/GrRecordingContext.h"
12#include "src/gpu/GrMemoryPool.h"
13#include "src/gpu/GrOpFlushState.h"
14#include "src/gpu/GrOpsRenderPass.h"
15#include "src/gpu/GrRecordingContextPriv.h"
16
17namespace skgpu::v1 {
18
19GrOp::Owner DrawableOp::Make(GrRecordingContext* context,
20                             std::unique_ptr<SkDrawable::GpuDrawHandler> drawable,
21                             const SkRect& bounds) {
22    return GrOp::Make<DrawableOp>(context, std::move(drawable), bounds);
23}
24
25DrawableOp::DrawableOp(std::unique_ptr<SkDrawable::GpuDrawHandler> drawable,
26                       const SkRect& bounds)
27        : GrOp(ClassID())
28        , fDrawable(std::move(drawable)) {
29    this->setBounds(bounds, HasAABloat::kNo, IsHairline::kNo);
30}
31
32void DrawableOp::onExecute(GrOpFlushState* state, const SkRect& chainBounds) {
33    SkASSERT(state->opsRenderPass());
34    state->opsRenderPass()->executeDrawable(std::move(fDrawable));
35}
36
37} // namespace skgpu::v1
38