/* * Copyright 2022 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_graphite_task_UploadTask_DEFINED #define skgpu_graphite_task_UploadTask_DEFINED #include "src/gpu/graphite/task/Task.h" #include "include/core/SkImageInfo.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" #include "include/private/base/SkTArray.h" #include "src/gpu/graphite/CommandTypes.h" #include <memory> namespace skgpu::graphite { class Buffer; class Recorder; class TextureProxy; struct MipLevel { … }; /** * The ConditionalUploadContext, if set, is used to determine whether an upload needs to occur * on Recording playback. Clients will need to create their own subclasses to store the * necessary data and override the needsUpload() method to do this check. */ class ConditionalUploadContext { … }; /** * ImageUploadContext is an implementation of ConditionalUploadContext that returns true on * the first call to needsUpload() and then returns false on subsequent calls. This is used to * upload an image once and then avoid redundant uploads after that. */ class ImageUploadContext : public ConditionalUploadContext { … }; /** * An UploadInstance represents a single set of uploads from a buffer to texture that * can be processed in a single command. */ class UploadInstance { … }; /** * An UploadList is a mutable collection of UploadCommands. * * Currently commands are accumulated in order and processed in the same order. Dependency * management is expected to be handled by the TaskGraph. * * When an upload is appended to the list its data will be copied to a Buffer in * preparation for a deferred upload. */ class UploadList { … }; /* * An UploadTask is a immutable collection of UploadCommands. * * When adding commands to the commandBuffer the texture proxies in those * commands will be instantiated and the copy command added. */ class UploadTask final : public Task { … }; } // namespace skgpu::graphite #endif // skgpu_graphite_task_UploadTask_DEFINED