aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/vk
diff options
context:
space:
mode:
authorGravatar egdaniel <egdaniel@google.com>2016-04-07 13:49:01 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-07 13:49:01 -0700
commit5f3b0e00fb23ce42dc07bc71a0bd363bd53c64c2 (patch)
tree4ce54b82e874bca679d8a4d6d85529c0308ec101 /src/gpu/vk
parenteadf3cf899d87b9c96fb7ede5c8eb54f63900193 (diff)
Limit the size of descriptor pools in vulkan
Diffstat (limited to 'src/gpu/vk')
-rw-r--r--src/gpu/vk/GrVkPipelineState.cpp6
-rw-r--r--src/gpu/vk/GrVkPipelineState.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp
index 5e3acf818a..3e442fb249 100644
--- a/src/gpu/vk/GrVkPipelineState.cpp
+++ b/src/gpu/vk/GrVkPipelineState.cpp
@@ -409,7 +409,11 @@ void GrVkPipelineState::DescriptorPoolManager::getNewPool(GrVkGpu* gpu) {
if (fPool) {
fPool->unref(gpu);
SkASSERT(fMaxDescriptorSets < (SK_MaxU32 >> 1));
- fMaxDescriptorSets = fMaxDescriptorSets << 1;
+ if (fMaxDescriptorSets < kMaxDescSetLimit >> 1) {
+ fMaxDescriptorSets = fMaxDescriptorSets << 1;
+ } else {
+ fMaxDescriptorSets = kMaxDescSetLimit;
+ }
}
if (fMaxDescriptorSets) {
diff --git a/src/gpu/vk/GrVkPipelineState.h b/src/gpu/vk/GrVkPipelineState.h
index 2533bff383..2bfc16cf56 100644
--- a/src/gpu/vk/GrVkPipelineState.h
+++ b/src/gpu/vk/GrVkPipelineState.h
@@ -168,7 +168,7 @@ private:
, fDescType(type)
, fCurrentDescriptorSet(0)
, fPool(nullptr) {
- SkASSERT(descCount < (SK_MaxU32 >> 2));
+ SkASSERT(descCount < (kMaxDescSetLimit >> 2));
fMaxDescriptorSets = descCount << 2;
this->getNewPool(gpu);
}
@@ -190,6 +190,8 @@ private:
GrVkDescriptorPool* fPool;
private:
+ static const uint32_t kMaxDescSetLimit = 1 << 10;
+
void getNewPool(GrVkGpu* gpu);
};