1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2020 Google LLC 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 8*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/SkSLSampleUsage.h" 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include <algorithm> 11*c8dee2aaSAndroid Build Coastguard Worker 12*c8dee2aaSAndroid Build Coastguard Worker namespace SkSL { 13*c8dee2aaSAndroid Build Coastguard Worker merge(const SampleUsage & other)14*c8dee2aaSAndroid Build Coastguard WorkerSampleUsage SampleUsage::merge(const SampleUsage& other) { 15*c8dee2aaSAndroid Build Coastguard Worker // This function is only used in Analysis::MergeSampleUsageVisitor to determine the combined 16*c8dee2aaSAndroid Build Coastguard Worker // SampleUsage for a child fp/shader/etc. We should never see matrix sampling here. 17*c8dee2aaSAndroid Build Coastguard Worker SkASSERT(fKind != Kind::kUniformMatrix && other.fKind != Kind::kUniformMatrix); 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker static_assert(Kind::kExplicit > Kind::kPassThrough); 20*c8dee2aaSAndroid Build Coastguard Worker static_assert(Kind::kPassThrough > Kind::kNone); 21*c8dee2aaSAndroid Build Coastguard Worker fKind = std::max(fKind, other.fKind); 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker return *this; 24*c8dee2aaSAndroid Build Coastguard Worker } 25*c8dee2aaSAndroid Build Coastguard Worker 26*c8dee2aaSAndroid Build Coastguard Worker } // namespace SkSL 27