Move the decision for useMSAASurface to GrOpsTask
Bug: skia:11396
Change-Id: Ic0f7b2b43c7c383381b2447385019d50660eb53c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/393777
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp
index 1d1afb4..3d94791 100644
--- a/src/gpu/GrGpu.cpp
+++ b/src/gpu/GrGpu.cpp
@@ -631,6 +631,7 @@
GrOpsRenderPass* GrGpu::getOpsRenderPass(
GrRenderTarget* renderTarget,
+ bool useMSAASurface,
GrAttachment* stencil,
GrSurfaceOrigin origin,
const SkIRect& bounds,
@@ -642,8 +643,8 @@
fCurrentSubmitRenderPassCount++;
#endif
fStats.incRenderPasses();
- return this->onGetOpsRenderPass(renderTarget, stencil, origin, bounds, colorInfo, stencilInfo,
- sampledProxies, renderPassXferBarriers);
+ return this->onGetOpsRenderPass(renderTarget, useMSAASurface, stencil, origin, bounds,
+ colorInfo, stencilInfo, sampledProxies, renderPassXferBarriers);
}
bool GrGpu::submitToGpu(bool syncCpu) {
diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h
index 06e902c..498668c 100644
--- a/src/gpu/GrGpu.h
+++ b/src/gpu/GrGpu.h
@@ -344,6 +344,7 @@
// provided but 'renderTarget' has a stencil buffer then that is a signal that the
// render target's stencil buffer should be ignored.
GrOpsRenderPass* getOpsRenderPass(GrRenderTarget* renderTarget,
+ bool useMSAASurface,
GrAttachment* stencil,
GrSurfaceOrigin,
const SkIRect& bounds,
@@ -749,6 +750,7 @@
virtual GrOpsRenderPass* onGetOpsRenderPass(
GrRenderTarget* renderTarget,
+ bool useMSAASurface,
GrAttachment* stencil,
GrSurfaceOrigin,
const SkIRect& bounds,
diff --git a/src/gpu/GrOpsTask.cpp b/src/gpu/GrOpsTask.cpp
index cc7c8f3..cb7d05e 100644
--- a/src/gpu/GrOpsTask.cpp
+++ b/src/gpu/GrOpsTask.cpp
@@ -501,6 +501,7 @@
static GrOpsRenderPass* create_render_pass(GrGpu* gpu,
GrRenderTarget* rt,
+ bool useMSAASurface,
GrAttachment* stencil,
GrSurfaceOrigin origin,
const SkIRect& bounds,
@@ -526,9 +527,8 @@
stencilStoreOp,
};
- return gpu->getOpsRenderPass(rt, stencil, origin, bounds,
- kColorLoadStoreInfo, stencilLoadAndStoreInfo, sampledProxies,
- renderPassXferBarriers);
+ return gpu->getOpsRenderPass(rt, useMSAASurface, stencil, origin, bounds, kColorLoadStoreInfo,
+ stencilLoadAndStoreInfo, sampledProxies, renderPassXferBarriers);
}
// TODO: this is where GrOp::renderTarget is used (which is fine since it
@@ -612,6 +612,7 @@
GrOpsRenderPass* renderPass = create_render_pass(flushState->gpu(),
proxy->peekRenderTarget(),
+ proxy->numSamples() > 1,
stencil,
fTargetOrigin,
fClippedContentBounds,
diff --git a/src/gpu/d3d/GrD3DGpu.cpp b/src/gpu/d3d/GrD3DGpu.cpp
index 4bf8278..1b62dcf 100644
--- a/src/gpu/d3d/GrD3DGpu.cpp
+++ b/src/gpu/d3d/GrD3DGpu.cpp
@@ -126,6 +126,7 @@
GrOpsRenderPass* GrD3DGpu::onGetOpsRenderPass(
GrRenderTarget* rt,
+ bool /*useMSAASurface*/,
GrAttachment*,
GrSurfaceOrigin origin,
const SkIRect& bounds,
diff --git a/src/gpu/d3d/GrD3DGpu.h b/src/gpu/d3d/GrD3DGpu.h
index 100819b..7b6db87 100644
--- a/src/gpu/d3d/GrD3DGpu.h
+++ b/src/gpu/d3d/GrD3DGpu.h
@@ -196,6 +196,7 @@
void addFinishedCallback(sk_sp<GrRefCntedCallback> finishedCallback);
GrOpsRenderPass* onGetOpsRenderPass(GrRenderTarget*,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin,
const SkIRect&,
diff --git a/src/gpu/dawn/GrDawnGpu.cpp b/src/gpu/dawn/GrDawnGpu.cpp
index de49b1e..1de6d60 100644
--- a/src/gpu/dawn/GrDawnGpu.cpp
+++ b/src/gpu/dawn/GrDawnGpu.cpp
@@ -158,6 +158,7 @@
GrOpsRenderPass* GrDawnGpu::onGetOpsRenderPass(
GrRenderTarget* rt,
+ bool /*useMSAASurface*/,
GrAttachment*,
GrSurfaceOrigin origin,
const SkIRect& bounds,
diff --git a/src/gpu/dawn/GrDawnGpu.h b/src/gpu/dawn/GrDawnGpu.h
index 14c91ef..f1b34b4 100644
--- a/src/gpu/dawn/GrDawnGpu.h
+++ b/src/gpu/dawn/GrDawnGpu.h
@@ -190,6 +190,7 @@
GrGpuFinishedContext finishedContext) override;
GrOpsRenderPass* onGetOpsRenderPass(GrRenderTarget*,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin,
const SkIRect&,
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
index 0bd2283..bf1f3d9 100644
--- a/src/gpu/gl/GrGLGpu.cpp
+++ b/src/gpu/gl/GrGLGpu.cpp
@@ -2172,6 +2172,7 @@
GrOpsRenderPass* GrGLGpu::onGetOpsRenderPass(
GrRenderTarget* rt,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin origin,
const SkIRect& bounds,
@@ -2183,7 +2184,7 @@
fCachedOpsRenderPass = std::make_unique<GrGLOpsRenderPass>(this);
}
- fCachedOpsRenderPass->set(rt, bounds, origin, colorInfo, stencilInfo);
+ fCachedOpsRenderPass->set(rt, useMSAASurface, bounds, origin, colorInfo, stencilInfo);
return fCachedOpsRenderPass.get();
}
diff --git a/src/gpu/gl/GrGLGpu.h b/src/gpu/gl/GrGLGpu.h
index 40dce75..9494930 100644
--- a/src/gpu/gl/GrGLGpu.h
+++ b/src/gpu/gl/GrGLGpu.h
@@ -333,6 +333,7 @@
GrGpuFinishedContext finishedContext) override;
GrOpsRenderPass* onGetOpsRenderPass(GrRenderTarget*,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin,
const SkIRect&,
diff --git a/src/gpu/gl/GrGLOpsRenderPass.cpp b/src/gpu/gl/GrGLOpsRenderPass.cpp
index 4e58159..7ab5da7 100644
--- a/src/gpu/gl/GrGLOpsRenderPass.cpp
+++ b/src/gpu/gl/GrGLOpsRenderPass.cpp
@@ -17,7 +17,7 @@
#define GL_CALL(X) GR_GL_CALL(fGpu->glInterface(), X)
-void GrGLOpsRenderPass::set(GrRenderTarget* rt, const SkIRect& contentBounds,
+void GrGLOpsRenderPass::set(GrRenderTarget* rt, bool useMSAASurface, const SkIRect& contentBounds,
GrSurfaceOrigin origin, const LoadAndStoreInfo& colorInfo,
const StencilLoadAndStoreInfo& stencilInfo) {
SkASSERT(fGpu);
@@ -25,7 +25,7 @@
SkASSERT(fGpu == rt->getContext()->priv().getGpu());
this->INHERITED::set(rt, origin);
- fUseMultisampleFBO = rt->numSamples() > 1;
+ fUseMultisampleFBO = useMSAASurface;
fContentBounds = contentBounds;
fColorLoadAndStoreInfo = colorInfo;
fStencilLoadAndStoreInfo = stencilInfo;
diff --git a/src/gpu/gl/GrGLOpsRenderPass.h b/src/gpu/gl/GrGLOpsRenderPass.h
index 586bfed..bd67717 100644
--- a/src/gpu/gl/GrGLOpsRenderPass.h
+++ b/src/gpu/gl/GrGLOpsRenderPass.h
@@ -30,7 +30,7 @@
state->doUpload(upload);
}
- void set(GrRenderTarget*, const SkIRect& contentBounds, GrSurfaceOrigin,
+ void set(GrRenderTarget*, bool useMSAASurface, const SkIRect& contentBounds, GrSurfaceOrigin,
const LoadAndStoreInfo&, const StencilLoadAndStoreInfo&);
void reset() {
diff --git a/src/gpu/mock/GrMockGpu.cpp b/src/gpu/mock/GrMockGpu.cpp
index b9ccd68..15a76ec 100644
--- a/src/gpu/mock/GrMockGpu.cpp
+++ b/src/gpu/mock/GrMockGpu.cpp
@@ -56,13 +56,14 @@
}
GrOpsRenderPass* GrMockGpu::onGetOpsRenderPass(GrRenderTarget* rt,
- GrAttachment*,
- GrSurfaceOrigin origin,
- const SkIRect& bounds,
- const GrOpsRenderPass::LoadAndStoreInfo& colorInfo,
- const GrOpsRenderPass::StencilLoadAndStoreInfo&,
- const SkTArray<GrSurfaceProxy*, true>& sampledProxies,
- GrXferBarrierFlags renderPassXferBarriers) {
+ bool /*useMSAASurface*/,
+ GrAttachment*,
+ GrSurfaceOrigin origin,
+ const SkIRect& bounds,
+ const GrOpsRenderPass::LoadAndStoreInfo& colorInfo,
+ const GrOpsRenderPass::StencilLoadAndStoreInfo&,
+ const SkTArray<GrSurfaceProxy*,true>& sampledProxies,
+ GrXferBarrierFlags renderPassXferBarriers) {
return new GrMockOpsRenderPass(this, rt, origin, colorInfo);
}
diff --git a/src/gpu/mock/GrMockGpu.h b/src/gpu/mock/GrMockGpu.h
index 20b495f..05064a1 100644
--- a/src/gpu/mock/GrMockGpu.h
+++ b/src/gpu/mock/GrMockGpu.h
@@ -130,6 +130,7 @@
}
GrOpsRenderPass* onGetOpsRenderPass(GrRenderTarget*,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin,
const SkIRect&,
diff --git a/src/gpu/mtl/GrMtlGpu.h b/src/gpu/mtl/GrMtlGpu.h
index 740e895..4502050 100644
--- a/src/gpu/mtl/GrMtlGpu.h
+++ b/src/gpu/mtl/GrMtlGpu.h
@@ -206,6 +206,7 @@
void addFinishedCallback(sk_sp<GrRefCntedCallback> finishedCallback);
GrOpsRenderPass* onGetOpsRenderPass(GrRenderTarget*,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin,
const SkIRect&,
diff --git a/src/gpu/mtl/GrMtlGpu.mm b/src/gpu/mtl/GrMtlGpu.mm
index 5e0d925..b43d7a6 100644
--- a/src/gpu/mtl/GrMtlGpu.mm
+++ b/src/gpu/mtl/GrMtlGpu.mm
@@ -204,7 +204,7 @@
}
GrOpsRenderPass* GrMtlGpu::onGetOpsRenderPass(
- GrRenderTarget* renderTarget, GrAttachment*,
+ GrRenderTarget* renderTarget, bool /*useMSAASurface*/, GrAttachment*,
GrSurfaceOrigin origin, const SkIRect& bounds,
const GrOpsRenderPass::LoadAndStoreInfo& colorInfo,
const GrOpsRenderPass::StencilLoadAndStoreInfo& stencilInfo,
diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp
index 906e92c..f5285b5 100644
--- a/src/gpu/vk/GrVkGpu.cpp
+++ b/src/gpu/vk/GrVkGpu.cpp
@@ -302,6 +302,7 @@
GrOpsRenderPass* GrVkGpu::onGetOpsRenderPass(
GrRenderTarget* rt,
+ bool /*useMSAASurface*/,
GrAttachment* stencil,
GrSurfaceOrigin origin,
const SkIRect& bounds,
diff --git a/src/gpu/vk/GrVkGpu.h b/src/gpu/vk/GrVkGpu.h
index 12be746..8dbc3c9 100644
--- a/src/gpu/vk/GrVkGpu.h
+++ b/src/gpu/vk/GrVkGpu.h
@@ -293,6 +293,7 @@
void addFinishedCallback(sk_sp<GrRefCntedCallback> finishedCallback);
GrOpsRenderPass* onGetOpsRenderPass(GrRenderTarget*,
+ bool useMSAASurface,
GrAttachment*,
GrSurfaceOrigin,
const SkIRect&,