blob: 421206eace3ef56615c73c5c5c7f2599a5eb6494 [file] [log] [blame]
Greg Danielbbfec9d2019-08-20 10:56:51 -04001/*
2 * Copyright 2019 Google LLC
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 GrTransferFromRenderTask_DEFINED
9#define GrTransferFromRenderTask_DEFINED
10
11#include "src/gpu/GrRenderTask.h"
12
13class GrTransferFromRenderTask final : public GrRenderTask {
14public:
15 GrTransferFromRenderTask(sk_sp<GrSurfaceProxy> srcProxy,
16 const SkIRect& srcRect,
17 GrColorType surfaceColorType,
18 GrColorType dstColorType,
19 sk_sp<GrGpuBuffer> dstBuffer,
20 size_t dstOffset)
21 : GrRenderTask(nullptr)
22 , fSrcProxy(std::move(srcProxy))
23 , fSrcRect(srcRect)
24 , fSurfaceColorType(surfaceColorType)
25 , fDstColorType(dstColorType)
26 , fDstBuffer(std::move(dstBuffer))
27 , fDstOffset(dstOffset) {}
28
29private:
30 void onPrepare(GrOpFlushState*) override {}
31 bool onIsUsed(GrSurfaceProxy* proxy) const override {
32 SkASSERT(!fTarget);
33 return proxy == fSrcProxy.get();
34 }
35 // If fSrcProxy is uninstantiated at flush time we simply will skip doing the transfer.
36 void handleInternalAllocationFailure() override {}
37 void gatherProxyIntervals(GrResourceAllocator*) const override;
Chris Daltonaa3cbb82019-08-21 00:01:21 -060038
39 ExpectedOutcome onMakeClosed(const GrCaps&) override {
40 return ExpectedOutcome::kTargetUnchanged;
41 }
42
Greg Danielbbfec9d2019-08-20 10:56:51 -040043 bool onExecute(GrOpFlushState*) override;
44
Chris Daltonc4b47352019-08-23 10:10:36 -060045#ifdef SK_DEBUG
Greg Danieldcf9ca12019-08-27 14:30:21 -040046 void visitProxies_debugOnly(const VisitSurfaceProxyFunc& fn) const override {
Chris Daltonc4b47352019-08-23 10:10:36 -060047 fn(fSrcProxy.get(), GrMipMapped::kNo);
48 }
49#endif
50
Greg Danielbbfec9d2019-08-20 10:56:51 -040051 sk_sp<GrSurfaceProxy> fSrcProxy;
52 SkIRect fSrcRect;
53 GrColorType fSurfaceColorType;
54 GrColorType fDstColorType;
55 sk_sp<GrGpuBuffer> fDstBuffer;
56 size_t fDstOffset;
57
58};
59
60#endif
61