// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_VIZ_COMMON_FRAME_SINKS_COPY_OUTPUT_RESULT_H_ #define COMPONENTS_VIZ_COMMON_FRAME_SINKS_COPY_OUTPUT_RESULT_H_ #include <array> #include <vector> #include "base/memory/raw_ptr.h" #include "base/threading/thread_checker.h" #include "components/viz/common/resources/release_callback.h" #include "components/viz/common/viz_common_export.h" #include "gpu/command_buffer/common/mailbox_holder.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/color_space.h" #include "ui/gfx/geometry/rect.h" class SkBitmap; namespace viz { // Base class for providing the result of a CopyOutputRequest. Implementations // that execute CopyOutputRequests will use a subclass implementation to define // data storage, access and ownership semantics relative to the lifetime of the // CopyOutputResult instance. class VIZ_COMMON_EXPORT CopyOutputResult { … }; // Subclass of CopyOutputResult that provides a RGBA result from an // SkBitmap (or an I420_PLANES result based on a SkBitmap). Implies that the // destination is kSystemMemory. class VIZ_COMMON_EXPORT CopyOutputSkBitmapResult : public CopyOutputResult { … }; // Subclass of CopyOutputResult that holds references to textures (via // mailboxes). The owner of the result must take ownership of the textures if it // wants to use them by calling |TakeTextureOwnership()|, and then call the // ReleaseCallbacks when the textures will no longer be used to release // ownership and allow the textures to be reused or destroyed. If ownership is // not claimed, it will be released when this class is destroyed. class VIZ_COMMON_EXPORT CopyOutputTextureResult : public CopyOutputResult { … }; // Scoped class for accessing SkBitmap in CopyOutputRequest. // It cannot be used across threads. class VIZ_COMMON_EXPORT CopyOutputResult::ScopedSkBitmap { … }; } // namespace viz #endif // COMPONENTS_VIZ_COMMON_FRAME_SINKS_COPY_OUTPUT_RESULT_H_