2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <dali/internal/render/renderers/render-sampler.h>
26 : mGraphicsController(nullptr),
27 mMinificationFilter(FilterMode::DEFAULT),
28 mMagnificationFilter(FilterMode::DEFAULT),
29 mSWrapMode(WrapMode::DEFAULT),
30 mTWrapMode(WrapMode::DEFAULT),
31 mRWrapMode(WrapMode::DEFAULT),
36 const Dali::Graphics::Sampler* Sampler::GetGraphicsObject()
38 if(IsDefaultSampler())
40 mGraphicsSampler.reset();
44 CreateGraphicsObject();
47 return mGraphicsSampler.get();
50 void Sampler::Initialize(Graphics::Controller& graphicsController)
52 mGraphicsController = &graphicsController;
53 mGraphicsSampler.reset(nullptr);
56 Graphics::Sampler* Sampler::CreateGraphicsObject()
58 if(!mGraphicsSampler || mIsDirty)
60 Graphics::SamplerFilter minFilter = GetGraphicsFilter(mMinificationFilter);
61 Graphics::SamplerFilter magFilter = GetGraphicsFilter(mMagnificationFilter);
62 Graphics::SamplerMipmapMode mipmapMode = GetGraphicsSamplerMipmapMode(mMinificationFilter);
64 if(mMinificationFilter == FilterMode::NONE)
66 minFilter = Graphics::SamplerFilter::NEAREST;
67 mipmapMode = Graphics::SamplerMipmapMode::LINEAR;
69 if(mMagnificationFilter == FilterMode::NONE)
71 magFilter = Graphics::SamplerFilter::LINEAR;
74 mGraphicsSampler = mGraphicsController->CreateSampler(
75 Graphics::SamplerCreateInfo()
76 .SetMinFilter(minFilter)
77 .SetMagFilter(magFilter)
78 .SetAddressModeU(GetGraphicsSamplerAddressMode(mSWrapMode))
79 .SetAddressModeV(GetGraphicsSamplerAddressMode(mTWrapMode))
80 .SetAddressModeW(GetGraphicsSamplerAddressMode(mRWrapMode))
81 .SetMipMapMode(mipmapMode),
85 return mGraphicsSampler.get();
90 } // namespace Internal