blob: 67d476a1284e30f8d8fdfb9084125205564d5d70 [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 AllowedTexGenType onlyIfFast) {
Brian Osmanbd659552018-09-11 10:03:19 -040024 return fImage->lockTextureProxy(this->context(), fOriginalKey, fCachingHint,
Brian Osmane7fd8c32018-10-19 13:30:39 -040025 willBeMipped, onlyIfFast);
Robert Phillips0c984a02017-03-16 07:51:56 -040026}
27
Brian Osmanb3f38302018-09-07 15:24:44 -040028void GrImageTextureMaker::makeCopyKey(const CopyParams& stretch, GrUniqueKey* paramsCopyKey) {
Brian Osman3b66ab62016-11-28 09:26:31 -050029 if (fOriginalKey.isValid() && SkImage::kAllow_CachingHint == fCachingHint) {
Brian Osman10494e32018-09-10 12:45:18 -040030 GrUniqueKey cacheKey;
Brian Osmanbd659552018-09-11 10:03:19 -040031 fImage->makeCacheKeyFromOrigKey(fOriginalKey, &cacheKey);
Brian Osman10494e32018-09-10 12:45:18 -040032 MakeCopyKeyFromOrigKey(cacheKey, stretch, paramsCopyKey);
Brian Osman3b66ab62016-11-28 09:26:31 -050033 }
34}
35
Brian Osman3b66ab62016-11-28 09:26:31 -050036SkAlphaType GrImageTextureMaker::alphaType() const {
Brian Osmanbd659552018-09-11 10:03:19 -040037 return fImage->alphaType();
Brian Osman3b66ab62016-11-28 09:26:31 -050038}
Brian Osman6064e1c2018-10-19 14:27:54 -040039SkColorSpace* GrImageTextureMaker::colorSpace() const {
40 return fImage->colorSpace();
Brian Osman3b66ab62016-11-28 09:26:31 -050041}