| /* |
| * Copyright 2016 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrVkDescriptorPool_DEFINED |
| #define GrVkDescriptorPool_DEFINED |
| |
| #include "GrVkResource.h" |
| |
| #include "vk/GrVkDefines.h" |
| |
| class GrVkGpu; |
| |
| /** |
| * We require that all descriptor sets are of a single descriptor type. We also use a pool to only |
| * make one type of descriptor set. Thus a single VkDescriptorPool will only allocated space for |
| * for one type of descriptor. |
| */ |
| class GrVkDescriptorPool : public GrVkResource { |
| public: |
| GrVkDescriptorPool(const GrVkGpu* gpu, VkDescriptorType type, uint32_t count); |
| |
| VkDescriptorPool descPool() const { return fDescPool; } |
| |
| void reset(const GrVkGpu* gpu); |
| |
| // Returns whether or not this descriptor pool could be used, assuming it gets fully reset and |
| // not in use by another draw, to support the requested type and count. |
| bool isCompatible(VkDescriptorType type, uint32_t count) const; |
| |
| #ifdef SK_TRACE_VK_RESOURCES |
| void dumpInfo() const override { |
| SkDebugf("GrVkDescriptorPool: %d, type %d (%d refs)\n", fDescPool, fType, |
| this->getRefCnt()); |
| } |
| #endif |
| |
| private: |
| void freeGPUData(const GrVkGpu* gpu) const override; |
| |
| VkDescriptorType fType; |
| uint32_t fCount; |
| VkDescriptorPool fDescPool; |
| |
| typedef GrVkResource INHERITED; |
| }; |
| |
| #endif |