Update GrVkRenderTarget to store both stencil & non-stencil render passes (for real)
This is to allow reuse of a Vk render target in both stencil and non-stencil use cases.
Change-Id: Ic35285e66c173db7c0bf6440d95549cf1371ed43
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291077
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrOpsTask.cpp b/src/gpu/GrOpsTask.cpp
index c811883..4537242 100644
--- a/src/gpu/GrOpsTask.cpp
+++ b/src/gpu/GrOpsTask.cpp
@@ -469,9 +469,10 @@
}
static GrOpsRenderPass* create_render_pass(
- GrGpu* gpu, GrRenderTarget* rt, GrSurfaceOrigin origin, const SkIRect& bounds,
- GrLoadOp colorLoadOp, const SkPMColor4f& loadClearColor, GrLoadOp stencilLoadOp,
- GrStoreOp stencilStoreOp, const SkTArray<GrSurfaceProxy*, true>& sampledProxies) {
+ GrGpu* gpu, GrRenderTarget* rt, GrStencilAttachment* stencil, GrSurfaceOrigin origin,
+ const SkIRect& bounds, GrLoadOp colorLoadOp, const SkPMColor4f& loadClearColor,
+ GrLoadOp stencilLoadOp, GrStoreOp stencilStoreOp,
+ const SkTArray<GrSurfaceProxy*, true>& sampledProxies) {
const GrOpsRenderPass::LoadAndStoreInfo kColorLoadStoreInfo {
colorLoadOp,
GrStoreOp::kStore,
@@ -488,8 +489,8 @@
stencilStoreOp,
};
- return gpu->getOpsRenderPass(rt, origin, bounds, kColorLoadStoreInfo, stencilLoadAndStoreInfo,
- sampledProxies);
+ return gpu->getOpsRenderPass(rt, stencil, origin, bounds,
+ kColorLoadStoreInfo, stencilLoadAndStoreInfo, sampledProxies);
}
// TODO: this is where GrOp::renderTarget is used (which is fine since it
@@ -571,7 +572,7 @@
: GrStoreOp::kStore;
GrOpsRenderPass* renderPass = create_render_pass(
- flushState->gpu(), proxy->peekRenderTarget(), fTargetView.origin(),
+ flushState->gpu(), proxy->peekRenderTarget(), stencil, fTargetView.origin(),
fClippedContentBounds, fColorLoadOp, fLoadClearColor, stencilLoadOp, stencilStoreOp,
fSampledProxies);
if (!renderPass) {