/* * Copyright 2022 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "src/gpu/ganesh/GrBufferTransferRenderTask.h" #include "src/gpu/ganesh/GrGpu.h" #include "src/gpu/ganesh/GrGpuBuffer.h" #include "src/gpu/ganesh/GrOpFlushState.h" #include sk_sp GrBufferTransferRenderTask::Make(sk_sp src, size_t srcOffset, sk_sp dst, size_t dstOffset, size_t size) { return sk_sp(new GrBufferTransferRenderTask(std::move(src), srcOffset, std::move(dst), dstOffset, size)); } GrBufferTransferRenderTask::GrBufferTransferRenderTask(sk_sp src, size_t srcOffset, sk_sp dst, size_t dstOffset, size_t size) : fSrc(std::move(src)) , fDst(std::move(dst)) , fSrcOffset(srcOffset) , fDstOffset(dstOffset) , fSize(size) { this->setFlag(kBlocksReordering_Flag); } GrBufferTransferRenderTask::~GrBufferTransferRenderTask() = default; bool GrBufferTransferRenderTask::onExecute(GrOpFlushState* flushState) { return flushState->gpu()->transferFromBufferToBuffer(fSrc, fSrcOffset, fDst, fDstOffset, fSize); }