88 std::string_view label) {
110 mipmapped = skgpu::Mipmapped::kYes;
114 "TextureForImageRasterWithPolicyEqualKDraw",
159 for (
int i = 0; i < yuvaPixmaps.
numPlanes(); ++i) {
186 std::tie(views[i], std::ignore) =
201 "ImageLazy_TextureProxyViewFromPlanes",
204 skgpu::Mipmapped::kNo,
217 GrSamplerState::Filter::kNearest,
232 sfc->fillWithFP(std::move(fp));
234 return sfc->readSurfaceView();
253 mipmapped == skgpu::Mipmapped::kYes);
267 SkASSERT(mipmapped == skgpu::Mipmapped::kNo ||
268 view.asTextureProxy()->mipmapped() == skgpu::Mipmapped::kYes);
285 enum LockTexturePath {
286 kFailure_LockTexturePath,
287 kPreExisting_LockTexturePath,
288 kNative_LockTexturePath,
289 kCompressed_LockTexturePath,
290 kYUV_LockTexturePath,
291 kRGBA_LockTexturePath,
294 enum { kLockTexturePathCount = kRGBA_LockTexturePath + 1 };
305 SkASSERT(view && view.asTextureProxy());
322 if (mipmapped == skgpu::Mipmapped::kNo ||
337 installKey(mippedView);
356 auto textureGen =
static_cast<GrTextureGenerator*
>(sharedGenerator->fGenerator.get());
357 if (
auto view = textureGen->generateTexture(rContext,
369 if (mipmapped == skgpu::Mipmapped::kNo &&
423 mipmapped = skgpu::Mipmapped::kNo;
429 rContext,
static_cast<const SkImage_Raster*
>(ib), mipmapped, policy);
432 return rp->
asView(rContext, mipmapped, policy);
433 }
else if (ib->isGaneshBacked()) {
435 return gb->
asView(rContext, mipmapped, policy);
436 }
else if (ib->isLazyGenerated()) {
440 SkDEBUGFAIL(
"Unsupported image type to make a View");
496 }
else if (view.
mipmapped() == skgpu::Mipmapped::kNo) {
508 std::move(view), at, m, sampler, *subset, *domain, caps);
526 std::get<0>(
AsView(rContext, img, mm)),
554 if (ib->isRasterBacked()) {
562 }
else if (ib->isGaneshBacked()) {
565 }
else if (ib->isLazyGenerated()) {
570 std::get<0>(
AsView(rContext, img, mm)),
579 SkDEBUGFAIL(
"Unsupported image type to make a FragmentProcessor");
636 }
else if (view.
mipmapped() == skgpu::Mipmapped::kNo) {
668 uint32_t imageUniqueID) {
689 return {std::move(cachedMippedView), view.
origin(), view.
swizzle()};
705 const auto isValid = [&context](
DataType dt,
int n) {
707 GrRenderable::kNo).isValid();
709 for (
int n = 1; n <= 4; ++n) {
710 if (isValid(DataType::kUnorm8, n)) {
713 if (isValid(DataType::kUnorm16, n)) {
716 if (isValid(DataType::kFloat16, n)) {
719 if (isValid(DataType::kUnorm10_Unorm2, n)) {
751 std::move(colorSpace));
757 skgpu::Mipmapped::kNo,
760 props ? *props : this->surfaceProps(),
761 skgpu::ganesh::Device::InitContents::kUninit);
765 return SkSpecialImages::MakeFromTextureImage(
772 auto threadSafeCache =
fContext->priv().threadSafeCache();
778 auto view = threadSafeCache->find(
key);
784 threadSafeCache->add(
key, view);
787 return sk_make_sp<SkImage_Ganesh>(fContext,
788 data.getGenerationID(),
790 data.info().colorInfo());
793 const SkBlurEngine* getBlurEngine()
const override {
return this; }
803 float maxSigma()
const override {
808 bool supportsOnlyDecalTiling()
const override {
return false; }
814 const SkIRect& dstRect)
const override {
816 if (!inputView.
proxy()) {
822 auto proxyOffset = input->subset().topLeft() - srcRect.
topLeft();
825 std::move(inputView),
838 return SkSpecialImages::MakeDeferredFromGpu(
fContext.get(),
841 sdc->readSurfaceView(),
843 this->surfaceProps());
858 return sk_make_sp<GaneshBackend>(std::move(context), origin, surfaceProps,
colorType);
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
static constexpr GrColorType SkColorTypeToGrColorType(SkColorType ct)
@ kTopLeft_GrSurfaceOrigin
static sk_sp< Effect > Create()
@ kOpaque_SkAlphaType
pixel is opaque
@ kPremul_SkAlphaType
pixel components are premultiplied by alpha
#define SkAssertResult(cond)
#define SkDEBUGFAIL(message)
GrSurfaceProxyView GrCopyBaseMipMapToView(GrRecordingContext *context, GrSurfaceProxyView src, skgpu::Budgeted budgeted)
void GrMakeKeyFromImageID(skgpu::UniqueKey *key, uint32_t imageID, const SkIRect &imageBounds)
std::tuple< GrSurfaceProxyView, GrColorType > GrMakeUncachedBitmapProxyView(GrRecordingContext *rContext, const SkBitmap &bitmap, skgpu::Mipmapped mipmapped, SkBackingFit fit, skgpu::Budgeted budgeted)
sk_sp< SkIDChangeListener > GrMakeUniqueKeyInvalidationListener(skgpu::UniqueKey *key, uint32_t contextID)
std::tuple< GrSurfaceProxyView, GrColorType > GrMakeCachedBitmapProxyView(GrRecordingContext *rContext, const SkBitmap &bitmap, std::string_view label, skgpu::Mipmapped mipmapped)
@ kNew_Uncached_Unbudgeted
static constexpr GrSamplerState::WrapMode SkTileModeToWrapMode(SkTileMode tileMode)
static bool GrValidCubicResampler(SkCubicResampler cubic)
static void releaseProc(const void *ptr, void *context)
static SkColorType colorType(AImageDecoder *decoder, const AImageDecoderHeaderInfo *headerInfo)
sk_sp< T > sk_ref_sp(T *obj)
#define SK_ScalarInfinity
@ kNeedNewImageUniqueID_SpecialImage
static constexpr uint32_t SK_InvalidUniqueID
Type::kYUV Type::kRGBA() int(0.7 *637)
const GrContextOptions & options() const
uint32_t contextID() const
const GrCaps * caps() const
static std::unique_ptr< GrFragmentProcessor > Make(GrSurfaceProxyView view, SkAlphaType, const SkMatrix &, SkCubicResampler, Direction)
static std::unique_ptr< GrFragmentProcessor > MakeSubset(GrSurfaceProxyView view, SkAlphaType, const SkMatrix &, const GrSamplerState::WrapMode wrapX, const GrSamplerState::WrapMode wrapY, const SkRect &subset, SkCubicResampler, Direction, const GrCaps &)
bool mipmapSupport() const
bool anisoSupport() const
GrBackendFormat getDefaultBackendFormat(GrColorType, GrRenderable) const
skgpu::Swizzle getReadSwizzle(const GrBackendFormat &format, GrColorType colorType) const
SK_API GrBackendFormat defaultBackendFormat(SkColorType, GrRenderable) const
void removeUniqueKeyFromProxy(GrTextureProxy *)
bool assignUniqueKeyToProxy(const skgpu::UniqueKey &, GrTextureProxy *)
sk_sp< GrTextureProxy > findOrCreateProxyByUniqueKey(const skgpu::UniqueKey &, UseAllocator=UseAllocator::kYes)
GrProxyProvider * proxyProvider()
std::unique_ptr< skgpu::ganesh::SurfaceFillContext > makeSFC(GrImageInfo, std::string_view label, SkBackingFit=SkBackingFit::kExact, int sampleCount=1, skgpu::Mipmapped=skgpu::Mipmapped::kNo, skgpu::Protected=skgpu::Protected::kNo, GrSurfaceOrigin=kTopLeft_GrSurfaceOrigin, skgpu::Budgeted=skgpu::Budgeted::kYes)
GrRecordingContextPriv priv()
static constexpr GrSamplerState Aniso(WrapMode wrapX, WrapMode wrapY, int maxAniso, skgpu::Mipmapped viewIsMipped)
skgpu::Swizzle swizzle() const
skgpu::Mipmapped mipmapped() const
GrTextureProxy * asTextureProxy() const
SkISize dimensions() const
GrSurfaceOrigin origin() const
GrSurfaceProxy * proxy() const
static GrSurfaceProxyView Copy(GrRecordingContext *context, GrSurfaceProxyView src, skgpu::Mipmapped mipmapped, SkIRect srcRect, SkBackingFit fit, skgpu::Budgeted budgeted, std::string_view label)
virtual GrTextureProxy * asTextureProxy()
static std::unique_ptr< GrFragmentProcessor > MakeSubset(GrSurfaceProxyView, SkAlphaType, const SkMatrix &, GrSamplerState, const SkRect &subset, const GrCaps &caps, const float border[4]=kDefaultBorder, bool alwaysUseShaderTileMode=false)
static std::unique_ptr< GrFragmentProcessor > Make(GrSurfaceProxyView, SkAlphaType, const SkMatrix &=SkMatrix::I(), GrSamplerState::Filter=GrSamplerState::Filter::kNearest, GrSamplerState::MipmapMode mipmapMode=GrSamplerState::MipmapMode::kNone)
skgpu::Mipmapped mipmapped() const
static std::unique_ptr< GrFragmentProcessor > Make(const GrYUVATextureProxies &yuvaProxies, GrSamplerState samplerState, const GrCaps &, const SkMatrix &localMatrix=SkMatrix::I(), const SkRect *subset=nullptr, const SkRect *domain=nullptr)
const SkImageInfo & getInfo() const
std::unique_ptr< SkImageGenerator > fGenerator
bool isTextureGenerator()
virtual std::tuple< GrSurfaceProxyView, GrColorType > asView(GrRecordingContext *, skgpu::Mipmapped, GrImageTexGenPolicy) const =0
virtual std::unique_ptr< GrFragmentProcessor > asFragmentProcessor(GrRecordingContext *, SkSamplingOptions, const SkTileMode[2], const SkMatrix &, const SkRect *, const SkRect *) const =0
bool getROPixels(GrDirectContext *, SkBitmap *, CachingHint) const override
void addUniqueIDListener(sk_sp< SkIDChangeListener >) const
sk_sp< SharedGenerator > generator() const
SkImage_Base::Type type() const override
sk_sp< SkCachedData > getPlanes(const SkYUVAPixmapInfo::SupportedDataTypes &supportedDataTypes, SkYUVAPixmaps *pixmaps) const
const SkSurfaceProps * props() const
void replay(SkCanvas *) const
std::tuple< GrSurfaceProxyView, GrColorType > asView(GrRecordingContext *, skgpu::Mipmapped, GrImageTexGenPolicy) const
const SkImageInfo & imageInfo() const
SkColorSpace * colorSpace() const
SkISize dimensions() const
uint32_t uniqueID() const
SkAlphaType alphaType() const
SkColorType colorType() const
@ kDisallow_CachingHint
disallows internally caching decoded and copied pixels
@ kAllow_CachingHint
allows internally caching decoded and copied pixels
const SkImageInfo & info() const
void * writable_addr() const
SkISize dimensions() const
static SkSamplingOptions AnisoFallback(bool imageIsMipped)
static constexpr int kMaxPlanes
void enableDataType(DataType, int numChannels)
static constexpr SkColorType DefaultColorTypeForDataType(DataType dataType, int numChannels)
const SkYUVAInfo & yuvaInfo() const
const SkPixmap & plane(int i) const
static Domain GenerateDomain()
uint32_t uint32_t * format
std::unique_ptr< skgpu::ganesh::SurfaceDrawContext > GaussianBlur(GrRecordingContext *rContext, GrSurfaceProxyView srcView, GrColorType srcColorType, SkAlphaType srcAlphaType, sk_sp< SkColorSpace > colorSpace, SkIRect dstBounds, SkIRect srcBounds, float sigmaX, float sigmaY, SkTileMode mode, SkBackingFit fit)
SK_API sk_sp< SkSurface > RenderTarget(GrRecordingContext *context, skgpu::Budgeted budgeted, const SkImageInfo &imageInfo, int sampleCount, GrSurfaceOrigin surfaceOrigin, const SkSurfaceProps *surfaceProps, bool shouldCreateWithMips=false, bool isProtected=false)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
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::tuple< GrSurfaceProxyView, GrColorType > RasterAsView(GrRecordingContext *rContext, const SkImage_Raster *raster, 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)
GrColorType ColorTypeOfLockTextureProxy(const GrCaps *caps, SkColorType sct)
GrSurfaceProxyView FindOrMakeCachedMipmappedView(GrRecordingContext *rContext, GrSurfaceProxyView view, uint32_t imageUniqueID)
static GrSurfaceOrigin get_origin(const SkImage_Lazy *img)
GrSurfaceProxyView LockTextureProxyView(GrRecordingContext *rContext, const SkImage_Lazy *img, GrImageTexGenPolicy texGenPolicy, skgpu::Mipmapped mipmapped)
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)
GrSurfaceProxyView CopyView(GrRecordingContext *context, GrSurfaceProxyView src, skgpu::Mipmapped mipmapped, GrImageTexGenPolicy policy, std::string_view label)
std::tuple< GrSurfaceProxyView, GrColorType > AsView(GrRecordingContext *rContext, const SkImage *img, skgpu::Mipmapped mipmapped, GrImageTexGenPolicy policy)
static GrSurfaceProxyView texture_proxy_view_from_planes(GrRecordingContext *ctx, const SkImage_Lazy *img, skgpu::Budgeted budgeted)
static std::tuple< GrSurfaceProxyView, GrColorType > lazy_as_view(GrRecordingContext *context, const SkImage_Lazy *img, skgpu::Mipmapped mipmapped, GrImageTexGenPolicy policy)
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)
SkYUVAPixmapInfo::SupportedDataTypes SupportedTextureFormats(const GrImageContext &context)
static GrSurfaceProxyView generate_picture_texture(GrRecordingContext *ctx, const SkImage_Picture *img, skgpu::Mipmapped mipmapped, GrImageTexGenPolicy texGenPolicy)
sk_sp< Backend > MakeGaneshBackend(sk_sp< GrRecordingContext > context, GrSurfaceOrigin origin, const SkSurfaceProps &surfaceProps, SkColorType colorType)
bool fDisableGpuYUVConversion
constexpr SkISize size() const
static constexpr SkIRect MakeSize(const SkISize &size)
constexpr SkIRect makeOffset(int32_t dx, int32_t dy) const
constexpr SkIPoint topLeft() const
static constexpr SkIRect MakePtSize(SkIPoint pt, SkISize size)
constexpr int64_t area() const
SkColorSpace * colorSpace() const
static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType at)
const SkCubicResampler cubic
const SkFilterMode filter
const SkMipmapMode mipmap