#include "src/gpu/ganesh/image/GrImageUtils.h"
#include "include/core/SkAlphaType.h"
#include "include/core/SkBitmap.h"
#include "include/core/SkColorSpace.h"
#include "include/core/SkImage.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkPixmap.h"
#include "include/core/SkRect.h"
#include "include/core/SkSamplingOptions.h"
#include "include/core/SkSize.h"
#include "include/core/SkSurface.h"
#include "include/core/SkTypes.h"
#include "include/core/SkYUVAInfo.h"
#include "include/core/SkYUVAPixmaps.h"
#include "include/gpu/GpuTypes.h"
#include "include/gpu/ganesh/GrBackendSurface.h"
#include "include/gpu/ganesh/GrContextOptions.h"
#include "include/gpu/ganesh/GrRecordingContext.h"
#include "include/gpu/ganesh/GrTypes.h"
#include "include/gpu/ganesh/SkSurfaceGanesh.h"
#include "include/private/SkIDChangeListener.h"
#include "include/private/base/SkMutex.h"
#include "include/private/gpu/ganesh/GrImageContext.h"
#include "include/private/gpu/ganesh/GrTextureGenerator.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/core/SkBlurEngine.h"
#include "src/core/SkCachedData.h"
#include "src/core/SkImageFilterCache.h"
#include "src/core/SkImageFilterTypes.h"
#include "src/core/SkSamplingPriv.h"
#include "src/gpu/ResourceKey.h"
#include "src/gpu/SkBackingFit.h"
#include "src/gpu/Swizzle.h"
#include "src/gpu/ganesh/Device.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrColorSpaceXform.h"
#include "src/gpu/ganesh/GrFragmentProcessor.h"
#include "src/gpu/ganesh/GrImageInfo.h"
#include "src/gpu/ganesh/GrProxyProvider.h"
#include "src/gpu/ganesh/GrRecordingContextPriv.h"
#include "src/gpu/ganesh/GrSamplerState.h"
#include "src/gpu/ganesh/GrSurfaceProxy.h"
#include "src/gpu/ganesh/GrSurfaceProxyView.h"
#include "src/gpu/ganesh/GrTextureProxy.h"
#include "src/gpu/ganesh/GrThreadSafeCache.h"
#include "src/gpu/ganesh/GrYUVATextureProxies.h"
#include "src/gpu/ganesh/SkGr.h"
#include "src/gpu/ganesh/SurfaceFillContext.h"
#include "src/gpu/ganesh/effects/GrBicubicEffect.h"
#include "src/gpu/ganesh/effects/GrTextureEffect.h"
#include "src/gpu/ganesh/effects/GrYUVtoRGBEffect.h"
#include "src/gpu/ganesh/image/SkImage_Ganesh.h"
#include "src/gpu/ganesh/image/SkImage_GaneshBase.h"
#include "src/gpu/ganesh/image/SkImage_RasterPinnable.h"
#include "src/gpu/ganesh/image/SkSpecialImage_Ganesh.h"
#include "src/image/SkImage_Base.h"
#include "src/image/SkImage_Lazy.h"
#include "src/image/SkImage_Picture.h"
#include "src/image/SkImage_Raster.h"
#include <string_view>
#include <utility>
class SkDevice;
class SkMatrix;
class SkSurfaceProps;
enum SkColorType : int;
#if defined(SK_USE_LEGACY_BLUR_GANESH)
#include "include/core/SkPoint.h"
#include "include/core/SkScalar.h"
#include "src/core/SkSpecialImage.h"
#include "src/gpu/ganesh/GrBlurUtils.h"
#include "src/gpu/ganesh/SurfaceDrawContext.h"
#else
class SkSpecialImage;
#endif
namespace skgpu::ganesh {
GrSurfaceProxyView CopyView(GrRecordingContext* context,
GrSurfaceProxyView src,
skgpu::Mipmapped mipmapped,
GrImageTexGenPolicy policy,
std::string_view label) { … }
std::tuple<GrSurfaceProxyView, GrColorType> RasterAsView(GrRecordingContext* rContext,
const SkImage_Raster* raster,
skgpu::Mipmapped mipmapped,
GrImageTexGenPolicy policy) { … }
GrColorType ColorTypeOfLockTextureProxy(const GrCaps* caps, SkColorType sct) { … }
static GrSurfaceOrigin get_origin(const SkImage_Lazy* img) { … }
static GrSurfaceProxyView texture_proxy_view_from_planes(GrRecordingContext* ctx,
const SkImage_Lazy* img,
skgpu::Budgeted budgeted) { … }
static GrSurfaceProxyView generate_picture_texture(GrRecordingContext* ctx,
const SkImage_Picture* img,
skgpu::Mipmapped mipmapped,
GrImageTexGenPolicy texGenPolicy) { … }
GrSurfaceProxyView LockTextureProxyView(GrRecordingContext* rContext,
const SkImage_Lazy* img,
GrImageTexGenPolicy texGenPolicy,
skgpu::Mipmapped mipmapped) { … }
static std::tuple<GrSurfaceProxyView, GrColorType> lazy_as_view(GrRecordingContext* context,
const SkImage_Lazy* img,
skgpu::Mipmapped mipmapped,
GrImageTexGenPolicy policy) { … }
std::tuple<GrSurfaceProxyView, GrColorType> AsView(GrRecordingContext* rContext,
const SkImage* img,
skgpu::Mipmapped mipmapped,
GrImageTexGenPolicy policy) { … }
static std::unique_ptr<GrFragmentProcessor> make_fp_from_view(GrRecordingContext* rContext,
GrSurfaceProxyView view,
SkAlphaType at,
SkSamplingOptions sampling,
const SkTileMode tileModes[2],
const SkMatrix& m,
const SkRect* subset,
const SkRect* domain) { … }
std::unique_ptr<GrFragmentProcessor> raster_as_fp(GrRecordingContext* rContext,
const SkImage_Raster* img,
SkSamplingOptions sampling,
const SkTileMode tileModes[2],
const SkMatrix& m,
const SkRect* subset,
const SkRect* domain) { … }
std::unique_ptr<GrFragmentProcessor> AsFragmentProcessor(GrRecordingContext* rContext,
const SkImage* img,
SkSamplingOptions sampling,
const SkTileMode tileModes[2],
const SkMatrix& m,
const SkRect* subset,
const SkRect* domain) { … }
std::unique_ptr<GrFragmentProcessor> MakeFragmentProcessorFromView(
GrRecordingContext* rContext,
GrSurfaceProxyView view,
SkAlphaType at,
SkSamplingOptions sampling,
const SkTileMode tileModes[2],
const SkMatrix& m,
const SkRect* subset,
const SkRect* domain) { … }
GrSurfaceProxyView FindOrMakeCachedMipmappedView(GrRecordingContext* rContext,
GrSurfaceProxyView view,
uint32_t imageUniqueID) { … }
DataType;
SkYUVAPixmapInfo::SupportedDataTypes SupportedTextureFormats(const GrImageContext& context) { … }
}
namespace skif {
namespace {
class GaneshBackend :
public Backend,
#if defined(SK_USE_LEGACY_BLUR_GANESH)
private SkBlurEngine::Algorithm,
#else
private SkShaderBlurAlgorithm,
#endif
private SkBlurEngine { … };
}
sk_sp<Backend> MakeGaneshBackend(sk_sp<GrRecordingContext> context,
GrSurfaceOrigin origin,
const SkSurfaceProps& surfaceProps,
SkColorType colorType) { … }
}