GrVkSampler.h revision 7ec92413307c9da43c013d1e4e15716a44059810
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 15class GrTextureAccess; 16class GrTextureParams; 17class GrVkGpu; 18 19 20class GrVkSampler : public GrVkResource { 21public: 22 static GrVkSampler* Create(const GrVkGpu* gpu, const GrTextureParams&, uint32_t mipLevels); 23 24 VkSampler sampler() const { return fSampler; } 25 26 // Helpers for hashing GrVkSampler 27 static uint16_t GenerateKey(const GrTextureParams&, uint32_t mipLevels); 28 29 static const uint16_t& GetKey(const GrVkSampler& sampler) { return sampler.fKey; } 30 static uint32_t Hash(const uint16_t& key) { return key; } 31 32#ifdef SK_TRACE_VK_RESOURCES 33 void dumpInfo() const override { 34 SkDebugf("GrVkSampler: %d (%d refs)\n", fSampler, this->getRefCnt()); 35 } 36#endif 37 38private: 39 GrVkSampler(VkSampler sampler, uint16_t key) : INHERITED(), fSampler(sampler), fKey(key) {} 40 41 void freeGPUData(const GrVkGpu* gpu) const override; 42 43 VkSampler fSampler; 44 uint16_t fKey; 45 46 typedef GrVkResource INHERITED; 47}; 48 49#endif 50