diff options
author | 2017-09-28 12:39:18 -0400 | |
---|---|---|
committer | 2017-09-28 17:19:58 +0000 | |
commit | e8b8397664666bfcba8f088ea073ede915da8a41 (patch) | |
tree | 62a0bffe27d5ac0735b423a8fa6feb447c55fb6b /src/gpu/GrSoftwarePathRenderer.cpp | |
parent | 8477144e75329b146feb2a14cc04696aa53e0a90 (diff) |
Revert "Revert "Make threaded proxy generation MDB-friendly, and defer instantiation""
This reverts commit 837c6c7c0cc76bdb9d61a05244ca5f31e7573c37.
Bug: skia:
Change-Id: I1821f1b2b772c67f1b749692b398eb757d8073c9
Reviewed-on: https://skia-review.googlesource.com/52744
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/gpu/GrSoftwarePathRenderer.cpp')
-rw-r--r-- | src/gpu/GrSoftwarePathRenderer.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/gpu/GrSoftwarePathRenderer.cpp b/src/gpu/GrSoftwarePathRenderer.cpp index dd0e272dbb..8c3d64b77a 100644 --- a/src/gpu/GrSoftwarePathRenderer.cpp +++ b/src/gpu/GrSoftwarePathRenderer.cpp @@ -9,10 +9,10 @@ #include "GrAuditTrail.h" #include "GrClip.h" #include "GrContextPriv.h" +#include "GrDeferredProxyUploader.h" #include "GrGpuResourcePriv.h" #include "GrOpFlushState.h" #include "GrOpList.h" -#include "GrPrepareCallback.h" #include "GrResourceProvider.h" #include "GrSWMaskHelper.h" #include "SkMakeUnique.h" @@ -175,7 +175,7 @@ static sk_sp<GrTextureProxy> make_deferred_mask_texture_proxy(GrContext* context namespace { /** - * Payload class for use with GrMaskUploaderPrepareCallback. The software path renderer only draws + * Payload class for use with GrTDeferredProxyUploader. The software path renderer only draws * a single path into the mask texture. This stores all of the information needed by the worker * thread's call to drawShape (see below, in onDrawPath). */ @@ -318,15 +318,9 @@ bool GrSoftwarePathRenderer::onDrawPath(const DrawPathArgs& args) { return false; } - // TODO: I believe the assignUniqueKeyToProxy below used to instantiate the proxy before - // 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(fResourceProvider); - - auto uploader = skstd::make_unique<GrMaskUploaderPrepareCallback<SoftwarePathData>>( - proxy, *boundsForMask, *args.fViewMatrix, *args.fShape, aa); - GrMaskUploaderPrepareCallback<SoftwarePathData>* uploaderRaw = uploader.get(); + auto uploader = skstd::make_unique<GrTDeferredProxyUploader<SoftwarePathData>>( + *boundsForMask, *args.fViewMatrix, *args.fShape, aa); + GrTDeferredProxyUploader<SoftwarePathData>* uploaderRaw = uploader.get(); auto drawAndUploadMask = [uploaderRaw] { TRACE_EVENT0("skia", "Threaded SW Mask Render"); @@ -338,10 +332,10 @@ bool GrSoftwarePathRenderer::onDrawPath(const DrawPathArgs& args) { } else { SkDEBUGFAIL("Unable to allocate SW mask."); } - uploaderRaw->getSemaphore()->signal(); + uploaderRaw->signalAndFreeData(); }; taskGroup->add(std::move(drawAndUploadMask)); - args.fRenderTargetContext->getOpList()->addPrepareCallback(std::move(uploader)); + proxy->texPriv().setDeferredUploader(std::move(uploader)); } else { GrSWMaskHelper helper; if (!helper.init(*boundsForMask)) { |