mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 18:59:21 +00:00
tint/ast: Rename Builtin to BuiltinValue
This is what it is called in the spec, and avoids confusion with the builtin functions. Change-Id: I5cd4a250351c10928e90b640a8c68c7834bcf2a0 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/97200 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
f50d56aa05
commit
f330229de5
@@ -71,7 +71,7 @@ bool IsShaderIOAttribute(const ast::Attribute* attr) {
|
||||
// Returns true if `attrs` contains a `sample_mask` builtin.
|
||||
bool HasSampleMask(const ast::AttributeList& attrs) {
|
||||
auto* builtin = ast::GetAttribute<ast::BuiltinAttribute>(attrs);
|
||||
return builtin && builtin->builtin == ast::Builtin::kSampleMask;
|
||||
return builtin && builtin->builtin == ast::BuiltinValue::kSampleMask;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
@@ -191,7 +191,7 @@ struct CanonicalizeEntryPointIO::State {
|
||||
if (builtin) {
|
||||
if (cfg.shader_style == ShaderStyle::kGlsl) {
|
||||
value = FromGLSLBuiltin(builtin->builtin, value, ast_type);
|
||||
} else if (builtin->builtin == ast::Builtin::kSampleMask) {
|
||||
} else if (builtin->builtin == ast::BuiltinValue::kSampleMask) {
|
||||
// Vulkan requires the type of a SampleMask builtin to be an array.
|
||||
// Declare it as array<u32, 1> and then load the first element.
|
||||
ast_type = ctx.dst->ty.array(ast_type, 1_u);
|
||||
@@ -366,7 +366,7 @@ struct CanonicalizeEntryPointIO::State {
|
||||
// No existing sample mask builtin was found, so create a new output value
|
||||
// using the fixed sample mask.
|
||||
AddOutput("fixed_sample_mask", ctx.dst->create<sem::U32>(),
|
||||
{ctx.dst->Builtin(ast::Builtin::kSampleMask)},
|
||||
{ctx.dst->Builtin(ast::BuiltinValue::kSampleMask)},
|
||||
ctx.dst->Expr(u32(cfg.fixed_sample_mask)));
|
||||
}
|
||||
|
||||
@@ -374,7 +374,7 @@ struct CanonicalizeEntryPointIO::State {
|
||||
void AddVertexPointSize() {
|
||||
// Create a new output value and assign it a literal 1.0 value.
|
||||
AddOutput("vertex_point_size", ctx.dst->create<sem::F32>(),
|
||||
{ctx.dst->Builtin(ast::Builtin::kPointSize)}, ctx.dst->Expr(1_f));
|
||||
{ctx.dst->Builtin(ast::BuiltinValue::kPointSize)}, ctx.dst->Expr(1_f));
|
||||
}
|
||||
|
||||
/// Create an expression for gl_Position.[component]
|
||||
@@ -606,11 +606,11 @@ struct CanonicalizeEntryPointIO::State {
|
||||
/// @param stage the current pipeline stage
|
||||
/// @param storage_class the storage class (input or output)
|
||||
/// @returns the gl_ string corresponding to that builtin
|
||||
const char* GLSLBuiltinToString(ast::Builtin builtin,
|
||||
const char* GLSLBuiltinToString(ast::BuiltinValue builtin,
|
||||
ast::PipelineStage stage,
|
||||
ast::StorageClass storage_class) {
|
||||
switch (builtin) {
|
||||
case ast::Builtin::kPosition:
|
||||
case ast::BuiltinValue::kPosition:
|
||||
switch (stage) {
|
||||
case ast::PipelineStage::kVertex:
|
||||
return "gl_Position";
|
||||
@@ -619,27 +619,27 @@ struct CanonicalizeEntryPointIO::State {
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
case ast::Builtin::kVertexIndex:
|
||||
case ast::BuiltinValue::kVertexIndex:
|
||||
return "gl_VertexID";
|
||||
case ast::Builtin::kInstanceIndex:
|
||||
case ast::BuiltinValue::kInstanceIndex:
|
||||
return "gl_InstanceID";
|
||||
case ast::Builtin::kFrontFacing:
|
||||
case ast::BuiltinValue::kFrontFacing:
|
||||
return "gl_FrontFacing";
|
||||
case ast::Builtin::kFragDepth:
|
||||
case ast::BuiltinValue::kFragDepth:
|
||||
return "gl_FragDepth";
|
||||
case ast::Builtin::kLocalInvocationId:
|
||||
case ast::BuiltinValue::kLocalInvocationId:
|
||||
return "gl_LocalInvocationID";
|
||||
case ast::Builtin::kLocalInvocationIndex:
|
||||
case ast::BuiltinValue::kLocalInvocationIndex:
|
||||
return "gl_LocalInvocationIndex";
|
||||
case ast::Builtin::kGlobalInvocationId:
|
||||
case ast::BuiltinValue::kGlobalInvocationId:
|
||||
return "gl_GlobalInvocationID";
|
||||
case ast::Builtin::kNumWorkgroups:
|
||||
case ast::BuiltinValue::kNumWorkgroups:
|
||||
return "gl_NumWorkGroups";
|
||||
case ast::Builtin::kWorkgroupId:
|
||||
case ast::BuiltinValue::kWorkgroupId:
|
||||
return "gl_WorkGroupID";
|
||||
case ast::Builtin::kSampleIndex:
|
||||
case ast::BuiltinValue::kSampleIndex:
|
||||
return "gl_SampleID";
|
||||
case ast::Builtin::kSampleMask:
|
||||
case ast::BuiltinValue::kSampleMask:
|
||||
if (storage_class == ast::StorageClass::kIn) {
|
||||
return "gl_SampleMaskIn";
|
||||
} else {
|
||||
@@ -656,18 +656,18 @@ struct CanonicalizeEntryPointIO::State {
|
||||
/// @param ast_type (inout) the incoming WGSL and outgoing GLSL types
|
||||
/// @returns an expression representing the GLSL builtin converted to what
|
||||
/// WGSL expects
|
||||
const ast::Expression* FromGLSLBuiltin(ast::Builtin builtin,
|
||||
const ast::Expression* FromGLSLBuiltin(ast::BuiltinValue builtin,
|
||||
const ast::Expression* value,
|
||||
const ast::Type*& ast_type) {
|
||||
switch (builtin) {
|
||||
case ast::Builtin::kVertexIndex:
|
||||
case ast::Builtin::kInstanceIndex:
|
||||
case ast::Builtin::kSampleIndex:
|
||||
case ast::BuiltinValue::kVertexIndex:
|
||||
case ast::BuiltinValue::kInstanceIndex:
|
||||
case ast::BuiltinValue::kSampleIndex:
|
||||
// GLSL uses i32 for these, so bitcast to u32.
|
||||
value = ctx.dst->Bitcast(ast_type, value);
|
||||
ast_type = ctx.dst->ty.i32();
|
||||
break;
|
||||
case ast::Builtin::kSampleMask:
|
||||
case ast::BuiltinValue::kSampleMask:
|
||||
// gl_SampleMask is an array of i32. Retrieve the first element and
|
||||
// bitcast it to u32.
|
||||
value = ctx.dst->IndexAccessor(value, 0_i);
|
||||
@@ -686,14 +686,14 @@ struct CanonicalizeEntryPointIO::State {
|
||||
/// @param value the value to convert
|
||||
/// @param type (out) the type to which the value was converted
|
||||
/// @returns the converted value which can be assigned to the GLSL builtin
|
||||
const ast::Expression* ToGLSLBuiltin(ast::Builtin builtin,
|
||||
const ast::Expression* ToGLSLBuiltin(ast::BuiltinValue builtin,
|
||||
const ast::Expression* value,
|
||||
const sem::Type*& type) {
|
||||
switch (builtin) {
|
||||
case ast::Builtin::kVertexIndex:
|
||||
case ast::Builtin::kInstanceIndex:
|
||||
case ast::Builtin::kSampleIndex:
|
||||
case ast::Builtin::kSampleMask:
|
||||
case ast::BuiltinValue::kVertexIndex:
|
||||
case ast::BuiltinValue::kInstanceIndex:
|
||||
case ast::BuiltinValue::kSampleIndex:
|
||||
case ast::BuiltinValue::kSampleMask:
|
||||
type = ctx.dst->create<sem::I32>();
|
||||
value = ctx.dst->Bitcast(CreateASTTypeFor(ctx, type), value);
|
||||
break;
|
||||
|
||||
@@ -79,13 +79,13 @@ void FirstIndexOffset::Run(CloneContext& ctx, const DataMap& inputs, DataMap& ou
|
||||
if (auto* var = node->As<ast::Variable>()) {
|
||||
for (auto* attr : var->attributes) {
|
||||
if (auto* builtin_attr = attr->As<ast::BuiltinAttribute>()) {
|
||||
ast::Builtin builtin = builtin_attr->builtin;
|
||||
if (builtin == ast::Builtin::kVertexIndex) {
|
||||
ast::BuiltinValue builtin = builtin_attr->builtin;
|
||||
if (builtin == ast::BuiltinValue::kVertexIndex) {
|
||||
auto* sem_var = ctx.src->Sem().Get(var);
|
||||
builtin_vars.emplace(sem_var, kFirstVertexName);
|
||||
has_vertex_or_instance_index = true;
|
||||
}
|
||||
if (builtin == ast::Builtin::kInstanceIndex) {
|
||||
if (builtin == ast::BuiltinValue::kInstanceIndex) {
|
||||
auto* sem_var = ctx.src->Sem().Get(var);
|
||||
builtin_vars.emplace(sem_var, kFirstInstanceName);
|
||||
has_vertex_or_instance_index = true;
|
||||
@@ -96,13 +96,13 @@ void FirstIndexOffset::Run(CloneContext& ctx, const DataMap& inputs, DataMap& ou
|
||||
if (auto* member = node->As<ast::StructMember>()) {
|
||||
for (auto* attr : member->attributes) {
|
||||
if (auto* builtin_attr = attr->As<ast::BuiltinAttribute>()) {
|
||||
ast::Builtin builtin = builtin_attr->builtin;
|
||||
if (builtin == ast::Builtin::kVertexIndex) {
|
||||
ast::BuiltinValue builtin = builtin_attr->builtin;
|
||||
if (builtin == ast::BuiltinValue::kVertexIndex) {
|
||||
auto* sem_mem = ctx.src->Sem().Get(member);
|
||||
builtin_members.emplace(sem_mem, kFirstVertexName);
|
||||
has_vertex_or_instance_index = true;
|
||||
}
|
||||
if (builtin == ast::Builtin::kInstanceIndex) {
|
||||
if (builtin == ast::BuiltinValue::kInstanceIndex) {
|
||||
auto* sem_mem = ctx.src->Sem().Get(member);
|
||||
builtin_members.emplace(sem_mem, kFirstInstanceName);
|
||||
has_vertex_or_instance_index = true;
|
||||
|
||||
@@ -52,7 +52,7 @@ NumWorkgroupsFromUniform::~NumWorkgroupsFromUniform() = default;
|
||||
bool NumWorkgroupsFromUniform::ShouldRun(const Program* program, const DataMap&) const {
|
||||
for (auto* node : program->ASTNodes().Objects()) {
|
||||
if (auto* attr = node->As<ast::BuiltinAttribute>()) {
|
||||
if (attr->builtin == ast::Builtin::kNumWorkgroups) {
|
||||
if (attr->builtin == ast::BuiltinValue::kNumWorkgroups) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,7 @@ void NumWorkgroupsFromUniform::Run(CloneContext& ctx, const DataMap& inputs, Dat
|
||||
for (auto* member : str->Members()) {
|
||||
auto* builtin =
|
||||
ast::GetAttribute<ast::BuiltinAttribute>(member->Declaration()->attributes);
|
||||
if (!builtin || builtin->builtin != ast::Builtin::kNumWorkgroups) {
|
||||
if (!builtin || builtin->builtin != ast::BuiltinValue::kNumWorkgroups) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -709,11 +709,11 @@ struct State {
|
||||
location_info[location->value] = info;
|
||||
} else if (auto* builtin = ast::GetAttribute<ast::BuiltinAttribute>(param->attributes)) {
|
||||
// Check for existing vertex_index and instance_index builtins.
|
||||
if (builtin->builtin == ast::Builtin::kVertexIndex) {
|
||||
if (builtin->builtin == ast::BuiltinValue::kVertexIndex) {
|
||||
vertex_index_expr = [this, param]() {
|
||||
return ctx.dst->Expr(ctx.Clone(param->symbol));
|
||||
};
|
||||
} else if (builtin->builtin == ast::Builtin::kInstanceIndex) {
|
||||
} else if (builtin->builtin == ast::BuiltinValue::kInstanceIndex) {
|
||||
instance_index_expr = [this, param]() {
|
||||
return ctx.dst->Expr(ctx.Clone(param->symbol));
|
||||
};
|
||||
@@ -756,9 +756,9 @@ struct State {
|
||||
} else if (auto* builtin =
|
||||
ast::GetAttribute<ast::BuiltinAttribute>(member->attributes)) {
|
||||
// Check for existing vertex_index and instance_index builtins.
|
||||
if (builtin->builtin == ast::Builtin::kVertexIndex) {
|
||||
if (builtin->builtin == ast::BuiltinValue::kVertexIndex) {
|
||||
vertex_index_expr = member_expr;
|
||||
} else if (builtin->builtin == ast::Builtin::kInstanceIndex) {
|
||||
} else if (builtin->builtin == ast::BuiltinValue::kInstanceIndex) {
|
||||
instance_index_expr = member_expr;
|
||||
}
|
||||
members_to_clone.push_back(member);
|
||||
@@ -825,8 +825,9 @@ struct State {
|
||||
for (const VertexBufferLayoutDescriptor& layout : cfg.vertex_state) {
|
||||
if (layout.step_mode == VertexStepMode::kVertex) {
|
||||
auto name = ctx.dst->Symbols().New("tint_pulling_vertex_index");
|
||||
new_function_parameters.push_back(ctx.dst->Param(
|
||||
name, ctx.dst->ty.u32(), {ctx.dst->Builtin(ast::Builtin::kVertexIndex)}));
|
||||
new_function_parameters.push_back(
|
||||
ctx.dst->Param(name, ctx.dst->ty.u32(),
|
||||
{ctx.dst->Builtin(ast::BuiltinValue::kVertexIndex)}));
|
||||
vertex_index_expr = [this, name]() { return ctx.dst->Expr(name); };
|
||||
break;
|
||||
}
|
||||
@@ -836,8 +837,9 @@ struct State {
|
||||
for (const VertexBufferLayoutDescriptor& layout : cfg.vertex_state) {
|
||||
if (layout.step_mode == VertexStepMode::kInstance) {
|
||||
auto name = ctx.dst->Symbols().New("tint_pulling_instance_index");
|
||||
new_function_parameters.push_back(ctx.dst->Param(
|
||||
name, ctx.dst->ty.u32(), {ctx.dst->Builtin(ast::Builtin::kInstanceIndex)}));
|
||||
new_function_parameters.push_back(
|
||||
ctx.dst->Param(name, ctx.dst->ty.u32(),
|
||||
{ctx.dst->Builtin(ast::BuiltinValue::kInstanceIndex)}));
|
||||
instance_index_expr = [this, name]() { return ctx.dst->Expr(name); };
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ struct ZeroInitWorkgroupMemory::State {
|
||||
std::function<const ast::Expression*()> local_index;
|
||||
for (auto* param : fn->params) {
|
||||
if (auto* builtin = ast::GetAttribute<ast::BuiltinAttribute>(param->attributes)) {
|
||||
if (builtin->builtin == ast::Builtin::kLocalInvocationIndex) {
|
||||
if (builtin->builtin == ast::BuiltinValue::kLocalInvocationIndex) {
|
||||
local_index = [=] { return b.Expr(ctx.Clone(param->symbol)); };
|
||||
break;
|
||||
}
|
||||
@@ -147,7 +147,7 @@ struct ZeroInitWorkgroupMemory::State {
|
||||
for (auto* member : str->Members()) {
|
||||
if (auto* builtin = ast::GetAttribute<ast::BuiltinAttribute>(
|
||||
member->Declaration()->attributes)) {
|
||||
if (builtin->builtin == ast::Builtin::kLocalInvocationIndex) {
|
||||
if (builtin->builtin == ast::BuiltinValue::kLocalInvocationIndex) {
|
||||
local_index = [=] {
|
||||
auto* param_expr = b.Expr(ctx.Clone(param->symbol));
|
||||
auto member_name = ctx.Clone(member->Declaration()->symbol);
|
||||
@@ -162,7 +162,7 @@ struct ZeroInitWorkgroupMemory::State {
|
||||
if (!local_index) {
|
||||
// No existing local index parameter. Append one to the entry point.
|
||||
auto* param = b.Param(b.Symbols().New("local_invocation_index"), b.ty.u32(),
|
||||
{b.Builtin(ast::Builtin::kLocalInvocationIndex)});
|
||||
{b.Builtin(ast::BuiltinValue::kLocalInvocationIndex)});
|
||||
ctx.InsertBack(fn->params, param);
|
||||
local_index = [=] { return b.Expr(param->symbol); };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user