Index: src/gpu/GrRenderTargetProxy.cpp |
diff --git a/src/gpu/GrRenderTargetProxy.cpp b/src/gpu/GrRenderTargetProxy.cpp |
index 6c422c09cdec5b78dc362e32865fc6ddd8c07025..fb9c34660dc4f7c9a3ac8b5c92cdb5641158b510 100644 |
--- a/src/gpu/GrRenderTargetProxy.cpp |
+++ b/src/gpu/GrRenderTargetProxy.cpp |
@@ -7,14 +7,29 @@ |
#include "GrRenderTargetProxy.h" |
+#include "GrCaps.h" |
#include "GrDrawTarget.h" |
#include "GrGpuResourcePriv.h" |
-#include "GrRenderTargetPriv.h" |
-GrRenderTargetProxy::GrRenderTargetProxy(sk_sp<GrRenderTarget> rt) |
+// Deferred version |
+// TODO: we can probably munge the 'desc' in both the wrapped and deferred |
+// cases to make the sampleConfig/numSamples stuff more rational. |
+GrRenderTargetProxy::GrRenderTargetProxy(const GrCaps& caps, const GrSurfaceDesc& desc, |
+ SkBackingFit fit, SkBudgeted budgeted) |
+ : INHERITED(desc, fit, budgeted) |
+ , fTarget(nullptr) |
+ , fFlags(GrRenderTargetPriv::Flags::kOffscreen) |
+ , fLastDrawTarget(nullptr) { |
+ if (fDesc.fSampleCnt > 0 && caps.usesMixedSamples()) { |
+ fFlags |= GrRenderTargetPriv::Flags::kMixedSampled; |
+ } |
+} |
+ |
+// Wrapped version |
+GrRenderTargetProxy::GrRenderTargetProxy(const GrCaps& caps, sk_sp<GrRenderTarget> rt) |
: INHERITED(rt->desc(), SkBackingFit::kExact, rt->resourcePriv().isBudgeted()) |
, fTarget(std::move(rt)) |
- , fSampleConfig(fTarget->renderTargetPriv().sampleConfig()) |
+ , fFlags(fTarget->renderTargetPriv().flags()) |
, fLastDrawTarget(nullptr) { |
} |
@@ -47,7 +62,7 @@ GrRenderTarget* GrRenderTargetProxy::instantiate(GrTextureProvider* texProvider) |
fTarget = sk_ref_sp(tex->asRenderTarget()); |
// Check that our a priori computation matched the ultimate reality |
- SkASSERT(fSampleConfig == fTarget->renderTargetPriv().sampleConfig()); |
+ SkASSERT(fFlags == fTarget->renderTargetPriv().flags()); |
return fTarget.get(); |
} |
@@ -71,7 +86,7 @@ sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(const GrCaps& caps, |
return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(caps, desc, fit, budgeted)); |
} |
-sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(sk_sp<GrRenderTarget> rt) { |
- return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(rt)); |
+sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(const GrCaps& caps, sk_sp<GrRenderTarget> rt) { |
+ return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(caps, rt)); |
} |