| /* |
| * 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/GrBufferUpdateRenderTask.h" |
| |
| #include "src/gpu/ganesh/GrGpu.h" |
| #include "src/gpu/ganesh/GrOpFlushState.h" |
| #include "src/gpu/ganesh/GrResourceAllocator.h" |
| |
| sk_sp<GrRenderTask> GrBufferUpdateRenderTask::Make(sk_sp<SkData> src, |
| sk_sp<GrGpuBuffer> dst, |
| size_t dstOffset) { |
| return sk_sp<GrRenderTask>(new GrBufferUpdateRenderTask(std::move(src), |
| std::move(dst), |
| dstOffset)); |
| } |
| |
| GrBufferUpdateRenderTask::GrBufferUpdateRenderTask(sk_sp<SkData> src, |
| sk_sp<GrGpuBuffer> dst, |
| size_t dstOffset) |
| : fSrc(std::move(src)) |
| , fDst(std::move(dst)) |
| , fDstOffset(dstOffset) { |
| this->setFlag(kBlocksReordering_Flag); |
| } |
| |
| GrBufferUpdateRenderTask::~GrBufferUpdateRenderTask() = default; |
| |
| bool GrBufferUpdateRenderTask::onExecute(GrOpFlushState* flushState) { |
| return fDst->updateData(fSrc->data(), fDstOffset, fSrc->size(), /*preserve=*/true); |
| } |