Add texel_buffers WGSL language feature to wgsl.def and dawn.json
Bug: 382544164
Change-Id: Ic0b73b7e9d293fdb6ecdc982fbf7454432d7d188
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/246035
Commit-Queue: Diego Rodrigues <diejorarr@gmail.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/common/WGSLFeatureMapping.h b/src/dawn/common/WGSLFeatureMapping.h
index 4dbf1b4..a6b0639 100644
--- a/src/dawn/common/WGSLFeatureMapping.h
+++ b/src/dawn/common/WGSLFeatureMapping.h
@@ -35,6 +35,7 @@
X(kReadonlyAndReadwriteStorageTextures, ReadonlyAndReadwriteStorageTextures) \
X(kUnrestrictedPointerParameters, UnrestrictedPointerParameters) \
X(kSizedBindingArray, SizedBindingArray) \
+ X(kTexelBuffers, TexelBuffers) \
/* ----------------- entries below are only for testing ------------------ */ \
X(kChromiumTestingUnimplemented, ChromiumTestingUnimplemented) \
X(kChromiumTestingUnsafeExperimental, ChromiumTestingUnsafeExperimental) \
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index e61220d..6a80502 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -4236,6 +4236,7 @@
{"value": 3, "name": "unrestricted pointer parameters", "jsrepr": "'unrestricted_pointer_parameters'"},
{"value": 4, "name": "pointer composite access", "jsrepr": "'pointer_composite_access'"},
{"value": 5, "name": "sized binding array", "jsrepr": "'sized_binding_array'"},
+ {"value": 6, "name": "texel buffers", "jsrepr": "'texel_buffers'"},
{"value": 0, "name": "chromium testing unimplemented", "jsrepr": "'chromium_testing_unimplemented'", "tags": ["dawn"]},
{"value": 1, "name": "chromium testing unsafe experimental", "jsrepr": "'chromium_testing_unsafe_experimental'", "tags": ["dawn"]},
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index a8c7322..eb76bec 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1667,6 +1667,9 @@
case interop::WGSLLanguageFeatureName::kSizedBindingArray:
out = wgpu::WGSLLanguageFeatureName::SizedBindingArray;
return true;
+ case interop::WGSLLanguageFeatureName::kTexelBuffers:
+ out = wgpu::WGSLLanguageFeatureName::TexelBuffers;
+ return true;
}
return false;
}
@@ -1688,6 +1691,9 @@
case wgpu::WGSLLanguageFeatureName::SizedBindingArray:
out = interop::WGSLLanguageFeatureName::kSizedBindingArray;
return true;
+ case wgpu::WGSLLanguageFeatureName::TexelBuffers:
+ out = interop::WGSLLanguageFeatureName::kTexelBuffers;
+ return true;
case wgpu::WGSLLanguageFeatureName::ChromiumTestingUnimplemented:
case wgpu::WGSLLanguageFeatureName::ChromiumTestingUnsafeExperimental:
diff --git a/src/dawn/node/interop/DawnExtensions.idl b/src/dawn/node/interop/DawnExtensions.idl
index 29c9d6d..2a6b2d1 100644
--- a/src/dawn/node/interop/DawnExtensions.idl
+++ b/src/dawn/node/interop/DawnExtensions.idl
@@ -77,6 +77,7 @@
"unrestricted_pointer_parameters",
"pointer_composite_access",
"sized_binding_array",
+ "texel_buffers",
};
dictionary GPUBindGroupLayoutEntry {
diff --git a/src/tint/cmd/fuzz/wgsl/dictionary.txt b/src/tint/cmd/fuzz/wgsl/dictionary.txt
index 45def37..096b524 100644
--- a/src/tint/cmd/fuzz/wgsl/dictionary.txt
+++ b/src/tint/cmd/fuzz/wgsl/dictionary.txt
@@ -429,6 +429,7 @@
"tan"
"tanh"
"texel"
+"texel_buffers"
"textureBarrier"
"textureDimensions"
"textureGather"
diff --git a/src/tint/lang/wgsl/feature_status.cc b/src/tint/lang/wgsl/feature_status.cc
index cf453e5..888ddd9 100644
--- a/src/tint/lang/wgsl/feature_status.cc
+++ b/src/tint/lang/wgsl/feature_status.cc
@@ -37,6 +37,7 @@
// Experimental features
///////////////////////////////////////////////////////////////////
case LanguageFeature::kSizedBindingArray:
+ case LanguageFeature::kTexelBuffers:
return FeatureStatus::kUnsafeExperimental;
////////////////////////////////////////////////////////////////////
diff --git a/src/tint/lang/wgsl/language_feature.cc b/src/tint/lang/wgsl/language_feature.cc
index 3a114a1..5c3fb12 100644
--- a/src/tint/lang/wgsl/language_feature.cc
+++ b/src/tint/lang/wgsl/language_feature.cc
@@ -69,6 +69,9 @@
if (str == "sized_binding_array") {
return LanguageFeature::kSizedBindingArray;
}
+ if (str == "texel_buffers") {
+ return LanguageFeature::kTexelBuffers;
+ }
if (str == "unrestricted_pointer_parameters") {
return LanguageFeature::kUnrestrictedPointerParameters;
}
@@ -97,6 +100,8 @@
return "readonly_and_readwrite_storage_textures";
case LanguageFeature::kSizedBindingArray:
return "sized_binding_array";
+ case LanguageFeature::kTexelBuffers:
+ return "texel_buffers";
case LanguageFeature::kUnrestrictedPointerParameters:
return "unrestricted_pointer_parameters";
}
diff --git a/src/tint/lang/wgsl/language_feature.h b/src/tint/lang/wgsl/language_feature.h
index 9ce7096..eb8dff0 100644
--- a/src/tint/lang/wgsl/language_feature.h
+++ b/src/tint/lang/wgsl/language_feature.h
@@ -55,6 +55,7 @@
kPointerCompositeAccess,
kReadonlyAndReadwriteStorageTextures,
kSizedBindingArray,
+ kTexelBuffers,
kUnrestrictedPointerParameters,
};
@@ -77,6 +78,7 @@
"pointer_composite_access",
"readonly_and_readwrite_storage_textures",
"sized_binding_array",
+ "texel_buffers",
"unrestricted_pointer_parameters",
};
@@ -91,6 +93,7 @@
LanguageFeature::kPointerCompositeAccess,
LanguageFeature::kReadonlyAndReadwriteStorageTextures,
LanguageFeature::kSizedBindingArray,
+ LanguageFeature::kTexelBuffers,
LanguageFeature::kUnrestrictedPointerParameters,
};
diff --git a/src/tint/lang/wgsl/language_feature_test.cc b/src/tint/lang/wgsl/language_feature_test.cc
index 93325e6..3e684b1 100644
--- a/src/tint/lang/wgsl/language_feature_test.cc
+++ b/src/tint/lang/wgsl/language_feature_test.cc
@@ -68,6 +68,7 @@
{"readonly_and_readwrite_storage_textures",
LanguageFeature::kReadonlyAndReadwriteStorageTextures},
{"sized_binding_array", LanguageFeature::kSizedBindingArray},
+ {"texel_buffers", LanguageFeature::kTexelBuffers},
{"unrestricted_pointer_parameters", LanguageFeature::kUnrestrictedPointerParameters},
};
@@ -99,9 +100,12 @@
{"sized_indiyg_array", LanguageFeature::kUndefined},
{"llGznnd_bin77ing_rrrray", LanguageFeature::kUndefined},
{"sized_bindin4_00rray", LanguageFeature::kUndefined},
- {"unrestrictedpointr_prameteoos", LanguageFeature::kUndefined},
- {"unrstrited_pointzzr_parameters", LanguageFeature::kUndefined},
- {"unrst11icted_pppiniierparameters", LanguageFeature::kUndefined},
+ {"teool_bffer", LanguageFeature::kUndefined},
+ {"exezz_uffers", LanguageFeature::kUndefined},
+ {"texel_bii11eps", LanguageFeature::kUndefined},
+ {"unrestricted_pointer_parametXXrs", LanguageFeature::kUndefined},
+ {"unrestri55tIId_pointer_paramnnt99rs", LanguageFeature::kUndefined},
+ {"unraastrSScted_pointerHHrparameteYs", LanguageFeature::kUndefined},
};
using LanguageFeatureParseTest = testing::TestWithParam<Case>;
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index 00e62c9..4a123d5 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -106,6 +106,7 @@
readonly_and_readwrite_storage_textures
unrestricted_pointer_parameters
sized_binding_array
+ texel_buffers
// Language features used only for testing whose status will never change.
chromium_testing_unimplemented
diff --git a/third_party/webgpu-headers/webgpu.h.diff b/third_party/webgpu-headers/webgpu.h.diff
index 822bf96..3bc1be3 100644
--- a/third_party/webgpu-headers/webgpu.h.diff
+++ b/third_party/webgpu-headers/webgpu.h.diff
@@ -105,6 +105,7 @@
WGPUWGSLLanguageFeatureName_UnrestrictedPointerParameters = 0x00000003,
WGPUWGSLLanguageFeatureName_PointerCompositeAccess = 0x00000004,
+ WGPUWGSLLanguageFeatureName_SizedBindingArray = 0x00000005,
++ WGPUWGSLLanguageFeatureName_TexelBuffers = 0x00000006,
WGPUWGSLLanguageFeatureName_Force32 = 0x7FFFFFFF
} WGPUWGSLLanguageFeatureName WGPU_ENUM_ATTRIBUTE;