mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-18 09:25:25 +00:00
tint: Simplify workgroup size resolving
A `@workgroup_size()` value must be a constant or override expression. There's nothing specific here about literals or variable expressions. Remove the semantic tracking of override variables, as these can be override expressions. The backends will require the `SubstituteOverride` transform to be run, so gut the workgroup_size override handling from the backends. Bug: tint:1633 Change-Id: Ib3ff843fc64a3595d49223c661b4d58130c0ab30 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/100142 Commit-Queue: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
45a2c5193a
commit
490d9889a7
@@ -44,7 +44,7 @@ Function::Function(const ast::Function* declaration,
|
||||
utils::VectorRef<Parameter*> parameters)
|
||||
: Base(return_type, SetOwner(std::move(parameters), this), EvaluationStage::kRuntime),
|
||||
declaration_(declaration),
|
||||
workgroup_size_{WorkgroupDimension{1}, WorkgroupDimension{1}, WorkgroupDimension{1}},
|
||||
workgroup_size_{1, 1, 1},
|
||||
return_location_(return_location) {}
|
||||
|
||||
Function::~Function() = default;
|
||||
|
||||
@@ -39,18 +39,10 @@ class Variable;
|
||||
|
||||
namespace tint::sem {
|
||||
|
||||
/// WorkgroupDimension describes the size of a single dimension of an entry
|
||||
/// point's workgroup size.
|
||||
struct WorkgroupDimension {
|
||||
/// The size of this dimension.
|
||||
uint32_t value;
|
||||
/// A pipeline-overridable constant that overrides the size, or nullptr if
|
||||
/// this dimension is not overridable.
|
||||
const ast::Variable* overridable_const = nullptr;
|
||||
};
|
||||
|
||||
/// WorkgroupSize is a three-dimensional array of WorkgroupDimensions.
|
||||
using WorkgroupSize = std::array<WorkgroupDimension, 3>;
|
||||
/// Each dimension is a std::optional as a workgroup size can be a constant or override expression.
|
||||
/// Override expressions are not known at compilation time, so these will be std::nullopt.
|
||||
using WorkgroupSize = std::array<std::optional<uint32_t>, 3>;
|
||||
|
||||
/// Function holds the semantic information for function nodes.
|
||||
class Function final : public Castable<Function, CallTarget> {
|
||||
|
||||
Reference in New Issue
Block a user