Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_IMPELLER_COMPILER_TYPES_H_
6#define FLUTTER_IMPELLER_COMPILER_TYPES_H_
7
8#include <codecvt>
9#include <locale>
10#include <map>
11#include <optional>
12#include <string>
13
14#include "flutter/fml/macros.h"
15#include "shaderc/shaderc.hpp"
16#include "spirv_cross.hpp"
17#include "spirv_msl.hpp"
18
19namespace impeller {
20namespace compiler {
21
28
41
42enum class SourceLanguage {
44 kGLSL,
45 kHLSL,
46};
47
49 std::string name;
50 size_t location = 0u;
51 size_t binding = 0u;
52 spirv_cross::SPIRType::BaseType type = spirv_cross::SPIRType::BaseType::Float;
53 size_t rows = 0u;
54 size_t columns = 0u;
55 size_t bit_width = 0u;
56 std::optional<size_t> array_elements = std::nullopt;
57 std::vector<uint8_t> struct_layout = {};
58 size_t struct_float_count = 0u;
59};
60
62 std::string name;
63 size_t location;
64 size_t set;
65 size_t binding;
66 spirv_cross::SPIRType::BaseType type =
67 spirv_cross::SPIRType::BaseType::Unknown;
68 size_t bit_width;
69 size_t vec_size;
70 size_t columns;
71 size_t offset;
72};
73
74/// A shader config parsed as part of a ShaderBundleConfig.
81
82using ShaderBundleConfig = std::unordered_map<std::string, ShaderConfig>;
83
85
87
89
90SourceType SourceTypeFromFileName(const std::string& file_name);
91
93
95
96std::string TargetPlatformToString(TargetPlatform platform);
97
98SourceLanguage ToSourceLanguage(const std::string& source_language);
99
100std::string SourceLanguageToString(SourceLanguage source_language);
101
102std::string TargetPlatformSLExtension(TargetPlatform platform);
103
105 const std::string& file_name,
107 SourceLanguage source_language,
108 const std::string& entry_point_name);
109
111
113
114std::string ShaderCErrorToString(shaderc_compilation_status status);
115
116shaderc_shader_kind ToShaderCShaderKind(SourceType type);
117
118spv::ExecutionModel ToExecutionModel(SourceType type);
119
120spirv_cross::CompilerMSL::Options::Platform TargetPlatformToMSLPlatform(
121 TargetPlatform platform);
122
123} // namespace compiler
124} // namespace impeller
125
126#endif // FLUTTER_IMPELLER_COMPILER_TYPES_H_
const char * name
Definition fuchsia.cc:50
std::string SourceLanguageToString(SourceLanguage source_language)
Definition types.cc:100
std::string TargetPlatformToString(TargetPlatform platform)
Definition types.cc:74
std::string TargetPlatformSLExtension(TargetPlatform platform)
Definition types.cc:246
shaderc_shader_kind ToShaderCShaderKind(SourceType type)
Definition types.cc:184
std::string SourceTypeToString(SourceType type)
Definition types.cc:232
std::unordered_map< std::string, ShaderConfig > ShaderBundleConfig
Definition types.h:82
SourceType SourceTypeFromString(std::string name)
Definition types.cc:46
SourceType SourceTypeFromFileName(const std::string &file_name)
Definition types.cc:30
std::string EntryPointFunctionNameFromSourceName(const std::string &file_name, SourceType type, SourceLanguage source_language, const std::string &entry_point_name)
Definition types.cc:111
bool TargetPlatformIsMetal(TargetPlatform platform)
Definition types.cc:284
bool TargetPlatformIsOpenGL(TargetPlatform platform)
Definition types.cc:266
std::string ShaderCErrorToString(shaderc_compilation_status status)
Definition types.cc:159
bool TargetPlatformIsVulkan(TargetPlatform platform)
Definition types.cc:302
bool TargetPlatformBundlesSkSL(TargetPlatform platform)
Definition types.cc:320
spirv_cross::CompilerMSL::Options::Platform TargetPlatformToMSLPlatform(TargetPlatform platform)
Definition types.cc:212
SourceLanguage ToSourceLanguage(const std::string &source_language)
Definition types.cc:64
bool TargetPlatformNeedsReflection(TargetPlatform platform)
Definition types.cc:141
spv::ExecutionModel ToExecutionModel(SourceType type)
Definition types.cc:198
spirv_cross::SPIRType::BaseType type
Definition types.h:66
A shader config parsed as part of a ShaderBundleConfig.
Definition types.h:75
spirv_cross::SPIRType::BaseType type
Definition types.h:52
std::optional< size_t > array_elements
Definition types.h:56
std::vector< uint8_t > struct_layout
Definition types.h:57