| /* | |
| * Copyright 2025 Google LLC | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef skgpu_graphite_vk_precompile_PrecompileShader_DEFINED | |
| #define skgpu_graphite_vk_precompile_PrecompileShader_DEFINED | |
| #include "include/gpu/graphite/precompile/PrecompileShader.h" | |
| namespace skgpu { | |
| struct VulkanYcbcrConversionInfo; | |
| } | |
| namespace skgpu::graphite { | |
| namespace PrecompileShaders { | |
| /** | |
| In the main Skia API YCbCr Images are usually created by wrapping a BackendTexture. | |
| Such backend textures are, in turn, created by a backend-specific entry point like: | |
| BackendTextures::MakeVulkan(SkISize, const VulkanTextureInfo&, ...) | |
| where the VulkanTextureInfo contains additional YCbCr information. This API cuts right to | |
| providing the backend-specific YCbCr information (i.e., the VulkanYcbcrConversionInfo). | |
| @return A precompile shader for a specific type of YCbCr image | |
| */ | |
| SK_API sk_sp<PrecompileShader> VulkanYCbCrImage(const skgpu::VulkanYcbcrConversionInfo& YCbCrInfo, | |
| ImageShaderFlags = ImageShaderFlags::kAll, | |
| SkSpan<const SkColorInfo> = {}, | |
| SkSpan<const SkTileMode> = { kAllTileModes }); | |
| } // namespace PrecompileShaders | |
| } // namespace skgpu::graphite | |
| #endif // skgpu_graphite_vk_precompile_PrecompileShader_DEFINED |