Reset GrOpsRenderPass active buffers during bindPipeline
Change-Id: I7b0162a796f49117d9fb3af043f8c53112edb69f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/280804
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrOpsRenderPass.cpp b/src/gpu/GrOpsRenderPass.cpp
index 8c6b559..486a9f1 100644
--- a/src/gpu/GrOpsRenderPass.cpp
+++ b/src/gpu/GrOpsRenderPass.cpp
@@ -34,9 +34,7 @@
void GrOpsRenderPass::end() {
this->onEnd();
- fActiveIndexBuffer.reset();
- fActiveInstanceBuffer.reset();
- fActiveVertexBuffer.reset();
+ this->resetActiveBuffers();
}
void GrOpsRenderPass::clear(const GrFixedClip& clip, const SkPMColor4f& color) {
@@ -86,6 +84,8 @@
programInfo.checkMSAAAndMIPSAreResolved();
#endif
+ this->resetActiveBuffers();
+
if (programInfo.primProc().numVertexAttributes() > this->gpu()->caps()->maxVertexAttributes()) {
fDrawPipelineStatus = DrawPipelineStatus::kFailedToBind;
return;
diff --git a/src/gpu/GrOpsRenderPass.h b/src/gpu/GrOpsRenderPass.h
index d68d41a..4b94a0e 100644
--- a/src/gpu/GrOpsRenderPass.h
+++ b/src/gpu/GrOpsRenderPass.h
@@ -137,6 +137,12 @@
private:
virtual GrGpu* gpu() = 0;
+ void resetActiveBuffers() {
+ fActiveIndexBuffer.reset();
+ fActiveInstanceBuffer.reset();
+ fActiveVertexBuffer.reset();
+ }
+
bool prepareToDraw();
// overridden by backend-specific derived class to perform the rendering command.