| /* | |
| * 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 skgpu_graphite_Image_Base_Graphite_DEFINED | |
| #define skgpu_graphite_Image_Base_Graphite_DEFINED | |
| #include "src/image/SkImage_Base.h" | |
| #if SK_SUPPORT_GPU | |
| #include "src/gpu/ganesh/GrSurfaceProxyView.h" | |
| #endif | |
| namespace skgpu::graphite { | |
| class Context; | |
| class Recorder; | |
| class TextureProxy; | |
| class Image_Base : public SkImage_Base { | |
| public: | |
| ~Image_Base() override {} | |
| bool onReadPixels(GrDirectContext*, | |
| const SkImageInfo& dstInfo, | |
| void* dstPixels, | |
| size_t dstRowBytes, | |
| int srcX, | |
| int srcY, | |
| CachingHint) const override { return false; } | |
| bool isGraphiteBacked() const override { return true; } | |
| bool getROPixels(GrDirectContext*, | |
| SkBitmap*, | |
| CachingHint = kAllow_CachingHint) const override { return false; } | |
| sk_sp<SkImage> onMakeSubset(const SkIRect&, GrDirectContext*) const override; | |
| bool onIsValid(GrRecordingContext*) const override { return true; } | |
| sk_sp<SkImage> onMakeColorTypeAndColorSpace(SkColorType, | |
| sk_sp<SkColorSpace>, | |
| GrDirectContext*) const override; | |
| void onAsyncRescaleAndReadPixels(const SkImageInfo&, | |
| SkIRect srcRect, | |
| RescaleGamma, | |
| RescaleMode, | |
| ReadPixelsCallback, | |
| ReadPixelsContext) const override; | |
| void onAsyncRescaleAndReadPixelsYUV420(SkYUVColorSpace, | |
| sk_sp<SkColorSpace>, | |
| SkIRect srcRect, | |
| SkISize dstSize, | |
| RescaleGamma, | |
| RescaleMode, | |
| ReadPixelsCallback, | |
| ReadPixelsContext) const override; | |
| protected: | |
| Image_Base(const SkImageInfo& info, uint32_t uniqueID) | |
| : SkImage_Base(info, uniqueID) {} | |
| private: | |
| #if SK_SUPPORT_GPU | |
| std::unique_ptr<GrFragmentProcessor> onAsFragmentProcessor( | |
| GrRecordingContext*, | |
| SkSamplingOptions, | |
| const SkTileMode[2], | |
| const SkMatrix&, | |
| const SkRect* subset, | |
| const SkRect* domain) const override; | |
| std::tuple<GrSurfaceProxyView, GrColorType> onAsView( | |
| GrRecordingContext*, | |
| GrMipmapped, | |
| GrImageTexGenPolicy policy) const override { | |
| return {}; | |
| } | |
| #endif | |
| }; | |
| } // namespace skgpu::graphite | |
| #endif // skgpu_graphite_Image_Base_Graphite_DEFINED |