blob: eb3e0d2f4f64401a5cc36bfe2bed38f5a1b1532b [file] [log] [blame]
//
// 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_