aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-04-18 17:12:32 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-18 21:55:10 +0000
commit7da62b9059f3c1d31624a0e4da96ee5f908f9c12 (patch)
treefc57f951a4e8c1900311e8a1ffbdbbaf189715c2 /include
parentb712a85aea212cf5bfe5514a4fefc184545a8d3c (diff)
Plumb GrBackendTexture throughout skia.
Bug: skia: Change-Id: I1bae6768ee7229818a83ba608035a1f7867e6875 Reviewed-on: https://skia-review.googlesource.com/13645 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'include')
-rw-r--r--include/core/SkCrossContextImageData.h15
-rw-r--r--include/gpu/GrBackendSurface.h32
-rw-r--r--include/gpu/GrExternalTextureData.h1
-rw-r--r--include/private/GrSurfaceProxy.h3
4 files changed, 31 insertions, 20 deletions
diff --git a/include/core/SkCrossContextImageData.h b/include/core/SkCrossContextImageData.h
index beaaaa6a28..a408f71446 100644
--- a/include/core/SkCrossContextImageData.h
+++ b/include/core/SkCrossContextImageData.h
@@ -12,6 +12,7 @@
#include "SkImage.h"
#if SK_SUPPORT_GPU
+#include "GrBackendSurface.h"
#include "GrExternalTextureData.h"
#endif
@@ -68,16 +69,15 @@ public:
~SkCCIDBackendTexture() override {}
private:
- SkCCIDBackendTexture(const GrBackendTextureDesc& desc,
+ SkCCIDBackendTexture(const GrBackendTexture& backendTex,
+ GrSurfaceOrigin origin,
std::unique_ptr<GrExternalTextureData> textureData,
SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace)
: fAlphaType(alphaType)
, fColorSpace(std::move(colorSpace))
- , fDesc(desc)
- , fTextureData(std::move(textureData)) {
- // Point our texture desc at our copy of the backend information
- fDesc.fTextureHandle = fTextureData->getBackendObject();
- }
+ , fBackendTex(backendTex)
+ , fOrigin(origin)
+ , fTextureData(std::move(textureData)) {}
sk_sp<SkImage> makeImage(GrContext*) override;
@@ -85,7 +85,8 @@ private:
// and some backend-specific info (to reconstruct the texture).
SkAlphaType fAlphaType;
sk_sp<SkColorSpace> fColorSpace;
- GrBackendTextureDesc fDesc;
+ GrBackendTexture fBackendTex;
+ GrSurfaceOrigin fOrigin;
std::unique_ptr<GrExternalTextureData> fTextureData;
friend class SkCrossContextImageData;
diff --git a/include/gpu/GrBackendSurface.h b/include/gpu/GrBackendSurface.h
index e588b8aa3a..fd99a4312a 100644
--- a/include/gpu/GrBackendSurface.h
+++ b/include/gpu/GrBackendSurface.h
@@ -15,14 +15,18 @@ struct GrGLTextureInfo;
class GrBackendTexture {
public:
+ // The passed in GrVkImageInfo must live until the GrBackendTexture is no longer used in
+ // creation of SkImages or SkSurfaces.
GrBackendTexture(int width,
int height,
- GrVkImageInfo* vkInfo);
+ const GrVkImageInfo* vkInfo);
+ // The passed in GrGLTextureInfo must live until the GrBackendTexture is no longer used in
+ // creation of SkImages or SkSurfaces.
GrBackendTexture(int width,
int height,
GrPixelConfig config,
- GrGLTextureInfo* glInfo);
+ const GrGLTextureInfo* glInfo);
int width() const { return fWidth; }
int height() const { return fHeight; }
@@ -31,11 +35,11 @@ public:
// If the backend API is Vulkan, this returns a pointer to the GrVkImageInfo struct. Otherwise
// it returns nullptr.
- GrVkImageInfo* getVkImageInfo();
+ const GrVkImageInfo* getVkImageInfo() const;
// If the backend API is GL, this returns a pointer to the GrGLTextureInfo struct. Otherwise
// it returns nullptr.
- GrGLTextureInfo* getGLTextureInfo();
+ const GrGLTextureInfo* getGLTextureInfo() const;
private:
// Temporary constructor which can be used to convert from a GrBackendTextureDesc.
@@ -51,26 +55,30 @@ private:
GrBackend fBackend;
union {
- GrVkImageInfo* fVkInfo;
- GrGLTextureInfo* fGLInfo;
+ const GrVkImageInfo* fVkInfo;
+ const GrGLTextureInfo* fGLInfo;
GrBackendObject fHandle;
};
};
class GrBackendRenderTarget {
public:
+ // The passed in GrVkImageInfo must live until the GrBackendTexture is no longer used in
+ // creation of SkImages or SkSurfaces.
GrBackendRenderTarget(int width,
int height,
int sampleCnt,
int stencilBits,
- GrVkImageInfo* vkInfo);
+ const GrVkImageInfo* vkInfo);
+ // The passed in GrGLTextureInfo must live until the GrBackendTexture is no longer used in
+ // creation of SkImages or SkSurfaces.
GrBackendRenderTarget(int width,
int height,
int sampleCnt,
int stencilBits,
GrPixelConfig config,
- GrGLTextureInfo* glInfo);
+ const GrGLTextureInfo* glInfo);
int width() const { return fWidth; }
int height() const { return fHeight; }
@@ -81,11 +89,11 @@ public:
// If the backend API is Vulkan, this returns a pointer to the GrVkImageInfo struct. Otherwise
// it returns nullptr.
- GrVkImageInfo* getVkImageInfo();
+ const GrVkImageInfo* getVkImageInfo() const;
// If the backend API is GL, this returns a pointer to the GrGLTextureInfo struct. Otherwise
// it returns nullptr.
- GrGLTextureInfo* getGLTextureInfo();
+ const GrGLTextureInfo* getGLTextureInfo() const;
private:
// Temporary constructor which can be used to convert from a GrBackendRenderTargetDesc.
@@ -104,8 +112,8 @@ private:
GrBackend fBackend;
union {
- GrVkImageInfo* fVkInfo;
- GrGLTextureInfo* fGLInfo;
+ const GrVkImageInfo* fVkInfo;
+ const GrGLTextureInfo* fGLInfo;
GrBackendObject fHandle;
};
};
diff --git a/include/gpu/GrExternalTextureData.h b/include/gpu/GrExternalTextureData.h
index 0ebc0534f1..b3b0594aa3 100644
--- a/include/gpu/GrExternalTextureData.h
+++ b/include/gpu/GrExternalTextureData.h
@@ -21,6 +21,7 @@ protected:
virtual GrBackendObject getBackendObject() const = 0;
virtual void attachToContext(GrContext*) = 0;
+ friend class SkCrossContextImageData;
friend class SkCCIDBackendTexture;
friend class SkImage;
};
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h
index efcec137c4..eb4f2814e3 100644
--- a/include/private/GrSurfaceProxy.h
+++ b/include/private/GrSurfaceProxy.h
@@ -13,6 +13,7 @@
#include "SkRect.h"
+class GrBackendTexture;
class GrCaps;
class GrOpList;
class GrRenderTargetOpList;
@@ -189,7 +190,7 @@ public:
const GrSurfaceDesc&, SkBudgeted,
const void* srcData, size_t rowBytes);
- static sk_sp<GrSurfaceProxy> MakeWrappedBackend(GrContext*, GrBackendTextureDesc&);
+ static sk_sp<GrTextureProxy> MakeWrappedBackend(GrContext*, GrBackendTexture&, GrSurfaceOrigin);
const GrSurfaceDesc& desc() const { return fDesc; }