aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrSoftwarePathRenderer.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-09-28 12:39:18 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-28 17:19:58 +0000
commite8b8397664666bfcba8f088ea073ede915da8a41 (patch)
tree62a0bffe27d5ac0735b423a8fa6feb447c55fb6b /src/gpu/GrSoftwarePathRenderer.cpp
parent8477144e75329b146feb2a14cc04696aa53e0a90 (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.cpp20
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)) {