mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 02:39:11 +00:00
Split sem/struct into sem and type.
This CL moves the Base entries from sem/struct into type. The class names are maintained as Base over the move and will be renamed in a followup. Bug: tint:1718 Change-Id: I07bed013167c58fc83f0069c781404d8197966ee Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/113425 Reviewed-by: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Dan Sinclair
parent
d8a084585f
commit
f53b2b5b2e
@@ -34,6 +34,7 @@
|
||||
#include "src/tint/type/f32.h"
|
||||
#include "src/tint/type/i32.h"
|
||||
#include "src/tint/type/matrix.h"
|
||||
#include "src/tint/type/struct.h"
|
||||
#include "src/tint/type/u32.h"
|
||||
#include "src/tint/type/vector.h"
|
||||
#include "src/tint/utils/bitcast.h"
|
||||
@@ -415,7 +416,7 @@ struct Composite : ImplConstant {
|
||||
utils::Vector<const sem::Constant*, 4> conv_els;
|
||||
conv_els.Reserve(elements.Length());
|
||||
std::function<const type::Type*(size_t idx)> target_el_ty;
|
||||
if (auto* str = target_ty->As<sem::Struct>()) {
|
||||
if (auto* str = target_ty->As<type::StructBase>()) {
|
||||
if (str->Members().Length() != elements.Length()) {
|
||||
TINT_ICE(Resolver, builder.Diagnostics())
|
||||
<< "const-eval conversion of structure has mismatched element counts";
|
||||
@@ -493,7 +494,7 @@ const ImplConstant* ZeroValue(ProgramBuilder& builder, const type::Type* type) {
|
||||
}
|
||||
return nullptr;
|
||||
},
|
||||
[&](const sem::Struct* s) -> const ImplConstant* {
|
||||
[&](const type::StructBase* s) -> const ImplConstant* {
|
||||
utils::Hashmap<const type::Type*, const ImplConstant*, 8> zero_by_type;
|
||||
utils::Vector<const sem::Constant*, 4> zeros;
|
||||
zeros.Reserve(s->Members().Length());
|
||||
@@ -1448,7 +1449,7 @@ ConstEval::Result ConstEval::Index(const sem::Expression* obj_expr,
|
||||
}
|
||||
|
||||
ConstEval::Result ConstEval::MemberAccess(const sem::Expression* obj_expr,
|
||||
const sem::StructMember* member) {
|
||||
const type::StructMemberBase* member) {
|
||||
auto obj_val = obj_expr->ConstantValue();
|
||||
if (!obj_val) {
|
||||
return nullptr;
|
||||
|
||||
@@ -33,8 +33,10 @@ class LiteralExpression;
|
||||
namespace tint::sem {
|
||||
class Constant;
|
||||
class Expression;
|
||||
class StructMember;
|
||||
} // namespace tint::sem
|
||||
namespace tint::type {
|
||||
class StructMemberBase;
|
||||
} // namespace tint::type
|
||||
|
||||
namespace tint::resolver {
|
||||
|
||||
@@ -92,7 +94,7 @@ class ConstEval {
|
||||
/// @param obj the object being accessed
|
||||
/// @param member the member
|
||||
/// @return the result of the member access, or null if the value cannot be calculated
|
||||
Result MemberAccess(const sem::Expression* obj, const sem::StructMember* member);
|
||||
Result MemberAccess(const sem::Expression* obj, const type::StructMemberBase* member);
|
||||
|
||||
/// @param ty the result type
|
||||
/// @param vector the vector being swizzled
|
||||
|
||||
@@ -996,13 +996,13 @@ sem::Function* Resolver::Function(const ast::Function* decl) {
|
||||
if (auto* str = p_ty->As<sem::Struct>()) {
|
||||
switch (decl->PipelineStage()) {
|
||||
case ast::PipelineStage::kVertex:
|
||||
str->AddUsage(sem::PipelineStageUsage::kVertexInput);
|
||||
str->AddUsage(type::PipelineStageUsage::kVertexInput);
|
||||
break;
|
||||
case ast::PipelineStage::kFragment:
|
||||
str->AddUsage(sem::PipelineStageUsage::kFragmentInput);
|
||||
str->AddUsage(type::PipelineStageUsage::kFragmentInput);
|
||||
break;
|
||||
case ast::PipelineStage::kCompute:
|
||||
str->AddUsage(sem::PipelineStageUsage::kComputeInput);
|
||||
str->AddUsage(type::PipelineStageUsage::kComputeInput);
|
||||
break;
|
||||
case ast::PipelineStage::kNone:
|
||||
break;
|
||||
@@ -1048,13 +1048,13 @@ sem::Function* Resolver::Function(const ast::Function* decl) {
|
||||
|
||||
switch (decl->PipelineStage()) {
|
||||
case ast::PipelineStage::kVertex:
|
||||
str->AddUsage(sem::PipelineStageUsage::kVertexOutput);
|
||||
str->AddUsage(type::PipelineStageUsage::kVertexOutput);
|
||||
break;
|
||||
case ast::PipelineStage::kFragment:
|
||||
str->AddUsage(sem::PipelineStageUsage::kFragmentOutput);
|
||||
str->AddUsage(type::PipelineStageUsage::kFragmentOutput);
|
||||
break;
|
||||
case ast::PipelineStage::kCompute:
|
||||
str->AddUsage(sem::PipelineStageUsage::kComputeOutput);
|
||||
str->AddUsage(type::PipelineStageUsage::kComputeOutput);
|
||||
break;
|
||||
case ast::PipelineStage::kNone:
|
||||
break;
|
||||
|
||||
@@ -76,7 +76,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsVertexShaderParam) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kVertexInput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kVertexInput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsVertexShaderReturnType) {
|
||||
@@ -92,7 +92,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsVertexShaderReturnType) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kVertexOutput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kVertexOutput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsFragmentShaderParam) {
|
||||
@@ -106,7 +106,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsFragmentShaderParam) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kFragmentInput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kFragmentInput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsFragmentShaderReturnType) {
|
||||
@@ -120,7 +120,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsFragmentShaderReturnType) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kFragmentOutput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kFragmentOutput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsComputeShaderParam) {
|
||||
@@ -136,7 +136,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsComputeShaderParam) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kComputeInput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kComputeInput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedMultipleStages) {
|
||||
@@ -155,8 +155,8 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedMultipleStages) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kVertexOutput,
|
||||
sem::PipelineStageUsage::kFragmentInput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kVertexOutput,
|
||||
type::PipelineStageUsage::kFragmentInput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderParamViaAlias) {
|
||||
@@ -171,7 +171,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderParamViaAlias) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kFragmentInput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kFragmentInput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderParamLocationSet) {
|
||||
@@ -201,7 +201,7 @@ TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderReturnTypeViaAlias) {
|
||||
auto* sem = TypeOf(s)->As<sem::Struct>();
|
||||
ASSERT_NE(sem, nullptr);
|
||||
EXPECT_THAT(sem->PipelineStageUses(),
|
||||
UnorderedElementsAre(sem::PipelineStageUsage::kFragmentOutput));
|
||||
UnorderedElementsAre(type::PipelineStageUsage::kFragmentOutput));
|
||||
}
|
||||
|
||||
TEST_F(ResolverPipelineStageUseTest, StructUsedAsShaderReturnTypeLocationSet) {
|
||||
|
||||
Reference in New Issue
Block a user