Chromium Code Reviews| Index: src/gpu/vk/GrVkResourceProvider.cpp |
| diff --git a/src/gpu/vk/GrVkResourceProvider.cpp b/src/gpu/vk/GrVkResourceProvider.cpp |
| index 19bda4152514af6e38c3cd6788740cd52886c25d..b0ca5ac86c91dac8395bf4778804a0951f05318c 100644 |
| --- a/src/gpu/vk/GrVkResourceProvider.cpp |
| +++ b/src/gpu/vk/GrVkResourceProvider.cpp |
| @@ -7,9 +7,11 @@ |
| #include "GrVkResourceProvider.h" |
| +#include "GrTextureParams.h" |
| #include "GrVkCommandBuffer.h" |
| #include "GrVkPipeline.h" |
| #include "GrVkRenderPass.h" |
| +#include "GrVkSampler.h" |
| #include "GrVkUtil.h" |
| #ifdef SK_TRACE_VK_RESOURCES |
| @@ -81,6 +83,17 @@ GrVkDescriptorPool* GrVkResourceProvider::findOrCreateCompatibleDescriptorPool( |
| return new GrVkDescriptorPool(fGpu, typeCounts); |
| } |
| +GrVkSampler* GrVkResourceProvider::findOrCreateCompatibleSampler(const GrTextureParams& params) { |
| + GrVkSampler* sampler = fSamplers.find(GrVkSampler::GenerateKey(params)); |
| + if (!sampler) { |
| + sampler = GrVkSampler::Create(fGpu, params); |
| + fSamplers.add(sampler); |
| + } |
| + SkASSERT(sampler); |
| + sampler->ref(); |
| + return sampler; |
| +} |
| + |
| GrVkCommandBuffer* GrVkResourceProvider::createCommandBuffer() { |
| GrVkCommandBuffer* cmdBuffer = GrVkCommandBuffer::Create(fGpu, fGpu->cmdPool()); |
| fActiveCommandBuffers.push_back(cmdBuffer); |
| @@ -112,6 +125,13 @@ void GrVkResourceProvider::destroyResources() { |
| } |
| fSimpleRenderPasses.reset(); |
| + // Iteratre through all store GrVkSamplers and unref them before reseting the hash. |
|
jvanverth1
2016/03/03 18:32:58
Typos: Iterate, resetting
egdaniel
2016/03/04 15:25:08
Done.
|
| + SkTDynamicHash<GrVkSampler, uint8_t>::Iter iter(&fSamplers); |
| + for (; !iter.done(); ++iter) { |
| + (*iter).unref(fGpu); |
| + } |
| + fSamplers.reset(); |
| + |
| #ifdef SK_TRACE_VK_RESOURCES |
| SkASSERT(0 == GrVkResource::fTrace.count()); |
| #endif |
| @@ -133,6 +153,13 @@ void GrVkResourceProvider::abandonResources() { |
| } |
| fSimpleRenderPasses.reset(); |
| + // Iteratre through all store GrVkSamplers and unferAndAbandon them before reseting the hash. |
|
jvanverth1
2016/03/03 18:32:58
Typos: Iterate, unrefAndAbandon, resetting
egdaniel
2016/03/04 15:25:08
Done.
|
| + SkTDynamicHash<GrVkSampler, uint8_t>::Iter iter(&fSamplers); |
| + for (; !iter.done(); ++iter) { |
| + (*iter).unrefAndAbandon(); |
| + } |
| + fSamplers.reset(); |
| + |
| #ifdef SK_TRACE_VK_RESOURCES |
| SkASSERT(0 == GrVkResource::fTrace.count()); |
| #endif |