/* * 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 defined(SK_GANESH) #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 onMakeSubset(const SkIRect&, GrDirectContext*) const override; bool onIsValid(GrRecordingContext*) const override { return true; } sk_sp onMakeColorTypeAndColorSpace(SkColorType, sk_sp, GrDirectContext*) const override; void onAsyncRescaleAndReadPixels(const SkImageInfo&, SkIRect srcRect, RescaleGamma, RescaleMode, ReadPixelsCallback, ReadPixelsContext) const override; void onAsyncRescaleAndReadPixelsYUV420(SkYUVColorSpace, sk_sp, 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 defined(SK_GANESH) std::unique_ptr onAsFragmentProcessor( GrRecordingContext*, SkSamplingOptions, const SkTileMode[2], const SkMatrix&, const SkRect* subset, const SkRect* domain) const override; std::tuple onAsView( GrRecordingContext*, GrMipmapped, GrImageTexGenPolicy policy) const override { return {}; } #endif }; } // namespace skgpu::graphite #endif // skgpu_graphite_Image_Base_Graphite_DEFINED