validation: add an internal decoration to allow atomic function parameters
Bug: tint: 927
Change-Id: Ia6f31bdbfa51c92b742faa89089649865bb45ad5
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/56020
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index 0a083b0..d16c958 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -932,8 +932,12 @@
if (!ValidateVariable(info)) {
return false;
}
+
for (auto* deco : info->declaration->decorations()) {
- if (!func->IsEntryPoint()) {
+ if (!func->IsEntryPoint() &&
+ !IsValidationDisabled(
+ info->declaration->decorations(),
+ ast::DisabledValidation::kIgnoreAtomicFunctionParameter)) {
AddError("decoration is not valid for function parameters",
deco->source());
return false;
@@ -945,9 +949,12 @@
}
} else if (!deco->IsAnyOf<ast::LocationDecoration,
ast::InternalDecoration>() &&
- !IsValidationDisabled(
- info->declaration->decorations(),
- ast::DisabledValidation::kEntryPointParameter)) {
+ !(IsValidationDisabled(
+ info->declaration->decorations(),
+ ast::DisabledValidation::kEntryPointParameter) ||
+ IsValidationDisabled(info->declaration->decorations(),
+ ast::DisabledValidation::
+ kIgnoreAtomicFunctionParameter))) {
AddError("decoration is not valid for function parameters",
deco->source());
return false;