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>
This commit is contained in:
Sarah
2021-06-28 14:05:25 +00:00
committed by Sarah Mashayekhi
parent 3cbbeaf1db
commit ac5dbd2d0f
5 changed files with 167 additions and 143 deletions

View File

@@ -932,8 +932,12 @@ bool Resolver::ValidateParameter(const ast::Function* func,
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 @@ bool Resolver::ValidateParameter(const ast::Function* func,
}
} 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;