| Index: src/gpu/GrClipStackClip.cpp
|
| diff --git a/src/gpu/GrClipStackClip.cpp b/src/gpu/GrClipStackClip.cpp
|
| index 669a9c23a6cd4811010b4be3e17edd9e679b6424..76a5dacdce961a691e6e65d3972676ff2bbdbda4 100644
|
| --- a/src/gpu/GrClipStackClip.cpp
|
| +++ b/src/gpu/GrClipStackClip.cpp
|
| @@ -16,6 +16,7 @@
|
| #include "GrRenderTargetPriv.h"
|
| #include "GrStencilAttachment.h"
|
| #include "GrSWMaskHelper.h"
|
| +#include "GrTextureProxy.h"
|
| #include "effects/GrConvexPolyEffect.h"
|
| #include "effects/GrRRectEffect.h"
|
| #include "effects/GrTextureDomain.h"
|
| @@ -80,7 +81,7 @@ void GrClipStackClip::getConservativeBounds(int width, int height, SkIRect* devR
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // set up the draw state to enable the aa clipping mask.
|
| -static sk_sp<GrFragmentProcessor> create_fp_for_mask(GrTexture* result,
|
| +static sk_sp<GrFragmentProcessor> create_fp_for_mask(GrTextureProxy* result,
|
| const SkIRect &devBound) {
|
| SkIRect domainTexels = SkIRect::MakeWH(devBound.width(), devBound.height());
|
| return GrDeviceSpaceTextureDecalFragmentProcessor::Make(result, domainTexels,
|
| @@ -335,7 +336,7 @@ bool GrClipStackClip::apply(GrContext* context, GrRenderTargetContext* renderTar
|
|
|
| // If the stencil buffer is multisampled we can use it to do everything.
|
| if (!renderTargetContext->isStencilBufferMultisampled() && reducedClip.requiresAA()) {
|
| - sk_sp<GrTexture> result;
|
| + sk_sp<GrTextureProxy> result;
|
| if (UseSWOnlyPath(context, hasUserStencilSettings, renderTargetContext, reducedClip)) {
|
| // The clip geometry is complex enough that it will be more efficient to create it
|
| // entirely in software
|
| @@ -389,13 +390,13 @@ static void GetClipMaskKey(int32_t clipGenID, const SkIRect& bounds, GrUniqueKey
|
| builder[2] = SkToS16(bounds.fTop) | (SkToS16(bounds.fBottom) << 16);
|
| }
|
|
|
| -sk_sp<GrTexture> GrClipStackClip::CreateAlphaClipMask(GrContext* context,
|
| - const GrReducedClip& reducedClip) {
|
| +sk_sp<GrTextureProxy> GrClipStackClip::CreateAlphaClipMask(GrContext* context,
|
| + const GrReducedClip& reducedClip) {
|
| GrResourceProvider* resourceProvider = context->resourceProvider();
|
| GrUniqueKey key;
|
| GetClipMaskKey(reducedClip.elementsGenID(), reducedClip.ibounds(), &key);
|
| if (GrTexture* texture = resourceProvider->findAndRefTextureByUniqueKey(key)) {
|
| - return sk_sp<GrTexture>(texture);
|
| + return GrTextureProxy::Make(sk_sp<GrTexture>(texture));
|
| }
|
|
|
| sk_sp<GrRenderTargetContext> rtc(context->makeRenderTargetContextWithFallback(
|
| @@ -412,18 +413,19 @@ sk_sp<GrTexture> GrClipStackClip::CreateAlphaClipMask(GrContext* context,
|
| return nullptr;
|
| }
|
|
|
| - sk_sp<GrTexture> texture(rtc->asTexture());
|
| + sk_sp<GrTextureProxy> texture(rtc->asDeferredTexture());
|
| SkASSERT(texture);
|
| - texture->resourcePriv().setUniqueKey(key);
|
| + //texture->resourcePriv().setUniqueKey(key);
|
| return texture;
|
| }
|
|
|
| -sk_sp<GrTexture> GrClipStackClip::CreateSoftwareClipMask(GrTextureProvider* texProvider,
|
| - const GrReducedClip& reducedClip) {
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +sk_sp<GrTextureProxy> GrClipStackClip::CreateSoftwareClipMask(GrTextureProvider* texProvider,
|
| + const GrReducedClip& reducedClip) {
|
| GrUniqueKey key;
|
| GetClipMaskKey(reducedClip.elementsGenID(), reducedClip.ibounds(), &key);
|
| if (GrTexture* texture = texProvider->findAndRefTextureByUniqueKey(key)) {
|
| - return sk_sp<GrTexture>(texture);
|
| + return GrTextureProxy::Make(sk_ref_sp(texture)); // sub-optimal!!
|
| }
|
|
|
| // The mask texture may be larger than necessary. We round out the clip space bounds and pin
|
| @@ -490,5 +492,5 @@ sk_sp<GrTexture> GrClipStackClip::CreateSoftwareClipMask(GrTextureProvider* texP
|
|
|
| helper.toTexture(result.get());
|
|
|
| - return result;
|
| + return GrTextureProxy::Make(result);
|
| }
|
|
|