Grow descriptor pools by 1.5
authoregdaniel <egdaniel@google.com>
Wed, 6 Jul 2016 19:00:12 +0000 (12:00 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 6 Jul 2016 19:00:12 +0000 (12:00 -0700)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2121243002

Review-Url: https://codereview.chromium.org/2121243002

src/gpu/vk/GrVkPipelineState.cpp
src/gpu/vk/GrVkResourceProvider.cpp

index 8280e62c2a6ccbf5771e15a120ab47e6c9c13839..10a1ac9204acdee19b2377c91b58fc240ff24f7a 100644 (file)
@@ -398,8 +398,9 @@ void GrVkPipelineState::addUniformResources(GrVkCommandBuffer& commandBuffer) {
 void GrVkPipelineState::DescriptorPoolManager::getNewPool(GrVkGpu* gpu) {
     if (fPool) {
         fPool->unref(gpu);
-        if (fMaxDescriptors < kMaxDescLimit >> 1) {
-            fMaxDescriptors = fMaxDescriptors << 1;
+        uint32_t newPoolSize = fMaxDescriptors + ((fMaxDescriptors + 1) >> 1);
+        if (newPoolSize < kMaxDescLimit) {
+            fMaxDescriptors = newPoolSize;
         } else {
             fMaxDescriptors = kMaxDescLimit;
         }
index 19a2f7d87fe8a0468dd7aaae8a33d8ac90c1fc16..7980a2d5f48da7b106a95c22d8210ef2fc74926e 100644 (file)
@@ -196,8 +196,9 @@ void GrVkResourceProvider::getUniformDescriptorSet(VkDescriptorSet* ds,
     fCurrentUniformDescCount += kNumUniformDescPerSet;
     if (fCurrentUniformDescCount > fCurrMaxUniDescriptors) {
         fUniformDescPool->unref(fGpu);
-        if (fCurrMaxUniDescriptors < kMaxUniformDescriptors >> 1) {
-            fCurrMaxUniDescriptors = fCurrMaxUniDescriptors << 1;
+        uint32_t newPoolSize = fCurrMaxUniDescriptors + ((fCurrMaxUniDescriptors + 1) >> 1);
+        if (newPoolSize < kMaxUniformDescriptors) {
+            fCurrMaxUniDescriptors = newPoolSize;
         } else {
             fCurrMaxUniDescriptors = kMaxUniformDescriptors;
         }