Index: src/gpu/vk/GrVkCommandBuffer.cpp |
diff --git a/src/gpu/vk/GrVkCommandBuffer.cpp b/src/gpu/vk/GrVkCommandBuffer.cpp |
index 317b735391f6391479cfe88ef5baaf0768b815dc..c05cdf8b823e6c00f70134e5886b5a6cb90f1dce 100644 |
--- a/src/gpu/vk/GrVkCommandBuffer.cpp |
+++ b/src/gpu/vk/GrVkCommandBuffer.cpp |
@@ -66,12 +66,20 @@ 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 > kMaxNumberofRewindResets) { |
+ fTrackedResources.reset(); |
+ fTrackedRecycledResources.reset(); |
+ fTrackedResources.setReserve(kInitialTrackedResourcesCount); |
+ fTrackedRecycledResources.setReserve(kInitialTrackedResourcesCount); |
jvanverth1
2016/09/19 18:51:04
fNumResets = 0; ?
egdaniel
2016/09/19 19:52:37
Done.
|
+ } else { |
+ fTrackedResources.rewind(); |
+ fTrackedRecycledResources.rewind(); |
+ } |
+ |
this->invalidateState(); |