blob: 1371c35908389412d7d47b1ac597eb1a3ca454d5 [file] [log] [blame]
Austin Engcc2516a2023-10-17 20:57:54 +00001// Copyright 2022 The Dawn & Tint Authors
Ben Clayton08659d02022-07-27 22:30:10 +00002//
Austin Engcc2516a2023-10-17 20:57:54 +00003// Redistribution and use in source and binary forms, with or without
4// modification, are permitted provided that the following conditions are met:
Ben Clayton08659d02022-07-27 22:30:10 +00005//
Austin Engcc2516a2023-10-17 20:57:54 +00006// 1. Redistributions of source code must retain the above copyright notice, this
7// list of conditions and the following disclaimer.
Ben Clayton08659d02022-07-27 22:30:10 +00008//
Austin Engcc2516a2023-10-17 20:57:54 +00009// 2. Redistributions in binary form must reproduce the above copyright notice,
10// this list of conditions and the following disclaimer in the documentation
11// and/or other materials provided with the distribution.
12//
13// 3. Neither the name of the copyright holder nor the names of its
14// contributors may be used to endorse or promote products derived from
15// this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
21// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Ben Clayton08659d02022-07-27 22:30:10 +000027
28////////////////////////////////////////////////////////////////////////////////
Ben Clayton57ded6a2023-08-22 13:22:22 +000029// File generated by 'tools/src/cmd/gen' using the template:
Ben Claytoncd52f382023-08-07 13:11:08 +000030// src/tint/lang/core/texel_format.cc.tmpl
Ben Clayton08659d02022-07-27 22:30:10 +000031//
Ben Clayton57ded6a2023-08-22 13:22:22 +000032// To regenerate run: './tools/run gen'
33//
34// Do not modify this file directly
Ben Clayton08659d02022-07-27 22:30:10 +000035////////////////////////////////////////////////////////////////////////////////
36
Ben Claytoncd52f382023-08-07 13:11:08 +000037#include "src/tint/lang/core/texel_format.h"
Ben Clayton08659d02022-07-27 22:30:10 +000038
Ben Claytoncd52f382023-08-07 13:11:08 +000039namespace tint::core {
Ben Clayton08659d02022-07-27 22:30:10 +000040
41/// ParseTexelFormat parses a TexelFormat from a string.
42/// @param str the string to parse
Ben Claytond2e0db32022-10-12 18:49:15 +000043/// @returns the parsed enum, or TexelFormat::kUndefined if the string could not be parsed.
Ben Clayton08659d02022-07-27 22:30:10 +000044TexelFormat ParseTexelFormat(std::string_view str) {
Ben Claytond03dcee2023-01-18 19:42:03 +000045 if (str == "bgra8unorm") {
46 return TexelFormat::kBgra8Unorm;
47 }
Ben Claytondb368f12022-10-11 18:26:18 +000048 if (str == "r32float") {
49 return TexelFormat::kR32Float;
50 }
51 if (str == "r32sint") {
52 return TexelFormat::kR32Sint;
53 }
54 if (str == "r32uint") {
55 return TexelFormat::kR32Uint;
56 }
Ben Clayton448c01b2024-02-28 00:23:17 +000057 if (str == "r8unorm") {
58 return TexelFormat::kR8Unorm;
59 }
Ben Claytondb368f12022-10-11 18:26:18 +000060 if (str == "rg32float") {
61 return TexelFormat::kRg32Float;
62 }
63 if (str == "rg32sint") {
64 return TexelFormat::kRg32Sint;
65 }
66 if (str == "rg32uint") {
67 return TexelFormat::kRg32Uint;
68 }
69 if (str == "rgba16float") {
70 return TexelFormat::kRgba16Float;
71 }
72 if (str == "rgba16sint") {
73 return TexelFormat::kRgba16Sint;
74 }
75 if (str == "rgba16uint") {
76 return TexelFormat::kRgba16Uint;
77 }
78 if (str == "rgba32float") {
79 return TexelFormat::kRgba32Float;
80 }
81 if (str == "rgba32sint") {
82 return TexelFormat::kRgba32Sint;
83 }
84 if (str == "rgba32uint") {
85 return TexelFormat::kRgba32Uint;
86 }
87 if (str == "rgba8sint") {
88 return TexelFormat::kRgba8Sint;
Ben Clayton08659d02022-07-27 22:30:10 +000089 }
90 if (str == "rgba8snorm") {
91 return TexelFormat::kRgba8Snorm;
92 }
93 if (str == "rgba8uint") {
94 return TexelFormat::kRgba8Uint;
95 }
Ben Claytondb368f12022-10-11 18:26:18 +000096 if (str == "rgba8unorm") {
97 return TexelFormat::kRgba8Unorm;
Ben Clayton08659d02022-07-27 22:30:10 +000098 }
Ben Claytond2e0db32022-10-12 18:49:15 +000099 return TexelFormat::kUndefined;
Ben Clayton08659d02022-07-27 22:30:10 +0000100}
101
Ben Clayton68919602023-07-28 22:51:18 +0000102std::string_view ToString(TexelFormat value) {
Ben Clayton08659d02022-07-27 22:30:10 +0000103 switch (value) {
Ben Claytond2e0db32022-10-12 18:49:15 +0000104 case TexelFormat::kUndefined:
Ben Clayton68919602023-07-28 22:51:18 +0000105 return "undefined";
Ben Claytond03dcee2023-01-18 19:42:03 +0000106 case TexelFormat::kBgra8Unorm:
Ben Clayton68919602023-07-28 22:51:18 +0000107 return "bgra8unorm";
Ben Claytondb368f12022-10-11 18:26:18 +0000108 case TexelFormat::kR32Float:
Ben Clayton68919602023-07-28 22:51:18 +0000109 return "r32float";
Ben Claytondb368f12022-10-11 18:26:18 +0000110 case TexelFormat::kR32Sint:
Ben Clayton68919602023-07-28 22:51:18 +0000111 return "r32sint";
Ben Claytondb368f12022-10-11 18:26:18 +0000112 case TexelFormat::kR32Uint:
Ben Clayton68919602023-07-28 22:51:18 +0000113 return "r32uint";
Ben Clayton448c01b2024-02-28 00:23:17 +0000114 case TexelFormat::kR8Unorm:
115 return "r8unorm";
Ben Claytondb368f12022-10-11 18:26:18 +0000116 case TexelFormat::kRg32Float:
Ben Clayton68919602023-07-28 22:51:18 +0000117 return "rg32float";
Ben Claytondb368f12022-10-11 18:26:18 +0000118 case TexelFormat::kRg32Sint:
Ben Clayton68919602023-07-28 22:51:18 +0000119 return "rg32sint";
Ben Claytondb368f12022-10-11 18:26:18 +0000120 case TexelFormat::kRg32Uint:
Ben Clayton68919602023-07-28 22:51:18 +0000121 return "rg32uint";
Ben Claytondb368f12022-10-11 18:26:18 +0000122 case TexelFormat::kRgba16Float:
Ben Clayton68919602023-07-28 22:51:18 +0000123 return "rgba16float";
Ben Claytondb368f12022-10-11 18:26:18 +0000124 case TexelFormat::kRgba16Sint:
Ben Clayton68919602023-07-28 22:51:18 +0000125 return "rgba16sint";
Ben Claytondb368f12022-10-11 18:26:18 +0000126 case TexelFormat::kRgba16Uint:
Ben Clayton68919602023-07-28 22:51:18 +0000127 return "rgba16uint";
Ben Claytondb368f12022-10-11 18:26:18 +0000128 case TexelFormat::kRgba32Float:
Ben Clayton68919602023-07-28 22:51:18 +0000129 return "rgba32float";
Ben Claytondb368f12022-10-11 18:26:18 +0000130 case TexelFormat::kRgba32Sint:
Ben Clayton68919602023-07-28 22:51:18 +0000131 return "rgba32sint";
Ben Claytondb368f12022-10-11 18:26:18 +0000132 case TexelFormat::kRgba32Uint:
Ben Clayton68919602023-07-28 22:51:18 +0000133 return "rgba32uint";
Ben Claytondb368f12022-10-11 18:26:18 +0000134 case TexelFormat::kRgba8Sint:
Ben Clayton68919602023-07-28 22:51:18 +0000135 return "rgba8sint";
Ben Clayton08659d02022-07-27 22:30:10 +0000136 case TexelFormat::kRgba8Snorm:
Ben Clayton68919602023-07-28 22:51:18 +0000137 return "rgba8snorm";
Ben Clayton08659d02022-07-27 22:30:10 +0000138 case TexelFormat::kRgba8Uint:
Ben Clayton68919602023-07-28 22:51:18 +0000139 return "rgba8uint";
Ben Claytondb368f12022-10-11 18:26:18 +0000140 case TexelFormat::kRgba8Unorm:
Ben Clayton68919602023-07-28 22:51:18 +0000141 return "rgba8unorm";
Ben Clayton08659d02022-07-27 22:30:10 +0000142 }
Ben Clayton68919602023-07-28 22:51:18 +0000143 return "<unknown>";
Ben Clayton08659d02022-07-27 22:30:10 +0000144}
145
Ben Claytoncd52f382023-08-07 13:11:08 +0000146} // namespace tint::core