// Copyright 2019 The SwiftShader Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "VkSampler.hpp" namespace vk { SamplerState::SamplerState(const VkSamplerCreateInfo *pCreateInfo, const vk::SamplerYcbcrConversion *ycbcrConversion, VkSamplerFilteringPrecisionModeGOOGLE filteringPrecision) : Memset(this, 0) , magFilter(pCreateInfo->magFilter) , minFilter(pCreateInfo->minFilter) , mipmapMode(pCreateInfo->mipmapMode) , addressModeU(pCreateInfo->addressModeU) , addressModeV(pCreateInfo->addressModeV) , addressModeW(pCreateInfo->addressModeW) , mipLodBias(pCreateInfo->mipLodBias) , anisotropyEnable(pCreateInfo->anisotropyEnable) , maxAnisotropy(pCreateInfo->maxAnisotropy) , compareEnable(pCreateInfo->compareEnable) , compareOp(pCreateInfo->compareOp) , minLod(ClampLod(pCreateInfo->minLod)) , maxLod(ClampLod(pCreateInfo->maxLod)) , borderColor(pCreateInfo->borderColor) , unnormalizedCoordinates(pCreateInfo->unnormalizedCoordinates) , filteringPrecision(filteringPrecision) { if(ycbcrConversion) { ycbcrModel = ycbcrConversion->ycbcrModel; studioSwing = (ycbcrConversion->ycbcrRange == VK_SAMPLER_YCBCR_RANGE_ITU_NARROW); swappedChroma = (ycbcrConversion->components.r != VK_COMPONENT_SWIZZLE_R); } } Sampler::Sampler(const VkSamplerCreateInfo *pCreateInfo, void *mem, const SamplerState &samplerState, uint32_t samplerID) : SamplerState(samplerState) , id(samplerID) { } } // namespace vk