| /* | |
| * Copyright 2025 Google LLC | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h" | |
| #include "include/gpu/vk/VulkanTypes.h" | |
| #include "src/gpu/graphite/precompile/PrecompileImageShader.h" | |
| #include "src/gpu/graphite/vk/VulkanYcbcrConversion.h" | |
| namespace skgpu::graphite { | |
| sk_sp<PrecompileShader> PrecompileShaders::VulkanYCbCrImage( | |
| skgpu::VulkanYcbcrConversionInfo& YCbCrConversionInfo, | |
| ImageShaderFlags shaderFlags, | |
| SkSpan<const SkColorInfo> colorInfos, | |
| SkSpan<const SkTileMode> tileModes) { | |
| if (!YCbCrConversionInfo.isValid()) { | |
| return nullptr; | |
| } | |
| sk_sp<PrecompileImageShader> shader = sk_make_sp<PrecompileImageShader>(shaderFlags, | |
| colorInfos, | |
| tileModes, | |
| /* raw= */false); | |
| shader->setImmutableSamplerInfo( | |
| VulkanYcbcrConversion::ToImmutableSamplerInfo(YCbCrConversionInfo)); | |
| return PrecompileShaders::LocalMatrix({ std::move(shader) }); | |
| } | |
| } // namespace skgpu::graphite |