aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-04-20 16:41:55 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-20 17:17:43 +0000
commit7ef28f35a2f7d17b90c776f76d4b374ccee6c347 (patch)
tree0e59cfede60a2173c53f701661927cc4e045c74c /include
parent774831a4e80f49cfec3cb78f684bd44cb19a7b2a (diff)
Revert "Revert "Plumb GrBackendTexture throughout skia.""
This reverts commit 7fa5c31c2c9af834bee66d5fcf476e250076c8d6. Reason for revert: Relanding this change now that other fixes have landed. Original change's description: > Revert "Plumb GrBackendTexture throughout skia." > > This reverts commit 7da62b9059f3c1d31624a0e4da96ee5f908f9c12. > > Reason for revert: fix android roll > > Original change's description: > > 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> > > > > TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com,brianosman@google.com,reviews@skia.org,stani@google.com > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > > Change-Id: I5cb8763cc837c83ebc6d10366fe2dd3efe35fb89 > Reviewed-on: https://skia-review.googlesource.com/13773 > Reviewed-by: Stan Iliev <stani@google.com> > Commit-Queue: Stan Iliev <stani@google.com> > TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com,reviews@skia.org,brianosman@google.com,stani@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I92bc074e4fe37fa5c83186afadc472c03802e8f2 Reviewed-on: https://skia-review.googlesource.com/13975 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Greg Daniel <egdaniel@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; }