aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-04-17 10:46:51 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-17 16:30:17 +0000
commit0cf45f607cfc5d22ef9e6fbe0c7480a409349704 (patch)
tree3891b40ca92a8a3c276c6b53c16ca67f2b615ceb /include
parentb39425023c0f9fe4fa61e0310a72188621718125 (diff)
Split SkCrossContextImageData into Image and BackendTexture subclasses
This is needed for a follow up CL where we switch from using GrBackendTextureDesc to GrBackendTexture. Bug: skia: Change-Id: Id12d3357af1cc7f30c7f9196e614089779dc0715 Reviewed-on: https://skia-review.googlesource.com/13588 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'include')
-rw-r--r--include/core/SkCrossContextImageData.h47
-rw-r--r--include/gpu/GrExternalTextureData.h2
2 files changed, 38 insertions, 11 deletions
diff --git a/include/core/SkCrossContextImageData.h b/include/core/SkCrossContextImageData.h
index bbee6e742b..beaaaa6a28 100644
--- a/include/core/SkCrossContextImageData.h
+++ b/include/core/SkCrossContextImageData.h
@@ -32,15 +32,45 @@ public:
static std::unique_ptr<SkCrossContextImageData> MakeFromEncoded(
GrContext*, sk_sp<SkData>, SkColorSpace* dstColorSpace);
+ virtual ~SkCrossContextImageData() {}
+
+protected:
+ SkCrossContextImageData() {}
+
private:
- SkCrossContextImageData(sk_sp<SkImage> image) : fImage(std::move(image)) {
+ virtual sk_sp<SkImage> makeImage(GrContext*) = 0;
+
+ friend class SkImage;
+};
+
+class SkCCIDImage : public SkCrossContextImageData {
+public:
+ ~SkCCIDImage() override {}
+
+private:
+ SkCCIDImage(sk_sp<SkImage> image) : fImage(std::move(image)) {
SkASSERT(!fImage->isTextureBacked());
}
+ sk_sp<SkImage> makeImage(GrContext*) override {
+ return fImage;
+ }
+
+ sk_sp<SkImage> fImage;
+
+ friend class SkCrossContextImageData;
+ friend class SkImage;
+};
+
#if SK_SUPPORT_GPU
- SkCrossContextImageData(const GrBackendTextureDesc& desc,
- std::unique_ptr<GrExternalTextureData> textureData,
- SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace)
+class SkCCIDBackendTexture : public SkCrossContextImageData {
+public:
+ ~SkCCIDBackendTexture() override {}
+
+private:
+ SkCCIDBackendTexture(const GrBackendTextureDesc& desc,
+ std::unique_ptr<GrExternalTextureData> textureData,
+ SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace)
: fAlphaType(alphaType)
, fColorSpace(std::move(colorSpace))
, fDesc(desc)
@@ -48,21 +78,18 @@ private:
// Point our texture desc at our copy of the backend information
fDesc.fTextureHandle = fTextureData->getBackendObject();
}
-#endif
- // For non-GPU backed images
- sk_sp<SkImage> fImage;
+ sk_sp<SkImage> makeImage(GrContext*) override;
-#if SK_SUPPORT_GPU
// GPU-backed images store some generic information (needed to reconstruct the SkImage),
// and some backend-specific info (to reconstruct the texture).
SkAlphaType fAlphaType;
sk_sp<SkColorSpace> fColorSpace;
GrBackendTextureDesc fDesc;
std::unique_ptr<GrExternalTextureData> fTextureData;
-#endif
- friend class SkImage;
+ friend class SkCrossContextImageData;
};
+#endif
#endif
diff --git a/include/gpu/GrExternalTextureData.h b/include/gpu/GrExternalTextureData.h
index 5943fd8c58..0ebc0534f1 100644
--- a/include/gpu/GrExternalTextureData.h
+++ b/include/gpu/GrExternalTextureData.h
@@ -21,7 +21,7 @@ protected:
virtual GrBackendObject getBackendObject() const = 0;
virtual void attachToContext(GrContext*) = 0;
- friend class SkCrossContextImageData;
+ friend class SkCCIDBackendTexture;
friend class SkImage;
};