tint: Replace all remaining AST types with ast::Type

This CL removes the following AST nodes:
* ast::Array
* ast::Atomic
* ast::Matrix
* ast::MultisampledTexture
* ast::Pointer
* ast::SampledTexture
* ast::Texture
* ast::TypeName
* ast::Vector

ast::Type, which used to be the base class for all AST types, is now a
thin wrapper around ast::IdentifierExpression. All types are now
referred to using their type name.

The resolver now handles type resolution and validation of the types
listed above based on the TemplateIdentifier arguments.

Other changes:
* ProgramBuilder has undergone substantial refactoring.
* ProgramBuilder helpers for type inferencing is now more explicit.
  Instead of passing 'nullptr', a new 'Infer' template argument is
  passed.
* ast::CheckIdentifier() is used for more tests that check identifiers,
  including types.

Bug: tint:1810
Change-Id: I8e739ef49435dc1c20a462f3ec5ba265661a7edb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/118723
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
This commit is contained in:
Ben Clayton
2023-02-14 13:52:43 +00:00
committed by Dawn LUCI CQ
parent c950ff08b6
commit 971318f7a2
295 changed files with 4613 additions and 5901 deletions

View File

@@ -28,6 +28,12 @@ namespace tint::type {
/// @param str the string to parse
/// @returns the parsed enum, or Builtin::kUndefined if the string could not be parsed.
Builtin ParseBuiltin(std::string_view str) {
if (str == "array") {
return Builtin::kArray;
}
if (str == "atomic") {
return Builtin::kAtomic;
}
if (str == "bool") {
return Builtin::kBool;
}
@@ -40,66 +46,114 @@ Builtin ParseBuiltin(std::string_view str) {
if (str == "i32") {
return Builtin::kI32;
}
if (str == "mat2x2") {
return Builtin::kMat2X2;
}
if (str == "mat2x2f") {
return Builtin::kMat2X2F;
}
if (str == "mat2x2h") {
return Builtin::kMat2X2H;
}
if (str == "mat2x3") {
return Builtin::kMat2X3;
}
if (str == "mat2x3f") {
return Builtin::kMat2X3F;
}
if (str == "mat2x3h") {
return Builtin::kMat2X3H;
}
if (str == "mat2x4") {
return Builtin::kMat2X4;
}
if (str == "mat2x4f") {
return Builtin::kMat2X4F;
}
if (str == "mat2x4h") {
return Builtin::kMat2X4H;
}
if (str == "mat3x2") {
return Builtin::kMat3X2;
}
if (str == "mat3x2f") {
return Builtin::kMat3X2F;
}
if (str == "mat3x2h") {
return Builtin::kMat3X2H;
}
if (str == "mat3x3") {
return Builtin::kMat3X3;
}
if (str == "mat3x3f") {
return Builtin::kMat3X3F;
}
if (str == "mat3x3h") {
return Builtin::kMat3X3H;
}
if (str == "mat3x4") {
return Builtin::kMat3X4;
}
if (str == "mat3x4f") {
return Builtin::kMat3X4F;
}
if (str == "mat3x4h") {
return Builtin::kMat3X4H;
}
if (str == "mat4x2") {
return Builtin::kMat4X2;
}
if (str == "mat4x2f") {
return Builtin::kMat4X2F;
}
if (str == "mat4x2h") {
return Builtin::kMat4X2H;
}
if (str == "mat4x3") {
return Builtin::kMat4X3;
}
if (str == "mat4x3f") {
return Builtin::kMat4X3F;
}
if (str == "mat4x3h") {
return Builtin::kMat4X3H;
}
if (str == "mat4x4") {
return Builtin::kMat4X4;
}
if (str == "mat4x4f") {
return Builtin::kMat4X4F;
}
if (str == "mat4x4h") {
return Builtin::kMat4X4H;
}
if (str == "ptr") {
return Builtin::kPtr;
}
if (str == "sampler") {
return Builtin::kSampler;
}
if (str == "sampler_comparison") {
return Builtin::kSamplerComparison;
}
if (str == "texture_1d") {
return Builtin::kTexture1D;
}
if (str == "texture_2d") {
return Builtin::kTexture2D;
}
if (str == "texture_2d_array") {
return Builtin::kTexture2DArray;
}
if (str == "texture_3d") {
return Builtin::kTexture3D;
}
if (str == "texture_cube") {
return Builtin::kTextureCube;
}
if (str == "texture_cube_array") {
return Builtin::kTextureCubeArray;
}
if (str == "texture_depth_2d") {
return Builtin::kTextureDepth2D;
}
@@ -118,6 +172,9 @@ Builtin ParseBuiltin(std::string_view str) {
if (str == "texture_external") {
return Builtin::kTextureExternal;
}
if (str == "texture_multisampled_2d") {
return Builtin::kTextureMultisampled2D;
}
if (str == "texture_storage_1d") {
return Builtin::kTextureStorage1D;
}
@@ -133,6 +190,9 @@ Builtin ParseBuiltin(std::string_view str) {
if (str == "u32") {
return Builtin::kU32;
}
if (str == "vec2") {
return Builtin::kVec2;
}
if (str == "vec2f") {
return Builtin::kVec2F;
}
@@ -145,6 +205,9 @@ Builtin ParseBuiltin(std::string_view str) {
if (str == "vec2u") {
return Builtin::kVec2U;
}
if (str == "vec3") {
return Builtin::kVec3;
}
if (str == "vec3f") {
return Builtin::kVec3F;
}
@@ -157,6 +220,9 @@ Builtin ParseBuiltin(std::string_view str) {
if (str == "vec3u") {
return Builtin::kVec3U;
}
if (str == "vec4") {
return Builtin::kVec4;
}
if (str == "vec4f") {
return Builtin::kVec4F;
}
@@ -176,6 +242,10 @@ std::ostream& operator<<(std::ostream& out, Builtin value) {
switch (value) {
case Builtin::kUndefined:
return out << "undefined";
case Builtin::kArray:
return out << "array";
case Builtin::kAtomic:
return out << "atomic";
case Builtin::kBool:
return out << "bool";
case Builtin::kF16:
@@ -184,46 +254,78 @@ std::ostream& operator<<(std::ostream& out, Builtin value) {
return out << "f32";
case Builtin::kI32:
return out << "i32";
case Builtin::kMat2X2:
return out << "mat2x2";
case Builtin::kMat2X2F:
return out << "mat2x2f";
case Builtin::kMat2X2H:
return out << "mat2x2h";
case Builtin::kMat2X3:
return out << "mat2x3";
case Builtin::kMat2X3F:
return out << "mat2x3f";
case Builtin::kMat2X3H:
return out << "mat2x3h";
case Builtin::kMat2X4:
return out << "mat2x4";
case Builtin::kMat2X4F:
return out << "mat2x4f";
case Builtin::kMat2X4H:
return out << "mat2x4h";
case Builtin::kMat3X2:
return out << "mat3x2";
case Builtin::kMat3X2F:
return out << "mat3x2f";
case Builtin::kMat3X2H:
return out << "mat3x2h";
case Builtin::kMat3X3:
return out << "mat3x3";
case Builtin::kMat3X3F:
return out << "mat3x3f";
case Builtin::kMat3X3H:
return out << "mat3x3h";
case Builtin::kMat3X4:
return out << "mat3x4";
case Builtin::kMat3X4F:
return out << "mat3x4f";
case Builtin::kMat3X4H:
return out << "mat3x4h";
case Builtin::kMat4X2:
return out << "mat4x2";
case Builtin::kMat4X2F:
return out << "mat4x2f";
case Builtin::kMat4X2H:
return out << "mat4x2h";
case Builtin::kMat4X3:
return out << "mat4x3";
case Builtin::kMat4X3F:
return out << "mat4x3f";
case Builtin::kMat4X3H:
return out << "mat4x3h";
case Builtin::kMat4X4:
return out << "mat4x4";
case Builtin::kMat4X4F:
return out << "mat4x4f";
case Builtin::kMat4X4H:
return out << "mat4x4h";
case Builtin::kPtr:
return out << "ptr";
case Builtin::kSampler:
return out << "sampler";
case Builtin::kSamplerComparison:
return out << "sampler_comparison";
case Builtin::kTexture1D:
return out << "texture_1d";
case Builtin::kTexture2D:
return out << "texture_2d";
case Builtin::kTexture2DArray:
return out << "texture_2d_array";
case Builtin::kTexture3D:
return out << "texture_3d";
case Builtin::kTextureCube:
return out << "texture_cube";
case Builtin::kTextureCubeArray:
return out << "texture_cube_array";
case Builtin::kTextureDepth2D:
return out << "texture_depth_2d";
case Builtin::kTextureDepth2DArray:
@@ -236,6 +338,8 @@ std::ostream& operator<<(std::ostream& out, Builtin value) {
return out << "texture_depth_multisampled_2d";
case Builtin::kTextureExternal:
return out << "texture_external";
case Builtin::kTextureMultisampled2D:
return out << "texture_multisampled_2d";
case Builtin::kTextureStorage1D:
return out << "texture_storage_1d";
case Builtin::kTextureStorage2D:
@@ -246,6 +350,8 @@ std::ostream& operator<<(std::ostream& out, Builtin value) {
return out << "texture_storage_3d";
case Builtin::kU32:
return out << "u32";
case Builtin::kVec2:
return out << "vec2";
case Builtin::kVec2F:
return out << "vec2f";
case Builtin::kVec2H:
@@ -254,6 +360,8 @@ std::ostream& operator<<(std::ostream& out, Builtin value) {
return out << "vec2i";
case Builtin::kVec2U:
return out << "vec2u";
case Builtin::kVec3:
return out << "vec3";
case Builtin::kVec3F:
return out << "vec3f";
case Builtin::kVec3H:
@@ -262,6 +370,8 @@ std::ostream& operator<<(std::ostream& out, Builtin value) {
return out << "vec3i";
case Builtin::kVec3U:
return out << "vec3u";
case Builtin::kVec4:
return out << "vec4";
case Builtin::kVec4F:
return out << "vec4f";
case Builtin::kVec4H:

View File

@@ -30,49 +30,71 @@ namespace tint::type {
/// An enumerator of builtin types.
enum class Builtin {
kUndefined,
kArray,
kAtomic,
kBool,
kF16,
kF32,
kI32,
kMat2X2,
kMat2X2F,
kMat2X2H,
kMat2X3,
kMat2X3F,
kMat2X3H,
kMat2X4,
kMat2X4F,
kMat2X4H,
kMat3X2,
kMat3X2F,
kMat3X2H,
kMat3X3,
kMat3X3F,
kMat3X3H,
kMat3X4,
kMat3X4F,
kMat3X4H,
kMat4X2,
kMat4X2F,
kMat4X2H,
kMat4X3,
kMat4X3F,
kMat4X3H,
kMat4X4,
kMat4X4F,
kMat4X4H,
kPtr,
kSampler,
kSamplerComparison,
kTexture1D,
kTexture2D,
kTexture2DArray,
kTexture3D,
kTextureCube,
kTextureCubeArray,
kTextureDepth2D,
kTextureDepth2DArray,
kTextureDepthCube,
kTextureDepthCubeArray,
kTextureDepthMultisampled2D,
kTextureExternal,
kTextureMultisampled2D,
kTextureStorage1D,
kTextureStorage2D,
kTextureStorage2DArray,
kTextureStorage3D,
kU32,
kVec2,
kVec2F,
kVec2H,
kVec2I,
kVec2U,
kVec3,
kVec3F,
kVec3H,
kVec3I,
kVec3U,
kVec4,
kVec4F,
kVec4H,
kVec4I,
@@ -90,49 +112,71 @@ std::ostream& operator<<(std::ostream& out, Builtin value);
Builtin ParseBuiltin(std::string_view str);
constexpr const char* kBuiltinStrings[] = {
"array",
"atomic",
"bool",
"f16",
"f32",
"i32",
"mat2x2",
"mat2x2f",
"mat2x2h",
"mat2x3",
"mat2x3f",
"mat2x3h",
"mat2x4",
"mat2x4f",
"mat2x4h",
"mat3x2",
"mat3x2f",
"mat3x2h",
"mat3x3",
"mat3x3f",
"mat3x3h",
"mat3x4",
"mat3x4f",
"mat3x4h",
"mat4x2",
"mat4x2f",
"mat4x2h",
"mat4x3",
"mat4x3f",
"mat4x3h",
"mat4x4",
"mat4x4f",
"mat4x4h",
"ptr",
"sampler",
"sampler_comparison",
"texture_1d",
"texture_2d",
"texture_2d_array",
"texture_3d",
"texture_cube",
"texture_cube_array",
"texture_depth_2d",
"texture_depth_2d_array",
"texture_depth_cube",
"texture_depth_cube_array",
"texture_depth_multisampled_2d",
"texture_external",
"texture_multisampled_2d",
"texture_storage_1d",
"texture_storage_2d",
"texture_storage_2d_array",
"texture_storage_3d",
"u32",
"vec2",
"vec2f",
"vec2h",
"vec2i",
"vec2u",
"vec3",
"vec3f",
"vec3h",
"vec3i",
"vec3u",
"vec4",
"vec4f",
"vec4h",
"vec4i",

View File

@@ -31,335 +31,489 @@ namespace {
void BuiltinParser(::benchmark::State& state) {
const char* kStrings[] = {
"ccol",
"3",
"bVol",
"arccy",
"3a",
"aVray",
"array",
"arra1",
"qqrJy",
"arrll7y",
"atppmHHc",
"cto",
"abGmi",
"atomic",
"atvmiii",
"atWWm8c",
"xxtomc",
"bXgg",
"Xu",
"b3ol",
"bool",
"1ool",
"bqoJ",
"bllo77",
"fppqH",
"",
"Gb",
"f16",
"f1vi",
"f8WW",
"fxx",
"fgg",
"X",
"332",
"f32",
"fE2",
"fPTT",
"dxx2",
"4432",
"iSVV2",
"booE",
"TTPol",
"xxool",
"4416",
"fSVV6",
"RR2",
"f16",
"96",
"f1",
"VOR6",
"y3",
"l77rrn2",
"4032",
"f32",
"5",
"u377",
"kk2",
"ii",
"i3XX",
"55399II",
"i32",
"92",
"i3",
"VOR2",
"ma2xyf",
"llnarr2772f",
"mat24200",
"mat2x2f",
"a2oof",
"zz2x2f",
"miitppx1",
"mat2xXXh",
"9II5ann2x2h",
"mataSSrHHYh",
"mat2x2h",
"makkh",
"jatgRx",
"mb2x2",
"irSSHHa",
"U",
"jV3",
"ax2",
"t2SGG",
"q2x2",
"mat2x2",
"at2",
"majjx",
"a2xrf",
"mat2xjf",
"at2x3f",
"q2x3f",
"mNNw2x28",
"matx2f",
"mat2x2f",
"mrrt2x2f",
"Gat2x2f",
"mat2x2FF",
"at2h",
"marrx2h",
"t2x2h",
"mat2x2h",
"Da2xJJh",
"ma82",
"m11k2",
"matx3",
"maJx3",
"cat2x3",
"mat2x3",
"mat2O3",
"ttKavv2x__",
"5txxx8",
"__qatF3",
"matqx3f",
"33atOx3f",
"mat2x3f",
"matNN3f",
"at23vv",
"QQt2x3f",
"maffxr",
"mat2xjh",
"mNNw2x38",
"mat2x3h",
"matx3h",
"mrrt2x3h",
"Gat2x3h",
"mat2x4FF",
"at2f",
"marrx4f",
"mat2x4f",
"t2x4f",
"Da2xJJf",
"ma84",
"m11k4",
"matx4h",
"maJx4h",
"mat2x4h",
"mat2c4h",
"mat2x4O",
"KK_atvvtt4h",
"xx83x2f",
"__qatF2",
"matqx2f",
"mat3x2f",
"33atOx2f",
"mtt63x9oQQ",
"ma3x66f",
"mtt62x9oQQ",
"ma2x66f",
"mtOxzz66",
"mat3yy2h",
"ZaHH2Z",
"mat3x2h",
"4WWt3q2h",
"mOO3x2h",
"oatY2h",
"mat2yy3h",
"ZaHH3Z",
"4WWt2q3h",
"mat2x3h",
"mOO2x3h",
"oatY3h",
"matx",
"ma3xFf",
"at3x3w",
"mat3x3f",
"fGtxKf",
"matqKx3f",
"matmmxFf",
"at3x3h",
"mt3x3q",
"mat3xbb",
"mat3x3h",
"mi3x3h",
"maOO3xq",
"matTvvx3h",
"maFF3x4f",
"Pa00xQf",
"mPt3x4f",
"mat3x4f",
"ma773xss",
"RRCbb3x4f",
"mXXt3x4f",
"qaCC3xOOh",
"ma3s4L",
"mXt3x4h",
"mat3x4h",
"mat34h",
"qa3O4",
"mat3x22h",
"myzz40XX",
"ma2x4",
"matw4",
"ma2Gf",
"mat2x4",
"qatKKx4",
"mmmt2x4",
"at2x4",
"mt2x4q",
"mat2xbb",
"mi2x4f",
"mat2x4f",
"maOO2xq",
"matTvvx4f",
"maFF2x4f",
"Pa00xQh",
"mPt2x4h",
"ma772xss",
"mat2x4h",
"RRCbb2x4h",
"mXXt2x4h",
"qaCC2xOOh",
"mtsuL",
"mat3xX",
"mat3x",
"mat3x2",
"qqt2",
"mat3x22",
"mzzyt3x",
"matVViP",
"mannC2f",
"mat4x2f",
"atx2AHHq",
"mat3x2f",
"may3x2",
"aOOOZZf",
"Vt12f",
"mff__3x2h",
"qaTMMl4h",
"mNNt3xg",
"mat3x2h",
"uub3XX2h",
"matx2h",
"Qt882h",
"maqx3",
"mat3113",
"Ft3xi22",
"mat3x3",
"m7t3x3",
"NNa323",
"VVat3x3",
"FaWW3w11f",
"mawwx3f",
"Dat3x3f",
"mat3x3f",
"mt3x3K",
"mat31PPhf",
"mat33f",
"mYYt3x3h",
"mttHH3kk",
"mat3rr3h",
"mat3x3h",
"WWas3x3h",
"Yt3x3h",
"mt3qfh",
"vvafu224",
"mt34",
"maY34",
"mat3x4",
"YYa7y3E4",
"Moatd4",
"mt3xMM",
"mat3x55f",
"maN34",
"ma3Ox33",
"mat3x4f",
"m3t3x4f",
"mam3xI",
"mnnt3r4K",
"m3XX",
"LatIx4h",
"at3fh",
"mat3x4h",
"mYtURD4",
"mah3x4h",
"uuIqt3x",
"mat4xH",
"at4Qvv",
"66ate",
"mat4x2",
"fatK2f",
"ltgg2h",
"mat4xh",
"NTTtcx4h",
"mat7x",
"m0t55DD2",
"IIaH4x2",
"at4x2",
"rat4x299",
"mGtt41W2f",
"mat4x2f",
"yatx2",
"mt4x2f",
"IIaBB4x2f",
"TTat4x833",
"ddUUnntYYx2h",
"m5CCxxdZ",
"mat4x2h",
"ma7ppl2h",
"mNNt4xg",
"uub4XX2h",
"matx3f",
"Qt883f",
"mt9q3f",
"matkkq2h",
"005itpxh",
"maIInnx2h",
"ccaKx",
"mtKK",
"ma664x3",
"mat4x3",
"mKKtPx",
"maxx43",
"matqx3",
"MMayySrxf",
"mat3f",
"tx3f",
"mat4x3f",
"m11t4x3f",
"22at4iif",
"at4x377",
"m2t4xNh",
"mVVt4x3h",
"FaWW4w11h",
"ma5F4x3f",
"rra444z3f",
"matWW",
"CatZJXx3h",
"maPPx3h",
"mat4c3h",
"mat4x3h",
"mawwx3h",
"Dat4x3h",
"mt4x3K",
"mat41PPhf",
"mat44f",
"mYYt4x4f",
"matPPll6h",
"mat993yy",
"mat4JKKh",
"ma_x4",
"a4K4",
"kVt4xz",
"mat4x4",
"qaSKx4",
"mat44",
"ma4xVV",
"AAatIxUf",
"mbj4f",
"YY444x",
"mat4x4f",
"mttHH4kk",
"mat4rr4f",
"WWas4x4f",
"Yt4x4h",
"mt4qfh",
"mav224xuh",
"mao4x4",
"mtx114f",
"mtmxccf",
"aJJ4x4h",
"fCCDD4x4U",
"mgt4x4h",
"mat4x4h",
"t4x4h",
"YYat4h",
"may4x4EYY",
"daplMor",
"samMMle",
"sampl55r",
"sampler",
"saNpe",
"sa3Ol33",
"s3mpler",
"Iamplercomparismn",
"sampleKrcompannison",
"samlr_copXXison",
"sampler_comparison",
"samplpLL_comparisI",
"smplerfomparison",
"sYmpURDr_comprison",
"texturh_depth_2d",
"teqtureuIIdep_2d",
"texture_depth_2H",
"texture_depth_2d",
"texre_depth_2Qvv",
"te66ue_depeh_2d",
"textue_d7pOh_2d",
"textureDDde0th_255_array",
"texture_IIepth_Hd_array",
"txture_depth_2d_array",
"texture_depth_2d_array",
"txture_depth_2r_array",
"tlxture_depth_2d_array",
"ttexturGdeth_2d_arrJJy",
"yexture_depth_cbe",
"texturedepth_cube",
"texture_IIeptBB_cube",
"texture_depth_cube",
"textKre_depth_c83TTe",
"texSnnYUUure_depth_cube",
"textuxe_5eptCCdZube",
"texturekkdepth_cube_arraq",
"exture_dppt00iicube5array",
"texIIurenndepth_cube_array",
"texture_depth_cube_array",
"ccextue_depth_cube_aKWa",
"texture_epth_cube_raKK",
"texture_depth_cube_a66ray",
"textEPPeKKdept_multisampled_2",
"texture_depth_mutisampledxx2d",
"texture_depth_qultisampled_2d",
"texture_depth_multisampled_2d",
"textureyydMMptr_mutisampleSS_2d",
"txture_depth_muluisampled2d",
"texSure_ept_mutisampled_2d",
"textu5e_externFFl",
"text44rrr_exterzal",
"texue_eWWtenal",
"texture_external",
"textuXe_ZZxtJJrnal",
"textuPPe_eternal",
"texturc_external",
"tllxture_storage_P6d",
"tex99ure_yytorag_1d",
"textuKKe_storage_1d",
"texture_storage_1d",
"texture__xorage_d",
"yxKur_storage_1d",
"textureVstorkge_1z",
"texKure_Storqge_2d",
"texture_storage_d",
"teture_storage_VVd",
"texture_storage_2d",
"textureIstoraAUe_2d",
"jextre_storaR_2d",
"extue44storYYge_2",
"textre_storage_2d_array",
"tex9ur_stor11ge_d_xxrray",
"tmmxture_storJe_2d_arrcc",
"texture_storage_2d_array",
"tJJxture_storage_2_array",
"DDCCltufe_storaUe_2d_array",
"tegture_storage_2d_array",
"exture_srageCC3d",
"txture_storage_3d",
"textuIe_sto__age_3d",
"texture_storage_3d",
"texttte_PPorage_3d",
"texture_stora3de_3d",
"exture_Ktoragyy_3d",
"CCx4h",
"mat4x66",
"maN4M4h",
"pt",
"KW",
"pzzee",
"ptr",
"",
"03nn",
"uCnuu",
"w9",
"4tnn",
"sllDler",
"oamp4er",
"wEaggler",
"sampler",
"gamler",
"spleS",
"aampl",
"sampZcRTr_comparison",
"sampler_88TmparisOn",
"sampler_comparim00n",
"sampler_comparison",
"sampler_Bmomparison",
"Mamper_ppomarison",
"samper_compOOrison",
"teGtGre_1d",
"tex11ureHH1d",
"6exeeur_1FF",
"texture_1d",
"texure_1",
"tKiilure_1d",
"exture_1d",
"99etvIIre_2d",
"texture_d",
"texture_hd",
"texture_2d",
"llxzzure_PPd",
"exue2d",
"tffqqtre_2d",
"texJJre_2dd_arWay",
"teXXzzre_2darray",
"textu2_2d_array",
"texture_2d_array",
"tNyyture_2d_array",
"txture_2d_rOOa",
"textureErduaZPay",
"22lxtredd3ee",
"texVVe93d",
"teture_I1d",
"texture_3d",
"tebture_3d",
"ie7ure3d",
"teotiire_3d",
"entre_cube",
"texturScube",
"tex22r_cube",
"texture_cube",
"teC711recuGe",
"texture8cffbe",
"textue_cue",
"tJJxture_SSube_array",
"texture_9ue_arry",
"TbbJJxture_cube_array",
"texture_cube_array",
"t66ture_cube_aray",
"textur66_cubu_arra",
"textureWubeyarray",
"texture_deth_d",
"texture_epth_2d",
"texture_derth_2d",
"texture_depth_2d",
"tex2ure_depth_2B",
"texture_dpBBh_2d",
"texture_dpth_RRd",
"tLLxture_deptVV0darray",
"textuOOe_dethKK2d_arra",
"textuwe_ggepth_2d_rray",
"texture_depth_2d_array",
"textue_depthLh2d_arpay",
"texture_depEh2diiKrray",
"texture_dept_2d_array",
"textuUUe88dept_cbe",
"texrrure_depvvh_cube",
"texure_wepmmh_ube",
"texture_depth_cube",
"tjture_d44pth_cube",
"texture_depth_cXbe",
"t8xture_depth_cube",
"textre_depth_cubeEEarrvvy",
"tzzture_d9pth_cuie_array",
"teAture_depth_QQube_GGrrJJy",
"texture_depth_cube_array",
"texture_depth_cusse_array",
"texture_Pepth_cKbe_array",
"texture_dppp_cube_attray",
"texture_depth_multisample_2",
"texture_depth_multisamplMMd_2d",
"texJJure_de0th_multisampled_2d",
"texture_depth_multisampled_2d",
"textu8_dpth_mulisampled_2V",
"texture_dhhpth_mKltisggmpled_2d",
"texture_depth_multisampledf2d",
"tex77ure_exQernal",
"tYYxture_externa",
"tektur_exterSal",
"texture_external",
"txturn_ext2rnal",
"txture_FFternal",
"texUPPIre_GGxuernal",
"txtuEEe_mulaisFmpledv2d",
"ddexBBure_mltDDeampled_2d",
"teMture_EEulccisam55led_2",
"texture_multisampled_2d",
"texturemuKKtisample_d",
"texture_multisRmpled_2d",
"texturemulDisampl9d_2d",
"texturestorage_1d",
"textIre_storaa_1d",
"texture_sto77age_1d",
"texture_storage_1d",
"texIure_storage_1d",
"texture_storagedd",
"texture_storae_1d",
"texture_strate_d",
"texture33stoXXcge_2d",
"texturestorage_2E",
"texture_storage_2d",
"textuXXestorage_2d",
"texture_stoBaxxe_2d",
"texte_storWge_2G",
"texture_storage_2d_ar66ay",
"t0xTTr_storave_2d_array",
"kexure_orage_2d_rray",
"texture_storage_2d_array",
"textppre_stoae_2d_array",
"textre_stora11e_d_array",
"textureystorBEgeJ2d_array",
"textqreIImtxrage_3d",
"texture_toFage_3d",
"exture_Ytorage_3d",
"texture_storage_3d",
"heDture_sHHorage_3d",
"texturstorage23H",
"teture_strage_3d",
"u2",
"u2",
"dd32",
"u32",
"3Xl",
"pp3o",
"uww",
"veuug",
"vaac",
"TRZcccf",
"uPO",
"ba",
"u02",
"veh2",
"vgY2",
"Oec2",
"vec2",
"eh",
"ppfe2",
"vev",
"vc2zz",
"vaac2",
"Ouuicf",
"vec2f",
"vTc2O8",
"vem02f",
"meBB2f",
"Mpp2",
"OOe2h",
"veG2G",
"vGc2f",
"22ecTTf",
"dlc2f",
"vecbh",
"ec2BB",
"IIScXPP",
"vec2h",
"11eHH2h",
"veFFe6",
"ve2",
"vKii2l",
"ec2i",
"v992IIv",
"jjec2h",
"cc_c2h",
"zz6xx2h",
"c2",
"4xx2N",
"p0AAei",
"vec2i",
"veci",
"vechi",
"vczllPi",
"u",
"vffqq2",
"vJdd2u",
"vey2",
"vbWW0i",
"meMMtti",
"du",
"vvc_",
"VEEc2u",
"vec2u",
"vecXX",
"ve22",
"Nyyc2u",
"vO3",
"PEruZ",
"vlc2edd",
"vec3f",
"ec9f",
"ve1II",
"veb3f",
"vi7",
"oec3ii",
"ec3",
"vec3h",
"veci",
"22ec",
"vGc3C",
"ffec38",
"c3i",
"JJecSSi",
"vec3i",
"93i",
"vbbJJ3TT",
"e66i",
"u663u",
"vW3u",
"v3u",
"vec3u",
"vecu",
"rec3u",
"2ec3B",
"vcBBf",
"vRc4f",
"v4LL0",
"vec4f",
"vKOOf",
"vgwcf",
"vLphf",
"eiiEh",
"ec4h",
"UU884",
"vec4h",
"rrecvvh",
"ecmm",
"vec4j",
"vec4X",
"vec48",
"vecvEE",
"vec4i",
"z99ci",
"GGeJJA4i",
"vess4i",
"vPcKu",
"tpc4u",
"vec24",
"VVeX2u",
"veVou",
"vec",
"KKc3",
"G",
"vec3",
"ea3",
"OOc",
"G",
"v5c3f",
"99jcfff",
"XXvYY3R",
"vec3f",
"ccf",
"v8XX5",
"ec3",
"ppc3cc",
"vecvh",
"eEE3SS",
"vec3h",
"vec",
"eh",
"ec3ww",
"vecd99i",
"ve99P",
"KKec3",
"vec3i",
"ooMcDD",
"vei",
"vqi",
"veL30",
"vncvv66",
"vrrn3",
"vec3u",
"vxxce",
"NCCOc3u",
"vc3u",
"veca",
"veNNN",
"vec",
"vec4",
"vc",
"vAYS4",
"vec0",
"vecaaf",
"vmm4f",
"ec4f",
"vec4f",
"vE4U",
"veKD4",
"v0t4__",
"cpA",
"ec4h",
"vBBc4h",
"vec4h",
"vbnn99",
"EEcAAh",
"v5c66h",
"vHc4i",
"vecxi",
"vzyn40",
"vec4i",
"ve4i",
"kH4i",
"veci",
"oo4rr",
"JJc4",
"vcCC0",
"vec4u",
"MMec4u",
"vJJc40",
"8c",
"xAA99F",
"veccu",
"vec4S",
};
for (auto _ : state) {
for (auto* str : kStrings) {

View File

@@ -43,49 +43,71 @@ inline std::ostream& operator<<(std::ostream& out, Case c) {
}
static constexpr Case kValidCases[] = {
{"array", Builtin::kArray},
{"atomic", Builtin::kAtomic},
{"bool", Builtin::kBool},
{"f16", Builtin::kF16},
{"f32", Builtin::kF32},
{"i32", Builtin::kI32},
{"mat2x2", Builtin::kMat2X2},
{"mat2x2f", Builtin::kMat2X2F},
{"mat2x2h", Builtin::kMat2X2H},
{"mat2x3", Builtin::kMat2X3},
{"mat2x3f", Builtin::kMat2X3F},
{"mat2x3h", Builtin::kMat2X3H},
{"mat2x4", Builtin::kMat2X4},
{"mat2x4f", Builtin::kMat2X4F},
{"mat2x4h", Builtin::kMat2X4H},
{"mat3x2", Builtin::kMat3X2},
{"mat3x2f", Builtin::kMat3X2F},
{"mat3x2h", Builtin::kMat3X2H},
{"mat3x3", Builtin::kMat3X3},
{"mat3x3f", Builtin::kMat3X3F},
{"mat3x3h", Builtin::kMat3X3H},
{"mat3x4", Builtin::kMat3X4},
{"mat3x4f", Builtin::kMat3X4F},
{"mat3x4h", Builtin::kMat3X4H},
{"mat4x2", Builtin::kMat4X2},
{"mat4x2f", Builtin::kMat4X2F},
{"mat4x2h", Builtin::kMat4X2H},
{"mat4x3", Builtin::kMat4X3},
{"mat4x3f", Builtin::kMat4X3F},
{"mat4x3h", Builtin::kMat4X3H},
{"mat4x4", Builtin::kMat4X4},
{"mat4x4f", Builtin::kMat4X4F},
{"mat4x4h", Builtin::kMat4X4H},
{"ptr", Builtin::kPtr},
{"sampler", Builtin::kSampler},
{"sampler_comparison", Builtin::kSamplerComparison},
{"texture_1d", Builtin::kTexture1D},
{"texture_2d", Builtin::kTexture2D},
{"texture_2d_array", Builtin::kTexture2DArray},
{"texture_3d", Builtin::kTexture3D},
{"texture_cube", Builtin::kTextureCube},
{"texture_cube_array", Builtin::kTextureCubeArray},
{"texture_depth_2d", Builtin::kTextureDepth2D},
{"texture_depth_2d_array", Builtin::kTextureDepth2DArray},
{"texture_depth_cube", Builtin::kTextureDepthCube},
{"texture_depth_cube_array", Builtin::kTextureDepthCubeArray},
{"texture_depth_multisampled_2d", Builtin::kTextureDepthMultisampled2D},
{"texture_external", Builtin::kTextureExternal},
{"texture_multisampled_2d", Builtin::kTextureMultisampled2D},
{"texture_storage_1d", Builtin::kTextureStorage1D},
{"texture_storage_2d", Builtin::kTextureStorage2D},
{"texture_storage_2d_array", Builtin::kTextureStorage2DArray},
{"texture_storage_3d", Builtin::kTextureStorage3D},
{"u32", Builtin::kU32},
{"vec2", Builtin::kVec2},
{"vec2f", Builtin::kVec2F},
{"vec2h", Builtin::kVec2H},
{"vec2i", Builtin::kVec2I},
{"vec2u", Builtin::kVec2U},
{"vec3", Builtin::kVec3},
{"vec3f", Builtin::kVec3F},
{"vec3h", Builtin::kVec3H},
{"vec3i", Builtin::kVec3I},
{"vec3u", Builtin::kVec3U},
{"vec4", Builtin::kVec4},
{"vec4f", Builtin::kVec4F},
{"vec4h", Builtin::kVec4H},
{"vec4i", Builtin::kVec4I},
@@ -93,147 +115,213 @@ static constexpr Case kValidCases[] = {
};
static constexpr Case kInvalidCases[] = {
{"ccol", Builtin::kUndefined},
{"3", Builtin::kUndefined},
{"bVol", Builtin::kUndefined},
{"116", Builtin::kUndefined},
{"qJ6", Builtin::kUndefined},
{"f17ll", Builtin::kUndefined},
{"fppqH", Builtin::kUndefined},
{"", Builtin::kUndefined},
{"Gb", Builtin::kUndefined},
{"i3vi", Builtin::kUndefined},
{"i8WW", Builtin::kUndefined},
{"ixx", Builtin::kUndefined},
{"mX2x2gg", Builtin::kUndefined},
{"a2xXf", Builtin::kUndefined},
{"mat232f", Builtin::kUndefined},
{"Eat2x2h", Builtin::kUndefined},
{"mPTT2x2h", Builtin::kUndefined},
{"mat2xdxx", Builtin::kUndefined},
{"m44t2x3f", Builtin::kUndefined},
{"maSS2xVVf", Builtin::kUndefined},
{"RatR22f", Builtin::kUndefined},
{"mF2x9h", Builtin::kUndefined},
{"matx3h", Builtin::kUndefined},
{"VOORRH3h", Builtin::kUndefined},
{"ma2xyf", Builtin::kUndefined},
{"llnarr2774f", Builtin::kUndefined},
{"mat24400", Builtin::kUndefined},
{"a2ooh", Builtin::kUndefined},
{"zz2x4h", Builtin::kUndefined},
{"miitppx1", Builtin::kUndefined},
{"mat3xXXf", Builtin::kUndefined},
{"9II5ann3x2f", Builtin::kUndefined},
{"arccy", Builtin::kUndefined},
{"3a", Builtin::kUndefined},
{"aVray", Builtin::kUndefined},
{"1tomic", Builtin::kUndefined},
{"aoqqic", Builtin::kUndefined},
{"atomll77", Builtin::kUndefined},
{"ppqooH", Builtin::kUndefined},
{"c", Builtin::kUndefined},
{"bGo", Builtin::kUndefined},
{"f1vi", Builtin::kUndefined},
{"f8WW", Builtin::kUndefined},
{"fxx", Builtin::kUndefined},
{"fgg", Builtin::kUndefined},
{"X", Builtin::kUndefined},
{"332", Builtin::kUndefined},
{"iE2", Builtin::kUndefined},
{"iPTT", Builtin::kUndefined},
{"dxx2", Builtin::kUndefined},
{"44at2x2", Builtin::kUndefined},
{"mSSVV2x2", Builtin::kUndefined},
{"mat2R2", Builtin::kUndefined},
{"mF2x9f", Builtin::kUndefined},
{"matx2f", Builtin::kUndefined},
{"VOORRH2f", Builtin::kUndefined},
{"ma2xyh", Builtin::kUndefined},
{"llnarr2772h", Builtin::kUndefined},
{"mat24200", Builtin::kUndefined},
{"m2oo", Builtin::kUndefined},
{"atzz3", Builtin::kUndefined},
{"1it2xpp", Builtin::kUndefined},
{"mat2xXXf", Builtin::kUndefined},
{"9II5ann2x3f", Builtin::kUndefined},
{"mataSSrHHYf", Builtin::kUndefined},
{"makkh", Builtin::kUndefined},
{"jatgRx", Builtin::kUndefined},
{"mb3x2", Builtin::kUndefined},
{"mat3xjf", Builtin::kUndefined},
{"at3x3f", Builtin::kUndefined},
{"q3x3f", Builtin::kUndefined},
{"matNN3h", Builtin::kUndefined},
{"at33vv", Builtin::kUndefined},
{"QQt3x3h", Builtin::kUndefined},
{"mb2x3", Builtin::kUndefined},
{"mat2j4", Builtin::kUndefined},
{"mt2x4", Builtin::kUndefined},
{"m2q4", Builtin::kUndefined},
{"matNN4f", Builtin::kUndefined},
{"at24vv", Builtin::kUndefined},
{"QQt2x4f", Builtin::kUndefined},
{"maffxr", Builtin::kUndefined},
{"mat3xjf", Builtin::kUndefined},
{"mNNw3x48", Builtin::kUndefined},
{"matx4h", Builtin::kUndefined},
{"mrrt3x4h", Builtin::kUndefined},
{"Gat3x4h", Builtin::kUndefined},
{"mat4x2FF", Builtin::kUndefined},
{"at4f", Builtin::kUndefined},
{"mat2xjh", Builtin::kUndefined},
{"mNNw2x48", Builtin::kUndefined},
{"mt3x2", Builtin::kUndefined},
{"rrat3x2", Builtin::kUndefined},
{"mGt3x2", Builtin::kUndefined},
{"mat3x2FF", Builtin::kUndefined},
{"at3f", Builtin::kUndefined},
{"marrx2f", Builtin::kUndefined},
{"t4x2h", Builtin::kUndefined},
{"Da4xJJh", Builtin::kUndefined},
{"t3x2h", Builtin::kUndefined},
{"Da3xJJh", Builtin::kUndefined},
{"ma82", Builtin::kUndefined},
{"m11k3", Builtin::kUndefined},
{"matx3f", Builtin::kUndefined},
{"maJx3f", Builtin::kUndefined},
{"mat4c3h", Builtin::kUndefined},
{"mat4x3O", Builtin::kUndefined},
{"KK_atvvtt3h", Builtin::kUndefined},
{"xx84x4f", Builtin::kUndefined},
{"__qatF4", Builtin::kUndefined},
{"matqx4f", Builtin::kUndefined},
{"33atOx4h", Builtin::kUndefined},
{"mtt64x9oQQ", Builtin::kUndefined},
{"ma4x66h", Builtin::kUndefined},
{"smOlzz66", Builtin::kUndefined},
{"sampyyer", Builtin::kUndefined},
{"ZaHHeZ", Builtin::kUndefined},
{"sWWpleq_compari44on", Builtin::kUndefined},
{"sampler_compaisoOO", Builtin::kUndefined},
{"smpeoo_coYparison", Builtin::kUndefined},
{"eture_dpth_2d", Builtin::kUndefined},
{"texture_detF_2d", Builtin::kUndefined},
{"texturedwpth_2d", Builtin::kUndefined},
{"teKuffe_Gepth_2d_arry", Builtin::kUndefined},
{"texture_dKKptq_2d_array", Builtin::kUndefined},
{"texture_depmmh32d_arraF", Builtin::kUndefined},
{"textur_depth_cube", Builtin::kUndefined},
{"texure_depqh_cube", Builtin::kUndefined},
{"texture_debth_cube", Builtin::kUndefined},
{"txture_deptii_cube_arry", Builtin::kUndefined},
{"textureqdepth_OOube_arry", Builtin::kUndefined},
{"texture_deTvvth_cube_array", Builtin::kUndefined},
{"texture_depth_multiFFampled_2d", Builtin::kUndefined},
{"textue_depthPmfl00isampled_Qd", Builtin::kUndefined},
{"textuPe_depth_multisampled_2d", Builtin::kUndefined},
{"texture_exernss77", Builtin::kUndefined},
{"texture_bbxternRRl", Builtin::kUndefined},
{"textureXXexternal", Builtin::kUndefined},
{"CCextOOre_stoage_qOd", Builtin::kUndefined},
{"txtsre_sturage_1L", Builtin::kUndefined},
{"texture_stoXage_1d", Builtin::kUndefined},
{"1k33", Builtin::kUndefined},
{"matx3", Builtin::kUndefined},
{"maJx3", Builtin::kUndefined},
{"mat3c3f", Builtin::kUndefined},
{"mat3x3O", Builtin::kUndefined},
{"KK_atvvtt3f", Builtin::kUndefined},
{"xx83x3h", Builtin::kUndefined},
{"__qatF3", Builtin::kUndefined},
{"matqx3h", Builtin::kUndefined},
{"ma33x66", Builtin::kUndefined},
{"mttQQo3x4", Builtin::kUndefined},
{"mat66x", Builtin::kUndefined},
{"mtOxzz66", Builtin::kUndefined},
{"mat3yy4f", Builtin::kUndefined},
{"ZaHH4Z", Builtin::kUndefined},
{"4WWt3q4h", Builtin::kUndefined},
{"mOO3x4h", Builtin::kUndefined},
{"oatY4h", Builtin::kUndefined},
{"ax2", Builtin::kUndefined},
{"ma4x2", Builtin::kUndefined},
{"matw2", Builtin::kUndefined},
{"fGtxKf", Builtin::kUndefined},
{"matqKx2f", Builtin::kUndefined},
{"matmmxFf", Builtin::kUndefined},
{"at4x2h", Builtin::kUndefined},
{"mt4x2q", Builtin::kUndefined},
{"mat4xbb", Builtin::kUndefined},
{"it4x3", Builtin::kUndefined},
{"mOO4xq", Builtin::kUndefined},
{"mat4Tvv3", Builtin::kUndefined},
{"maFF4x3f", Builtin::kUndefined},
{"Pa00xQf", Builtin::kUndefined},
{"mPt4x3f", Builtin::kUndefined},
{"ma774xss", Builtin::kUndefined},
{"RRCbb4x3h", Builtin::kUndefined},
{"mXXt4x3h", Builtin::kUndefined},
{"CCt4OOOO", Builtin::kUndefined},
{"mtsuL", Builtin::kUndefined},
{"mat4xX", Builtin::kUndefined},
{"mat44f", Builtin::kUndefined},
{"qa4O4", Builtin::kUndefined},
{"mat4x22f", Builtin::kUndefined},
{"myzz40XX", Builtin::kUndefined},
{"matVViP", Builtin::kUndefined},
{"mannC4h", Builtin::kUndefined},
{"pHAq", Builtin::kUndefined},
{"tr", Builtin::kUndefined},
{"Kf", Builtin::kUndefined},
{"lmgger", Builtin::kUndefined},
{"samplr", Builtin::kUndefined},
{"NTTmcl4r", Builtin::kUndefined},
{"sampler_clmppri77on", Builtin::kUndefined},
{"samplg_czzmparNNso", Builtin::kUndefined},
{"smpleuuXXomparibbon", Builtin::kUndefined},
{"texture_1", Builtin::kUndefined},
{"t88tueQ1K", Builtin::kUndefined},
{"texturq9d", Builtin::kUndefined},
{"text11re_2d", Builtin::kUndefined},
{"teiiu22eF2d", Builtin::kUndefined},
{"tex77ur_2d", Builtin::kUndefined},
{"textNNr2_d_array", Builtin::kUndefined},
{"textVVre_2d_array", Builtin::kUndefined},
{"texwure_WWF_11rray", Builtin::kUndefined},
{"txture_3ww", Builtin::kUndefined},
{"texturD_3d", Builtin::kUndefined},
{"teKture_d", Builtin::kUndefined},
{"11exPPufe_cubh", Builtin::kUndefined},
{"textue_cube", Builtin::kUndefined},
{"texture_cubYY", Builtin::kUndefined},
{"texttr_cube_HHkkVay", Builtin::kUndefined},
{"texture_crrbe_array", Builtin::kUndefined},
{"texturesscubeWWaray", Builtin::kUndefined},
{"texture_deptY_d", Builtin::kUndefined},
{"teLturq_defh_2d", Builtin::kUndefined},
{"texvvre_duu22th_2d", Builtin::kUndefined},
{"texure_deth_2d_array", Builtin::kUndefined},
{"texturYY_depth_2daray", Builtin::kUndefined},
{"texturE_77epth_2d_aryYay", Builtin::kUndefined},
{"Mexdoore_depth_cue", Builtin::kUndefined},
{"texturedepMMh_cube", Builtin::kUndefined},
{"texture55depth_cube", Builtin::kUndefined},
{"textue_depth_cbe_aNray", Builtin::kUndefined},
{"texture_dpth_c33be_array", Builtin::kUndefined},
{"texture_depth_cub3_array", Builtin::kUndefined},
{"texIure_mepth_mulisampled_2d", Builtin::kUndefined},
{"texture_depthrmKltisampled_2nn", Builtin::kUndefined},
{"textur_depth_multismXld_2d", Builtin::kUndefined},
{"texpure_exLLeIna", Builtin::kUndefined},
{"txture_exfrnal", Builtin::kUndefined},
{"teUture_extYRRDl", Builtin::kUndefined},
{"texturehmultisampled_2d", Builtin::kUndefined},
{"texturqmultsIImuuled_2d", Builtin::kUndefined},
{"Hexture_multisampled_2d", Builtin::kUndefined},
{"texQQur_storge_vvd", Builtin::kUndefined},
{"texeure_66oage_1d", Builtin::kUndefined},
{"texture_stoage71d", Builtin::kUndefined},
{"texture_s55or0ge_2DD", Builtin::kUndefined},
{"teHture_storIIge_2d", Builtin::kUndefined},
{"textue_storage_2d", Builtin::kUndefined},
{"teuresOorageqq2d", Builtin::kUndefined},
{"texture_sto22age_2d", Builtin::kUndefined},
{"exture_syora0e_2d_Xzzrray", Builtin::kUndefined},
{"texiVVr_storageP2d_array", Builtin::kUndefined},
{"texturestorage_2nn_arCay", Builtin::kUndefined},
{"texturHHstorAAe_qqd", Builtin::kUndefined},
{"textur_storage_3d", Builtin::kUndefined},
{"texure_sfKorage3d", Builtin::kUndefined},
{"gg", Builtin::kUndefined},
{"u3", Builtin::kUndefined},
{"NT42", Builtin::kUndefined},
{"ppec7l", Builtin::kUndefined},
{"zNe2f", Builtin::kUndefined},
{"uXXb2f", Builtin::kUndefined},
{"vec2", Builtin::kUndefined},
{"882K", Builtin::kUndefined},
{"vq9h", Builtin::kUndefined},
{"vec211", Builtin::kUndefined},
{"22ciii", Builtin::kUndefined},
{"ec77i", Builtin::kUndefined},
{"NN22u", Builtin::kUndefined},
{"vVVc2u", Builtin::kUndefined},
{"WW11w2u", Builtin::kUndefined},
{"vcwwf", Builtin::kUndefined},
{"vDc3f", Builtin::kUndefined},
{"vecK", Builtin::kUndefined},
{"f11r3PP", Builtin::kUndefined},
{"ve3h", Builtin::kUndefined},
{"vec3YY", Builtin::kUndefined},
{"vkktHH", Builtin::kUndefined},
{"rrec3i", Builtin::kUndefined},
{"vWWssi", Builtin::kUndefined},
{"veYu", Builtin::kUndefined},
{"eq3f", Builtin::kUndefined},
{"u22ec3u", Builtin::kUndefined},
{"c4f", Builtin::kUndefined},
{"vec4", Builtin::kUndefined},
{"vYyc47E", Builtin::kUndefined},
{"veMoh", Builtin::kUndefined},
{"ve4MM", Builtin::kUndefined},
{"55ec4h", Builtin::kUndefined},
{"N4i", Builtin::kUndefined},
{"ve33i", Builtin::kUndefined},
{"3ec4i", Builtin::kUndefined},
{"mecI", Builtin::kUndefined},
{"vrnK4u", Builtin::kUndefined},
{"v4", Builtin::kUndefined},
{"texturestorage_2d_rrray", Builtin::kUndefined},
{"textule_storage_2d_array", Builtin::kUndefined},
{"tetture_JJtorage_Gd_arra", Builtin::kUndefined},
{"yexture_storage3d", Builtin::kUndefined},
{"texturestorage_3d", Builtin::kUndefined},
{"texture_IItorBBge_3d", Builtin::kUndefined},
{"TTK33", Builtin::kUndefined},
{"nnUYdSS2", Builtin::kUndefined},
{"x5dZ", Builtin::kUndefined},
{"veckq", Builtin::kUndefined},
{"ii500", Builtin::kUndefined},
{"vecIIn", Builtin::kUndefined},
{"cceW", Builtin::kUndefined},
{"cKK", Builtin::kUndefined},
{"vec66f", Builtin::kUndefined},
{"vePPK", Builtin::kUndefined},
{"vexxh", Builtin::kUndefined},
{"qec2h", Builtin::kUndefined},
{"veSyMMr", Builtin::kUndefined},
{"v2u", Builtin::kUndefined},
{"ec", Builtin::kUndefined},
{"5eFF2u", Builtin::kUndefined},
{"rrecz44", Builtin::kUndefined},
{"vWW", Builtin::kUndefined},
{"ZJJCcX", Builtin::kUndefined},
{"vcPP", Builtin::kUndefined},
{"vec", Builtin::kUndefined},
{"3Le003f", Builtin::kUndefined},
{"MMec3RR", Builtin::kUndefined},
{"vec39K", Builtin::kUndefined},
{"yyecm", Builtin::kUndefined},
{"v__cD", Builtin::kUndefined},
{"vec3U", Builtin::kUndefined},
{"ze333i", Builtin::kUndefined},
{"eKti", Builtin::kUndefined},
{"ve3V", Builtin::kUndefined},
{"jbR3K", Builtin::kUndefined},
{"e44344", Builtin::kUndefined},
{"00u", Builtin::kUndefined},
{"WK4", Builtin::kUndefined},
{"m", Builtin::kUndefined},
{"vJJ", Builtin::kUndefined},
{"lDDcUfC", Builtin::kUndefined},
{"vec4g", Builtin::kUndefined},
{"CCe", Builtin::kUndefined},
{"ec4h", Builtin::kUndefined},
{"vIc__h", Builtin::kUndefined},
{"ePPtt", Builtin::kUndefined},
{"v3dc4i", Builtin::kUndefined},
{"vcyyi", Builtin::kUndefined},
{"u4", Builtin::kUndefined},
{"v03nnu", Builtin::kUndefined},
{"Cuuecnv", Builtin::kUndefined},
{"vX4ll", Builtin::kUndefined},
};
using BuiltinParseTest = testing::TestWithParam<Case>;

View File

@@ -96,7 +96,7 @@ TEST_F(StorageTextureTest, FriendlyName) {
}
TEST_F(StorageTextureTest, F32) {
Type* s = Create(TextureDimension::k2dArray, type::TexelFormat::kRgba32Float,
auto* s = Create(TextureDimension::k2dArray, type::TexelFormat::kRgba32Float,
type::Access::kReadWrite);
auto program = Build();
@@ -109,7 +109,7 @@ TEST_F(StorageTextureTest, F32) {
TEST_F(StorageTextureTest, U32) {
auto* subtype = StorageTexture::SubtypeFor(type::TexelFormat::kRg32Uint, Types());
Type* s = create<StorageTexture>(TextureDimension::k2dArray, type::TexelFormat::kRg32Uint,
auto* s = create<StorageTexture>(TextureDimension::k2dArray, type::TexelFormat::kRg32Uint,
type::Access::kReadWrite, subtype);
auto program = Build();
@@ -122,7 +122,7 @@ TEST_F(StorageTextureTest, U32) {
TEST_F(StorageTextureTest, I32) {
auto* subtype = StorageTexture::SubtypeFor(type::TexelFormat::kRgba32Sint, Types());
Type* s = create<StorageTexture>(TextureDimension::k2dArray, type::TexelFormat::kRgba32Sint,
auto* s = create<StorageTexture>(TextureDimension::k2dArray, type::TexelFormat::kRgba32Sint,
type::Access::kReadWrite, subtype);
auto program = Build();

View File

@@ -22,4 +22,36 @@ Texture::Texture(size_t hash, TextureDimension dim) : Base(hash, type::Flags{}),
Texture::~Texture() = default;
bool IsTextureArray(type::TextureDimension dim) {
switch (dim) {
case type::TextureDimension::k2dArray:
case type::TextureDimension::kCubeArray:
return true;
case type::TextureDimension::k2d:
case type::TextureDimension::kNone:
case type::TextureDimension::k1d:
case type::TextureDimension::k3d:
case type::TextureDimension::kCube:
return false;
}
return false;
}
int NumCoordinateAxes(type::TextureDimension dim) {
switch (dim) {
case type::TextureDimension::kNone:
return 0;
case type::TextureDimension::k1d:
return 1;
case type::TextureDimension::k2d:
case type::TextureDimension::k2dArray:
return 2;
case type::TextureDimension::k3d:
case type::TextureDimension::kCube:
case type::TextureDimension::kCubeArray:
return 3;
}
return 0;
}
} // namespace tint::type

View File

@@ -37,6 +37,24 @@ class Texture : public Castable<Texture, Type> {
TextureDimension const dim_;
};
/// @param dim the type::TextureDimension to query
/// @return true if the given type::TextureDimension is an array texture
bool IsTextureArray(type::TextureDimension dim);
/// Returns the number of axes in the coordinate used for accessing
/// the texture, where an access is one of: sampling, fetching, load,
/// or store.
/// None -> 0
/// 1D -> 1
/// 2D, 2DArray -> 2
/// 3D, Cube, CubeArray -> 3
/// Note: To sample a cube texture, the coordinate has 3 dimensions,
/// but textureDimensions on a cube or cube array returns a 2-element
/// size, representing the (x,y) size of each cube face, in texels.
/// @param dim the type::TextureDimension to query
/// @return number of dimensions in a coordinate for the dimensionality
int NumCoordinateAxes(type::TextureDimension dim);
} // namespace tint::type
#endif // SRC_TINT_TYPE_TEXTURE_H_