xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/vulkan/SamplerVk.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // SamplerVk.cpp:
7*8975f5c5SAndroid Build Coastguard Worker //    Implements the class methods for SamplerVk.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/vulkan/SamplerVk.h"
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include "common/debug.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Context.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/vulkan/vk_utils.h"
15*8975f5c5SAndroid Build Coastguard Worker 
16*8975f5c5SAndroid Build Coastguard Worker namespace rx
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker 
SamplerVk(const gl::SamplerState & state)19*8975f5c5SAndroid Build Coastguard Worker SamplerVk::SamplerVk(const gl::SamplerState &state) : SamplerImpl(state) {}
20*8975f5c5SAndroid Build Coastguard Worker 
21*8975f5c5SAndroid Build Coastguard Worker SamplerVk::~SamplerVk() = default;
22*8975f5c5SAndroid Build Coastguard Worker 
onDestroy(const gl::Context * context)23*8975f5c5SAndroid Build Coastguard Worker void SamplerVk::onDestroy(const gl::Context *context)
24*8975f5c5SAndroid Build Coastguard Worker {
25*8975f5c5SAndroid Build Coastguard Worker     mSampler.reset();
26*8975f5c5SAndroid Build Coastguard Worker }
27*8975f5c5SAndroid Build Coastguard Worker 
syncState(const gl::Context * context,const bool dirty)28*8975f5c5SAndroid Build Coastguard Worker angle::Result SamplerVk::syncState(const gl::Context *context, const bool dirty)
29*8975f5c5SAndroid Build Coastguard Worker {
30*8975f5c5SAndroid Build Coastguard Worker     ContextVk *contextVk = vk::GetImpl(context);
31*8975f5c5SAndroid Build Coastguard Worker 
32*8975f5c5SAndroid Build Coastguard Worker     vk::Renderer *renderer = contextVk->getRenderer();
33*8975f5c5SAndroid Build Coastguard Worker     if (mSampler)
34*8975f5c5SAndroid Build Coastguard Worker     {
35*8975f5c5SAndroid Build Coastguard Worker         if (!dirty)
36*8975f5c5SAndroid Build Coastguard Worker         {
37*8975f5c5SAndroid Build Coastguard Worker             return angle::Result::Continue;
38*8975f5c5SAndroid Build Coastguard Worker         }
39*8975f5c5SAndroid Build Coastguard Worker         mSampler.reset();
40*8975f5c5SAndroid Build Coastguard Worker     }
41*8975f5c5SAndroid Build Coastguard Worker 
42*8975f5c5SAndroid Build Coastguard Worker     vk::SamplerDesc desc(contextVk, mState, false, nullptr, static_cast<angle::FormatID>(0));
43*8975f5c5SAndroid Build Coastguard Worker     ANGLE_TRY(renderer->getSamplerCache().getSampler(contextVk, desc, &mSampler));
44*8975f5c5SAndroid Build Coastguard Worker 
45*8975f5c5SAndroid Build Coastguard Worker     return angle::Result::Continue;
46*8975f5c5SAndroid Build Coastguard Worker }
47*8975f5c5SAndroid Build Coastguard Worker 
48*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
49