1 // 2 // Copyright 2021 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 // CLSamplerVk.h: Defines the class interface for CLSamplerVk, implementing CLSamplerImpl. 7 8 #ifndef LIBANGLE_RENDERER_VULKAN_CLSAMPLERVK_H_ 9 #define LIBANGLE_RENDERER_VULKAN_CLSAMPLERVK_H_ 10 11 #include "clspv/Sampler.h" 12 #include "libANGLE/renderer/CLSamplerImpl.h" 13 #include "libANGLE/renderer/vulkan/cl_types.h" 14 #include "libANGLE/renderer/vulkan/vk_cache_utils.h" 15 #include "vulkan/vulkan_core.h" 16 17 namespace rx 18 { 19 20 class CLSamplerVk : public CLSamplerImpl 21 { 22 public: 23 CLSamplerVk(const cl::Sampler &sampler); 24 ~CLSamplerVk() override; 25 getSamplerHelper()26 vk::SamplerHelper &getSamplerHelper() { return mSamplerHelper; } getSamplerHelperNormalized()27 vk::SamplerHelper &getSamplerHelperNormalized() { return mSamplerHelperNormalized; } 28 angle::Result create(); 29 angle::Result createNormalized(); 30 31 VkSamplerAddressMode getVkAddressMode(); 32 VkFilter getVkFilter(); 33 VkSamplerMipmapMode getVkMipmapMode(); 34 uint32_t getSamplerMask(); 35 36 private: 37 CLContextVk *mContext; 38 vk::Renderer *mRenderer; 39 40 vk::SamplerHelper mSamplerHelper; 41 vk::SamplerHelper mSamplerHelperNormalized; 42 VkSamplerCreateInfo mDefaultSamplerCreateInfo; 43 }; 44 45 } // namespace rx 46 47 #endif // LIBANGLE_RENDERER_VULKAN_CLSAMPLERVK_H_ 48