blob: 0de25739bebc77995f02a2b3933f64fabded995c [file] [log] [blame]
Brian Osman3b66ab62016-11-28 09:26:31 -05001/*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "GrImageTextureMaker.h"
Brian Osman3b655982017-03-07 16:58:08 -05009#include "SkGr.h"
Brian Osmanbd659552018-09-11 10:03:19 -040010#include "SkImage_Lazy.h"
Brian Osman3b66ab62016-11-28 09:26:31 -050011
Brian Osmandf7e0752017-04-26 16:20:28 -040012GrImageTextureMaker::GrImageTextureMaker(GrContext* context, const SkImage* client,
13 SkImage::CachingHint chint)
14 : INHERITED(context, client->width(), client->height(), client->isAlphaOnly())
Brian Osmanbd659552018-09-11 10:03:19 -040015 , fImage(static_cast<const SkImage_Lazy*>(client))
Brian Osmandf7e0752017-04-26 16:20:28 -040016 , fCachingHint(chint) {
Brian Osmanbd659552018-09-11 10:03:19 -040017 SkASSERT(client->isLazyGenerated());
Brian Osmandf7e0752017-04-26 16:20:28 -040018 GrMakeKeyFromImageID(&fOriginalKey, client->uniqueID(),
19 SkIRect::MakeWH(this->width(), this->height()));
Brian Osman3b66ab62016-11-28 09:26:31 -050020}
21
Robert Phillips0c984a02017-03-16 07:51:56 -040022sk_sp<GrTextureProxy> GrImageTextureMaker::refOriginalTextureProxy(bool willBeMipped,
Stan Ilievba81af22017-06-08 15:16:53 -040023 SkColorSpace* dstColorSpace,
24 AllowedTexGenType onlyIfFast) {
Brian Osmanbd659552018-09-11 10:03:19 -040025 return fImage->lockTextureProxy(this->context(), fOriginalKey, fCachingHint,
26 willBeMipped, dstColorSpace, onlyIfFast);
Robert Phillips0c984a02017-03-16 07:51:56 -040027}
28
Brian Osmanb3f38302018-09-07 15:24:44 -040029void GrImageTextureMaker::makeCopyKey(const CopyParams& stretch, GrUniqueKey* paramsCopyKey) {
Brian Osman3b66ab62016-11-28 09:26:31 -050030 if (fOriginalKey.isValid() && SkImage::kAllow_CachingHint == fCachingHint) {
Brian Osman10494e32018-09-10 12:45:18 -040031 GrUniqueKey cacheKey;
Brian Osmanbd659552018-09-11 10:03:19 -040032 fImage->makeCacheKeyFromOrigKey(fOriginalKey, &cacheKey);
Brian Osman10494e32018-09-10 12:45:18 -040033 MakeCopyKeyFromOrigKey(cacheKey, stretch, paramsCopyKey);
Brian Osman3b66ab62016-11-28 09:26:31 -050034 }
35}
36
Brian Osman3b66ab62016-11-28 09:26:31 -050037SkAlphaType GrImageTextureMaker::alphaType() const {
Brian Osmanbd659552018-09-11 10:03:19 -040038 return fImage->alphaType();
Brian Osman3b66ab62016-11-28 09:26:31 -050039}
Brian Osman61624f02016-12-09 14:51:59 -050040sk_sp<SkColorSpace> GrImageTextureMaker::getColorSpace(SkColorSpace* dstColorSpace) {
Brian Osmanbd659552018-09-11 10:03:19 -040041 return fImage->refColorSpace();
Brian Osman3b66ab62016-11-28 09:26:31 -050042}