Chromium Code Reviews| 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 |