From 7ef28f35a2f7d17b90c776f76d4b374ccee6c347 Mon Sep 17 00:00:00 2001 From: Greg Daniel Date: Thu, 20 Apr 2017 16:41:55 +0000 Subject: 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 > > Reviewed-by: Robert Phillips > > > > 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 > Commit-Queue: Stan Iliev > 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 Commit-Queue: Greg Daniel --- src/gpu/gl/GrGLGpu.cpp | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) (limited to 'src/gpu/gl/GrGLGpu.cpp') diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp index 7665c2a4ee..10fbabbe60 100644 --- a/src/gpu/gl/GrGLGpu.cpp +++ b/src/gpu/gl/GrGLGpu.cpp @@ -8,6 +8,7 @@ #include "GrGLGpu.h" #include "../private/GrGLSL.h" +#include "GrBackendSurface.h" #include "GrFixedClip.h" #include "GrGLBuffer.h" #include "GrGLGpuCommandBuffer.h" @@ -511,15 +512,18 @@ static GrSurfaceOrigin resolve_origin(GrSurfaceOrigin origin, bool renderTarget) } } -sk_sp GrGLGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc, +sk_sp GrGLGpu::onWrapBackendTexture(const GrBackendTexture& backendTex, + GrSurfaceOrigin origin, + GrBackendTextureFlags flags, + int sampleCnt, GrWrapOwnership ownership) { - const GrGLTextureInfo* info = reinterpret_cast(desc.fTextureHandle); + const GrGLTextureInfo* info = backendTex.getGLTextureInfo(); if (!info || !info->fID) { return nullptr; } - // next line relies on GrBackendTextureDesc's flags matching GrTexture's - bool renderTarget = SkToBool(desc.fFlags & kRenderTarget_GrBackendTextureFlag); + // next line relies on GrBackendTextureFlags matching GrTexture's + bool renderTarget = SkToBool(flags & kRenderTarget_GrBackendTextureFlag); SkASSERT(!renderTarget || kAdoptAndCache_GrWrapOwnership != ownership); // Not supported GrGLTexture::IDDesc idDesc; @@ -543,7 +547,7 @@ sk_sp GrGLGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc, // Sample count is interpreted to mean the number of samples that Gr code should allocate // for a render buffer that resolves to the texture. We don't support MSAA textures. - if (desc.fSampleCnt && !renderTarget) { + if (sampleCnt && !renderTarget) { return nullptr; } @@ -554,19 +558,19 @@ sk_sp GrGLGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc, } GrSurfaceDesc surfDesc; - surfDesc.fFlags = (GrSurfaceFlags) desc.fFlags; - surfDesc.fWidth = desc.fWidth; - surfDesc.fHeight = desc.fHeight; - surfDesc.fConfig = desc.fConfig; - surfDesc.fSampleCnt = SkTMin(desc.fSampleCnt, this->caps()->maxSampleCount()); + surfDesc.fFlags = (GrSurfaceFlags) flags; + surfDesc.fWidth = backendTex.width(); + surfDesc.fHeight = backendTex.height(); + surfDesc.fConfig = backendTex.config(); + surfDesc.fSampleCnt = SkTMin(sampleCnt, this->caps()->maxSampleCount()); // FIXME: this should be calling resolve_origin(), but Chrome code is currently // assuming the old behaviour, which is that backend textures are always // BottomLeft, even for non-RT's. Once Chrome is fixed, change this to: // glTexDesc.fOrigin = resolve_origin(desc.fOrigin, renderTarget); - if (kDefault_GrSurfaceOrigin == desc.fOrigin) { + if (kDefault_GrSurfaceOrigin == origin) { surfDesc.fOrigin = kBottomLeft_GrSurfaceOrigin; } else { - surfDesc.fOrigin = desc.fOrigin; + surfDesc.fOrigin = origin; } if (renderTarget) { @@ -603,8 +607,10 @@ sk_sp GrGLGpu::onWrapBackendRenderTarget(const GrBackendRenderTa return GrGLRenderTarget::MakeWrapped(this, desc, idDesc, wrapDesc.fStencilBits); } -sk_sp GrGLGpu::onWrapBackendTextureAsRenderTarget(const GrBackendTextureDesc& desc){ - const GrGLTextureInfo* info = reinterpret_cast(desc.fTextureHandle); +sk_sp GrGLGpu::onWrapBackendTextureAsRenderTarget(const GrBackendTexture& tex, + GrSurfaceOrigin origin, + int sampleCnt) { + const GrGLTextureInfo* info = tex.getGLTextureInfo(); if (!info || !info->fID) { return nullptr; } @@ -621,19 +627,19 @@ sk_sp GrGLGpu::onWrapBackendTextureAsRenderTarget(const GrBacken } GrSurfaceDesc surfDesc; - surfDesc.fFlags = (GrSurfaceFlags) desc.fFlags; - surfDesc.fWidth = desc.fWidth; - surfDesc.fHeight = desc.fHeight; - surfDesc.fConfig = desc.fConfig; - surfDesc.fSampleCnt = SkTMin(desc.fSampleCnt, this->caps()->maxSampleCount()); + surfDesc.fFlags = kRenderTarget_GrSurfaceFlag; + surfDesc.fWidth = tex.width(); + surfDesc.fHeight = tex.height(); + surfDesc.fConfig = tex.config(); + surfDesc.fSampleCnt = SkTMin(sampleCnt, this->caps()->maxSampleCount()); // FIXME: this should be calling resolve_origin(), but Chrome code is currently // assuming the old behaviour, which is that backend textures are always // BottomLeft, even for non-RT's. Once Chrome is fixed, change this to: // glTexDesc.fOrigin = resolve_origin(desc.fOrigin, renderTarget); - if (kDefault_GrSurfaceOrigin == desc.fOrigin) { + if (kDefault_GrSurfaceOrigin == origin) { surfDesc.fOrigin = kBottomLeft_GrSurfaceOrigin; } else { - surfDesc.fOrigin = desc.fOrigin; + surfDesc.fOrigin = origin; } GrGLRenderTarget::IDDesc rtIDDesc; -- cgit v1.2.3