[wgsl-reader] Adding texture_sampler_types to type_decl
Bug: tint:147 Change-Id: Ib806d5c434e98632a83ad8802a3a0aeea609c8c2 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28125 Reviewed-by: dan sinclair <dsinclair@chromium.org> Commit-Queue: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
parent
3af512046e
commit
43759bff1c
|
@ -1119,6 +1119,7 @@ ast::type::AliasType* ParserImpl::type_alias() {
|
|||
// | MAT4x2 LESS_THAN type_decl GREATER_THAN
|
||||
// | MAT4x3 LESS_THAN type_decl GREATER_THAN
|
||||
// | MAT4x4 LESS_THAN type_decl GREATER_THAN
|
||||
// | texture_sampler_types
|
||||
ast::type::Type* ParserImpl::type_decl() {
|
||||
auto t = peek();
|
||||
if (t.IsIdentifier()) {
|
||||
|
@ -1172,6 +1173,15 @@ ast::type::Type* ParserImpl::type_decl() {
|
|||
t.IsMat4x4()) {
|
||||
return type_decl_matrix(t);
|
||||
}
|
||||
|
||||
auto* texture_or_sampler = texture_sampler_types();
|
||||
if (has_error()) {
|
||||
return nullptr;
|
||||
}
|
||||
if (texture_or_sampler != nullptr) {
|
||||
return texture_or_sampler;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include "src/ast/type/i32_type.h"
|
||||
#include "src/ast/type/matrix_type.h"
|
||||
#include "src/ast/type/pointer_type.h"
|
||||
#include "src/ast/type/sampled_texture_type.h"
|
||||
#include "src/ast/type/sampler_type.h"
|
||||
#include "src/ast/type/struct_type.h"
|
||||
#include "src/ast/type/u32_type.h"
|
||||
#include "src/ast/type/vector_type.h"
|
||||
|
@ -741,6 +743,34 @@ INSTANTIATE_TEST_SUITE_P(ParserImplTest,
|
|||
MatrixData{"mat4x3<>", 4, 3},
|
||||
MatrixData{"mat4x4<>", 4, 4}));
|
||||
|
||||
TEST_F(ParserImplTest, TypeDecl_Sampler) {
|
||||
auto* p = parser("sampler");
|
||||
|
||||
auto* type = tm()->Get(std::make_unique<ast::type::SamplerType>(
|
||||
ast::type::SamplerKind::kSampler));
|
||||
|
||||
auto* t = p->type_decl();
|
||||
ASSERT_NE(t, nullptr);
|
||||
EXPECT_EQ(t, type);
|
||||
ASSERT_TRUE(t->IsSampler());
|
||||
ASSERT_FALSE(t->AsSampler()->IsComparison());
|
||||
}
|
||||
|
||||
TEST_F(ParserImplTest, TypeDecl_Texture) {
|
||||
auto* p = parser("texture_sampled_cube<f32>");
|
||||
|
||||
ast::type::F32Type f32;
|
||||
auto* type = tm()->Get(std::make_unique<ast::type::SampledTextureType>(
|
||||
ast::type::TextureDimension::kCube, &f32));
|
||||
|
||||
auto* t = p->type_decl();
|
||||
ASSERT_NE(t, nullptr);
|
||||
EXPECT_EQ(t, type);
|
||||
ASSERT_TRUE(t->IsTexture());
|
||||
ASSERT_TRUE(t->AsTexture()->IsSampled());
|
||||
ASSERT_TRUE(t->AsTexture()->AsSampled()->type()->IsF32());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace wgsl
|
||||
} // namespace reader
|
||||
|
|
Loading…
Reference in New Issue