10 #include "flutter/fml/logging.h"
17 const std::string& suffix) {
18 if (suffix.size() >
string.size()) {
22 if (suffix.empty() || suffix.empty()) {
26 return string.rfind(suffix) == (
string.size() - suffix.size());
58 return "MetalDesktop";
64 return "OpenGLDesktop";
68 return "RuntimeStageMetal";
70 return "RuntimeStageGLES";
72 return "RuntimeStageVulkan";
80 switch (source_language) {
91 const std::string& file_name,
94 const std::string& entry_point_name) {
96 return entry_point_name;
99 std::stringstream stream;
100 std::filesystem::path file_path(file_name);
110 stream <<
"fragment";
113 stream <<
"tess_control";
116 stream <<
"tess_eval";
145 using Status = shaderc_compilation_status;
147 case Status::shaderc_compilation_status_success:
149 case Status::shaderc_compilation_status_invalid_stage:
150 return "Invalid shader stage specified";
151 case Status::shaderc_compilation_status_compilation_error:
152 return "Compilation error";
153 case Status::shaderc_compilation_status_internal_error:
154 return "Internal error";
155 case Status::shaderc_compilation_status_null_result_object:
156 return "Internal error. Null result object";
157 case Status::shaderc_compilation_status_invalid_assembly:
158 return "Invalid assembly";
159 case Status::shaderc_compilation_status_validation_error:
160 return "Validation error";
161 case Status::shaderc_compilation_status_transformation_error:
162 return "Transformation error";
163 case Status::shaderc_compilation_status_configuration_error:
164 return "Configuration error";
166 return "Unknown internal error";
172 return shaderc_shader_kind::shaderc_vertex_shader;
174 return shaderc_shader_kind::shaderc_fragment_shader;
176 return shaderc_shader_kind::shaderc_tess_control_shader;
178 return shaderc_shader_kind::shaderc_tess_evaluation_shader;
180 return shaderc_shader_kind::shaderc_compute_shader;
184 return shaderc_shader_kind::shaderc_glsl_infer_from_source;
190 return spv::ExecutionModel::ExecutionModelVertex;
192 return spv::ExecutionModel::ExecutionModelFragment;
194 return spv::ExecutionModel::ExecutionModelTessellationControl;
196 return spv::ExecutionModel::ExecutionModelTessellationEvaluation;
198 return spv::ExecutionModel::ExecutionModelGLCompute;
202 return spv::ExecutionModel::ExecutionModelMax;
210 return spirv_cross::CompilerMSL::Options::Platform::iOS;
212 return spirv_cross::CompilerMSL::Options::Platform::macOS;
220 return spirv_cross::CompilerMSL::Options::Platform::macOS;