Mark some enum entries as `@internal`
The defs file allow marking things as `@internal` which removes the
parsing code and does not add them to the list of suggested spellings.
This CL updates the `in` and `out` address spaces along with the
`point_size` builtin to be `@internal`. A series of tests are removed
which are from either old SPIR-V transform code, or ways of writing WGSL
which we no longer generate.
Bug: 42250952
Change-Id: I2aba36123bf0745652d90be4fa336137ebdda420
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/221436
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/core/address_space.cc b/src/tint/lang/core/address_space.cc
index a9a6406..8906b5b 100644
--- a/src/tint/lang/core/address_space.cc
+++ b/src/tint/lang/core/address_space.cc
@@ -42,12 +42,6 @@
/// @param str the string to parse
/// @returns the parsed enum, or AddressSpace::kUndefined if the string could not be parsed.
AddressSpace ParseAddressSpace(std::string_view str) {
- if (str == "__in") {
- return AddressSpace::kIn;
- }
- if (str == "__out") {
- return AddressSpace::kOut;
- }
if (str == "function") {
return AddressSpace::kFunction;
}
diff --git a/src/tint/lang/core/address_space.def b/src/tint/lang/core/address_space.def
index 0b8631d..37845f5 100644
--- a/src/tint/lang/core/address_space.def
+++ b/src/tint/lang/core/address_space.def
@@ -7,7 +7,7 @@
storage
push_constant
pixel_local
- __in
- __out
+ @internal __in
+ @internal __out
@internal handle
}
diff --git a/src/tint/lang/core/address_space.h b/src/tint/lang/core/address_space.h
index 00f808b..b6fde43 100644
--- a/src/tint/lang/core/address_space.h
+++ b/src/tint/lang/core/address_space.h
@@ -46,8 +46,8 @@
/// Address space of a given pointer.
enum class AddressSpace : uint8_t {
kUndefined,
- kIn,
- kOut,
+ kIn, // Tint-internal enum entry - not parsed
+ kOut, // Tint-internal enum entry - not parsed
kFunction,
kHandle, // Tint-internal enum entry - not parsed
kPixelLocal,
@@ -76,8 +76,7 @@
AddressSpace ParseAddressSpace(std::string_view str);
constexpr std::string_view kAddressSpaceStrings[] = {
- "__in", "__out", "function", "pixel_local", "private",
- "push_constant", "storage", "uniform", "workgroup",
+ "function", "pixel_local", "private", "push_constant", "storage", "uniform", "workgroup",
};
/// @returns true if the AddressSpace is host-shareable
diff --git a/src/tint/lang/core/address_space_bench.cc b/src/tint/lang/core/address_space_bench.cc
index f95f956..bd55c1b 100644
--- a/src/tint/lang/core/address_space_bench.cc
+++ b/src/tint/lang/core/address_space_bench.cc
@@ -45,69 +45,16 @@
void AddressSpaceParser(::benchmark::State& state) {
const char* kStrings[] = {
- "ccin",
- "3",
- "_Vin",
- "__in",
- "1_in",
- "_qiJ",
- "_lli77",
- "__qHupp",
- "vt",
- "G_bt",
- "__out",
- "__viut",
- "__8WWt",
- "Mxxou",
- "fuXggton",
- "fuXtou",
- "funct3on",
- "function",
- "funEtion",
- "PPncTTion",
- "xxuncddon",
- "pixe44_local",
- "SSVVxel_local",
- "pixRR_local",
- "pixel_local",
- "pixel_lF9a",
- "pixel_loca",
- "pOOxVRl_locH",
- "prvaye",
- "llnrrrv77te",
- "priv4t00",
- "private",
- "rvooe",
- "zzvate",
- "piiippa1",
- "puXXh_constant",
- "pusII9_nn55nstant",
- "YusHH_coaastSSrnt",
- "push_constant",
- "pushonkkHan",
- "jush_consgRt",
- "puh_cobsant",
- "storaje",
- "torage",
- "qrage",
- "storage",
- "stoNNge",
- "torgvv",
- "QQorage",
- "unffor",
- "unifojm",
- "uNNwfor8",
- "uniform",
- "uniorm",
- "urriform",
- "Gniform",
- "workgrFFup",
- "Eokgru",
- "worrgroup",
- "workgroup",
- "wokgrou",
- "woJDkgoup",
- "okroup",
+ "fccnctin", "ucti3", "functVon", "function", "1unction",
+ "unJtqqon", "llun77tion", "pixppHq_local", "ciellovl", "ibGl_local",
+ "pixel_local", "pivel_liical", "pixel_lWW8al", "piel_xxoMal", "pXvatgg",
+ "rvaXe", "priv3te", "private", "Erivate", "pPTTvate",
+ "privadxx", "push_c44nstant", "push_SSonsVVant", "pRs2Rconstant", "push_constant",
+ "push_coFstn9", "psh_constant", "Vush_cnRRtOOHt", "straye", "llntrrr77ge",
+ "stor4g00", "storage", "trooe", "zzrage", "siioppa1",
+ "unifoXXm", "9II5nnnform", "uniaSSrHHYm", "uniform", "unkkm",
+ "jnigRo", "ubfor", "workgrojp", "wrkgroup", "wrkgrqp",
+ "workgroup", "wrkNNroup", "wokgouvv", "orkgrQQup",
};
for (auto _ : state) {
for (auto* str : kStrings) {
diff --git a/src/tint/lang/core/address_space_test.cc b/src/tint/lang/core/address_space_test.cc
index 0f63446..ff9e90c 100644
--- a/src/tint/lang/core/address_space_test.cc
+++ b/src/tint/lang/core/address_space_test.cc
@@ -57,32 +57,24 @@
}
static constexpr Case kValidCases[] = {
- {"__in", AddressSpace::kIn},
- {"__out", AddressSpace::kOut},
- {"function", AddressSpace::kFunction},
- {"pixel_local", AddressSpace::kPixelLocal},
- {"private", AddressSpace::kPrivate},
- {"push_constant", AddressSpace::kPushConstant},
- {"storage", AddressSpace::kStorage},
- {"uniform", AddressSpace::kUniform},
+ {"function", AddressSpace::kFunction}, {"pixel_local", AddressSpace::kPixelLocal},
+ {"private", AddressSpace::kPrivate}, {"push_constant", AddressSpace::kPushConstant},
+ {"storage", AddressSpace::kStorage}, {"uniform", AddressSpace::kUniform},
{"workgroup", AddressSpace::kWorkgroup},
};
static constexpr Case kInvalidCases[] = {
- {"ccin", AddressSpace::kUndefined}, {"3", AddressSpace::kUndefined},
- {"_Vin", AddressSpace::kUndefined}, {"__ou1", AddressSpace::kUndefined},
- {"qq_Jt", AddressSpace::kUndefined}, {"__oll7t", AddressSpace::kUndefined},
- {"qquntppHon", AddressSpace::kUndefined}, {"cnciv", AddressSpace::kUndefined},
- {"funGion", AddressSpace::kUndefined}, {"pivel_liical", AddressSpace::kUndefined},
- {"pixel_lWW8al", AddressSpace::kUndefined}, {"piel_xxoMal", AddressSpace::kUndefined},
- {"pXvatgg", AddressSpace::kUndefined}, {"rvaXe", AddressSpace::kUndefined},
- {"priv3te", AddressSpace::kUndefined}, {"push_constanE", AddressSpace::kUndefined},
- {"push_TTPnstant", AddressSpace::kUndefined}, {"puxxdh_constan", AddressSpace::kUndefined},
- {"s44orage", AddressSpace::kUndefined}, {"stSSraVVe", AddressSpace::kUndefined},
- {"RtoR22e", AddressSpace::kUndefined}, {"uFfo9m", AddressSpace::kUndefined},
- {"uniorm", AddressSpace::kUndefined}, {"VOORRHrm", AddressSpace::kUndefined},
- {"woykgoup", AddressSpace::kUndefined}, {"l77nnrrkgroGp", AddressSpace::kUndefined},
- {"wo4kgr00up", AddressSpace::kUndefined},
+ {"fccnctin", AddressSpace::kUndefined}, {"ucti3", AddressSpace::kUndefined},
+ {"functVon", AddressSpace::kUndefined}, {"pixel_loc1l", AddressSpace::kUndefined},
+ {"pqqxel_lJal", AddressSpace::kUndefined}, {"pixll77_local", AddressSpace::kUndefined},
+ {"ppqqivtHH", AddressSpace::kUndefined}, {"prcv", AddressSpace::kUndefined},
+ {"bivaGe", AddressSpace::kUndefined}, {"puvh_ciinstant", AddressSpace::kUndefined},
+ {"push8WWonstant", AddressSpace::kUndefined}, {"pxxsh_cMnstnt", AddressSpace::kUndefined},
+ {"sXraggg", AddressSpace::kUndefined}, {"traXe", AddressSpace::kUndefined},
+ {"stor3ge", AddressSpace::kUndefined}, {"Eniform", AddressSpace::kUndefined},
+ {"uPTTform", AddressSpace::kUndefined}, {"unifodxx", AddressSpace::kUndefined},
+ {"44orkgroup", AddressSpace::kUndefined}, {"VVorkSSroup", AddressSpace::kUndefined},
+ {"wrkgro2Rp", AddressSpace::kUndefined},
};
using AddressSpaceParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/core/builtin_value.cc b/src/tint/lang/core/builtin_value.cc
index 11003a9..412bc6e 100644
--- a/src/tint/lang/core/builtin_value.cc
+++ b/src/tint/lang/core/builtin_value.cc
@@ -42,9 +42,6 @@
/// @param str the string to parse
/// @returns the parsed enum, or BuiltinValue::kUndefined if the string could not be parsed.
BuiltinValue ParseBuiltinValue(std::string_view str) {
- if (str == "__point_size") {
- return BuiltinValue::kPointSize;
- }
if (str == "clip_distances") {
return BuiltinValue::kClipDistances;
}
diff --git a/src/tint/lang/core/builtin_value.h b/src/tint/lang/core/builtin_value.h
index 8c5d0d9..e4cc710 100644
--- a/src/tint/lang/core/builtin_value.h
+++ b/src/tint/lang/core/builtin_value.h
@@ -46,7 +46,7 @@
/// Builtin value defined with `@builtin(<name>)`.
enum class BuiltinValue : uint8_t {
kUndefined,
- kPointSize,
+ kPointSize, // Tint-internal enum entry - not parsed
kClipDistances,
kFragDepth,
kFrontFacing,
@@ -82,10 +82,11 @@
BuiltinValue ParseBuiltinValue(std::string_view str);
constexpr std::string_view kBuiltinValueStrings[] = {
- "__point_size", "clip_distances", "frag_depth", "front_facing",
- "global_invocation_id", "instance_index", "local_invocation_id", "local_invocation_index",
- "num_workgroups", "position", "sample_index", "sample_mask",
- "subgroup_invocation_id", "subgroup_size", "vertex_index", "workgroup_id",
+ "clip_distances", "frag_depth", "front_facing",
+ "global_invocation_id", "instance_index", "local_invocation_id",
+ "local_invocation_index", "num_workgroups", "position",
+ "sample_index", "sample_mask", "subgroup_invocation_id",
+ "subgroup_size", "vertex_index", "workgroup_id",
};
} // namespace tint::core
diff --git a/src/tint/lang/core/builtin_value_bench.cc b/src/tint/lang/core/builtin_value_bench.cc
index 07fbc2e..e8dbcad 100644
--- a/src/tint/lang/core/builtin_value_bench.cc
+++ b/src/tint/lang/core/builtin_value_bench.cc
@@ -45,118 +45,111 @@
void BuiltinValueParser(::benchmark::State& state) {
const char* kStrings[] = {
- "_ccpoint_siz",
- "_3poi_ile",
- "__poiVt_size",
- "__point_size",
- "1_point_size",
- "__pointJsqze",
- "__lloint_siz77",
- "clppp_disqHHancs",
- "cli_dvsnces",
- "cip_diGtances",
+ "clip_distacecc",
+ "c_disla3ces",
+ "cliV_distances",
"clip_distances",
- "clvp_distaniies",
- "8lip_disWWances",
- "clixx_disances",
- "fXag_detgg",
- "fag_XuVh",
- "frag_dept3",
+ "clip1distances",
+ "cqqiJ_distanes",
+ "clip_dllstance77",
+ "frqqgppepHHh",
+ "fv_dcpt",
+ "frabGdeth",
"frag_depth",
- "frag_deptE",
- "TTrag_dePPt",
- "fragddxxpth",
- "44ront_facing",
- "fSSont_facinVV",
- "fronR_Racing",
+ "frag_veiith",
+ "fr8g_depWWh",
+ "Mragxxepth",
+ "ggroXtfacing",
+ "Vot_fuciXg",
+ "front_fac3ng",
"front_facing",
- "ron9_faciFg",
- "front_facin",
- "fVonRR_HaOing",
- "global_iyvocatin_id",
- "globrrlln_invocation_G77",
- "glob00l_invocati4n_id",
+ "front_fEcing",
+ "fronPPfaTTing",
+ "ddroxxtfacing",
+ "global_invocatio44_id",
+ "global_invocaSSioVV_id",
+ "22loRal_invoRtion_id",
"global_invocation_id",
- "gloa_invocatinooid",
- "globl_nvocationzzid",
- "loal_piinvocat11on_id",
- "instance_indXXx",
- "55nstan99enIIindex",
- "iHHstancSS_aanrrYx",
+ "globalFinvoction_id",
+ "gloal_invocation_id",
+ "RRlHOOaV_invoction_id",
+ "instance_ydex",
+ "instGlr77cnn_index",
+ "instan04e_index",
"instance_index",
- "inskkaHce_dx",
- "insRRanceijge",
- "instance_inb",
- "ljcal_invocation_id",
- "local_invocaton_id",
- "local_inqocain_id",
+ "insacoo_inex",
+ "izstane_index",
+ "nippance_in11ex",
+ "local_invXXcation_id",
+ "lIIcal_i5599ocation_inn",
+ "HHrrcal_inSSocation_Yaa",
"local_invocation_id",
- "local_invNNation_id",
- "loalvvinvoction_id",
- "ocal_invocatioQQ_id",
- "rcal_invffcaton_index",
- "lojal_invocation_index",
- "lcNNwl_in2ocat8on_index",
+ "lokkal_invocatini",
+ "jocal_invocRRongid",
+ "local_inocatbon_i",
+ "local_injocation_index",
+ "local_invocatio_index",
+ "locl_invocqtion_ndex",
"local_invocation_index",
- "local_invcation_index",
- "local_rrnvocation_index",
- "local_invocatGon_index",
- "num_workgroupFF",
- "nEm_ogroups",
- "numwrrrkgroups",
+ "localNNinvocaton_index",
+ "local_invocatin_ivvdx",
+ "locl_invocatioQQ_index",
+ "num_workgffus",
+ "num_workgroujs",
+ "num_wrkgNNwoup8",
"num_workgroups",
- "um_workgrops",
- "DX_worJJgroups",
- "nu8_orkgrop",
- "ps11tk",
- "positio",
- "poitJon",
+ "numworkgroups",
+ "num_workrrroups",
+ "num_worGgroups",
+ "pFFsition",
+ "pEiio",
+ "prrsitio",
"position",
- "posicion",
- "positiOn",
- "positiKK_vtt",
- "smple5inxxe8",
- "s__mle_qFdex",
- "saqqple_idex",
+ "sition",
+ "poJJDtin",
+ "poi8i",
+ "smpke11nde",
+ "samle_index",
+ "saple_Jndex",
"sample_index",
- "saOpe_33nde66",
- "s6oople_indttQx",
- "sam66le_inex",
- "samxe66masOz",
- "yyample_mask",
- "amplZZHask",
+ "cample_index",
+ "sample_indOx",
+ "savvKKl___inttex",
+ "sam8le_xx5k",
+ "sampqq__msk",
+ "sampleqmask",
"sample_mask",
- "WWaple_maq4k",
- "samplOO_ask",
- "sYohpe_msk",
- "subgroup_vocaton_id",
- "subgroup_invocatoF_id",
- "subgroup_invocwtion_i",
+ "33amOe_mas66",
+ "samoott6QQmask",
+ "66mple_mask",
+ "subroup_invoOaxion_i6zz",
+ "subgroup_inyyocation_id",
+ "subgrup_invcatiZHH_id",
"subgroup_invocation_id",
- "suKrffupGinvocation_d",
- "subgroup_KKnvqcation_id",
- "subgroup_inmmo3ation_iF",
- "subgroup_ize",
- "subgroup_izq",
- "sbgroup_bbize",
+ "subgroqp_inWWoat44on_id",
+ "subgrou_inOOocation_id",
+ "suhgrup_invoYation_id",
+ "subroup_si",
+ "suFgoup_size",
+ "subgowp_size",
"subgroup_size",
- "sbiiroup_siz",
- "sbgroqOp_size",
- "TTubgroup_sivve",
- "vertFFx_index",
- "vertePfnQ00x",
- "vePtex_index",
+ "suffgKup_sie",
+ "KKubgroqp_size",
+ "subFroup3mmize",
+ "ertex_index",
+ "verteq_inex",
+ "verbx_indbbx",
"vertex_index",
- "vesstexinde77",
- "vertex_indbbRC",
- "vertex_indeXX",
- "workgOOup_qOCC",
- "wrkgrous_iL",
- "workgroup_iX",
+ "iertex_indx",
+ "veOOtexqidex",
+ "vertexvvindTTx",
+ "workFFroup_id",
+ "workgPfpQ00d",
+ "woPkgroup_id",
"workgroup_id",
- "workgoup_id",
- "orgrqqO_id",
- "workg22oup_id",
+ "wosskgrup_i77",
+ "workgroup_bbRC",
+ "workgroup_iXX",
};
for (auto _ : state) {
for (auto* str : kStrings) {
diff --git a/src/tint/lang/core/builtin_value_test.cc b/src/tint/lang/core/builtin_value_test.cc
index 184d68a..c5d87fd 100644
--- a/src/tint/lang/core/builtin_value_test.cc
+++ b/src/tint/lang/core/builtin_value_test.cc
@@ -57,7 +57,6 @@
}
static constexpr Case kValidCases[] = {
- {"__point_size", BuiltinValue::kPointSize},
{"clip_distances", BuiltinValue::kClipDistances},
{"frag_depth", BuiltinValue::kFragDepth},
{"front_facing", BuiltinValue::kFrontFacing},
@@ -76,54 +75,51 @@
};
static constexpr Case kInvalidCases[] = {
- {"_ccpoint_siz", BuiltinValue::kUndefined},
- {"_3poi_ile", BuiltinValue::kUndefined},
- {"__poiVt_size", BuiltinValue::kUndefined},
- {"clip1distances", BuiltinValue::kUndefined},
- {"cqqiJ_distanes", BuiltinValue::kUndefined},
- {"clip_dllstance77", BuiltinValue::kUndefined},
- {"frqqgppepHHh", BuiltinValue::kUndefined},
- {"fv_dcpt", BuiltinValue::kUndefined},
- {"frabGdeth", BuiltinValue::kUndefined},
- {"front_facvnii", BuiltinValue::kUndefined},
- {"frWWnt_faci8g", BuiltinValue::kUndefined},
- {"fxxonM_facig", BuiltinValue::kUndefined},
- {"gXobalgginvocationid", BuiltinValue::kUndefined},
- {"goVal_uvocatioX_id", BuiltinValue::kUndefined},
- {"global_in3ocation_id", BuiltinValue::kUndefined},
- {"instancE_index", BuiltinValue::kUndefined},
- {"nsTTance_PPndex", BuiltinValue::kUndefined},
- {"nstancxx_indddx", BuiltinValue::kUndefined},
- {"local_invocation_i44", BuiltinValue::kUndefined},
- {"local_invoVVatSSon_id", BuiltinValue::kUndefined},
- {"local_inRoctionR2id", BuiltinValue::kUndefined},
- {"local_in9oation_iFdex", BuiltinValue::kUndefined},
- {"local_invocation_inde", BuiltinValue::kUndefined},
- {"local_OOnvoVtiRRn_index", BuiltinValue::kUndefined},
- {"num_workgyups", BuiltinValue::kUndefined},
- {"num_Glr77rnngroups", BuiltinValue::kUndefined},
- {"num_wo04kgroups", BuiltinValue::kUndefined},
- {"osooon", BuiltinValue::kUndefined},
- {"posizzn", BuiltinValue::kUndefined},
- {"poiippt1o", BuiltinValue::kUndefined},
- {"sample_iXXdex", BuiltinValue::kUndefined},
- {"5nnample_99IIdex", BuiltinValue::kUndefined},
- {"samYlaaHHrrndeSS", BuiltinValue::kUndefined},
- {"aHkk_mask", BuiltinValue::kUndefined},
- {"jRRmpl_gsk", BuiltinValue::kUndefined},
- {"smple_mbk", BuiltinValue::kUndefined},
- {"subgroupjinvocation_id", BuiltinValue::kUndefined},
- {"subgroup_invocaion_id", BuiltinValue::kUndefined},
- {"subroup_inqocatin_id", BuiltinValue::kUndefined},
- {"subNNoup_size", BuiltinValue::kUndefined},
- {"subgrupsizvv", BuiltinValue::kUndefined},
- {"sugroup_sizQQ", BuiltinValue::kUndefined},
- {"vrtexinderf", BuiltinValue::kUndefined},
- {"vertex_indjx", BuiltinValue::kUndefined},
- {"v82wNNex_idex", BuiltinValue::kUndefined},
- {"wrkgroup_id", BuiltinValue::kUndefined},
- {"workgrrrup_id", BuiltinValue::kUndefined},
- {"wGrkgroup_id", BuiltinValue::kUndefined},
+ {"clip_distacecc", BuiltinValue::kUndefined},
+ {"c_disla3ces", BuiltinValue::kUndefined},
+ {"cliV_distances", BuiltinValue::kUndefined},
+ {"frag1depth", BuiltinValue::kUndefined},
+ {"fraJqqepth", BuiltinValue::kUndefined},
+ {"fra7ll_depth", BuiltinValue::kUndefined},
+ {"fonHHpp_facing", BuiltinValue::kUndefined},
+ {"fron_facg", BuiltinValue::kUndefined},
+ {"frGnt_fbcin", BuiltinValue::kUndefined},
+ {"glvbal_iinvocation_id", BuiltinValue::kUndefined},
+ {"gl8bal_invocation_WWd", BuiltinValue::kUndefined},
+ {"Mlobal_invocaton_xxd", BuiltinValue::kUndefined},
+ {"isXance_indegg", BuiltinValue::kUndefined},
+ {"insanc_iXVex", BuiltinValue::kUndefined},
+ {"instance_in3ex", BuiltinValue::kUndefined},
+ {"local_Envocation_id", BuiltinValue::kUndefined},
+ {"localiPPvocatioTT_id", BuiltinValue::kUndefined},
+ {"localxxnvocationddid", BuiltinValue::kUndefined},
+ {"loca44_invocation_index", BuiltinValue::kUndefined},
+ {"local_invocSStionVVindex", BuiltinValue::kUndefined},
+ {"locRR_invocat22n_index", BuiltinValue::kUndefined},
+ {"nuF_workrou9s", BuiltinValue::kUndefined},
+ {"numworkgroups", BuiltinValue::kUndefined},
+ {"nuRRworVgOOHups", BuiltinValue::kUndefined},
+ {"posytio", BuiltinValue::kUndefined},
+ {"77orritllnon", BuiltinValue::kUndefined},
+ {"04osition", BuiltinValue::kUndefined},
+ {"smpe_oonde", BuiltinValue::kUndefined},
+ {"smpl_inzzex", BuiltinValue::kUndefined},
+ {"saiip11eindep", BuiltinValue::kUndefined},
+ {"sample_XXask", BuiltinValue::kUndefined},
+ {"samII99l55_mask", BuiltinValue::kUndefined},
+ {"samaale_SSrHHYk", BuiltinValue::kUndefined},
+ {"skkgroup_Hnvocatio_d", BuiltinValue::kUndefined},
+ {"gRbgroup_invocajionid", BuiltinValue::kUndefined},
+ {"sbgroup_nbocation_id", BuiltinValue::kUndefined},
+ {"subgroupjsize", BuiltinValue::kUndefined},
+ {"subgroup_sie", BuiltinValue::kUndefined},
+ {"sgroupqsize", BuiltinValue::kUndefined},
+ {"vertx_NNndex", BuiltinValue::kUndefined},
+ {"vvertex_dex", BuiltinValue::kUndefined},
+ {"ertex_inQQex", BuiltinValue::kUndefined},
+ {"wrkgrup_irf", BuiltinValue::kUndefined},
+ {"workgroup_jd", BuiltinValue::kUndefined},
+ {"w82wNNgrou_id", BuiltinValue::kUndefined},
};
using BuiltinValueParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/core/core.def b/src/tint/lang/core/core.def
index af75950..3ec4dff 100644
--- a/src/tint/lang/core/core.def
+++ b/src/tint/lang/core/core.def
@@ -64,7 +64,7 @@
clip_distances
subgroup_invocation_id
subgroup_size
- __point_size
+ @internal __point_size
}
// https://www.w3.org/TR/WGSL/#interpolation
diff --git a/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io_test.cc b/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io_test.cc
index 90a3bc1..4f48b45 100644
--- a/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/canonicalize_entry_point_io_test.cc
@@ -68,47 +68,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, Parameters_Spirv) {
- auto* src = R"(
-enable chromium_experimental_framebuffer_fetch;
-
-@fragment
-fn frag_main(@location(1) loc1 : f32,
- @location(2) @interpolate(flat) loc2 : vec4<u32>,
- @builtin(position) coord : vec4<f32>,
- @color(3) color : vec4<f32>) {
- var col : f32 = (coord.x * loc1) + color.g;
-}
-)";
-
- auto* expect = R"(
-enable chromium_experimental_framebuffer_fetch;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> loc1_1 : f32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> loc2_1 : vec4<u32>;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__in> coord_1 : vec4<f32>;
-
-@color(3) @internal(disable_validation__ignore_address_space) var<__in> color_1 : vec4<f32>;
-
-fn frag_main_inner(loc1 : f32, loc2 : vec4<u32>, coord : vec4<f32>, color : vec4<f32>) {
- var col : f32 = ((coord.x * loc1) + color.g);
-}
-
-@fragment
-fn frag_main() {
- frag_main_inner(loc1_1, loc2_1, coord_1, color_1);
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, Parameters_Msl) {
auto* src = R"(
enable chromium_experimental_framebuffer_fetch;
@@ -265,156 +224,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Spirv) {
- auto* src = R"(
-enable chromium_experimental_framebuffer_fetch;
-
-struct FragBuiltins {
- @builtin(position) coord : vec4<f32>,
-};
-struct FragLocations {
- @location(1) loc1 : f32,
- @location(2) @interpolate(flat) loc2 : vec4<u32>,
-};
-struct FragColors {
- @color(3) col3 : vec4<f32>,
- @color(1) col1 : vec4<u32>,
- @color(2) col2 : vec4<i32>,
-};
-
-@fragment
-fn frag_main(@location(0) loc0 : f32,
- locations : FragLocations,
- builtins : FragBuiltins,
- colors : FragColors) {
- var col : f32 = (((builtins.coord.x * locations.loc1) + loc0) + colors.col3.g);
-}
-)";
-
- auto* expect = R"(
-enable chromium_experimental_framebuffer_fetch;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> loc0_1 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> loc1_1 : f32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> loc2_1 : vec4<u32>;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__in> coord_1 : vec4<f32>;
-
-@color(3) @internal(disable_validation__ignore_address_space) var<__in> col3_1 : vec4<f32>;
-
-@color(1) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> col1_1 : vec4<u32>;
-
-@color(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> col2_1 : vec4<i32>;
-
-struct FragBuiltins {
- coord : vec4<f32>,
-}
-
-struct FragLocations {
- loc1 : f32,
- loc2 : vec4<u32>,
-}
-
-struct FragColors {
- col3 : vec4<f32>,
- col1 : vec4<u32>,
- col2 : vec4<i32>,
-}
-
-fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins, colors : FragColors) {
- var col : f32 = (((builtins.coord.x * locations.loc1) + loc0) + colors.col3.g);
-}
-
-@fragment
-fn frag_main() {
- frag_main_inner(loc0_1, FragLocations(loc1_1, loc2_1), FragBuiltins(coord_1), FragColors(col3_1, col1_1, col2_1));
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, StructParameters_Spirv_OutOfOrder) {
- auto* src = R"(
-enable chromium_experimental_framebuffer_fetch;
-
-@fragment
-fn frag_main(@location(0) loc0 : f32,
- locations : FragLocations,
- builtins : FragBuiltins,
- colors : FragColors) {
- var col : f32 = (((builtins.coord.x * locations.loc1) + loc0) + colors.col3.g);
-}
-
-struct FragBuiltins {
- @builtin(position) coord : vec4<f32>,
-};
-struct FragLocations {
- @location(1) loc1 : f32,
- @location(2) @interpolate(flat) loc2 : vec4<u32>,
-};
-struct FragColors {
- @color(3) col3 : vec4<f32>,
- @color(1) col1 : vec4<u32>,
- @color(2) col2 : vec4<i32>,
-};
-)";
-
- auto* expect = R"(
-enable chromium_experimental_framebuffer_fetch;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> loc0_1 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> loc1_1 : f32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> loc2_1 : vec4<u32>;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__in> coord_1 : vec4<f32>;
-
-@color(3) @internal(disable_validation__ignore_address_space) var<__in> col3_1 : vec4<f32>;
-
-@color(1) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> col1_1 : vec4<u32>;
-
-@color(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> col2_1 : vec4<i32>;
-
-fn frag_main_inner(loc0 : f32, locations : FragLocations, builtins : FragBuiltins, colors : FragColors) {
- var col : f32 = (((builtins.coord.x * locations.loc1) + loc0) + colors.col3.g);
-}
-
-@fragment
-fn frag_main() {
- frag_main_inner(loc0_1, FragLocations(loc1_1, loc2_1), FragBuiltins(coord_1), FragColors(col3_1, col1_1, col2_1));
-}
-
-struct FragBuiltins {
- coord : vec4<f32>,
-}
-
-struct FragLocations {
- loc1 : f32,
- loc2 : vec4<u32>,
-}
-
-struct FragColors {
- col3 : vec4<f32>,
- col1 : vec4<u32>,
- col2 : vec4<i32>,
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, StructParameters_kMsl) {
auto* src = R"(
enable chromium_experimental_framebuffer_fetch;
@@ -723,35 +532,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Spirv) {
- auto* src = R"(
-@fragment
-fn frag_main() -> @builtin(frag_depth) f32 {
- return 1.0;
-}
-)";
-
- auto* expect = R"(
-@builtin(frag_depth) @internal(disable_validation__ignore_address_space) var<__out> value : f32;
-
-fn frag_main_inner() -> f32 {
- return 1.0;
-}
-
-@fragment
-fn frag_main() {
- let inner_result = frag_main_inner();
- value = inner_result;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, Return_NonStruct_Msl) {
auto* src = R"(
@fragment
@@ -820,116 +600,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Spirv) {
- auto* src = R"(
-struct FragOutput {
- @location(0) color : vec4<f32>,
- @builtin(frag_depth) depth : f32,
- @builtin(sample_mask) mask : u32,
-};
-
-@fragment
-fn frag_main() -> FragOutput {
- var output : FragOutput;
- output.depth = 1.0;
- output.mask = 7u;
- output.color = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- return output;
-}
-)";
-
- auto* expect = R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__out> color_1 : vec4<f32>;
-
-@builtin(frag_depth) @internal(disable_validation__ignore_address_space) var<__out> depth_1 : f32;
-
-@builtin(sample_mask) @internal(disable_validation__ignore_address_space) var<__out> mask_1 : array<u32, 1u>;
-
-struct FragOutput {
- color : vec4<f32>,
- depth : f32,
- mask : u32,
-}
-
-fn frag_main_inner() -> FragOutput {
- var output : FragOutput;
- output.depth = 1.0;
- output.mask = 7u;
- output.color = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- return output;
-}
-
-@fragment
-fn frag_main() {
- let inner_result = frag_main_inner();
- color_1 = inner_result.color;
- depth_1 = inner_result.depth;
- mask_1[0i] = inner_result.mask;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Spirv_OutOfOrder) {
- auto* src = R"(
-@fragment
-fn frag_main() -> FragOutput {
- var output : FragOutput;
- output.depth = 1.0;
- output.mask = 7u;
- output.color = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- return output;
-}
-
-struct FragOutput {
- @location(0) color : vec4<f32>,
- @builtin(frag_depth) depth : f32,
- @builtin(sample_mask) mask : u32,
-};
-)";
-
- auto* expect = R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__out> color_1 : vec4<f32>;
-
-@builtin(frag_depth) @internal(disable_validation__ignore_address_space) var<__out> depth_1 : f32;
-
-@builtin(sample_mask) @internal(disable_validation__ignore_address_space) var<__out> mask_1 : array<u32, 1u>;
-
-fn frag_main_inner() -> FragOutput {
- var output : FragOutput;
- output.depth = 1.0;
- output.mask = 7u;
- output.color = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- return output;
-}
-
-@fragment
-fn frag_main() {
- let inner_result = frag_main_inner();
- color_1 = inner_result.color;
- depth_1 = inner_result.depth;
- mask_1[0i] = inner_result.mask;
-}
-
-struct FragOutput {
- color : vec4<f32>,
- depth : f32,
- mask : u32,
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Msl) {
auto* src = R"(
struct FragOutput {
@@ -1170,138 +840,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, StructParameters_SharedDeviceFunction_Spirv) {
- auto* src = R"(
-struct FragmentInput {
- @location(0) value : f32,
- @location(1) mul : f32,
-};
-
-fn foo(x : FragmentInput) -> f32 {
- return x.value * x.mul;
-}
-
-@fragment
-fn frag_main1(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-@fragment
-fn frag_main2(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-)";
-
- auto* expect = R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> value_1 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> mul_1 : f32;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> value_2 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> mul_2 : f32;
-
-struct FragmentInput {
- value : f32,
- mul : f32,
-}
-
-fn foo(x : FragmentInput) -> f32 {
- return (x.value * x.mul);
-}
-
-fn frag_main1_inner(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-@fragment
-fn frag_main1() {
- frag_main1_inner(FragmentInput(value_1, mul_1));
-}
-
-fn frag_main2_inner(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-@fragment
-fn frag_main2() {
- frag_main2_inner(FragmentInput(value_2, mul_2));
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, StructParameters_SharedDeviceFunction_Spirv_OutOfOrder) {
- auto* src = R"(
-@fragment
-fn frag_main1(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-@fragment
-fn frag_main2(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-fn foo(x : FragmentInput) -> f32 {
- return x.value * x.mul;
-}
-
-struct FragmentInput {
- @location(0) value : f32,
- @location(1) mul : f32,
-};
-)";
-
- auto* expect = R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> value_1 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> mul_1 : f32;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> value_2 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> mul_2 : f32;
-
-fn frag_main1_inner(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-@fragment
-fn frag_main1() {
- frag_main1_inner(FragmentInput(value_1, mul_1));
-}
-
-fn frag_main2_inner(inputs : FragmentInput) {
- var x : f32 = foo(inputs);
-}
-
-@fragment
-fn frag_main2() {
- frag_main2_inner(FragmentInput(value_2, mul_2));
-}
-
-fn foo(x : FragmentInput) -> f32 {
- return (x.value * x.mul);
-}
-
-struct FragmentInput {
- value : f32,
- mul : f32,
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, StructParameters_SharedDeviceFunction_Msl) {
auto* src = R"(
struct FragmentInput {
@@ -2078,266 +1616,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, InterpolateAttributes_Integers_Spirv) {
- // Test that we add a Flat attribute to integers that are vertex outputs and
- // fragment inputs, but not vertex inputs or fragment outputs.
- auto* src = R"(
-struct VertexIn {
- @location(0) i : i32,
- @location(1) u : u32,
- @location(2) vi : vec4<i32>,
- @location(3) vu : vec4<u32>,
-};
-
-struct VertexOut {
- @location(0) @interpolate(flat) i : i32,
- @location(1) @interpolate(flat) u : u32,
- @location(2) @interpolate(flat) vi : vec4<i32>,
- @location(3) @interpolate(flat) vu : vec4<u32>,
- @builtin(position) pos : vec4<f32>,
-};
-
-struct FragmentInterface {
- @location(0) @interpolate(flat) i : i32,
- @location(1) @interpolate(flat) u : u32,
- @location(2) @interpolate(flat) vi : vec4<i32>,
- @location(3) @interpolate(flat) vu : vec4<u32>,
-};
-
-@vertex
-fn vert_main(in : VertexIn) -> VertexOut {
- return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
-}
-
-@fragment
-fn frag_main(inputs : FragmentInterface) -> FragmentInterface {
- return inputs;
-}
-)";
-
- auto* expect =
- R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> i_1 : i32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> u_1 : u32;
-
-@location(2) @internal(disable_validation__ignore_address_space) var<__in> vi_1 : vec4<i32>;
-
-@location(3) @internal(disable_validation__ignore_address_space) var<__in> vu_1 : vec4<u32>;
-
-@location(0) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> i_2 : i32;
-
-@location(1) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> u_2 : u32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> vi_2 : vec4<i32>;
-
-@location(3) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> vu_2 : vec4<u32>;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> pos_1 : vec4<f32>;
-
-@location(0) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> i_3 : i32;
-
-@location(1) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> u_3 : u32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> vi_3 : vec4<i32>;
-
-@location(3) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> vu_3 : vec4<u32>;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__out> i_4 : i32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__out> u_4 : u32;
-
-@location(2) @internal(disable_validation__ignore_address_space) var<__out> vi_4 : vec4<i32>;
-
-@location(3) @internal(disable_validation__ignore_address_space) var<__out> vu_4 : vec4<u32>;
-
-struct VertexIn {
- i : i32,
- u : u32,
- vi : vec4<i32>,
- vu : vec4<u32>,
-}
-
-struct VertexOut {
- i : i32,
- u : u32,
- vi : vec4<i32>,
- vu : vec4<u32>,
- pos : vec4<f32>,
-}
-
-struct FragmentInterface {
- i : i32,
- u : u32,
- vi : vec4<i32>,
- vu : vec4<u32>,
-}
-
-fn vert_main_inner(in : VertexIn) -> VertexOut {
- return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner(VertexIn(i_1, u_1, vi_1, vu_1));
- i_2 = inner_result.i;
- u_2 = inner_result.u;
- vi_2 = inner_result.vi;
- vu_2 = inner_result.vu;
- pos_1 = inner_result.pos;
-}
-
-fn frag_main_inner(inputs : FragmentInterface) -> FragmentInterface {
- return inputs;
-}
-
-@fragment
-fn frag_main() {
- let inner_result_1 = frag_main_inner(FragmentInterface(i_3, u_3, vi_3, vu_3));
- i_4 = inner_result_1.i;
- u_4 = inner_result_1.u;
- vi_4 = inner_result_1.vi;
- vu_4 = inner_result_1.vu;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, InterpolateAttributes_Integers_Spirv_OutOfOrder) {
- // Test that we add a Flat attribute to integers that are vertex outputs and
- // fragment inputs, but not vertex inputs or fragment outputs.
- auto* src = R"(
-@vertex
-fn vert_main(in : VertexIn) -> VertexOut {
- return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
-}
-
-@fragment
-fn frag_main(inputs : FragmentInterface) -> FragmentInterface {
- return inputs;
-}
-
-struct VertexIn {
- @location(0) i : i32,
- @location(1) u : u32,
- @location(2) vi : vec4<i32>,
- @location(3) vu : vec4<u32>,
-};
-
-struct VertexOut {
- @location(0) @interpolate(flat) i : i32,
- @location(1) @interpolate(flat) u : u32,
- @location(2) @interpolate(flat) vi : vec4<i32>,
- @location(3) @interpolate(flat) vu : vec4<u32>,
- @builtin(position) pos : vec4<f32>,
-};
-
-struct FragmentInterface {
- @location(0) @interpolate(flat) i : i32,
- @location(1) @interpolate(flat) u : u32,
- @location(2) @interpolate(flat) vi : vec4<i32>,
- @location(3) @interpolate(flat) vu : vec4<u32>,
-};
-)";
-
- auto* expect =
- R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> i_1 : i32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> u_1 : u32;
-
-@location(2) @internal(disable_validation__ignore_address_space) var<__in> vi_1 : vec4<i32>;
-
-@location(3) @internal(disable_validation__ignore_address_space) var<__in> vu_1 : vec4<u32>;
-
-@location(0) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> i_2 : i32;
-
-@location(1) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> u_2 : u32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> vi_2 : vec4<i32>;
-
-@location(3) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__out> vu_2 : vec4<u32>;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> pos_1 : vec4<f32>;
-
-@location(0) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> i_3 : i32;
-
-@location(1) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> u_3 : u32;
-
-@location(2) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> vi_3 : vec4<i32>;
-
-@location(3) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> vu_3 : vec4<u32>;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__out> i_4 : i32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__out> u_4 : u32;
-
-@location(2) @internal(disable_validation__ignore_address_space) var<__out> vi_4 : vec4<i32>;
-
-@location(3) @internal(disable_validation__ignore_address_space) var<__out> vu_4 : vec4<u32>;
-
-fn vert_main_inner(in : VertexIn) -> VertexOut {
- return VertexOut(in.i, in.u, in.vi, in.vu, vec4<f32>());
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner(VertexIn(i_1, u_1, vi_1, vu_1));
- i_2 = inner_result.i;
- u_2 = inner_result.u;
- vi_2 = inner_result.vi;
- vu_2 = inner_result.vu;
- pos_1 = inner_result.pos;
-}
-
-fn frag_main_inner(inputs : FragmentInterface) -> FragmentInterface {
- return inputs;
-}
-
-@fragment
-fn frag_main() {
- let inner_result_1 = frag_main_inner(FragmentInterface(i_3, u_3, vi_3, vu_3));
- i_4 = inner_result_1.i;
- u_4 = inner_result_1.u;
- vi_4 = inner_result_1.vi;
- vu_4 = inner_result_1.vu;
-}
-
-struct VertexIn {
- i : i32,
- u : u32,
- vi : vec4<i32>,
- vu : vec4<u32>,
-}
-
-struct VertexOut {
- i : i32,
- u : u32,
- vi : vec4<i32>,
- vu : vec4<u32>,
- pos : vec4<f32>,
-}
-
-struct FragmentInterface {
- i : i32,
- u : u32,
- vi : vec4<i32>,
- vu : vec4<u32>,
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, InvariantAttributes) {
auto* src = R"(
struct VertexOut {
@@ -3317,39 +2595,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnNonStruct_Spirv) {
- auto* src = R"(
-@vertex
-fn vert_main() -> @builtin(position) vec4<f32> {
- return vec4<f32>();
-}
-)";
-
- auto* expect = R"(
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> value : vec4<f32>;
-
-@builtin(__point_size) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size : f32;
-
-fn vert_main_inner() -> vec4<f32> {
- return vec4<f32>();
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner();
- value = inner_result;
- vertex_point_size = 1.0f;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv,
- 0xFFFFFFFF, true);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnNonStruct_Msl) {
auto* src = R"(
@vertex
@@ -3388,88 +2633,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Spirv) {
- auto* src = R"(
-struct VertOut {
- @builtin(position) pos : vec4<f32>,
-};
-
-@vertex
-fn vert_main() -> VertOut {
- return VertOut();
-}
-)";
-
- auto* expect = R"(
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> pos_1 : vec4<f32>;
-
-@builtin(__point_size) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size : f32;
-
-struct VertOut {
- pos : vec4<f32>,
-}
-
-fn vert_main_inner() -> VertOut {
- return VertOut();
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner();
- pos_1 = inner_result.pos;
- vertex_point_size = 1.0f;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv,
- 0xFFFFFFFF, true);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Spirv_OutOfOrder) {
- auto* src = R"(
-@vertex
-fn vert_main() -> VertOut {
- return VertOut();
-}
-
-struct VertOut {
- @builtin(position) pos : vec4<f32>,
-};
-)";
-
- auto* expect = R"(
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> pos_1 : vec4<f32>;
-
-@builtin(__point_size) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size : f32;
-
-fn vert_main_inner() -> VertOut {
- return VertOut();
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner();
- pos_1 = inner_result.pos;
- vertex_point_size = 1.0f;
-}
-
-struct VertOut {
- pos : vec4<f32>,
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv,
- 0xFFFFFFFF, true);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_ReturnStruct_Msl) {
auto* src = R"(
struct VertOut {
@@ -3562,162 +2725,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Spirv) {
- auto* src = R"(
-var<private> vertex_point_size : f32;
-var<private> vertex_point_size_1 : f32;
-var<private> vertex_point_size_2 : f32;
-
-struct VertIn1 {
- @location(0) collide : f32,
-};
-
-struct VertIn2 {
- @location(1) collide : f32,
-};
-
-struct VertOut {
- @location(0) vertex_point_size : f32,
- @builtin(position) vertex_point_size_1 : vec4<f32>,
-};
-
-@vertex
-fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
- let x = collide.collide + collide_1.collide;
- return VertOut();
-}
-)";
-
- auto* expect = R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> collide_2 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> collide_3 : f32;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size_3 : f32;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size_1_1 : vec4<f32>;
-
-@builtin(__point_size) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size_4 : f32;
-
-var<private> vertex_point_size : f32;
-
-var<private> vertex_point_size_1 : f32;
-
-var<private> vertex_point_size_2 : f32;
-
-struct VertIn1 {
- collide : f32,
-}
-
-struct VertIn2 {
- collide : f32,
-}
-
-struct VertOut {
- vertex_point_size : f32,
- vertex_point_size_1 : vec4<f32>,
-}
-
-fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
- let x = (collide.collide + collide_1.collide);
- return VertOut();
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner(VertIn1(collide_2), VertIn2(collide_3));
- vertex_point_size_3 = inner_result.vertex_point_size;
- vertex_point_size_1_1 = inner_result.vertex_point_size_1;
- vertex_point_size_4 = 1.0f;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv,
- 0xFFFFFFFF, true);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Spirv_OutOfOrder) {
- auto* src = R"(
-@vertex
-fn vert_main(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
- let x = collide.collide + collide_1.collide;
- return VertOut();
-}
-
-struct VertIn1 {
- @location(0) collide : f32,
-};
-
-struct VertIn2 {
- @location(1) collide : f32,
-};
-
-var<private> vertex_point_size : f32;
-var<private> vertex_point_size_1 : f32;
-var<private> vertex_point_size_2 : f32;
-
-struct VertOut {
- @location(0) vertex_point_size : f32,
- @builtin(position) vertex_point_size_1 : vec4<f32>,
-};
-)";
-
- auto* expect = R"(
-@location(0) @internal(disable_validation__ignore_address_space) var<__in> collide_2 : f32;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> collide_3 : f32;
-
-@location(0) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size_3 : f32;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size_1_1 : vec4<f32>;
-
-@builtin(__point_size) @internal(disable_validation__ignore_address_space) var<__out> vertex_point_size_4 : f32;
-
-fn vert_main_inner(collide : VertIn1, collide_1 : VertIn2) -> VertOut {
- let x = (collide.collide + collide_1.collide);
- return VertOut();
-}
-
-@vertex
-fn vert_main() {
- let inner_result = vert_main_inner(VertIn1(collide_2), VertIn2(collide_3));
- vertex_point_size_3 = inner_result.vertex_point_size;
- vertex_point_size_1_1 = inner_result.vertex_point_size_1;
- vertex_point_size_4 = 1.0f;
-}
-
-struct VertIn1 {
- collide : f32,
-}
-
-struct VertIn2 {
- collide : f32,
-}
-
-var<private> vertex_point_size : f32;
-
-var<private> vertex_point_size_1 : f32;
-
-var<private> vertex_point_size_2 : f32;
-
-struct VertOut {
- vertex_point_size : f32,
- vertex_point_size_1 : vec4<f32>,
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv,
- 0xFFFFFFFF, true);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, EmitVertexPointSize_AvoidNameClash_Msl) {
auto* src = R"(
struct VertIn1 {
@@ -4022,179 +3029,6 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, SpirvSampleMaskBuiltins) {
- auto* src = R"(
-@fragment
-fn main(@builtin(sample_index) sample_index : u32,
- @builtin(sample_mask) mask_in : u32
- ) -> @builtin(sample_mask) u32 {
- return mask_in;
-}
-)";
-
- auto* expect = R"(
-@builtin(sample_index) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> sample_index_1 : u32;
-
-@builtin(sample_mask) @interpolate(flat) @internal(disable_validation__ignore_address_space) var<__in> mask_in_1 : array<u32, 1u>;
-
-@builtin(sample_mask) @internal(disable_validation__ignore_address_space) var<__out> value : array<u32, 1u>;
-
-fn main_inner(sample_index : u32, mask_in : u32) -> u32 {
- return mask_in;
-}
-
-@fragment
-fn main() {
- let inner_result = main_inner(sample_index_1, mask_in_1[0i]);
- value[0i] = inner_result;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, GLSLSampleMaskBuiltins) {
- auto* src = R"(
-@fragment
-fn fragment_main(@builtin(sample_index) sample_index : u32,
- @builtin(sample_mask) mask_in : u32
- ) -> @builtin(sample_mask) u32 {
- return mask_in;
-}
-)";
-
- auto* expect = R"(
-@builtin(sample_index) @internal(disable_validation__ignore_address_space) var<__in> gl_SampleID : i32;
-
-@builtin(sample_mask) @internal(disable_validation__ignore_address_space) var<__in> gl_SampleMaskIn : array<i32, 1u>;
-
-@builtin(sample_mask) @internal(disable_validation__ignore_address_space) var<__out> gl_SampleMask : array<i32, 1u>;
-
-fn fragment_main(sample_index : u32, mask_in : u32) -> u32 {
- return mask_in;
-}
-
-@fragment
-fn main() {
- let inner_result = fragment_main(bitcast<u32>(gl_SampleID), bitcast<u32>(gl_SampleMaskIn[0i]));
- gl_SampleMask[0i] = bitcast<i32>(inner_result);
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kGlsl);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, GLSLVertexInstanceIndexBuiltins) {
- auto* src = R"(
-@vertex
-fn vertex_main(@builtin(vertex_index) vertexID : u32,
- @builtin(instance_index) instanceID : u32
- ) -> @builtin(position) vec4<f32> {
- return vec4<f32>(f32(vertexID) + f32(instanceID));
-}
-)";
-
- auto* expect = R"(
-@builtin(vertex_index) @internal(disable_validation__ignore_address_space) var<__in> gl_VertexID : i32;
-
-@builtin(instance_index) @internal(disable_validation__ignore_address_space) var<__in> gl_InstanceID : i32;
-
-@builtin(position) @internal(disable_validation__ignore_address_space) var<__out> gl_Position : vec4<f32>;
-
-fn vertex_main(vertexID : u32, instanceID : u32) -> vec4<f32> {
- return vec4<f32>((f32(vertexID) + f32(instanceID)));
-}
-
-@vertex
-fn main() {
- let inner_result = vertex_main(bitcast<u32>(gl_VertexID), bitcast<u32>(gl_InstanceID));
- gl_Position = inner_result;
- gl_Position.y = -(gl_Position.y);
- gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kGlsl);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Index_Attribute_Spirv) {
- auto* src = R"(
-enable dual_source_blending;
-
-struct FragOutput {
- @location(0) @blend_src(0) color : vec4<f32>,
- @location(0) @blend_src(1) blend : vec4<f32>,
- @builtin(frag_depth) depth : f32,
- @builtin(sample_mask) mask : u32,
-};
-
-@fragment
-fn frag_main() -> FragOutput {
- var output : FragOutput;
- output.depth = 1.0;
- output.mask = 7u;
- output.color = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- output.blend = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- return output;
-}
-)";
-
- auto* expect = R"(
-enable dual_source_blending;
-
-@location(0) @blend_src(0) @internal(disable_validation__ignore_address_space) var<__out> color_1 : vec4<f32>;
-
-@location(0) @blend_src(1) @internal(disable_validation__ignore_address_space) var<__out> blend_1 : vec4<f32>;
-
-@builtin(frag_depth) @internal(disable_validation__ignore_address_space) var<__out> depth_1 : f32;
-
-@builtin(sample_mask) @internal(disable_validation__ignore_address_space) var<__out> mask_1 : array<u32, 1u>;
-
-struct FragOutput {
- color : vec4<f32>,
- blend : vec4<f32>,
- depth : f32,
- mask : u32,
-}
-
-fn frag_main_inner() -> FragOutput {
- var output : FragOutput;
- output.depth = 1.0;
- output.mask = 7u;
- output.color = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- output.blend = vec4<f32>(0.5, 0.5, 0.5, 1.0);
- return output;
-}
-
-@fragment
-fn frag_main() {
- let inner_result = frag_main_inner();
- color_1 = inner_result.color;
- blend_1 = inner_result.blend;
- depth_1 = inner_result.depth;
- mask_1[0i] = inner_result.mask;
-}
-)";
-
- DataMap data;
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
TEST_F(CanonicalizeEntryPointIOTest, Return_Struct_Index_Attribute_Msl) {
auto* src = R"(
enable dual_source_blending;
@@ -4420,60 +3254,5 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(CanonicalizeEntryPointIOTest, F16_Polyfill_Spirv) {
- auto* src = R"(
-enable f16;
-
-struct Outputs {
- @location(1) a : f16,
- @location(2) b : vec4<f16>,
-}
-
-@fragment
-fn frag_main(@location(1) loc1 : f16,
- @location(2) loc2 : vec4<f16>) -> Outputs {
- return Outputs(loc1 * 2, loc2 * 3);
-}
-)";
-
- auto* expect = R"(
-enable f16;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__in> loc1_1 : f32;
-
-@location(2) @internal(disable_validation__ignore_address_space) var<__in> loc2_1 : vec4<f32>;
-
-@location(1) @internal(disable_validation__ignore_address_space) var<__out> a_1 : f32;
-
-@location(2) @internal(disable_validation__ignore_address_space) var<__out> b_1 : vec4<f32>;
-
-struct Outputs {
- a : f16,
- b : vec4<f16>,
-}
-
-fn frag_main_inner(loc1 : f16, loc2 : vec4<f16>) -> Outputs {
- return Outputs((loc1 * 2), (loc2 * 3));
-}
-
-@fragment
-fn frag_main() {
- let inner_result = frag_main_inner(f16(loc1_1), vec4<f16>(loc2_1));
- a_1 = f32(inner_result.a);
- b_1 = vec4<f32>(inner_result.b);
-}
-)";
-
- DataMap data;
-
- data.Add<CanonicalizeEntryPointIO::Config>(CanonicalizeEntryPointIO::ShaderStyle::kSpirv,
- /* fixed_sample_mask */ 0xFFFFFFFF,
- /* emit_vertex_point_size */ false,
- /* polyfill_f16_io */ true);
- auto got = Run<Unshadow, CanonicalizeEntryPointIO>(src, data);
-
- EXPECT_EQ(expect, str(got));
-}
-
} // namespace
} // namespace tint::ast::transform
diff --git a/src/tint/lang/wgsl/reader/parser/variable_attribute_test.cc b/src/tint/lang/wgsl/reader/parser/variable_attribute_test.cc
index 5e31e3e..7096342 100644
--- a/src/tint/lang/wgsl/reader/parser/variable_attribute_test.cc
+++ b/src/tint/lang/wgsl/reader/parser/variable_attribute_test.cc
@@ -307,7 +307,7 @@
EXPECT_EQ(attr.value, nullptr);
EXPECT_TRUE(p->has_error());
EXPECT_EQ(p->error(), R"(1:9: expected builtin value name
-Possible values: '__point_size', 'clip_distances', 'frag_depth', 'front_facing', 'global_invocation_id', 'instance_index', 'local_invocation_id', 'local_invocation_index', 'num_workgroups', 'position', 'sample_index', 'sample_mask', 'subgroup_invocation_id', 'subgroup_size', 'vertex_index', 'workgroup_id')");
+Possible values: 'clip_distances', 'frag_depth', 'front_facing', 'global_invocation_id', 'instance_index', 'local_invocation_id', 'local_invocation_index', 'num_workgroups', 'position', 'sample_index', 'sample_mask', 'subgroup_invocation_id', 'subgroup_size', 'vertex_index', 'workgroup_id')");
}
TEST_F(WGSLParserTest, Attribute_Builtin_MisspelledValue) {
@@ -319,7 +319,7 @@
EXPECT_TRUE(p->has_error());
EXPECT_EQ(p->error(), R"(1:9: expected builtin value name
Did you mean 'position'?
-Possible values: '__point_size', 'clip_distances', 'frag_depth', 'front_facing', 'global_invocation_id', 'instance_index', 'local_invocation_id', 'local_invocation_index', 'num_workgroups', 'position', 'sample_index', 'sample_mask', 'subgroup_invocation_id', 'subgroup_size', 'vertex_index', 'workgroup_id')");
+Possible values: 'clip_distances', 'frag_depth', 'front_facing', 'global_invocation_id', 'instance_index', 'local_invocation_id', 'local_invocation_index', 'num_workgroups', 'position', 'sample_index', 'sample_mask', 'subgroup_invocation_id', 'subgroup_size', 'vertex_index', 'workgroup_id')");
}
TEST_F(WGSLParserTest, Attribute_Interpolate_Flat) {
diff --git a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
index 4cd34c3..4079ad5 100644
--- a/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
+++ b/src/tint/lang/wgsl/resolver/dual_source_blending_extension_test.cc
@@ -147,19 +147,6 @@
EXPECT_EQ(r()->error(), "12:34 error: '@blend_src(0)' is missing when '@blend_src' is used");
}
-// Using a @blend_src attribute on a global variable should pass. This is needed internally when
-// using @blend_src with the canonicalize_entry_point transform. This test uses an internal
-// attribute to ignore address space, which is how it is used with the canonicalize_entry_point
-// transform.
-TEST_F(DualSourceBlendingExtensionTests, GlobalVariableBlendSrcAttributeAfterInternalTransform) {
- GlobalVar(
- "var", ty.vec4<f32>(),
- Vector{Location(0_a), BlendSrc(0_a), Disable(ast::DisabledValidation::kIgnoreAddressSpace)},
- core::AddressSpace::kOut);
-
- EXPECT_TRUE(r()->Resolve()) << r()->error();
-}
-
// Using the a @blend_src attribute with a non-zero location should fail.
TEST_F(DualSourceBlendingExtensionTests, BlendSrcWithNonZeroLocation_Struct) {
Structure("Output", Vector{
diff --git a/src/tint/lang/wgsl/resolver/function_validation_test.cc b/src/tint/lang/wgsl/resolver/function_validation_test.cc
index 1a3c347..bb15f2b 100644
--- a/src/tint/lang/wgsl/resolver/function_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/function_validation_test.cc
@@ -1140,8 +1140,8 @@
ResolverTest,
ResolverFunctionParameterValidationTest,
testing::Values(TestParams{core::AddressSpace::kUndefined, Expectation::kInvalid},
- TestParams{core::AddressSpace::kIn, Expectation::kAlwaysFail},
- TestParams{core::AddressSpace::kOut, Expectation::kAlwaysFail},
+ TestParams{core::AddressSpace::kIn, Expectation::kInvalid},
+ TestParams{core::AddressSpace::kOut, Expectation::kInvalid},
TestParams{core::AddressSpace::kUniform,
Expectation::kPassWithUnrestrictedPointerParameters},
TestParams{core::AddressSpace::kWorkgroup,
diff --git a/src/tint/lang/wgsl/resolver/resolver_test.cc b/src/tint/lang/wgsl/resolver/resolver_test.cc
index bbf3a58..780d6fa 100644
--- a/src/tint/lang/wgsl/resolver/resolver_test.cc
+++ b/src/tint/lang/wgsl/resolver/resolver_test.cc
@@ -900,18 +900,6 @@
EXPECT_EQ(1u, func_sem->Parameters()[2]->Attributes().location);
}
-TEST_F(ResolverTest, Function_GlobalVariable_Location) {
- auto* var =
- GlobalVar("my_vec", ty.vec4<f32>(), core::AddressSpace::kIn,
- Vector{Location(3_a), Disable(ast::DisabledValidation::kIgnoreAddressSpace)});
-
- EXPECT_TRUE(r()->Resolve()) << r()->error();
-
- auto* sem = Sem().Get<sem::GlobalVariable>(var);
- ASSERT_NE(sem, nullptr);
- EXPECT_EQ(3u, sem->Attributes().location);
-}
-
TEST_F(ResolverTest, Function_RegisterInputOutputVariables) {
auto* s = Structure("S", Vector{Member("m", ty.u32())});