5#ifndef FLUTTER_IMPELLER_RENDERER_SHADER_STAGE_COMPATIBILITY_CHECKER_H_
6#define FLUTTER_IMPELLER_RENDERER_SHADER_STAGE_COMPATIBILITY_CHECKER_H_
17template <
typename VertexShaderT,
typename FragmentShaderT>
22 return *str1 == *str2 &&
29 constexpr size_t num_outputs = VertexShaderT::kAllShaderStageOutputs.size();
30 constexpr size_t num_inputs = FragmentShaderT::kAllShaderStageInputs.size();
32 if (num_inputs > num_outputs) {
36 for (
size_t i = 0;
i < num_inputs; ++
i) {
38 FragmentShaderT::kAllShaderStageInputs[
i];
39 for (
size_t j = 0; j < num_outputs; ++j) {
41 VertexShaderT::kAllShaderStageOutputs[j];
44 input_slot->
set != output_slot->
set ||
46 input_slot->
type != output_slot->
type ||
64struct ClipVertexShader;
65struct SolidFillVertexShader;
67template <
typename FragmentShaderT>
70 static constexpr bool Check() {
return true; }
72template <
typename FragmentShaderT>
75 static constexpr bool Check() {
return true; }
static constexpr bool Check()
static constexpr bool Check()
static constexpr bool Check()
static constexpr bool CompileTimeStrEqual(const char *str1, const char *str2)