blob: 1344921c269a872956a2d808d3d7d24310e3a702 [file]
//
// Copyright 2016 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.
//
// SamplerVk.cpp:
// Implements the class methods for SamplerVk.
//
#include "libANGLE/renderer/vulkan/SamplerVk.h"
#include "common/debug.h"
#include "libANGLE/Context.h"
#include "libANGLE/renderer/vulkan/ShareGroupVk.h"
#include "libANGLE/renderer/vulkan/vk_utils.h"
namespace rx
{
SamplerVk::SamplerVk(const gl::SamplerState &state) : SamplerImpl(state) {}
SamplerVk::~SamplerVk() = default;
void SamplerVk::onDestroy(const gl::Context *context)
{
mSampler.reset();
}
angle::Result SamplerVk::syncState(const gl::Context *context, const bool dirty)
{
ContextVk *contextVk = vk::GetImpl(context);
if (mSampler)
{
if (!dirty)
{
return angle::Result::Continue;
}
mSampler.reset();
}
vk::SamplerDesc desc(contextVk, mState, false, nullptr, static_cast<angle::FormatID>(0));
ANGLE_TRY(contextVk->getSamplerCache().getSampler(contextVk, desc, &mSampler));
return angle::Result::Continue;
}
} // namespace rx