tint/templates: Generate enum string arrays
This will be useful for emitting possible enum values when an enum fails to parse. Bug: tint:1629 Change-Id: I0be177a2bc27962580f4465ec18fdc5f2e930a99 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/105322 Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@chromium.org>
This commit is contained in:
parent
3e0984afe0
commit
b7aef033fa
|
@ -52,6 +52,10 @@ std::ostream& operator<<(std::ostream& out, AddressSpace value);
|
|||
/// @returns the parsed enum, or AddressSpace::kInvalid if the string could not be parsed.
|
||||
AddressSpace ParseAddressSpace(std::string_view str);
|
||||
|
||||
constexpr const char* kAddressSpaceStrings[] = {
|
||||
"function", "private", "push_constant", "storage", "uniform", "workgroup",
|
||||
};
|
||||
|
||||
/// @returns true if the AddressSpace is host-shareable
|
||||
/// @param address_space the AddressSpace
|
||||
/// @see https://gpuweb.github.io/gpuweb/wgsl.html#host-shareable
|
||||
|
|
|
@ -55,6 +55,15 @@ std::ostream& operator<<(std::ostream& out, BuiltinValue value);
|
|||
/// @returns the parsed enum, or BuiltinValue::kInvalid if the string could not be parsed.
|
||||
BuiltinValue ParseBuiltinValue(std::string_view str);
|
||||
|
||||
constexpr const char* kBuiltinValueStrings[] = {
|
||||
"frag_depth", "front_facing",
|
||||
"global_invocation_id", "instance_index",
|
||||
"local_invocation_id", "local_invocation_index",
|
||||
"num_workgroups", "position",
|
||||
"sample_index", "sample_mask",
|
||||
"vertex_index", "workgroup_id",
|
||||
};
|
||||
|
||||
} // namespace tint::ast
|
||||
|
||||
#endif // SRC_TINT_AST_BUILTIN_VALUE_H_
|
||||
|
|
|
@ -49,6 +49,13 @@ std::ostream& operator<<(std::ostream& out, Extension value);
|
|||
/// @returns the parsed enum, or Extension::kInvalid if the string could not be parsed.
|
||||
Extension ParseExtension(std::string_view str);
|
||||
|
||||
constexpr const char* kExtensionStrings[] = {
|
||||
"chromium_disable_uniformity_analysis",
|
||||
"chromium_experimental_dp4a",
|
||||
"chromium_experimental_push_constant",
|
||||
"f16",
|
||||
};
|
||||
|
||||
// A unique vector of extensions
|
||||
using Extensions = utils::UniqueVector<Extension, 4>;
|
||||
|
||||
|
|
|
@ -58,6 +58,12 @@ std::ostream& operator<<(std::ostream& out, TexelFormat value);
|
|||
/// @returns the parsed enum, or TexelFormat::kInvalid if the string could not be parsed.
|
||||
TexelFormat ParseTexelFormat(std::string_view str);
|
||||
|
||||
constexpr const char* kTexelFormatStrings[] = {
|
||||
"r32float", "r32sint", "r32uint", "rg32float", "rg32sint", "rg32uint",
|
||||
"rgba16float", "rgba16sint", "rgba16uint", "rgba32float", "rgba32sint", "rgba32uint",
|
||||
"rgba8sint", "rgba8snorm", "rgba8uint", "rgba8unorm",
|
||||
};
|
||||
|
||||
} // namespace tint::ast
|
||||
|
||||
#endif // SRC_TINT_AST_TEXEL_FORMAT_H_
|
||||
|
|
|
@ -28,6 +28,14 @@ std::ostream& operator<<(std::ostream& out, {{$enum}} value);
|
|||
/// @returns the parsed enum, or {{$enum}}::kInvalid if the string could not be parsed.
|
||||
{{$enum}} Parse{{$enum}}(std::string_view str);
|
||||
|
||||
constexpr const char* k{{$enum}}Strings[] = {
|
||||
{{- range $entry := $.Entries }}
|
||||
{{- if not $entry.IsInternal}}
|
||||
"{{$entry.Name}}",
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
};
|
||||
|
||||
{{- end -}}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue