Add support to gpu command buffers to wrap an external command buffer.
Bug: skia:
Change-Id: Ic679d292f42c61f9f1c36315ae605504a0283306
Reviewed-on: https://skia-review.googlesource.com/c/179521
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrRenderTargetOpList.cpp b/src/gpu/GrRenderTargetOpList.cpp
index b42b265..b77f906 100644
--- a/src/gpu/GrRenderTargetOpList.cpp
+++ b/src/gpu/GrRenderTargetOpList.cpp
@@ -523,9 +523,15 @@
if (this->isEmpty() || !fTarget.get()->asRenderTargetProxy()->needsStencil()) {
this->deleteOps();
fDeferredProxies.reset();
- fColorLoadOp = GrLoadOp::kClear;
- fLoadClearColor = color;
- return;
+
+ // If the opList is using a render target which wraps a vulkan command buffer, we can't do a
+ // clear load since we cannot change the render pass that we are using. Thus we fall back to
+ // making a clear op in this case.
+ if (!fTarget.get()->asRenderTargetProxy()->wrapsVkSecondaryCB()) {
+ fColorLoadOp = GrLoadOp::kClear;
+ fLoadClearColor = color;
+ return;
+ }
}
std::unique_ptr<GrClearOp> op(GrClearOp::Make(context, GrFixedClip::Disabled(),