diff options
author | 2017-04-20 16:41:55 +0000 | |
---|---|---|
committer | 2017-04-20 17:17:43 +0000 | |
commit | 7ef28f35a2f7d17b90c776f76d4b374ccee6c347 (patch) | |
tree | 0e59cfede60a2173c53f701661927cc4e045c74c /include | |
parent | 774831a4e80f49cfec3cb78f684bd44cb19a7b2a (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.h | 15 | ||||
-rw-r--r-- | include/gpu/GrBackendSurface.h | 32 | ||||
-rw-r--r-- | include/gpu/GrExternalTextureData.h | 1 | ||||
-rw-r--r-- | include/private/GrSurfaceProxy.h | 3 |
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; } |