Home | History | Annotate | Download | only in vk
      1 /*
      2 * Copyright 2016 Google Inc.
      3 *
      4 * Use of this source code is governed by a BSD-style license that can be
      5 * found in the LICENSE file.
      6 */
      7 
      8 #ifndef GrVkSampler_DEFINED
      9 #define GrVkSampler_DEFINED
     10 
     11 #include "GrVkResource.h"
     12 
     13 #include "vk/GrVkDefines.h"
     14 
     15 class GrSamplerParams;
     16 class GrVkGpu;
     17 
     18 
     19 class GrVkSampler : public GrVkResource {
     20 public:
     21     static GrVkSampler* Create(const GrVkGpu* gpu, const GrSamplerParams&, uint32_t mipLevels);
     22 
     23     VkSampler sampler() const { return fSampler; }
     24 
     25     // Helpers for hashing GrVkSampler
     26     static uint16_t GenerateKey(const GrSamplerParams&, uint32_t mipLevels);
     27 
     28     static const uint16_t& GetKey(const GrVkSampler& sampler) { return sampler.fKey; }
     29     static uint32_t Hash(const uint16_t& key) { return key; }
     30 
     31 #ifdef SK_TRACE_VK_RESOURCES
     32     void dumpInfo() const override {
     33         SkDebugf("GrVkSampler: %d (%d refs)\n", fSampler, this->getRefCnt());
     34     }
     35 #endif
     36 
     37 private:
     38     GrVkSampler(VkSampler sampler, uint16_t key) : INHERITED(), fSampler(sampler), fKey(key) {}
     39 
     40     void freeGPUData(const GrVkGpu* gpu) const override;
     41 
     42     VkSampler  fSampler;
     43     uint16_t   fKey;
     44 
     45     typedef GrVkResource INHERITED;
     46 };
     47 
     48 #endif
     49