mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-12 16:15:55 +00:00
Remove push constants.
Push constants won't be supported by WebGPU. This CL removes them from Tint. For the SPIR-V reader case, this means the push constant will cause a unknown storage class error. Bug: tint:19 Change-Id: I10b09ce589b6b370fc828af0cd56e6213c5bc694 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/21180 Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
parent
506fe795b6
commit
a4e6858b94
@ -51,10 +51,6 @@ std::ostream& operator<<(std::ostream& out, StorageClass sc) {
|
|||||||
out << "image";
|
out << "image";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case StorageClass::kPushConstant: {
|
|
||||||
out << "push_constant";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case StorageClass::kPrivate: {
|
case StorageClass::kPrivate: {
|
||||||
out << "private";
|
out << "private";
|
||||||
break;
|
break;
|
||||||
|
@ -30,7 +30,6 @@ enum class StorageClass {
|
|||||||
kUniformConstant,
|
kUniformConstant,
|
||||||
kStorageBuffer,
|
kStorageBuffer,
|
||||||
kImage,
|
kImage,
|
||||||
kPushConstant,
|
|
||||||
kPrivate,
|
kPrivate,
|
||||||
kFunction
|
kFunction
|
||||||
};
|
};
|
||||||
|
@ -54,8 +54,6 @@ ast::StorageClass EnumConverter::ToStorageClass(SpvStorageClass sc) {
|
|||||||
return ast::StorageClass::kStorageBuffer;
|
return ast::StorageClass::kStorageBuffer;
|
||||||
case SpvStorageClassImage:
|
case SpvStorageClassImage:
|
||||||
return ast::StorageClass::kImage;
|
return ast::StorageClass::kImage;
|
||||||
case SpvStorageClassPushConstant:
|
|
||||||
return ast::StorageClass::kPushConstant;
|
|
||||||
case SpvStorageClassPrivate:
|
case SpvStorageClassPrivate:
|
||||||
return ast::StorageClass::kPrivate;
|
return ast::StorageClass::kPrivate;
|
||||||
case SpvStorageClassFunction:
|
case SpvStorageClassFunction:
|
||||||
|
@ -150,8 +150,6 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
StorageClassCase{SpvStorageClassStorageBuffer, true,
|
StorageClassCase{SpvStorageClassStorageBuffer, true,
|
||||||
ast::StorageClass::kStorageBuffer},
|
ast::StorageClass::kStorageBuffer},
|
||||||
StorageClassCase{SpvStorageClassImage, true, ast::StorageClass::kImage},
|
StorageClassCase{SpvStorageClassImage, true, ast::StorageClass::kImage},
|
||||||
StorageClassCase{SpvStorageClassPushConstant, true,
|
|
||||||
ast::StorageClass::kPushConstant},
|
|
||||||
StorageClassCase{SpvStorageClassPrivate, true,
|
StorageClassCase{SpvStorageClassPrivate, true,
|
||||||
ast::StorageClass::kPrivate},
|
ast::StorageClass::kPrivate},
|
||||||
StorageClassCase{SpvStorageClassFunction, true,
|
StorageClassCase{SpvStorageClassFunction, true,
|
||||||
|
@ -628,22 +628,6 @@ TEST_F(SpvParserTest, ConvertType_PointerImage) {
|
|||||||
EXPECT_TRUE(p->error().empty());
|
EXPECT_TRUE(p->error().empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(SpvParserTest, ConvertType_PointerPushConstant) {
|
|
||||||
auto* p = parser(test::Assemble(R"(
|
|
||||||
%float = OpTypeFloat 32
|
|
||||||
%3 = OpTypePointer PushConstant %float
|
|
||||||
)"));
|
|
||||||
EXPECT_TRUE(p->BuildInternalModule());
|
|
||||||
|
|
||||||
auto* type = p->ConvertType(3);
|
|
||||||
EXPECT_TRUE(type->IsPointer());
|
|
||||||
auto* ptr_ty = type->AsPointer();
|
|
||||||
EXPECT_NE(ptr_ty, nullptr);
|
|
||||||
EXPECT_TRUE(ptr_ty->type()->IsF32());
|
|
||||||
EXPECT_EQ(ptr_ty->storage_class(), ast::StorageClass::kPushConstant);
|
|
||||||
EXPECT_TRUE(p->error().empty());
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(SpvParserTest, ConvertType_PointerPrivate) {
|
TEST_F(SpvParserTest, ConvertType_PointerPrivate) {
|
||||||
auto* p = parser(test::Assemble(R"(
|
auto* p = parser(test::Assemble(R"(
|
||||||
%float = OpTypeFloat 32
|
%float = OpTypeFloat 32
|
||||||
|
@ -602,8 +602,6 @@ Token Lexer::check_keyword(const Source& source, const std::string& str) {
|
|||||||
return {Token::Type::kPrivate, source, "private"};
|
return {Token::Type::kPrivate, source, "private"};
|
||||||
if (str == "ptr")
|
if (str == "ptr")
|
||||||
return {Token::Type::kPtr, source, "ptr"};
|
return {Token::Type::kPtr, source, "ptr"};
|
||||||
if (str == "push_constant")
|
|
||||||
return {Token::Type::kPushConstant, source, "push_constant"};
|
|
||||||
if (str == "return")
|
if (str == "return")
|
||||||
return {Token::Type::kReturn, source, "return"};
|
return {Token::Type::kReturn, source, "return"};
|
||||||
if (str == "set")
|
if (str == "set")
|
||||||
|
@ -476,7 +476,6 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
TokenData{"position", Token::Type::kPosition},
|
TokenData{"position", Token::Type::kPosition},
|
||||||
TokenData{"private", Token::Type::kPrivate},
|
TokenData{"private", Token::Type::kPrivate},
|
||||||
TokenData{"ptr", Token::Type::kPtr},
|
TokenData{"ptr", Token::Type::kPtr},
|
||||||
TokenData{"push_constant", Token::Type::kPushConstant},
|
|
||||||
TokenData{"return", Token::Type::kReturn},
|
TokenData{"return", Token::Type::kReturn},
|
||||||
TokenData{"set", Token::Type::kSet},
|
TokenData{"set", Token::Type::kSet},
|
||||||
TokenData{"storage_buffer", Token::Type::kStorageBuffer},
|
TokenData{"storage_buffer", Token::Type::kStorageBuffer},
|
||||||
|
@ -927,7 +927,6 @@ ast::type::Type* ParserImpl::type_decl_matrix(Token t) {
|
|||||||
// | UNIFORM_CONSTANT
|
// | UNIFORM_CONSTANT
|
||||||
// | STORAGE_BUFFER
|
// | STORAGE_BUFFER
|
||||||
// | IMAGE
|
// | IMAGE
|
||||||
// | PUSH_CONSTANT
|
|
||||||
// | PRIVATE
|
// | PRIVATE
|
||||||
// | FUNCTION
|
// | FUNCTION
|
||||||
ast::StorageClass ParserImpl::storage_class() {
|
ast::StorageClass ParserImpl::storage_class() {
|
||||||
@ -960,10 +959,6 @@ ast::StorageClass ParserImpl::storage_class() {
|
|||||||
next(); // consume the peek
|
next(); // consume the peek
|
||||||
return ast::StorageClass::kImage;
|
return ast::StorageClass::kImage;
|
||||||
}
|
}
|
||||||
if (t.IsPushConstant()) {
|
|
||||||
next(); // consume the peek
|
|
||||||
return ast::StorageClass::kPushConstant;
|
|
||||||
}
|
|
||||||
if (t.IsPrivate()) {
|
if (t.IsPrivate()) {
|
||||||
next(); // consume the peek
|
next(); // consume the peek
|
||||||
return ast::StorageClass::kPrivate;
|
return ast::StorageClass::kPrivate;
|
||||||
|
@ -73,7 +73,6 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
ast::StorageClass::kUniformConstant},
|
ast::StorageClass::kUniformConstant},
|
||||||
StorageClassData{"storage_buffer", ast::StorageClass::kStorageBuffer},
|
StorageClassData{"storage_buffer", ast::StorageClass::kStorageBuffer},
|
||||||
StorageClassData{"image", ast::StorageClass::kImage},
|
StorageClassData{"image", ast::StorageClass::kImage},
|
||||||
StorageClassData{"push_constant", ast::StorageClass::kPushConstant},
|
|
||||||
StorageClassData{"private", ast::StorageClass::kPrivate},
|
StorageClassData{"private", ast::StorageClass::kPrivate},
|
||||||
StorageClassData{"function", ast::StorageClass::kFunction}));
|
StorageClassData{"function", ast::StorageClass::kFunction}));
|
||||||
|
|
||||||
|
@ -74,7 +74,6 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
VariableStorageData{"storage_buffer",
|
VariableStorageData{"storage_buffer",
|
||||||
ast::StorageClass::kStorageBuffer},
|
ast::StorageClass::kStorageBuffer},
|
||||||
VariableStorageData{"image", ast::StorageClass::kImage},
|
VariableStorageData{"image", ast::StorageClass::kImage},
|
||||||
VariableStorageData{"push_constant", ast::StorageClass::kPushConstant},
|
|
||||||
VariableStorageData{"private", ast::StorageClass::kPrivate},
|
VariableStorageData{"private", ast::StorageClass::kPrivate},
|
||||||
VariableStorageData{"function", ast::StorageClass::kFunction}));
|
VariableStorageData{"function", ast::StorageClass::kFunction}));
|
||||||
|
|
||||||
|
@ -241,8 +241,6 @@ std::string Token::TypeToName(Type type) {
|
|||||||
return "private";
|
return "private";
|
||||||
case Token::Type::kPtr:
|
case Token::Type::kPtr:
|
||||||
return "ptr";
|
return "ptr";
|
||||||
case Token::Type::kPushConstant:
|
|
||||||
return "push_constant";
|
|
||||||
case Token::Type::kRegardless:
|
case Token::Type::kRegardless:
|
||||||
return "regardless";
|
return "regardless";
|
||||||
case Token::Type::kReturn:
|
case Token::Type::kReturn:
|
||||||
|
@ -252,8 +252,6 @@ class Token {
|
|||||||
kPrivate,
|
kPrivate,
|
||||||
/// A 'ptr'
|
/// A 'ptr'
|
||||||
kPtr,
|
kPtr,
|
||||||
/// A 'push_constant'
|
|
||||||
kPushConstant,
|
|
||||||
/// A 'regardless'
|
/// A 'regardless'
|
||||||
kRegardless,
|
kRegardless,
|
||||||
/// A 'return'
|
/// A 'return'
|
||||||
@ -565,8 +563,6 @@ class Token {
|
|||||||
bool IsPrivate() const { return type_ == Type::kPrivate; }
|
bool IsPrivate() const { return type_ == Type::kPrivate; }
|
||||||
/// @returns true if token is a 'ptr'
|
/// @returns true if token is a 'ptr'
|
||||||
bool IsPtr() const { return type_ == Type::kPtr; }
|
bool IsPtr() const { return type_ == Type::kPtr; }
|
||||||
/// @returns true if token is a 'push_constant'
|
|
||||||
bool IsPushConstant() const { return type_ == Type::kPushConstant; }
|
|
||||||
/// @returns true if token is a 'return'
|
/// @returns true if token is a 'return'
|
||||||
bool IsReturn() const { return type_ == Type::kReturn; }
|
bool IsReturn() const { return type_ == Type::kReturn; }
|
||||||
/// @returns true if token is a 'set'
|
/// @returns true if token is a 'set'
|
||||||
|
@ -1611,8 +1611,6 @@ SpvStorageClass Builder::ConvertStorageClass(ast::StorageClass klass) const {
|
|||||||
return SpvStorageClassStorageBuffer;
|
return SpvStorageClassStorageBuffer;
|
||||||
case ast::StorageClass::kImage:
|
case ast::StorageClass::kImage:
|
||||||
return SpvStorageClassImage;
|
return SpvStorageClassImage;
|
||||||
case ast::StorageClass::kPushConstant:
|
|
||||||
return SpvStorageClassPushConstant;
|
|
||||||
case ast::StorageClass::kPrivate:
|
case ast::StorageClass::kPrivate:
|
||||||
return SpvStorageClassPrivate;
|
return SpvStorageClassPrivate;
|
||||||
case ast::StorageClass::kFunction:
|
case ast::StorageClass::kFunction:
|
||||||
|
@ -498,7 +498,6 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
PtrData{ast::StorageClass::kStorageBuffer,
|
PtrData{ast::StorageClass::kStorageBuffer,
|
||||||
SpvStorageClassStorageBuffer},
|
SpvStorageClassStorageBuffer},
|
||||||
PtrData{ast::StorageClass::kImage, SpvStorageClassImage},
|
PtrData{ast::StorageClass::kImage, SpvStorageClassImage},
|
||||||
PtrData{ast::StorageClass::kPushConstant, SpvStorageClassPushConstant},
|
|
||||||
PtrData{ast::StorageClass::kPrivate, SpvStorageClassPrivate},
|
PtrData{ast::StorageClass::kPrivate, SpvStorageClassPrivate},
|
||||||
PtrData{ast::StorageClass::kFunction, SpvStorageClassFunction}));
|
PtrData{ast::StorageClass::kFunction, SpvStorageClassFunction}));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user