1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2021 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker #include "tools/RuntimeBlendUtils.h" 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkBlendMode.h" 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/effects/SkRuntimeEffect.h" 12*c8dee2aaSAndroid Build Coastguard Worker GetRuntimeBlendForBlendMode(SkBlendMode mode)13*c8dee2aaSAndroid Build Coastguard Workersk_sp<SkBlender> GetRuntimeBlendForBlendMode(SkBlendMode mode) { 14*c8dee2aaSAndroid Build Coastguard Worker static auto result = SkRuntimeEffect::MakeForBlender(SkString( 15*c8dee2aaSAndroid Build Coastguard Worker "uniform blender b;" 16*c8dee2aaSAndroid Build Coastguard Worker "half4 main(half4 src, half4 dst) {" 17*c8dee2aaSAndroid Build Coastguard Worker "return b.eval(src, dst);" 18*c8dee2aaSAndroid Build Coastguard Worker "}" 19*c8dee2aaSAndroid Build Coastguard Worker )); 20*c8dee2aaSAndroid Build Coastguard Worker 21*c8dee2aaSAndroid Build Coastguard Worker SkASSERTF(result.effect, "%s", result.errorText.c_str()); 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker SkRuntimeBlendBuilder builder(result.effect); 24*c8dee2aaSAndroid Build Coastguard Worker builder.child("b") = SkBlender::Mode(mode); 25*c8dee2aaSAndroid Build Coastguard Worker return builder.makeBlender(); 26*c8dee2aaSAndroid Build Coastguard Worker } 27