diff options
author | 2017-10-02 13:40:26 +0000 | |
---|---|---|
committer | 2017-10-02 14:00:07 +0000 | |
commit | 9b1f4bd1766c8fd28405168746492b93d201463e (patch) | |
tree | 36b4f9eeba4f2f843cbae65109cf0dfd55e5cfe7 /src/gpu/GrClipStackClip.cpp | |
parent | 5a2e50edc51006ce91366e177a9d21a16775d7fd (diff) |
Revert "Revert "Revert "Revert "Revert "Make threaded proxy generation MDB-friendly, and defer instantiation"""""
This reverts commit fdd2cb52b781dd68f515a1eb9fe6d054a0ebc226.
Reason for revert: ANGLE gold failures
Original change's description:
> Revert "Revert "Revert "Revert "Make threaded proxy generation MDB-friendly, and defer instantiation""""
>
> This reverts commit 9f8d4d36b514ffe3cc3a4a48900e3dc1fecb2a96.
>
> Bug: skia:
> Change-Id: I8d7c1df24d8b13b94404f3d9ba69a1ab55ee00c0
> Reviewed-on: https://skia-review.googlesource.com/52920
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=egdaniel@google.com,robertphillips@google.com,brianosman@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:
Change-Id: Ie461de167fbd37323cabd4adf064f99204ba4878
Reviewed-on: https://skia-review.googlesource.com/53801
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu/GrClipStackClip.cpp')
-rw-r--r-- | src/gpu/GrClipStackClip.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/gpu/GrClipStackClip.cpp b/src/gpu/GrClipStackClip.cpp index 309c9cad10..10880b4891 100644 --- a/src/gpu/GrClipStackClip.cpp +++ b/src/gpu/GrClipStackClip.cpp @@ -9,11 +9,11 @@ #include "GrAppliedClip.h" #include "GrContextPriv.h" -#include "GrDeferredProxyUploader.h" #include "GrDrawingManager.h" #include "GrRenderTargetContextPriv.h" #include "GrFixedClip.h" #include "GrGpuResourcePriv.h" +#include "GrPrepareCallback.h" #include "GrResourceProvider.h" #include "GrStencilAttachment.h" #include "GrSWMaskHelper.h" @@ -428,7 +428,7 @@ sk_sp<GrTextureProxy> GrClipStackClip::createAlphaClipMask(GrContext* context, namespace { /** - * Payload class for use with GrTDeferredProxyUploader. The clip mask code renders multiple + * Payload class for use with GrMaskUploaderPrepareCallback. The clip mask code renders multiple * elements, each storing their own AA setting (and already transformed into device space). This * stores all of the information needed by the worker thread to draw all clip elements (see below, * in createSoftwareClipMask). @@ -526,8 +526,15 @@ sk_sp<GrTextureProxy> GrClipStackClip::createSoftwareClipMask( proxy = GrSurfaceProxy::MakeDeferred(context->resourceProvider(), desc, SkBackingFit::kApprox, SkBudgeted::kYes); - auto uploader = skstd::make_unique<GrTDeferredProxyUploader<ClipMaskData>>(reducedClip); - GrTDeferredProxyUploader<ClipMaskData>* uploaderRaw = uploader.get(); + // TODO: I believe the assignUniqueKeyToProxy below used to instantiate the proxy before + // the draw that used the result was being flushed, so the upload was succeeding. With + // assignUniqueKeyToProxy no longer forcing an instantiation it will have to happen + // explicitly elsewhere. + proxy->instantiate(context->resourceProvider()); + + auto uploader = skstd::make_unique<GrMaskUploaderPrepareCallback<ClipMaskData>>( + proxy, reducedClip); + GrMaskUploaderPrepareCallback<ClipMaskData>* uploaderRaw = uploader.get(); auto drawAndUploadMask = [uploaderRaw, maskSpaceIBounds] { TRACE_EVENT0("skia", "Threaded SW Clip Mask Render"); GrSWMaskHelper helper(uploaderRaw->getPixels()); @@ -538,11 +545,11 @@ sk_sp<GrTextureProxy> GrClipStackClip::createSoftwareClipMask( } else { SkDEBUGFAIL("Unable to allocate SW clip mask."); } - uploaderRaw->signalAndFreeData(); + uploaderRaw->getSemaphore()->signal(); }; taskGroup->add(std::move(drawAndUploadMask)); - proxy->texPriv().setDeferredUploader(std::move(uploader)); + renderTargetContext->getOpList()->addPrepareCallback(std::move(uploader)); } else { GrSWMaskHelper helper; if (!helper.init(maskSpaceIBounds)) { |