| /* | 
 | * 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 |