| /* | |
| * 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_TextureUtils_DEFINED | |
| #define skgpu_graphite_TextureUtils_DEFINED | |
| #include "include/core/SkImage.h" | |
| #include "include/core/SkRefCnt.h" | |
| #include "include/gpu/GpuTypes.h" | |
| #include "src/gpu/graphite/TextureProxyView.h" | |
| #include <functional> | |
| #include <tuple> | |
| #include <utility> | |
| class SkBitmap; | |
| enum SkColorType : int; | |
| class SkImage; | |
| struct SkImageInfo; | |
| struct SkSamplingOptions; | |
| namespace skgpu::graphite { | |
| class Caps; | |
| class Context; | |
| class Recorder; | |
| class TextureProxyView; | |
| // Create TextureProxyView and SkColorType pair using pixel data in SkBitmap, | |
| // adding any necessary copy commands to Recorder | |
| std::tuple<TextureProxyView, SkColorType> MakeBitmapProxyView(Recorder*, | |
| const SkBitmap&, | |
| sk_sp<SkMipmap>, | |
| Mipmapped, | |
| skgpu::Budgeted); | |
| sk_sp<SkImage> MakeFromBitmap(Recorder*, | |
| const SkColorInfo&, | |
| const SkBitmap&, | |
| sk_sp<SkMipmap>, | |
| skgpu::Budgeted, | |
| SkImage::RequiredProperties); | |
| size_t ComputeSize(SkISize dimensions, const TextureInfo&); | |
| sk_sp<SkImage> RescaleImage(Recorder*, | |
| const SkImage* srcImage, | |
| SkIRect srcIRect, | |
| const SkImageInfo& dstInfo, | |
| SkImage::RescaleGamma rescaleGamma, | |
| SkImage::RescaleMode rescaleMode); | |
| bool GenerateMipmaps(Recorder*, sk_sp<TextureProxy>, const SkColorInfo&); | |
| std::tuple<skgpu::graphite::TextureProxyView, SkColorType> AsView(Recorder*, | |
| const SkImage*, | |
| skgpu::Mipmapped); | |
| std::pair<sk_sp<SkImage>, SkSamplingOptions> GetGraphiteBacked(Recorder*, | |
| const SkImage*, | |
| SkSamplingOptions); | |
| // Return the color format used for coverage mask textures that are rendered by a GPU | |
| // compute program. | |
| SkColorType ComputeShaderCoverageMaskTargetFormat(const Caps*); | |
| } // namespace skgpu::graphite | |
| namespace skif { | |
| class Backend; | |
| sk_sp<Backend> MakeGraphiteBackend(skgpu::graphite::Recorder* recorder, | |
| const SkSurfaceProps&, | |
| SkColorType); | |
| } // namespace skif | |
| #endif // skgpu_graphite_TextureUtils_DEFINED |