| Index: src/image/SkImage_Gpu.cpp
|
| diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
|
| index ed9ecffa51c91e1fc61ca147be4c485c465e8d12..46196ca8b569e794e75a5a760093ba851d7d4584 100644
|
| --- a/src/image/SkImage_Gpu.cpp
|
| +++ b/src/image/SkImage_Gpu.cpp
|
| @@ -10,7 +10,7 @@
|
| #include "GrCaps.h"
|
| #include "GrContext.h"
|
| #include "GrDrawContext.h"
|
| -#include "GrTextureMaker.h"
|
| +#include "GrTextureParamsAdjuster.h"
|
| #include "effects/GrYUVtoRGBEffect.h"
|
| #include "SkCanvas.h"
|
| #include "SkGpuDevice.h"
|
| @@ -64,56 +64,53 @@ bool SkImage_Gpu::getROPixels(SkBitmap* dst) const {
|
| return true;
|
| }
|
|
|
| -static void make_raw_texture_stretched_key(uint32_t imageID, const SkGrStretch& stretch,
|
| +static void make_raw_texture_stretched_key(uint32_t imageID,
|
| + const GrTextureParamsAdjuster::CopyParams& params,
|
| GrUniqueKey* stretchedKey) {
|
| - SkASSERT(SkGrStretch::kNone_Type != stretch.fType);
|
| -
|
| - uint32_t width = SkToU16(stretch.fWidth);
|
| - uint32_t height = SkToU16(stretch.fHeight);
|
| -
|
| static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain();
|
| - GrUniqueKey::Builder builder(stretchedKey, kDomain, 3);
|
| + GrUniqueKey::Builder builder(stretchedKey, kDomain, 4);
|
| builder[0] = imageID;
|
| - builder[1] = stretch.fType;
|
| - builder[2] = width | (height << 16);
|
| - builder.finish();
|
| + builder[1] = params.fFilter;
|
| + builder[2] = params.fWidth;
|
| + builder[3] = params.fHeight;
|
| }
|
|
|
| -class Texture_GrTextureMaker : public GrTextureMaker {
|
| +class Texture_GrTextureParamsAdjuster : public GrTextureParamsAdjuster {
|
| public:
|
| - Texture_GrTextureMaker(const SkImage* image, GrTexture* unstretched)
|
| + Texture_GrTextureParamsAdjuster(const SkImage* image, GrTexture* unstretched)
|
| : INHERITED(image->width(), image->height())
|
| , fImage(image)
|
| - , fUnstretched(unstretched)
|
| + , fOriginal(unstretched)
|
| {}
|
|
|
| protected:
|
| - GrTexture* onRefUnstretchedTexture(GrContext* ctx) override {
|
| - return SkRef(fUnstretched);
|
| + GrTexture* peekOriginalTexture() override { return fOriginal; }
|
| +
|
| + GrTexture* refOriginalTexture(GrContext* ctx) override {
|
| + return SkRef(fOriginal);
|
| }
|
|
|
| - bool onMakeStretchedKey(const SkGrStretch& stretch, GrUniqueKey* stretchedKey) override {
|
| - make_raw_texture_stretched_key(fImage->uniqueID(), stretch, stretchedKey);
|
| - return stretchedKey->isValid();
|
| + void makeCopyKey(const CopyParams& copyParams, GrUniqueKey* copyKey) override {
|
| + make_raw_texture_stretched_key(fImage->uniqueID(), copyParams, copyKey);
|
| }
|
|
|
| - void onNotifyStretchCached(const GrUniqueKey& stretchedKey) override {
|
| + void didCacheCopy(const GrUniqueKey& copyKey) override {
|
| as_IB(fImage)->notifyAddedToCache();
|
| }
|
|
|
| - bool onGetROBitmap(SkBitmap* bitmap) override {
|
| + bool getROBitmap(SkBitmap* bitmap) override {
|
| return as_IB(fImage)->getROPixels(bitmap);
|
| }
|
|
|
| private:
|
| const SkImage* fImage;
|
| - GrTexture* fUnstretched;
|
| + GrTexture* fOriginal;
|
|
|
| - typedef GrTextureMaker INHERITED;
|
| + typedef GrTextureParamsAdjuster INHERITED;
|
| };
|
|
|
| GrTexture* SkImage_Gpu::asTextureRef(GrContext* ctx, const GrTextureParams& params) const {
|
| - return Texture_GrTextureMaker(this, fTexture).refCachedTexture(ctx, params);
|
| + return Texture_GrTextureParamsAdjuster(this, fTexture).refTextureForParams(ctx, params);
|
| }
|
|
|
| bool SkImage_Gpu::isOpaque() const {
|
|
|