1 /* 2 * Copyright 2025 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef PrecompileEffectFactories_DEFINED 9 #define PrecompileEffectFactories_DEFINED 10 11 #include "include/core/SkRefCnt.h" 12 13 class SkBlender; 14 class SkColorFilter; 15 class SkRuntimeEffect; 16 class SkShader; 17 18 namespace skgpu::graphite { 19 class PrecompileBlender; 20 class PrecompileColorFilter; 21 class PrecompileShader; 22 } 23 24 namespace skiatest::graphite { 25 26 // These factory functions returns a normal-API/precompile-API pair that represent the same 27 // effect. 28 namespace PrecompileFactories { 29 using BlenderPair = std::pair<sk_sp<SkBlender>, 30 sk_sp<skgpu::graphite::PrecompileBlender>>; 31 using ColorFilterPair = std::pair<sk_sp<SkColorFilter>, 32 sk_sp<skgpu::graphite::PrecompileColorFilter>>; 33 using ShaderPair = std::pair<sk_sp<SkShader>, 34 sk_sp<skgpu::graphite::PrecompileShader>>; 35 36 const char* GetAnnulusShaderCode(); 37 SkRuntimeEffect* GetAnnulusShaderEffect(); 38 ShaderPair CreateAnnulusRuntimeShader(); 39 40 SkRuntimeEffect* GetSrcBlenderEffect(); 41 BlenderPair CreateSrcRuntimeBlender(); 42 SkRuntimeEffect* GetDstBlenderEffect(); 43 BlenderPair CreateDstRuntimeBlender(); 44 SkRuntimeEffect* GetComboBlenderEffect(); 45 BlenderPair CreateComboRuntimeBlender(); 46 47 SkRuntimeEffect* GetDoubleColorFilterEffect(); 48 ColorFilterPair CreateDoubleRuntimeColorFilter(); 49 SkRuntimeEffect* GetHalfColorFilterEffect(); 50 ColorFilterPair CreateHalfRuntimeColorFilter(); 51 SkRuntimeEffect* GetComboColorFilterEffect(); 52 ColorFilterPair CreateComboRuntimeColorFilter(); 53 54 } // namespace PrecompileFactories 55 56 } // namespace skiatest::graphite 57 58 #endif // PrecompileEffectFactories_DEFINED 59