Index: src/gpu/vk/GrVkCommandBuffer.cpp |
diff --git a/src/gpu/vk/GrVkCommandBuffer.cpp b/src/gpu/vk/GrVkCommandBuffer.cpp |
index 7fb143ed987065b4d2697a49ddf16cada071d3ed..999e8a3f5b91527403ae902914d249cf7f3620d9 100644 |
--- a/src/gpu/vk/GrVkCommandBuffer.cpp |
+++ b/src/gpu/vk/GrVkCommandBuffer.cpp |
@@ -40,6 +40,11 @@ void GrVkCommandBuffer::freeGPUData(const GrVkGpu* gpu) const { |
fTrackedResources[i]->unref(gpu); |
} |
+ for (int i = 0; i < fTrackedRecycledResources.count(); ++i) { |
+ fTrackedRecycledResources[i]->recycle(const_cast<GrVkGpu*>(gpu)); |
+ fTrackedRecycledResources[i]->unref(gpu); |
+ } |
+ |
GR_VK_CALL(gpu->vkInterface(), FreeCommandBuffers(gpu->device(), gpu->cmdPool(), |
1, &fCmdBuffer)); |
@@ -50,6 +55,11 @@ void GrVkCommandBuffer::abandonSubResources() const { |
for (int i = 0; i < fTrackedResources.count(); ++i) { |
fTrackedResources[i]->unrefAndAbandon(); |
} |
+ |
+ for (int i = 0; i < fTrackedRecycledResources.count(); ++i) { |
+ // We don't recycle resources when abadoning them. |
jvanverth1
2016/07/20 14:08:47
sp: abandon
egdaniel
2016/07/20 14:48:39
Done.
|
+ fTrackedRecycledResources[i]->unrefAndAbandon(); |
+ } |
} |
void GrVkCommandBuffer::reset(GrVkGpu* gpu) { |
@@ -59,6 +69,13 @@ void GrVkCommandBuffer::reset(GrVkGpu* gpu) { |
} |
fTrackedResources.reset(); |
+ for (int i = 0; i < fTrackedRecycledResources.count(); ++i) { |
+ fTrackedRecycledResources[i]->recycle(const_cast<GrVkGpu*>(gpu)); |
+ fTrackedRecycledResources[i]->unref(gpu); |
+ } |
+ fTrackedRecycledResources.reset(); |
+ |
+ |
this->invalidateState(); |
// we will retain resources for later use |