diff --git a/src/gpu/GrOpsTask.cpp b/src/gpu/GrOpsTask.cpp
index 69f5780..86bcf9b 100644
--- a/src/gpu/GrOpsTask.cpp
+++ b/src/gpu/GrOpsTask.cpp
@@ -384,6 +384,7 @@
 
     fTarget.reset();
     fDeferredProxies.reset();
+    fSampledProxies.reset();
     fAuditTrail = nullptr;
 }
 
@@ -394,6 +395,7 @@
     TRACE_EVENT0("skia.gpu", TRACE_FUNC);
 #endif
 
+    flushState->setSampledProxyArray(&fSampledProxies);
     // Loop over the ops that haven't yet been prepared.
     for (const auto& chain : fOpChains) {
         if (chain.shouldExecute()) {
@@ -412,15 +414,13 @@
             flushState->setOpArgs(nullptr);
         }
     }
+    flushState->setSampledProxyArray(nullptr);
 }
 
-static GrOpsRenderPass* create_command_buffer(GrGpu* gpu,
-                                              GrRenderTarget* rt,
-                                              GrSurfaceOrigin origin,
-                                              const SkRect& bounds,
-                                              GrLoadOp colorLoadOp,
-                                              const SkPMColor4f& loadClearColor,
-                                              GrLoadOp stencilLoadOp) {
+static GrOpsRenderPass* create_command_buffer(
+        GrGpu* gpu, GrRenderTarget* rt, GrSurfaceOrigin origin, const SkRect& bounds,
+        GrLoadOp colorLoadOp, const SkPMColor4f& loadClearColor, GrLoadOp stencilLoadOp,
+        const SkTArray<GrTextureProxy*, true>& sampledProxies) {
     const GrOpsRenderPass::LoadAndStoreInfo kColorLoadStoreInfo {
         colorLoadOp,
         GrStoreOp::kStore,
@@ -437,7 +437,8 @@
         GrStoreOp::kStore,
     };
 
-    return gpu->getOpsRenderPass(rt, origin, bounds, kColorLoadStoreInfo, stencilLoadAndStoreInfo);
+    return gpu->getOpsRenderPass(rt, origin, bounds, kColorLoadStoreInfo, stencilLoadAndStoreInfo,
+                                 sampledProxies);
 }
 
 // TODO: this is where GrOp::renderTarget is used (which is fine since it
@@ -466,7 +467,8 @@
                                                     fTarget->getBoundsRect(),
                                                     fColorLoadOp,
                                                     fLoadClearColor,
-                                                    fStencilLoadOp);
+                                                    fStencilLoadOp,
+                                                    fSampledProxies);
     flushState->setOpsRenderPass(renderPass);
     renderPass->begin();
 
@@ -520,6 +522,7 @@
     if (CanDiscardPreviousOps::kYes == canDiscardPreviousOps || this->isEmpty()) {
         this->deleteOps();
         fDeferredProxies.reset();
+        fSampledProxies.reset();
 
         // If the opsTask 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
