Make GrDrawContext be GrRenderTargetProxy-backed
This is split out of https://codereview.chromium.org/2215323003/ (Start using RenderTargetProxy (omnibus))
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3841
CQ_INCLUDE_TRYBOTS=master.client.skia.android:Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-GN_Android-Trybot
Change-Id: I1a47f19ed1ac0c249e6ccac8db74095d7f456db4
Reviewed-on: https://skia-review.googlesource.com/3841
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index d442b19..53ec06c 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -12,6 +12,7 @@
#include "GrRenderTargetContext.h"
#include "GrResourceCache.h"
#include "GrResourceProvider.h"
+#include "GrRenderTargetProxy.h"
#include "GrSoftwarePathRenderer.h"
#include "GrSurfacePriv.h"
@@ -607,7 +608,11 @@
sk_sp<SkColorSpace> colorSpace,
const SkSurfaceProps* surfaceProps) {
ASSERT_SINGLE_OWNER_PRIV
- return this->drawingManager()->makeRenderTargetContext(std::move(rt), std::move(colorSpace),
+
+ sk_sp<GrRenderTargetProxy> rtp(GrRenderTargetProxy::Make(*fContext->caps(), std::move(rt)));
+
+ return this->drawingManager()->makeRenderTargetContext(std::move(rtp),
+ std::move(colorSpace),
surfaceProps);
}
@@ -624,7 +629,10 @@
return nullptr;
}
- return this->drawingManager()->makeRenderTargetContext(sk_ref_sp(surface->asRenderTarget()),
+ sk_sp<GrRenderTargetProxy> rtp(GrRenderTargetProxy::Make(*fContext->caps(),
+ sk_ref_sp(surface->asRenderTarget())));
+
+ return this->drawingManager()->makeRenderTargetContext(std::move(rtp),
std::move(colorSpace), props);
}
@@ -639,7 +647,10 @@
return nullptr;
}
- return this->drawingManager()->makeRenderTargetContext(std::move(rt), std::move(colorSpace),
+ sk_sp<GrRenderTargetProxy> rtp(GrRenderTargetProxy::Make(*fContext->caps(), std::move(rt)));
+
+ return this->drawingManager()->makeRenderTargetContext(std::move(rtp),
+ std::move(colorSpace),
surfaceProps);
}
@@ -655,8 +666,12 @@
return nullptr;
}
- return this->drawingManager()->makeRenderTargetContext(sk_ref_sp(surface->asRenderTarget()),
- std::move(colorSpace), surfaceProps);
+ sk_sp<GrRenderTargetProxy> rtp(GrRenderTargetProxy::Make(*fContext->caps(),
+ sk_ref_sp(surface->asRenderTarget())));
+
+ return this->drawingManager()->makeRenderTargetContext(std::move(rtp),
+ std::move(colorSpace),
+ surfaceProps);
}
static inline GrPixelConfig GrPixelConfigFallback(GrPixelConfig config) {
@@ -756,6 +771,30 @@
return renderTargetContext;
}
+sk_sp<GrRenderTargetContext> GrContext::makeDeferredRenderTargetContext(
+ SkBackingFit fit,
+ int width, int height,
+ GrPixelConfig config,
+ sk_sp<SkColorSpace> colorSpace,
+ int sampleCnt,
+ GrSurfaceOrigin origin,
+ const SkSurfaceProps* surfaceProps,
+ SkBudgeted budgeted) {
+ GrSurfaceDesc desc;
+ desc.fFlags = kRenderTarget_GrSurfaceFlag;
+ desc.fOrigin = origin;
+ desc.fWidth = width;
+ desc.fHeight = height;
+ desc.fConfig = config;
+ desc.fSampleCnt = sampleCnt;
+
+ sk_sp<GrRenderTargetProxy> rtp = GrRenderTargetProxy::Make(*this->caps(), desc, fit, budgeted);
+
+ return fDrawingManager->makeRenderTargetContext(std::move(rtp),
+ std::move(colorSpace),
+ surfaceProps);
+}
+
bool GrContext::abandoned() const {
ASSERT_SINGLE_OWNER
return fDrawingManager->wasAbandoned();