/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkImage_RasterPinnable_DEFINED #define SkImage_RasterPinnable_DEFINED #include "include/core/SkTypes.h" #include "include/private/gpu/ganesh/GrTypesPriv.h" #include "src/gpu/ganesh/GrSurfaceProxyView.h" #include "src/image/SkImage_Base.h" #include "src/image/SkImage_Raster.h" #include #include #include class GrRecordingContext; class SkBitmap; enum class GrImageTexGenPolicy : int; namespace skgpu { enum class Mipmapped : bool; } struct PinnedData { GrSurfaceProxyView fPinnedView; int32_t fPinnedCount = 0; uint32_t fPinnedUniqueID = SK_InvalidUniqueID; uint32_t fPinnedContextID = SK_InvalidUniqueID; GrColorType fPinnedColorType = GrColorType::kUnknown; }; class SkImage_RasterPinnable final : public SkImage_Raster { public: SkImage_RasterPinnable(const SkBitmap& bm) : SkImage_Raster(bm, /*bitmapMayBeMutable = */ true) {} std::tuple asView(GrRecordingContext*, skgpu::Mipmapped, GrImageTexGenPolicy) const; SkImage_Base::Type type() const override { return SkImage_Base::Type::kRasterPinnable; } std::unique_ptr fPinnedData; }; #endif