tools/tint/intrinsic: Sort enum values lexicographically
Reorders the output of the CanonicalizeEntryPointIO transform, but
otherwise is a no-op.
This will help with diagnostics that print the enum values.
Bug: tint:1629
Change-Id: Iff517d88836d2a8cd42ce3cfde6363c1973df0dd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/105321
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/ast/address_space.cc b/src/tint/ast/address_space.cc
index a55fb87..d8174a2 100644
--- a/src/tint/ast/address_space.cc
+++ b/src/tint/ast/address_space.cc
@@ -34,17 +34,17 @@
if (str == "private") {
return AddressSpace::kPrivate;
}
- if (str == "workgroup") {
- return AddressSpace::kWorkgroup;
- }
- if (str == "uniform") {
- return AddressSpace::kUniform;
+ if (str == "push_constant") {
+ return AddressSpace::kPushConstant;
}
if (str == "storage") {
return AddressSpace::kStorage;
}
- if (str == "push_constant") {
- return AddressSpace::kPushConstant;
+ if (str == "uniform") {
+ return AddressSpace::kUniform;
+ }
+ if (str == "workgroup") {
+ return AddressSpace::kWorkgroup;
}
return AddressSpace::kInvalid;
}
@@ -53,26 +53,26 @@
switch (value) {
case AddressSpace::kInvalid:
return out << "invalid";
- case AddressSpace::kNone:
- return out << "none";
case AddressSpace::kFunction:
return out << "function";
- case AddressSpace::kPrivate:
- return out << "private";
- case AddressSpace::kWorkgroup:
- return out << "workgroup";
- case AddressSpace::kUniform:
- return out << "uniform";
- case AddressSpace::kStorage:
- return out << "storage";
- case AddressSpace::kPushConstant:
- return out << "push_constant";
case AddressSpace::kHandle:
return out << "handle";
case AddressSpace::kIn:
return out << "in";
+ case AddressSpace::kNone:
+ return out << "none";
case AddressSpace::kOut:
return out << "out";
+ case AddressSpace::kPrivate:
+ return out << "private";
+ case AddressSpace::kPushConstant:
+ return out << "push_constant";
+ case AddressSpace::kStorage:
+ return out << "storage";
+ case AddressSpace::kUniform:
+ return out << "uniform";
+ case AddressSpace::kWorkgroup:
+ return out << "workgroup";
}
return out << "<unknown>";
}
diff --git a/src/tint/ast/address_space.h b/src/tint/ast/address_space.h
index 210dc7f..9ff471d 100644
--- a/src/tint/ast/address_space.h
+++ b/src/tint/ast/address_space.h
@@ -30,16 +30,16 @@
/// Address space of a given pointer.
enum class AddressSpace {
kInvalid,
- kNone, // Tint-internal enum entry - not parsed
kFunction,
- kPrivate,
- kWorkgroup,
- kUniform,
- kStorage,
- kPushConstant,
kHandle, // Tint-internal enum entry - not parsed
kIn, // Tint-internal enum entry - not parsed
+ kNone, // Tint-internal enum entry - not parsed
kOut, // Tint-internal enum entry - not parsed
+ kPrivate,
+ kPushConstant,
+ kStorage,
+ kUniform,
+ kWorkgroup,
};
/// @param out the std::ostream to write to
diff --git a/src/tint/ast/address_space_bench.cc b/src/tint/ast/address_space_bench.cc
index 364d015..fb3b0a5 100644
--- a/src/tint/ast/address_space_bench.cc
+++ b/src/tint/ast/address_space_bench.cc
@@ -31,48 +31,15 @@
void AddressSpaceParser(::benchmark::State& state) {
std::array kStrings{
- "fccnctin",
- "ucti3",
- "functVon",
- "function",
- "1unction",
- "unJtqqon",
- "llun77tion",
- "ppqqivtHH",
- "prcv",
- "bivaGe",
- "private",
- "priviive",
- "8WWivate",
- "pxxvate",
- "wXkgrggup",
- "worXVup",
- "3orkgroup",
- "workgroup",
- "workgroEp",
- "woTTPkroup",
- "ddorkroxxp",
- "u44iform",
- "unSSfoVVm",
- "RniR22m",
- "uniform",
- "uFfo9m",
- "uniorm",
- "VOORRHrm",
- "straye",
- "llntrrr77ge",
- "stor4g00",
- "storage",
- "trooe",
- "zzrage",
- "siioppa1",
- "puXXh_constant",
- "pusII9_nn55nstant",
- "YusHH_coaastSSrnt",
- "push_constant",
- "pushonkkHan",
- "jush_consgRt",
- "puh_cobsant",
+ "fccnctin", "ucti3", "functVon", "function", "1unction",
+ "unJtqqon", "llun77tion", "ppqqivtHH", "prcv", "bivaGe",
+ "private", "priviive", "8WWivate", "pxxvate", "pXh_cggnstant",
+ "pX_Vonstanu", "push_consta3t", "push_constant", "push_constanE", "push_TTPnstant",
+ "puxxdh_constan", "s44orage", "stSSraVVe", "RtoR22e", "storage",
+ "sFra9e", "stoage", "VOORRHge", "unfoym", "llnnrrf77rm",
+ "unif4r00", "uniform", "nfoom", "zzform", "uiiippo1",
+ "workgrouXX", "wor55gro99nII", "wrrrkgroSSaHH", "workgroup", "kkrHoup",
+ "jgkrouRR", "wokroub",
};
for (auto _ : state) {
for (auto& str : kStrings) {
diff --git a/src/tint/ast/address_space_test.cc b/src/tint/ast/address_space_test.cc
index 86a8e40..271cf33 100644
--- a/src/tint/ast/address_space_test.cc
+++ b/src/tint/ast/address_space_test.cc
@@ -42,21 +42,24 @@
}
static constexpr Case kValidCases[] = {
- {"function", AddressSpace::kFunction}, {"private", AddressSpace::kPrivate},
- {"workgroup", AddressSpace::kWorkgroup}, {"uniform", AddressSpace::kUniform},
- {"storage", AddressSpace::kStorage}, {"push_constant", AddressSpace::kPushConstant},
+ {"function", AddressSpace::kFunction},
+ {"private", AddressSpace::kPrivate},
+ {"push_constant", AddressSpace::kPushConstant},
+ {"storage", AddressSpace::kStorage},
+ {"uniform", AddressSpace::kUniform},
+ {"workgroup", AddressSpace::kWorkgroup},
};
static constexpr Case kInvalidCases[] = {
- {"fccnctin", AddressSpace::kInvalid}, {"ucti3", AddressSpace::kInvalid},
- {"functVon", AddressSpace::kInvalid}, {"priv1te", AddressSpace::kInvalid},
- {"pqiJate", AddressSpace::kInvalid}, {"privat7ll", AddressSpace::kInvalid},
- {"workroppqHH", AddressSpace::kInvalid}, {"workru", AddressSpace::kInvalid},
- {"wbkgGoup", AddressSpace::kInvalid}, {"unifiivm", AddressSpace::kInvalid},
- {"8WWiform", AddressSpace::kInvalid}, {"uxxform", AddressSpace::kInvalid},
- {"sXraggg", AddressSpace::kInvalid}, {"traXe", AddressSpace::kInvalid},
- {"stor3ge", AddressSpace::kInvalid}, {"push_constanE", AddressSpace::kInvalid},
- {"push_TTPnstant", AddressSpace::kInvalid}, {"puxxdh_constan", AddressSpace::kInvalid},
+ {"fccnctin", AddressSpace::kInvalid}, {"ucti3", AddressSpace::kInvalid},
+ {"functVon", AddressSpace::kInvalid}, {"priv1te", AddressSpace::kInvalid},
+ {"pqiJate", AddressSpace::kInvalid}, {"privat7ll", AddressSpace::kInvalid},
+ {"pqqsh_pponstHnt", AddressSpace::kInvalid}, {"pus_cnstat", AddressSpace::kInvalid},
+ {"bus_Gonstant", AddressSpace::kInvalid}, {"storiive", AddressSpace::kInvalid},
+ {"8WWorage", AddressSpace::kInvalid}, {"sxxrage", AddressSpace::kInvalid},
+ {"uXforgg", AddressSpace::kInvalid}, {"nfoXm", AddressSpace::kInvalid},
+ {"unif3rm", AddressSpace::kInvalid}, {"workgroEp", AddressSpace::kInvalid},
+ {"woTTPkroup", AddressSpace::kInvalid}, {"ddorkroxxp", AddressSpace::kInvalid},
};
using AddressSpaceParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/ast/builtin_value.cc b/src/tint/ast/builtin_value.cc
index e8d6451..d4eaec0 100644
--- a/src/tint/ast/builtin_value.cc
+++ b/src/tint/ast/builtin_value.cc
@@ -28,20 +28,17 @@
/// @param str the string to parse
/// @returns the parsed enum, or BuiltinValue::kInvalid if the string could not be parsed.
BuiltinValue ParseBuiltinValue(std::string_view str) {
- if (str == "position") {
- return BuiltinValue::kPosition;
- }
- if (str == "vertex_index") {
- return BuiltinValue::kVertexIndex;
- }
- if (str == "instance_index") {
- return BuiltinValue::kInstanceIndex;
+ if (str == "frag_depth") {
+ return BuiltinValue::kFragDepth;
}
if (str == "front_facing") {
return BuiltinValue::kFrontFacing;
}
- if (str == "frag_depth") {
- return BuiltinValue::kFragDepth;
+ if (str == "global_invocation_id") {
+ return BuiltinValue::kGlobalInvocationId;
+ }
+ if (str == "instance_index") {
+ return BuiltinValue::kInstanceIndex;
}
if (str == "local_invocation_id") {
return BuiltinValue::kLocalInvocationId;
@@ -49,21 +46,24 @@
if (str == "local_invocation_index") {
return BuiltinValue::kLocalInvocationIndex;
}
- if (str == "global_invocation_id") {
- return BuiltinValue::kGlobalInvocationId;
- }
- if (str == "workgroup_id") {
- return BuiltinValue::kWorkgroupId;
- }
if (str == "num_workgroups") {
return BuiltinValue::kNumWorkgroups;
}
+ if (str == "position") {
+ return BuiltinValue::kPosition;
+ }
if (str == "sample_index") {
return BuiltinValue::kSampleIndex;
}
if (str == "sample_mask") {
return BuiltinValue::kSampleMask;
}
+ if (str == "vertex_index") {
+ return BuiltinValue::kVertexIndex;
+ }
+ if (str == "workgroup_id") {
+ return BuiltinValue::kWorkgroupId;
+ }
return BuiltinValue::kInvalid;
}
@@ -71,32 +71,32 @@
switch (value) {
case BuiltinValue::kInvalid:
return out << "invalid";
- case BuiltinValue::kPosition:
- return out << "position";
- case BuiltinValue::kVertexIndex:
- return out << "vertex_index";
- case BuiltinValue::kInstanceIndex:
- return out << "instance_index";
- case BuiltinValue::kFrontFacing:
- return out << "front_facing";
case BuiltinValue::kFragDepth:
return out << "frag_depth";
+ case BuiltinValue::kFrontFacing:
+ return out << "front_facing";
+ case BuiltinValue::kGlobalInvocationId:
+ return out << "global_invocation_id";
+ case BuiltinValue::kInstanceIndex:
+ return out << "instance_index";
case BuiltinValue::kLocalInvocationId:
return out << "local_invocation_id";
case BuiltinValue::kLocalInvocationIndex:
return out << "local_invocation_index";
- case BuiltinValue::kGlobalInvocationId:
- return out << "global_invocation_id";
- case BuiltinValue::kWorkgroupId:
- return out << "workgroup_id";
case BuiltinValue::kNumWorkgroups:
return out << "num_workgroups";
+ case BuiltinValue::kPointSize:
+ return out << "point_size";
+ case BuiltinValue::kPosition:
+ return out << "position";
case BuiltinValue::kSampleIndex:
return out << "sample_index";
case BuiltinValue::kSampleMask:
return out << "sample_mask";
- case BuiltinValue::kPointSize:
- return out << "point_size";
+ case BuiltinValue::kVertexIndex:
+ return out << "vertex_index";
+ case BuiltinValue::kWorkgroupId:
+ return out << "workgroup_id";
}
return out << "<unknown>";
}
diff --git a/src/tint/ast/builtin_value.h b/src/tint/ast/builtin_value.h
index 0a2c7f0..06bedf3 100644
--- a/src/tint/ast/builtin_value.h
+++ b/src/tint/ast/builtin_value.h
@@ -30,19 +30,19 @@
/// Storage class of a given pointer.
enum class BuiltinValue {
kInvalid,
- kPosition,
- kVertexIndex,
- kInstanceIndex,
- kFrontFacing,
kFragDepth,
+ kFrontFacing,
+ kGlobalInvocationId,
+ kInstanceIndex,
kLocalInvocationId,
kLocalInvocationIndex,
- kGlobalInvocationId,
- kWorkgroupId,
kNumWorkgroups,
+ kPointSize, // Tint-internal enum entry - not parsed
+ kPosition,
kSampleIndex,
kSampleMask,
- kPointSize, // Tint-internal enum entry - not parsed
+ kVertexIndex,
+ kWorkgroupId,
};
/// @param out the std::ostream to write to
diff --git a/src/tint/ast/builtin_value_bench.cc b/src/tint/ast/builtin_value_bench.cc
index 0a4048c..b323b6b 100644
--- a/src/tint/ast/builtin_value_bench.cc
+++ b/src/tint/ast/builtin_value_bench.cc
@@ -31,90 +31,90 @@
void BuiltinValueParser(::benchmark::State& state) {
std::array kStrings{
- "pccsitin",
- "oiti3",
- "positVon",
- "position",
- "1osition",
- "osJtqqon",
- "llos77tion",
- "vrtHHppx_index",
- "vertx_icx",
- "veGtex_bnde",
- "vertex_index",
- "vertex_inveii",
- "veWWtex_ind8x",
- "vxxrtMx_indx",
- "isXance_indegg",
- "insanc_iXVex",
- "instance_in3ex",
- "instance_index",
- "instancE_index",
- "nsTTance_PPndex",
- "nstancxx_indddx",
- "44ront_facing",
- "fSSont_facinVV",
- "fronR_Racing",
- "front_facing",
- "ron9_faciFg",
- "front_facin",
- "fVonRR_HaOing",
- "fyag_epth",
- "f77ag_nnellrrh",
- "fra400depth",
+ "fragdeccth",
+ "flaget3",
+ "fVag_depth",
"frag_depth",
- "fa_epooh",
- "frg_ezzth",
- "f11a_eppiih",
- "local_invXXcation_id",
- "lIIcal_i5599ocation_inn",
- "HHrrcal_inSSocation_Yaa",
- "local_invocation_id",
- "lokkal_invocatini",
- "jocal_invocRRongid",
- "local_inocatbon_i",
- "local_injocation_index",
- "local_invocatio_index",
- "locl_invocqtion_ndex",
- "local_invocation_index",
- "localNNinvocaton_index",
- "local_invocatin_ivvdx",
- "locl_invocatioQQ_index",
- "globalrnvocaton_iff",
- "global_invocation_jd",
- "NNlbal_wwnvocation82d",
+ "frag1depth",
+ "fraJqqepth",
+ "fra7ll_depth",
+ "fonHHpp_facing",
+ "fron_facg",
+ "frGnt_fbcin",
+ "front_facing",
+ "front_facvnii",
+ "frWWnt_faci8g",
+ "fxxonM_facig",
+ "gXobalgginvocationid",
+ "goVal_uvocatioX_id",
+ "global_in3ocation_id",
"global_invocation_id",
- "global_invocationid",
- "globalrrinvocation_id",
- "globaG_invocation_id",
- "workgroupFFid",
- "worgrupid",
- "workgroup_rr",
- "workgroup_id",
- "workgrouid",
- "DokgXoJJp_id",
- "8orgrup_i",
- "num_wkkr11up",
- "numworkgroups",
- "Ju_workgroups",
+ "global_invocation_iE",
+ "TTobal_invocationPPid",
+ "globdd_invocatioxx_id",
+ "instance44index",
+ "instaVVce_SSndex",
+ "Rnstane_ind2Rx",
+ "instance_index",
+ "inFtanceind9x",
+ "insance_index",
+ "inRRancV_OOHdex",
+ "local_nvocytion_id",
+ "llGcnnl_inv77catirrn_id",
+ "local_invoca4i00n_id",
+ "local_invocation_id",
+ "loool_nvocaton_id",
+ "local_inozztion_id",
+ "p11cal_invocatiiin_i",
+ "local_invocation_iXXdex",
+ "local_invnnIIati99n55index",
+ "localYirrHHocaationSSindex",
+ "local_invocation_index",
+ "lkkal_invHcation_idx",
+ "gRcal_invocatioj_inex",
+ "lcal_invcbtion_index",
+ "num_workgroujs",
+ "num_worgroups",
+ "nuq_orkgoups",
"num_workgroups",
- "num_corkgroups",
- "num_woOkgroups",
- "num_workKK__vvttps",
- "smple5inxxe8",
- "s__mle_qFdex",
- "saqqple_idex",
+ "nm_workgroNNps",
+ "um_workgrovps",
+ "nQQm_orkgroups",
+ "posftrn",
+ "pojition",
+ "poswNN82n",
+ "position",
+ "positon",
+ "porrition",
+ "pGsition",
+ "sample_inFFex",
+ "samleinex",
+ "sample_indrr",
"sample_index",
- "saOpe_33nde66",
- "s6oople_indttQx",
- "sam66le_inex",
- "samxe66masOz",
- "yyample_mask",
- "amplZZHask",
+ "sample_iex",
+ "DaplX_JJndex",
+ "8amleinde",
+ "saplekmak",
+ "samle_mask",
+ "saJple_mak",
"sample_mask",
- "WWaple_maq4k",
- "samplOO_ask",
- "sYohpe_msk",
+ "sample_cask",
+ "sample_maOk",
+ "__attpvve_KKask",
+ "vrtex5inxxe8",
+ "v__rex_qFdex",
+ "veqqtex_idex",
+ "vertex_index",
+ "veOtx_33nde66",
+ "v6ootex_indttQx",
+ "ver66ex_inex",
+ "worzzroup6Oxd",
+ "workgroyyp_id",
+ "wokrHHZpZid",
+ "workgroup_id",
+ "wWWkgqoup44id",
+ "wrkgroOOp_id",
+ "hrkgYooup_d",
};
for (auto _ : state) {
for (auto& str : kStrings) {
diff --git a/src/tint/ast/builtin_value_test.cc b/src/tint/ast/builtin_value_test.cc
index a29810a..55f8e4d 100644
--- a/src/tint/ast/builtin_value_test.cc
+++ b/src/tint/ast/builtin_value_test.cc
@@ -42,57 +42,57 @@
}
static constexpr Case kValidCases[] = {
- {"position", BuiltinValue::kPosition},
- {"vertex_index", BuiltinValue::kVertexIndex},
- {"instance_index", BuiltinValue::kInstanceIndex},
- {"front_facing", BuiltinValue::kFrontFacing},
{"frag_depth", BuiltinValue::kFragDepth},
+ {"front_facing", BuiltinValue::kFrontFacing},
+ {"global_invocation_id", BuiltinValue::kGlobalInvocationId},
+ {"instance_index", BuiltinValue::kInstanceIndex},
{"local_invocation_id", BuiltinValue::kLocalInvocationId},
{"local_invocation_index", BuiltinValue::kLocalInvocationIndex},
- {"global_invocation_id", BuiltinValue::kGlobalInvocationId},
- {"workgroup_id", BuiltinValue::kWorkgroupId},
{"num_workgroups", BuiltinValue::kNumWorkgroups},
+ {"position", BuiltinValue::kPosition},
{"sample_index", BuiltinValue::kSampleIndex},
{"sample_mask", BuiltinValue::kSampleMask},
+ {"vertex_index", BuiltinValue::kVertexIndex},
+ {"workgroup_id", BuiltinValue::kWorkgroupId},
};
static constexpr Case kInvalidCases[] = {
- {"pccsitin", BuiltinValue::kInvalid},
- {"oiti3", BuiltinValue::kInvalid},
- {"positVon", BuiltinValue::kInvalid},
- {"1ertex_index", BuiltinValue::kInvalid},
- {"vertex_Jnqex", BuiltinValue::kInvalid},
- {"velltex_inde77", BuiltinValue::kInvalid},
- {"inpptanceqHHindx", BuiltinValue::kInvalid},
- {"cnsanvendex", BuiltinValue::kInvalid},
- {"istancG_index", BuiltinValue::kInvalid},
- {"front_facvnii", BuiltinValue::kInvalid},
- {"frWWnt_faci8g", BuiltinValue::kInvalid},
- {"fxxonM_facig", BuiltinValue::kInvalid},
- {"fXag_detgg", BuiltinValue::kInvalid},
- {"fag_XuVh", BuiltinValue::kInvalid},
- {"frag_dept3", BuiltinValue::kInvalid},
- {"local_Envocation_id", BuiltinValue::kInvalid},
- {"localiPPvocatioTT_id", BuiltinValue::kInvalid},
- {"localxxnvocationddid", BuiltinValue::kInvalid},
- {"loca44_invocation_index", BuiltinValue::kInvalid},
- {"local_invocSStionVVindex", BuiltinValue::kInvalid},
- {"locRR_invocat22n_index", BuiltinValue::kInvalid},
- {"globalFinvoction_id", BuiltinValue::kInvalid},
- {"gloal_invocation_id", BuiltinValue::kInvalid},
- {"RRlHOOaV_invoction_id", BuiltinValue::kInvalid},
- {"workgyoup_i", BuiltinValue::kInvalid},
- {"wnrrrkg77loup_Gd", BuiltinValue::kInvalid},
- {"00orkgr4up_id", BuiltinValue::kInvalid},
- {"numwroogrops", BuiltinValue::kInvalid},
- {"nzm_wokgroups", BuiltinValue::kInvalid},
- {"uippworkgro11ps", BuiltinValue::kInvalid},
- {"sample_iXXdex", BuiltinValue::kInvalid},
- {"5nnample_99IIdex", BuiltinValue::kInvalid},
- {"samYlaaHHrrndeSS", BuiltinValue::kInvalid},
- {"aHkk_mask", BuiltinValue::kInvalid},
- {"jRRmpl_gsk", BuiltinValue::kInvalid},
- {"smple_mbk", BuiltinValue::kInvalid},
+ {"fragdeccth", BuiltinValue::kInvalid},
+ {"flaget3", BuiltinValue::kInvalid},
+ {"fVag_depth", BuiltinValue::kInvalid},
+ {"1ront_facing", BuiltinValue::kInvalid},
+ {"front_fJcqng", BuiltinValue::kInvalid},
+ {"frllnt_facin77", BuiltinValue::kInvalid},
+ {"global_invoqqtionppHid", BuiltinValue::kInvalid},
+ {"clvbal_inocaionid", BuiltinValue::kInvalid},
+ {"global_Gvocation_id", BuiltinValue::kInvalid},
+ {"invtance_iniiex", BuiltinValue::kInvalid},
+ {"8nstanceWWindex", BuiltinValue::kInvalid},
+ {"insxxanceindex", BuiltinValue::kInvalid},
+ {"lXcal_invoation_igg", BuiltinValue::kInvalid},
+ {"Xocal_nvocatin_Vd", BuiltinValue::kInvalid},
+ {"local_invoca3ion_id", BuiltinValue::kInvalid},
+ {"local_invocation_indeE", BuiltinValue::kInvalid},
+ {"loTTal_invPPcatin_index", BuiltinValue::kInvalid},
+ {"loal_invocadxxion_index", BuiltinValue::kInvalid},
+ {"num_work44roups", BuiltinValue::kInvalid},
+ {"num_wVVrkgSSoups", BuiltinValue::kInvalid},
+ {"Rum_wokgrou2Rs", BuiltinValue::kInvalid},
+ {"oFi9ion", BuiltinValue::kInvalid},
+ {"postion", BuiltinValue::kInvalid},
+ {"ROOoHiiVn", BuiltinValue::kInvalid},
+ {"samply_inde", BuiltinValue::kInvalid},
+ {"snrrmpl77l_indGx", BuiltinValue::kInvalid},
+ {"00ample4index", BuiltinValue::kInvalid},
+ {"smoo_mask", BuiltinValue::kInvalid},
+ {"sampzemask", BuiltinValue::kInvalid},
+ {"ppaplii1_mas", BuiltinValue::kInvalid},
+ {"vertex_iXXdex", BuiltinValue::kInvalid},
+ {"5nnertex_99IIdex", BuiltinValue::kInvalid},
+ {"verYeaaHHrrndeSS", BuiltinValue::kInvalid},
+ {"workkgHo_i", BuiltinValue::kInvalid},
+ {"worRgoupjid", BuiltinValue::kInvalid},
+ {"wrkgrupbid", BuiltinValue::kInvalid},
};
using BuiltinValueParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/ast/extension.cc b/src/tint/ast/extension.cc
index e57b248..a4d823f 100644
--- a/src/tint/ast/extension.cc
+++ b/src/tint/ast/extension.cc
@@ -28,18 +28,18 @@
/// @param str the string to parse
/// @returns the parsed enum, or Extension::kInvalid if the string could not be parsed.
Extension ParseExtension(std::string_view str) {
- if (str == "f16") {
- return Extension::kF16;
+ if (str == "chromium_disable_uniformity_analysis") {
+ return Extension::kChromiumDisableUniformityAnalysis;
}
if (str == "chromium_experimental_dp4a") {
return Extension::kChromiumExperimentalDp4A;
}
- if (str == "chromium_disable_uniformity_analysis") {
- return Extension::kChromiumDisableUniformityAnalysis;
- }
if (str == "chromium_experimental_push_constant") {
return Extension::kChromiumExperimentalPushConstant;
}
+ if (str == "f16") {
+ return Extension::kF16;
+ }
return Extension::kInvalid;
}
@@ -47,14 +47,14 @@
switch (value) {
case Extension::kInvalid:
return out << "invalid";
- case Extension::kF16:
- return out << "f16";
- case Extension::kChromiumExperimentalDp4A:
- return out << "chromium_experimental_dp4a";
case Extension::kChromiumDisableUniformityAnalysis:
return out << "chromium_disable_uniformity_analysis";
+ case Extension::kChromiumExperimentalDp4A:
+ return out << "chromium_experimental_dp4a";
case Extension::kChromiumExperimentalPushConstant:
return out << "chromium_experimental_push_constant";
+ case Extension::kF16:
+ return out << "f16";
}
return out << "<unknown>";
}
diff --git a/src/tint/ast/extension.h b/src/tint/ast/extension.h
index eea9bec..9d1c96a 100644
--- a/src/tint/ast/extension.h
+++ b/src/tint/ast/extension.h
@@ -33,10 +33,10 @@
/// @see src/tint/intrinsics.def for extension descriptions
enum class Extension {
kInvalid,
- kF16,
- kChromiumExperimentalDp4A,
kChromiumDisableUniformityAnalysis,
+ kChromiumExperimentalDp4A,
kChromiumExperimentalPushConstant,
+ kF16,
};
/// @param out the std::ostream to write to
diff --git a/src/tint/ast/extension_bench.cc b/src/tint/ast/extension_bench.cc
index 8fc9d1c..94b5216 100644
--- a/src/tint/ast/extension_bench.cc
+++ b/src/tint/ast/extension_bench.cc
@@ -31,13 +31,13 @@
void ExtensionParser(::benchmark::State& state) {
std::array kStrings{
- "cc6",
- "s",
- "HH6",
- "f16",
- "116",
- "qJ6",
- "f17ll",
+ "chromium_disableuniformiccy_analysis",
+ "chromil3_disable_unifority_analss",
+ "chromium_disable_Vniformity_analysis",
+ "chromium_disable_uniformity_analysis",
+ "chromium_dis1ble_uniformity_analysis",
+ "chromium_qqisable_unifomity_anaJysis",
+ "chrollium_disable_uniformity_analysi77",
"chromippHm_experqqmetal_dp4a",
"chrmium_expecimntal_dp4",
"chrmiumGexpebimental_dp4a",
@@ -45,20 +45,20 @@
"chromium_exverimentiil_dp4a",
"chro8ium_experimenWWal_dp4a",
"chromiMm_eperimxxntal_dp4a",
- "chXggmium_disable_uniformity_aalysis",
- "Xhomiuu_disale_uniformity_analysis",
- "chromium_3isable_uniformity_analysis",
- "chromium_disable_uniformity_analysis",
- "chromiuE_disable_uniformity_analysis",
- "chromium_disable_uniTTormity_aPPalsis",
- "ddhromium_disabexxuniformity_analysis",
- "c44romium_experimental_push_constant",
- "chromium_experimental_pSSsVV_constant",
- "chrom22Rm_experimental_pushRonstant",
+ "chrXmium_experimeggtal_ush_constant",
+ "chromiu_experVmentalpusX_constant",
+ "chro3ium_experimental_push_constant",
"chromium_experimental_push_constant",
- "chromium_exp9rimFntal_ush_constant",
- "chrmium_experimental_push_constant",
- "cOOromium_experiVeHtal_puh_conRRtant",
+ "chromium_experEmental_push_constant",
+ "chPPomiumexperimental_push_conTTtant",
+ "chromixxm_experimentddl_push_constnt",
+ "4416",
+ "fSVV6",
+ "RR2",
+ "f16",
+ "96",
+ "f1",
+ "VOR6",
};
for (auto _ : state) {
for (auto& str : kStrings) {
diff --git a/src/tint/ast/extension_test.cc b/src/tint/ast/extension_test.cc
index 283088d..e43266c 100644
--- a/src/tint/ast/extension_test.cc
+++ b/src/tint/ast/extension_test.cc
@@ -42,25 +42,25 @@
}
static constexpr Case kValidCases[] = {
- {"f16", Extension::kF16},
- {"chromium_experimental_dp4a", Extension::kChromiumExperimentalDp4A},
{"chromium_disable_uniformity_analysis", Extension::kChromiumDisableUniformityAnalysis},
+ {"chromium_experimental_dp4a", Extension::kChromiumExperimentalDp4A},
{"chromium_experimental_push_constant", Extension::kChromiumExperimentalPushConstant},
+ {"f16", Extension::kF16},
};
static constexpr Case kInvalidCases[] = {
- {"cc6", Extension::kInvalid},
- {"s", Extension::kInvalid},
- {"HH6", Extension::kInvalid},
+ {"chromium_disableuniformiccy_analysis", Extension::kInvalid},
+ {"chromil3_disable_unifority_analss", Extension::kInvalid},
+ {"chromium_disable_Vniformity_analysis", Extension::kInvalid},
{"chro1ium_experimental_dp4a", Extension::kInvalid},
{"chrJmium_experiqqetal_dp4a", Extension::kInvalid},
{"chromium_experimenll77l_dp4a", Extension::kInvalid},
- {"chromiumppdisableqquniformity_aalysHHs", Extension::kInvalid},
- {"chromiu_disable_unifovmitc_analyi", Extension::kInvalid},
- {"chromium_diable_uGbformity_analysis", Extension::kInvalid},
- {"chvomium_experimental_push_constiint", Extension::kInvalid},
- {"chromiu8WWexperimental_push_constant", Extension::kInvalid},
- {"chromium_experiMental_push_costanxx", Extension::kInvalid},
+ {"cppromium_experiHHenal_qqush_constant", Extension::kInvalid},
+ {"chromium_xpericental_sh_vonstant", Extension::kInvalid},
+ {"chromium_experimental_Gsh_cbnstant", Extension::kInvalid},
+ {"f1vi", Extension::kInvalid},
+ {"f8WW", Extension::kInvalid},
+ {"fxx", Extension::kInvalid},
};
using ExtensionParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/ast/texel_format.cc b/src/tint/ast/texel_format.cc
index cfac9f1..201cad3 100644
--- a/src/tint/ast/texel_format.cc
+++ b/src/tint/ast/texel_format.cc
@@ -28,8 +28,44 @@
/// @param str the string to parse
/// @returns the parsed enum, or TexelFormat::kInvalid if the string could not be parsed.
TexelFormat ParseTexelFormat(std::string_view str) {
- if (str == "rgba8unorm") {
- return TexelFormat::kRgba8Unorm;
+ if (str == "r32float") {
+ return TexelFormat::kR32Float;
+ }
+ if (str == "r32sint") {
+ return TexelFormat::kR32Sint;
+ }
+ if (str == "r32uint") {
+ return TexelFormat::kR32Uint;
+ }
+ if (str == "rg32float") {
+ return TexelFormat::kRg32Float;
+ }
+ if (str == "rg32sint") {
+ return TexelFormat::kRg32Sint;
+ }
+ if (str == "rg32uint") {
+ return TexelFormat::kRg32Uint;
+ }
+ if (str == "rgba16float") {
+ return TexelFormat::kRgba16Float;
+ }
+ if (str == "rgba16sint") {
+ return TexelFormat::kRgba16Sint;
+ }
+ if (str == "rgba16uint") {
+ return TexelFormat::kRgba16Uint;
+ }
+ if (str == "rgba32float") {
+ return TexelFormat::kRgba32Float;
+ }
+ if (str == "rgba32sint") {
+ return TexelFormat::kRgba32Sint;
+ }
+ if (str == "rgba32uint") {
+ return TexelFormat::kRgba32Uint;
+ }
+ if (str == "rgba8sint") {
+ return TexelFormat::kRgba8Sint;
}
if (str == "rgba8snorm") {
return TexelFormat::kRgba8Snorm;
@@ -37,44 +73,8 @@
if (str == "rgba8uint") {
return TexelFormat::kRgba8Uint;
}
- if (str == "rgba8sint") {
- return TexelFormat::kRgba8Sint;
- }
- if (str == "rgba16uint") {
- return TexelFormat::kRgba16Uint;
- }
- if (str == "rgba16sint") {
- return TexelFormat::kRgba16Sint;
- }
- if (str == "rgba16float") {
- return TexelFormat::kRgba16Float;
- }
- if (str == "r32uint") {
- return TexelFormat::kR32Uint;
- }
- if (str == "r32sint") {
- return TexelFormat::kR32Sint;
- }
- if (str == "r32float") {
- return TexelFormat::kR32Float;
- }
- if (str == "rg32uint") {
- return TexelFormat::kRg32Uint;
- }
- if (str == "rg32sint") {
- return TexelFormat::kRg32Sint;
- }
- if (str == "rg32float") {
- return TexelFormat::kRg32Float;
- }
- if (str == "rgba32uint") {
- return TexelFormat::kRgba32Uint;
- }
- if (str == "rgba32sint") {
- return TexelFormat::kRgba32Sint;
- }
- if (str == "rgba32float") {
- return TexelFormat::kRgba32Float;
+ if (str == "rgba8unorm") {
+ return TexelFormat::kRgba8Unorm;
}
return TexelFormat::kInvalid;
}
@@ -83,38 +83,38 @@
switch (value) {
case TexelFormat::kInvalid:
return out << "invalid";
- case TexelFormat::kRgba8Unorm:
- return out << "rgba8unorm";
+ case TexelFormat::kR32Float:
+ return out << "r32float";
+ case TexelFormat::kR32Sint:
+ return out << "r32sint";
+ case TexelFormat::kR32Uint:
+ return out << "r32uint";
+ case TexelFormat::kRg32Float:
+ return out << "rg32float";
+ case TexelFormat::kRg32Sint:
+ return out << "rg32sint";
+ case TexelFormat::kRg32Uint:
+ return out << "rg32uint";
+ case TexelFormat::kRgba16Float:
+ return out << "rgba16float";
+ case TexelFormat::kRgba16Sint:
+ return out << "rgba16sint";
+ case TexelFormat::kRgba16Uint:
+ return out << "rgba16uint";
+ case TexelFormat::kRgba32Float:
+ return out << "rgba32float";
+ case TexelFormat::kRgba32Sint:
+ return out << "rgba32sint";
+ case TexelFormat::kRgba32Uint:
+ return out << "rgba32uint";
+ case TexelFormat::kRgba8Sint:
+ return out << "rgba8sint";
case TexelFormat::kRgba8Snorm:
return out << "rgba8snorm";
case TexelFormat::kRgba8Uint:
return out << "rgba8uint";
- case TexelFormat::kRgba8Sint:
- return out << "rgba8sint";
- case TexelFormat::kRgba16Uint:
- return out << "rgba16uint";
- case TexelFormat::kRgba16Sint:
- return out << "rgba16sint";
- case TexelFormat::kRgba16Float:
- return out << "rgba16float";
- case TexelFormat::kR32Uint:
- return out << "r32uint";
- case TexelFormat::kR32Sint:
- return out << "r32sint";
- case TexelFormat::kR32Float:
- return out << "r32float";
- case TexelFormat::kRg32Uint:
- return out << "rg32uint";
- case TexelFormat::kRg32Sint:
- return out << "rg32sint";
- case TexelFormat::kRg32Float:
- return out << "rg32float";
- case TexelFormat::kRgba32Uint:
- return out << "rgba32uint";
- case TexelFormat::kRgba32Sint:
- return out << "rgba32sint";
- case TexelFormat::kRgba32Float:
- return out << "rgba32float";
+ case TexelFormat::kRgba8Unorm:
+ return out << "rgba8unorm";
}
return out << "<unknown>";
}
diff --git a/src/tint/ast/texel_format.h b/src/tint/ast/texel_format.h
index 28119b3..ed1e326 100644
--- a/src/tint/ast/texel_format.h
+++ b/src/tint/ast/texel_format.h
@@ -30,22 +30,22 @@
/// Enumerator of texel formats
enum class TexelFormat {
kInvalid,
- kRgba8Unorm,
+ kR32Float,
+ kR32Sint,
+ kR32Uint,
+ kRg32Float,
+ kRg32Sint,
+ kRg32Uint,
+ kRgba16Float,
+ kRgba16Sint,
+ kRgba16Uint,
+ kRgba32Float,
+ kRgba32Sint,
+ kRgba32Uint,
+ kRgba8Sint,
kRgba8Snorm,
kRgba8Uint,
- kRgba8Sint,
- kRgba16Uint,
- kRgba16Sint,
- kRgba16Float,
- kR32Uint,
- kR32Sint,
- kR32Float,
- kRg32Uint,
- kRg32Sint,
- kRg32Float,
- kRgba32Uint,
- kRgba32Sint,
- kRgba32Float,
+ kRgba8Unorm,
};
/// @param out the std::ostream to write to
diff --git a/src/tint/ast/texel_format_bench.cc b/src/tint/ast/texel_format_bench.cc
index a17906a..c48e0f6 100644
--- a/src/tint/ast/texel_format_bench.cc
+++ b/src/tint/ast/texel_format_bench.cc
@@ -31,29 +31,29 @@
void TexelFormatParser(::benchmark::State& state) {
std::array kStrings{
- "rgbaunccrm", "rlbanr3", "rVba8unorm", "rgba8unorm", "rgba1unorm",
- "rgbJqqnorm", "rgb7ll8unorm", "rgqqappnoHHm", "rv8scor", "rgbbGsnrm",
- "rgba8snorm", "rgba8vniirm", "rg8a8snoWWm", "Mgbaxxnorm", "rXa8uggnt",
- "rgbXVut", "3gba8uint", "rgba8uint", "rgba8uiEt", "rgTTPauint",
- "ddgbauixxt", "44gba8sint", "VVgbaSSsint", "rba8si2Rt", "rgba8sint",
- "r9bFsint", "rgba8int", "rgVROOsHnt", "ryba1uint", "r77ba1nnullrrt",
- "rgb4006uint", "rgba16uint", "rb1uioot", "rga1uzznt", "r11b1uppiit",
- "XXgba16sint", "IIgb9916nni55t", "rYbaSSrrsiHHat", "rgba16sint", "rbkk6Hit",
- "jgba1sgRR", "rgbab6si", "rgba16fljat", "rgba6float", "rbq6float",
- "rgba16float", "rgba1NNloat", "rgbvv6flot", "rgbaQQ6foat", "r3ffir",
- "r32uijt", "rNNwuin8", "r32uint", "r32int", "rrr2uint",
- "G32uint", "r32sinFF", "32st", "r3rrint", "r32sint",
- "2sint", "D3siJJt", "r38n", "r211lk", "r32floa",
- "r3flJat", "r32float", "r32fcoat", "r32floOt", "r32floKK_vtt",
- "rxx32ui8", "Fg3qq__n", "rg32iqqt", "rg32uint", "rg333uin6",
- "rtto62u9QQt", "rg366uin", "rOx2si6zz", "rg3yysint", "rHHsint",
- "rg32sint", "qWW432snt", "rg3OOsnt", "g32siYt", "g32flo",
- "rg32foaF", "rg32fwat", "rg32float", "G3fKoaff", "KKgq2float",
- "rg32mmlo3t", "rgba32uit", "rqba3uint", "rgbabb2uin", "rgba32uint",
- "rba32iint", "qgba32uiOt", "rgba32uiTTvv", "rgFFa32sint", "rg00Q2sPnt",
- "rgbaP2sint", "rgba32sint", "rgb77s2sint", "rgba32sbbRRC", "rgbXX32sint",
- "rOOOba3CCqoat", "rgbu32fsLt", "rgba3Xfloat", "rgba32float", "rba32float",
- "qqb3float", "rgba32fl22at",
+ "rcc2flot", "3flo3", "r32flVat", "r32float", "132float",
+ "32Jlqqat", "ll3277loat", "ppqq2snHH", "r3cv", "b2siGt",
+ "r32sint", "r32siivt", "8WW2sint", "rxxsint", "rXuingg",
+ "3uiXt", "r32u3nt", "r32uint", "E32uint", "rPTTuint",
+ "r32uidxx", "44g32float", "VVg32SSloat", "r32flo2Rt", "rg32float",
+ "r93Float", "rg32foat", "rgVROOlHat", "rg3ysin", "77grr2sllnnt",
+ "04g32sint", "rg32sint", "g3oont", "rg32zzt", "rgiipps1n",
+ "XXg32uint", "rII39955nnnt", "aagHH2uinYSS", "rg32uint", "rkk3it",
+ "gj3uRRn", "r3bunt", "rgba16fljat", "rgba6float", "rbq6float",
+ "rgba16float", "rgba1NNloat", "rgbvv6flot", "rgbaQQ6foat", "rgb6srnff",
+ "rgba16sijt", "NNgba16ww2t", "rgba16sint", "rgba16snt", "rgba16rrint",
+ "rgba1Gsint", "rgba16uFFnt", "g16uEnt", "rgb16rrint", "rgba16uint",
+ "gba16uit", "rXa1DuiJJt", "rgauint", "rga32klot", "rgb32float",
+ "rgJa32flot", "rgba32float", "rgba32fcoat", "rgba32floOt", "__gttavv2fKKoat",
+ "rg5a32xxnt", "__ba3sqqFt", "rgbqq2sint", "rgba32sint", "33ba32s66nt",
+ "rtt6a3QQooint", "r66ba3sint", "xba32zzinO6", "ryyba32uint", "rbZ32HinZ",
+ "rgba32uint", "rgba3u4WWnq", "rgba32uOOt", "oogba2Yin", "gba8si",
+ "rgba8inF", "rgba8wnt", "rgba8sint", "Gb8Kinff", "KKgqa8sint",
+ "rgbammsi3t", "rgba8snom", "rqba8norm", "rgbabbsnor", "rgba8snorm",
+ "rba8siorm", "qgba8snoOm", "rgba8snoTTvv", "rgbaFFuint", "rgQa00uiP",
+ "rgPa8uint", "rgba8uint", "rgssa77unt", "Cgbbb8uiRRt", "rgba8uinXX",
+ "CqgbaOOunorm", "rgbu8usrL", "rgba8Xnorm", "rgba8unorm", "rgba8unrm",
+ "ba8uqqor", "rgba8unor22",
};
for (auto _ : state) {
for (auto& str : kStrings) {
diff --git a/src/tint/ast/texel_format_test.cc b/src/tint/ast/texel_format_test.cc
index 606d78f..d431918 100644
--- a/src/tint/ast/texel_format_test.cc
+++ b/src/tint/ast/texel_format_test.cc
@@ -42,41 +42,41 @@
}
static constexpr Case kValidCases[] = {
- {"rgba8unorm", TexelFormat::kRgba8Unorm}, {"rgba8snorm", TexelFormat::kRgba8Snorm},
- {"rgba8uint", TexelFormat::kRgba8Uint}, {"rgba8sint", TexelFormat::kRgba8Sint},
- {"rgba16uint", TexelFormat::kRgba16Uint}, {"rgba16sint", TexelFormat::kRgba16Sint},
- {"rgba16float", TexelFormat::kRgba16Float}, {"r32uint", TexelFormat::kR32Uint},
- {"r32sint", TexelFormat::kR32Sint}, {"r32float", TexelFormat::kR32Float},
- {"rg32uint", TexelFormat::kRg32Uint}, {"rg32sint", TexelFormat::kRg32Sint},
- {"rg32float", TexelFormat::kRg32Float}, {"rgba32uint", TexelFormat::kRgba32Uint},
- {"rgba32sint", TexelFormat::kRgba32Sint}, {"rgba32float", TexelFormat::kRgba32Float},
+ {"r32float", TexelFormat::kR32Float}, {"r32sint", TexelFormat::kR32Sint},
+ {"r32uint", TexelFormat::kR32Uint}, {"rg32float", TexelFormat::kRg32Float},
+ {"rg32sint", TexelFormat::kRg32Sint}, {"rg32uint", TexelFormat::kRg32Uint},
+ {"rgba16float", TexelFormat::kRgba16Float}, {"rgba16sint", TexelFormat::kRgba16Sint},
+ {"rgba16uint", TexelFormat::kRgba16Uint}, {"rgba32float", TexelFormat::kRgba32Float},
+ {"rgba32sint", TexelFormat::kRgba32Sint}, {"rgba32uint", TexelFormat::kRgba32Uint},
+ {"rgba8sint", TexelFormat::kRgba8Sint}, {"rgba8snorm", TexelFormat::kRgba8Snorm},
+ {"rgba8uint", TexelFormat::kRgba8Uint}, {"rgba8unorm", TexelFormat::kRgba8Unorm},
};
static constexpr Case kInvalidCases[] = {
- {"rgbaunccrm", TexelFormat::kInvalid}, {"rlbanr3", TexelFormat::kInvalid},
- {"rVba8unorm", TexelFormat::kInvalid}, {"rgba1snorm", TexelFormat::kInvalid},
- {"rgbJqqnorm", TexelFormat::kInvalid}, {"rgb7ll8snorm", TexelFormat::kInvalid},
- {"rgbauippqHH", TexelFormat::kInvalid}, {"rgbaun", TexelFormat::kInvalid},
- {"rba8Gint", TexelFormat::kInvalid}, {"rgvia8sint", TexelFormat::kInvalid},
- {"rgba8WWint", TexelFormat::kInvalid}, {"rgbasxxMt", TexelFormat::kInvalid},
- {"rXba16ungg", TexelFormat::kInvalid}, {"rba1XuVt", TexelFormat::kInvalid},
- {"rgba16uin3", TexelFormat::kInvalid}, {"rgba16sinE", TexelFormat::kInvalid},
- {"TTgba16sPPn", TexelFormat::kInvalid}, {"rgbad6xxint", TexelFormat::kInvalid},
- {"rgba446float", TexelFormat::kInvalid}, {"SSVVba16float", TexelFormat::kInvalid},
- {"rgbRR6float", TexelFormat::kInvalid}, {"rFui9t", TexelFormat::kInvalid},
- {"r32int", TexelFormat::kInvalid}, {"VOORRHnt", TexelFormat::kInvalid},
- {"r3siyt", TexelFormat::kInvalid}, {"lln3rrs77nt", TexelFormat::kInvalid},
- {"r32s4n00", TexelFormat::kInvalid}, {"32ooat", TexelFormat::kInvalid},
- {"r32fzzt", TexelFormat::kInvalid}, {"r3iippl1a", TexelFormat::kInvalid},
- {"XXg32uint", TexelFormat::kInvalid}, {"rII39955nnnt", TexelFormat::kInvalid},
- {"aagHH2uinYSS", TexelFormat::kInvalid}, {"rkk3it", TexelFormat::kInvalid},
- {"gj3sRRn", TexelFormat::kInvalid}, {"r3bsnt", TexelFormat::kInvalid},
- {"rg32flojt", TexelFormat::kInvalid}, {"r32floa", TexelFormat::kInvalid},
- {"rg32lot", TexelFormat::kInvalid}, {"rgb3uit", TexelFormat::kInvalid},
- {"rgjj3uint", TexelFormat::kInvalid}, {"rgb2urnff", TexelFormat::kInvalid},
- {"rgba32sijt", TexelFormat::kInvalid}, {"NNgba32ww2t", TexelFormat::kInvalid},
- {"rgba32snt", TexelFormat::kInvalid}, {"rgba32rrloat", TexelFormat::kInvalid},
- {"rgGa32float", TexelFormat::kInvalid}, {"FFgba32float", TexelFormat::kInvalid},
+ {"rcc2flot", TexelFormat::kInvalid}, {"3flo3", TexelFormat::kInvalid},
+ {"r32flVat", TexelFormat::kInvalid}, {"r32s1nt", TexelFormat::kInvalid},
+ {"rq2Jint", TexelFormat::kInvalid}, {"r32sin7ll", TexelFormat::kInvalid},
+ {"ppqq2unHH", TexelFormat::kInvalid}, {"r3cv", TexelFormat::kInvalid},
+ {"b2uiGt", TexelFormat::kInvalid}, {"rgvi2float", TexelFormat::kInvalid},
+ {"rg328WWoat", TexelFormat::kInvalid}, {"rg32lxxMt", TexelFormat::kInvalid},
+ {"rgXggsnt", TexelFormat::kInvalid}, {"rgXsnu", TexelFormat::kInvalid},
+ {"rg32s3nt", TexelFormat::kInvalid}, {"rg3Euint", TexelFormat::kInvalid},
+ {"PP32TTint", TexelFormat::kInvalid}, {"xxg32ddnt", TexelFormat::kInvalid},
+ {"rgba446float", TexelFormat::kInvalid}, {"SSVVba16float", TexelFormat::kInvalid},
+ {"rgbRR6float", TexelFormat::kInvalid}, {"rga16Fint", TexelFormat::kInvalid},
+ {"rgb16sint", TexelFormat::kInvalid}, {"ORVHa16sint", TexelFormat::kInvalid},
+ {"ryba1uint", TexelFormat::kInvalid}, {"r77ba1nnullrrt", TexelFormat::kInvalid},
+ {"rgb4006uint", TexelFormat::kInvalid}, {"rboofloat", TexelFormat::kInvalid},
+ {"rgbaz2loat", TexelFormat::kInvalid}, {"ppga3ii1floa", TexelFormat::kInvalid},
+ {"XXgba32sint", TexelFormat::kInvalid}, {"IIgb9932nni55t", TexelFormat::kInvalid},
+ {"rYbaSSrrsiHHat", TexelFormat::kInvalid}, {"rbkk2Hit", TexelFormat::kInvalid},
+ {"jgba3ugRR", TexelFormat::kInvalid}, {"rgbab2ui", TexelFormat::kInvalid},
+ {"rgba8sijt", TexelFormat::kInvalid}, {"rba8sint", TexelFormat::kInvalid},
+ {"rba8sqt", TexelFormat::kInvalid}, {"rgba8NNnom", TexelFormat::kInvalid},
+ {"rga8vvorm", TexelFormat::kInvalid}, {"rgba8snorQ", TexelFormat::kInvalid},
+ {"rgbauirf", TexelFormat::kInvalid}, {"rgbajuint", TexelFormat::kInvalid},
+ {"wNNgbauin2", TexelFormat::kInvalid}, {"rgba8unrm", TexelFormat::kInvalid},
+ {"rgba8urrorm", TexelFormat::kInvalid}, {"rgba8Gnorm", TexelFormat::kInvalid},
};
using TexelFormatParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/transform/canonicalize_entry_point_io.cc b/src/tint/transform/canonicalize_entry_point_io.cc
index 0ff1084..0b642d7 100644
--- a/src/tint/transform/canonicalize_entry_point_io.cc
+++ b/src/tint/transform/canonicalize_entry_point_io.cc
@@ -45,6 +45,42 @@
std::optional<uint32_t> location;
};
+/// FXC is sensitive to field order in structures, this is used by StructMemberComparator to ensure
+/// that FXC is happy with the order of emitted fields.
+uint32_t BuiltinOrder(ast::BuiltinValue builtin) {
+ switch (builtin) {
+ case ast::BuiltinValue::kPosition:
+ return 1;
+ case ast::BuiltinValue::kVertexIndex:
+ return 2;
+ case ast::BuiltinValue::kInstanceIndex:
+ return 3;
+ case ast::BuiltinValue::kFrontFacing:
+ return 4;
+ case ast::BuiltinValue::kFragDepth:
+ return 5;
+ case ast::BuiltinValue::kLocalInvocationId:
+ return 6;
+ case ast::BuiltinValue::kLocalInvocationIndex:
+ return 7;
+ case ast::BuiltinValue::kGlobalInvocationId:
+ return 8;
+ case ast::BuiltinValue::kWorkgroupId:
+ return 9;
+ case ast::BuiltinValue::kNumWorkgroups:
+ return 10;
+ case ast::BuiltinValue::kSampleIndex:
+ return 11;
+ case ast::BuiltinValue::kSampleMask:
+ return 12;
+ case ast::BuiltinValue::kPointSize:
+ return 13;
+ default:
+ break;
+ }
+ return 0;
+}
+
/// Comparison function used to reorder struct members such that all members with
/// location attributes appear first (ordered by location slot), followed by
/// those with builtin attributes.
@@ -68,8 +104,8 @@
// `b` has location attribute and `a` does not: `b` goes first.
return false;
}
- // Both are builtins: order doesn't matter, just use enum value.
- return a_blt->builtin < b_blt->builtin;
+ // Both are builtins: order matters for FXC.
+ return BuiltinOrder(a_blt->builtin) < BuiltinOrder(b_blt->builtin);
}
}
diff --git a/tools/src/tint/intrinsic/resolver/resolve.go b/tools/src/tint/intrinsic/resolver/resolve.go
index da03428..b2e71d9 100644
--- a/tools/src/tint/intrinsic/resolver/resolve.go
+++ b/tools/src/tint/intrinsic/resolver/resolve.go
@@ -148,6 +148,9 @@
names.Add(ast.Name)
}
+ // Sort the enum entries into lexicographic order
+ sort.Slice(s.Entries, func(i, j int) bool { return s.Entries[i].Name < s.Entries[j].Name })
+
return nil
}