#include "src/gpu/ganesh/SkGr.h"
#include "include/core/SkAlphaType.h"
#include "include/core/SkBitmap.h"
#include "include/core/SkColorFilter.h"
#include "include/core/SkData.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPaint.h"
#include "include/core/SkPixelRef.h"
#include "include/core/SkPoint.h"
#include "include/core/SkRect.h"
#include "include/core/SkSize.h"
#include "include/core/SkSurfaceProps.h"
#include "include/effects/SkRuntimeEffect.h"
#include "include/gpu/ganesh/GrBackendSurface.h"
#include "include/gpu/ganesh/GrRecordingContext.h"
#include "include/gpu/ganesh/GrTypes.h"
#include "include/private/SkIDChangeListener.h"
#include "include/private/base/SkTPin.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/core/SkBlenderBase.h"
#include "src/core/SkMessageBus.h"
#include "src/core/SkPaintPriv.h"
#include "src/core/SkRuntimeEffectPriv.h"
#include "src/gpu/DitherUtils.h"
#include "src/gpu/ResourceKey.h"
#include "src/gpu/Swizzle.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrColorInfo.h"
#include "src/gpu/ganesh/GrColorSpaceXform.h"
#include "src/gpu/ganesh/GrFPArgs.h"
#include "src/gpu/ganesh/GrFragmentProcessor.h"
#include "src/gpu/ganesh/GrFragmentProcessors.h"
#include "src/gpu/ganesh/GrPaint.h"
#include "src/gpu/ganesh/GrProxyProvider.h"
#include "src/gpu/ganesh/GrRecordingContextPriv.h"
#include "src/gpu/ganesh/GrSurfaceProxy.h"
#include "src/gpu/ganesh/GrSurfaceProxyView.h"
#include "src/gpu/ganesh/GrTextureProxy.h"
#include "src/gpu/ganesh/GrXferProcessor.h"
#include "src/gpu/ganesh/effects/GrSkSLFP.h"
#include "src/gpu/ganesh/effects/GrTextureEffect.h"
#include "src/shaders/SkShaderBase.h"
#include <optional>
#include <utility>
class SkBlender;
class SkColorSpace;
enum SkColorType : int;
void GrMakeKeyFromImageID(skgpu::UniqueKey* key, uint32_t imageID, const SkIRect& imageBounds) { … }
sk_sp<SkIDChangeListener> GrMakeUniqueKeyInvalidationListener(skgpu::UniqueKey* key,
uint32_t contextID) { … }
sk_sp<GrSurfaceProxy> GrCopyBaseMipMapToTextureProxy(GrRecordingContext* ctx,
sk_sp<GrSurfaceProxy> baseProxy,
GrSurfaceOrigin origin,
std::string_view label,
skgpu::Budgeted budgeted) { … }
GrSurfaceProxyView GrCopyBaseMipMapToView(GrRecordingContext* context,
GrSurfaceProxyView src,
skgpu::Budgeted budgeted) { … }
static skgpu::Mipmapped adjust_mipmapped(skgpu::Mipmapped mipmapped,
const SkBitmap& bitmap,
const GrCaps* caps) { … }
static GrColorType choose_bmp_texture_colortype(const GrCaps* caps, const SkBitmap& bitmap) { … }
static sk_sp<GrTextureProxy> make_bmp_proxy(GrProxyProvider* proxyProvider,
const SkBitmap& bitmap,
GrColorType ct,
skgpu::Mipmapped mipmapped,
SkBackingFit fit,
skgpu::Budgeted budgeted) { … }
std::tuple<GrSurfaceProxyView, GrColorType> GrMakeCachedBitmapProxyView(
GrRecordingContext* rContext,
const SkBitmap& bitmap,
std::string_view label,
skgpu::Mipmapped mipmapped) { … }
std::tuple<GrSurfaceProxyView, GrColorType> GrMakeUncachedBitmapProxyView(
GrRecordingContext* rContext,
const SkBitmap& bitmap,
skgpu::Mipmapped mipmapped,
SkBackingFit fit,
skgpu::Budgeted budgeted) { … }
SkPMColor4f SkColorToPMColor4f(SkColor c, const GrColorInfo& colorInfo) { … }
SkColor4f SkColor4fPrepForDst(SkColor4f color, const GrColorInfo& colorInfo) { … }
static inline bool blender_requires_shader(const SkBlender* blender) { … }
#ifndef SK_IGNORE_GPU_DITHER
static std::unique_ptr<GrFragmentProcessor> make_dither_effect(
GrRecordingContext* rContext,
std::unique_ptr<GrFragmentProcessor> inputFP,
float range,
const GrCaps* caps) { … }
#endif
static inline bool skpaint_to_grpaint_impl(
GrRecordingContext* context,
const GrColorInfo& dstColorInfo,
const SkPaint& skPaint,
const SkMatrix& ctm,
std::optional<std::unique_ptr<GrFragmentProcessor>> shaderFP,
SkBlender* primColorBlender,
const SkSurfaceProps& surfaceProps,
GrPaint* grPaint) { … }
bool SkPaintToGrPaint(GrRecordingContext* context,
const GrColorInfo& dstColorInfo,
const SkPaint& skPaint,
const SkMatrix& ctm,
const SkSurfaceProps& surfaceProps,
GrPaint* grPaint) { … }
bool SkPaintToGrPaintReplaceShader(GrRecordingContext* context,
const GrColorInfo& dstColorInfo,
const SkPaint& skPaint,
const SkMatrix& ctm,
std::unique_ptr<GrFragmentProcessor> shaderFP,
const SkSurfaceProps& surfaceProps,
GrPaint* grPaint) { … }
bool SkPaintToGrPaintWithBlend(GrRecordingContext* context,
const GrColorInfo& dstColorInfo,
const SkPaint& skPaint,
const SkMatrix& ctm,
SkBlender* primColorBlender,
const SkSurfaceProps& surfaceProps,
GrPaint* grPaint) { … }