Chromium Code Reviews| Index: src/gpu/vk/GrVkResourceProvider.cpp |
| diff --git a/src/gpu/vk/GrVkResourceProvider.cpp b/src/gpu/vk/GrVkResourceProvider.cpp |
| index e3c19d67a068542d235f43561e1c36e5680601b2..f735de42693c10960d5213904d48f7a5dc1645c1 100644 |
| --- a/src/gpu/vk/GrVkResourceProvider.cpp |
| +++ b/src/gpu/vk/GrVkResourceProvider.cpp |
| @@ -12,6 +12,7 @@ |
| #include "GrVkPipeline.h" |
| #include "GrVkRenderTarget.h" |
| #include "GrVkSampler.h" |
| +#include "GrVkUniformBuffer.h" |
| #include "GrVkUtil.h" |
| #ifdef SK_TRACE_VK_RESOURCES |
| @@ -265,6 +266,23 @@ void GrVkResourceProvider::recycleSecondaryCommandBuffer(GrVkSecondaryCommandBuf |
| fAvailableSecondaryCommandBuffers.push_back(cb); |
| } |
| +const GrVkResource* GrVkResourceProvider::findOrCreateStandardUniformBufferResource() { |
| + const GrVkResource* resource = nullptr; |
| + int count = fAvailableUniformBufferResources.count(); |
| + if (count > 0) { |
| + resource = fAvailableUniformBufferResources[count - 1]; |
| + fAvailableUniformBufferResources.removeShuffle(count - 1); |
| + } else { |
| + resource = GrVkUniformBuffer::CreateResource(fGpu, GrVkUniformBuffer::kStandardSize); |
| + } |
| + return resource; |
| +} |
| + |
| +void GrVkResourceProvider::recycleStandardUniformBufferResource(const GrVkResource* resource) { |
| + resource->ref(); |
| + fAvailableUniformBufferResources.push_back(resource); |
| +} |
| + |
| void GrVkResourceProvider::destroyResources() { |
| // release our active command buffers |
| for (int i = 0; i < fActiveCommandBuffers.count(); ++i) { |
| @@ -314,6 +332,13 @@ void GrVkResourceProvider::destroyResources() { |
| fUniformDescLayout = VK_NULL_HANDLE; |
| } |
| fUniformDescPool->unref(fGpu); |
| + |
| + // release our uniform buffers |
|
egdaniel
2016/07/19 20:48:37
do you need an abandon form of this?
|
| + for (int i = 0; i < fAvailableUniformBufferResources.count(); ++i) { |
| + SkASSERT(fAvailableUniformBufferResources[i]->unique()); |
| + fAvailableUniformBufferResources[i]->unref(fGpu); |
| + } |
| + fAvailableUniformBufferResources.reset(); |
| } |
| void GrVkResourceProvider::abandonResources() { |