|  | // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef GPU_VULKAN_VULKAN_SAMPLER_H_ | 
|  | #define GPU_VULKAN_VULKAN_SAMPLER_H_ | 
|  |  | 
|  | #include <float.h> | 
|  | #include <vulkan/vulkan.h> | 
|  |  | 
|  | #include "base/macros.h" | 
|  | #include "gpu/vulkan/vulkan_export.h" | 
|  |  | 
|  | namespace gpu { | 
|  |  | 
|  | class VulkanDeviceQueue; | 
|  |  | 
|  | class VULKAN_EXPORT VulkanSampler { | 
|  | public: | 
|  | struct SamplerOptions { | 
|  | SamplerOptions(); | 
|  | ~SamplerOptions(); | 
|  |  | 
|  | VkFilter mag_filter = VK_FILTER_NEAREST; | 
|  | VkFilter min_filter = VK_FILTER_NEAREST; | 
|  | VkSamplerMipmapMode mipmap_mode = VK_SAMPLER_MIPMAP_MODE_NEAREST; | 
|  | VkSamplerAddressMode address_mode_u = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; | 
|  | VkSamplerAddressMode address_mode_v = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; | 
|  | VkSamplerAddressMode address_mode_w = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE; | 
|  | float mip_lod_bias = 0.0f; | 
|  | bool anisotropy_enable = false; | 
|  | float max_anisotropy = 1.0f; | 
|  | bool compare_enable = false; | 
|  | VkCompareOp compare_op = VK_COMPARE_OP_NEVER; | 
|  | float min_lod = 0.0f; | 
|  | float max_lod = FLT_MAX; | 
|  | VkBorderColor border_color = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK; | 
|  | bool unnormalized_coordinates = false; | 
|  | }; | 
|  |  | 
|  | explicit VulkanSampler(VulkanDeviceQueue* device_queue); | 
|  | ~VulkanSampler(); | 
|  |  | 
|  | bool Initialize(const SamplerOptions& options); | 
|  | void Destroy(); | 
|  |  | 
|  | VkSampler handle() const { return handle_; } | 
|  |  | 
|  | private: | 
|  | VulkanDeviceQueue* device_queue_ = nullptr; | 
|  | VkSampler handle_ = VK_NULL_HANDLE; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(VulkanSampler); | 
|  | }; | 
|  |  | 
|  | }  // namespace gpu | 
|  |  | 
|  | #endif  // GPU_VULKAN_VULKAN_SAMPLER_H_ |