/* * 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 GrVkSampler_DEFINED #define GrVkSampler_DEFINED #include "GrVkResource.h" #include "vk/GrVkDefines.h" class GrSamplerState; class GrVkGpu; class GrVkSampler : public GrVkResource { public: static GrVkSampler* Create(const GrVkGpu* gpu, const GrSamplerState&, uint32_t maxMipLevel); VkSampler sampler() const { return fSampler; } // Helpers for hashing GrVkSampler static uint16_t GenerateKey(const GrSamplerState&, uint32_t maxMipLevel); static const uint16_t& GetKey(const GrVkSampler& sampler) { return sampler.fKey; } static uint32_t Hash(const uint16_t& key) { return key; } #ifdef SK_TRACE_VK_RESOURCES void dumpInfo() const override { SkDebugf("GrVkSampler: %d (%d refs)\n", fSampler, this->getRefCnt()); } #endif private: GrVkSampler(VkSampler sampler, uint16_t key) : INHERITED(), fSampler(sampler), fKey(key) {} void freeGPUData(const GrVkGpu* gpu) const override; VkSampler fSampler; uint16_t fKey; typedef GrVkResource INHERITED; }; #endif