| Index: src/gpu/vk/GrVkCommandBuffer.cpp
 | 
| diff --git a/src/gpu/vk/GrVkCommandBuffer.cpp b/src/gpu/vk/GrVkCommandBuffer.cpp
 | 
| index 317b735391f6391479cfe88ef5baaf0768b815dc..41a7bb51d7dce31d52782c40f341aea32fcf3f11 100644
 | 
| --- a/src/gpu/vk/GrVkCommandBuffer.cpp
 | 
| +++ b/src/gpu/vk/GrVkCommandBuffer.cpp
 | 
| @@ -66,12 +66,21 @@ void GrVkCommandBuffer::reset(GrVkGpu* gpu) {
 | 
|      for (int i = 0; i < fTrackedResources.count(); ++i) {
 | 
|          fTrackedResources[i]->unref(gpu);
 | 
|      }
 | 
| -    fTrackedResources.reset();
 | 
| -
 | 
|      for (int i = 0; i < fTrackedRecycledResources.count(); ++i) {
 | 
|          fTrackedRecycledResources[i]->recycle(const_cast<GrVkGpu*>(gpu));
 | 
|      }
 | 
| -    fTrackedRecycledResources.reset();
 | 
| +
 | 
| +    if (++fNumResets > kNumRewindResetsBeforeFullReset) {
 | 
| +        fTrackedResources.reset();
 | 
| +        fTrackedRecycledResources.reset();
 | 
| +        fTrackedResources.setReserve(kInitialTrackedResourcesCount);
 | 
| +        fTrackedRecycledResources.setReserve(kInitialTrackedResourcesCount);
 | 
| +        fNumResets = 0;
 | 
| +    } else {
 | 
| +        fTrackedResources.rewind();
 | 
| +        fTrackedRecycledResources.rewind();
 | 
| +    }
 | 
| +
 | 
|  
 | 
|      this->invalidateState();
 | 
|  
 | 
| 
 |