7 #include "flutter/fml/hash_combine.h"
18 auto conversion = device.createSamplerYcbcrConversionUnique(chain_.get());
19 if (conversion.result != vk::Result::eSuccess) {
21 << vk::to_string(conversion.result);
24 conversion_ = std::move(conversion.value);
27 YUVConversionVK::~YUVConversionVK() =
default;
29 bool YUVConversionVK::IsValid()
const {
30 return conversion_ && !!conversion_.get();
33 vk::SamplerYcbcrConversion YUVConversionVK::GetConversion()
const {
34 return conversion_ ? conversion_.get()
35 :
static_cast<vk::SamplerYcbcrConversion
>(VK_NULL_HANDLE);
42 std::size_t YUVConversionDescriptorVKHash::operator()(
46 const auto& conv = desc.get();
48 std::size_t hash = fml::HashCombine(conv.format,
58 conv.forceExplicitReconstruction
68 bool YUVConversionDescriptorVKEqual::operator()(
74 const auto& lhs = lhs_desc.get();
75 const auto& rhs = rhs_desc.get();
77 if (lhs.format != rhs.format ||
78 lhs.ycbcrModel != rhs.ycbcrModel ||
79 lhs.ycbcrRange != rhs.ycbcrRange ||
80 lhs.components.r != rhs.components.r ||
81 lhs.components.g != rhs.components.g ||
82 lhs.components.b != rhs.components.b ||
83 lhs.components.a != rhs.components.a ||
84 lhs.xChromaOffset != rhs.xChromaOffset ||
85 lhs.yChromaOffset != rhs.yChromaOffset ||
86 lhs.chromaFilter != rhs.chromaFilter ||
87 lhs.forceExplicitReconstruction != rhs.forceExplicitReconstruction
94 const auto lhs = lhs_desc.get<vk::ExternalFormatANDROID>();
95 const auto rhs = rhs_desc.get<vk::ExternalFormatANDROID>();
96 return lhs.externalFormat == rhs.externalFormat;
103 ImmutableSamplerKeyVK::ImmutableSamplerKeyVK(
const SamplerVK& sampler)
104 : sampler(sampler.GetDescriptor()) {
105 if (
const auto& conversion =
sampler.GetYUVConversion()) {
YUVConversionVK(const YUVConversionVK &)=delete
vk::StructureChain< vk::SamplerYcbcrConversionCreateInfo > YUVConversionDescriptorVK
bool IsEqual(const ImmutableSamplerKeyVK &other) const override
YUVConversionDescriptorVK yuv_conversion
std::size_t GetHash() const override
SamplerDescriptor sampler
static uint64_t ToKey(const SamplerDescriptor &d)