// // Copyright 2021 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // CLSamplerVk.h: Defines the class interface for CLSamplerVk, implementing CLSamplerImpl. #ifndef LIBANGLE_RENDERER_VULKAN_CLSAMPLERVK_H_ #define LIBANGLE_RENDERER_VULKAN_CLSAMPLERVK_H_ #include "clspv/Sampler.h" #include "libANGLE/renderer/CLSamplerImpl.h" #include "libANGLE/renderer/vulkan/cl_types.h" #include "libANGLE/renderer/vulkan/vk_cache_utils.h" #include "vulkan/vulkan_core.h" namespace rx { class CLSamplerVk : public CLSamplerImpl { public: CLSamplerVk(const cl::Sampler &sampler); ~CLSamplerVk() override; vk::SamplerHelper &getSamplerHelper() { return mSamplerHelper; } vk::SamplerHelper &getSamplerHelperNormalized() { return mSamplerHelperNormalized; } angle::Result create(); angle::Result createNormalized(); VkSamplerAddressMode getVkAddressMode(); VkFilter getVkFilter(); VkSamplerMipmapMode getVkMipmapMode(); uint32_t getSamplerMask(); private: CLContextVk *mContext; vk::Renderer *mRenderer; vk::SamplerHelper mSamplerHelper; vk::SamplerHelper mSamplerHelperNormalized; VkSamplerCreateInfo mDefaultSamplerCreateInfo; }; } // namespace rx #endif // LIBANGLE_RENDERER_VULKAN_CLSAMPLERVK_H_