[spirv-writer] Generate sampler type

Change-Id: I587cf7430711d8009becf76f7630091f32ed3490
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27840
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
Tomek Ponitka 2020-09-01 14:20:24 +00:00 committed by Commit Bot service account
parent 11eda3cc3e
commit 18a54647b7
2 changed files with 27 additions and 0 deletions

View File

@ -1927,6 +1927,8 @@ uint32_t Builder::GenerateTypeIfNeeded(ast::type::Type* type) {
if (!GenerateTextureType(type->AsTexture(), result)) {
return 0;
}
} else if (type->IsSampler()) {
push_type(spv::Op::OpTypeSampler, {result});
} else {
error_ = "unable to convert type: " + type->type_name();
return 0;

View File

@ -28,6 +28,7 @@
#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/storage_texture_type.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/type/texture_type.h"
@ -1162,6 +1163,30 @@ INSTANTIATE_TEST_SUITE_P(BuilderTest_Type,
ast::type::ImageFormat::kR8Snorm,
ast::type::ImageFormat::kR8Unorm));
TEST_F(BuilderTest_Type, Sampler) {
ast::type::SamplerType sampler(ast::type::SamplerKind::kSampler);
ast::Module mod;
Builder b(&mod);
EXPECT_EQ(b.GenerateTypeIfNeeded(&sampler), 1u);
EXPECT_EQ(b.GenerateTypeIfNeeded(&sampler), 1u);
ASSERT_FALSE(b.has_error()) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), "%1 = OpTypeSampler\n");
}
TEST_F(BuilderTest_Type, ComparisonSampler) {
ast::type::SamplerType sampler(ast::type::SamplerKind::kComparisonSampler);
ast::Module mod;
Builder b(&mod);
EXPECT_EQ(b.GenerateTypeIfNeeded(&sampler), 1u);
EXPECT_EQ(b.GenerateTypeIfNeeded(&sampler), 1u);
ASSERT_FALSE(b.has_error()) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), "%1 = OpTypeSampler\n");
}
} // namespace
} // namespace spirv
} // namespace writer