[ir] Support subgroup builtin inputs
Bug: tint:2000
Change-Id: I209a2dafe2d842611064c1995c66eacc317d35a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/151585
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/core/ir/function_param.cc b/src/tint/lang/core/ir/function_param.cc
index 1b76ff6..877364e 100644
--- a/src/tint/lang/core/ir/function_param.cc
+++ b/src/tint/lang/core/ir/function_param.cc
@@ -50,6 +50,10 @@
return "sample_index";
case FunctionParam::Builtin::kSampleMask:
return "sample_mask";
+ case FunctionParam::Builtin::kSubgroupInvocationId:
+ return "subgroup_invocation_id";
+ case FunctionParam::Builtin::kSubgroupSize:
+ return "subgroup_size";
}
return "<unknown>";
}
diff --git a/src/tint/lang/core/ir/function_param.h b/src/tint/lang/core/ir/function_param.h
index f8f83d4..d9bf75c 100644
--- a/src/tint/lang/core/ir/function_param.h
+++ b/src/tint/lang/core/ir/function_param.h
@@ -53,6 +53,10 @@
kSampleIndex,
/// Builtin Sample mask
kSampleMask,
+ /// Builtin Subgroup invocation id
+ kSubgroupInvocationId,
+ /// Builtin Subgroup size
+ kSubgroupSize,
};
/// Constructor
diff --git a/src/tint/lang/core/ir/transform/shader_io.cc b/src/tint/lang/core/ir/transform/shader_io.cc
index 1d072af..cab7fb0 100644
--- a/src/tint/lang/core/ir/transform/shader_io.cc
+++ b/src/tint/lang/core/ir/transform/shader_io.cc
@@ -52,6 +52,10 @@
return core::BuiltinValue::kSampleIndex;
case FunctionParam::Builtin::kSampleMask:
return core::BuiltinValue::kSampleMask;
+ case FunctionParam::Builtin::kSubgroupInvocationId:
+ return core::BuiltinValue::kSubgroupInvocationId;
+ case FunctionParam::Builtin::kSubgroupSize:
+ return core::BuiltinValue::kSubgroupSize;
}
return core::BuiltinValue::kUndefined;
}
diff --git a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
index 1464464..4850db3 100644
--- a/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
+++ b/src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.cc
@@ -421,6 +421,14 @@
param->SetBuiltin(
core::ir::FunctionParam::Builtin::kSampleMask);
break;
+ case core::BuiltinValue::kSubgroupInvocationId:
+ param->SetBuiltin(
+ core::ir::FunctionParam::Builtin::kSubgroupInvocationId);
+ break;
+ case core::BuiltinValue::kSubgroupSize:
+ param->SetBuiltin(
+ core::ir::FunctionParam::Builtin::kSubgroupSize);
+ break;
default:
TINT_ICE() << "Unknown builtin value in parameter attributes "
<< ident_sem->Value();