[msl-writer] Always add the metal_stdlib include.

This CL adds the metal_stdlib include to the MSL generator.

Bug: tint:8
Change-Id: Ie80a7aa3921e2c4594cb7dc5a69d1b04a253c752
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/24185
Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
dan sinclair 2020-07-02 20:53:54 +00:00 committed by dan sinclair
parent 6002a3345f
commit f2aaa0e985
2 changed files with 23 additions and 7 deletions

View File

@ -69,6 +69,8 @@ GeneratorImpl::~GeneratorImpl() = default;
bool GeneratorImpl::Generate(const ast::Module& module) { bool GeneratorImpl::Generate(const ast::Module& module) {
module_ = &module; module_ = &module;
out_ << "#include <metal_stdlib>" << std::endl << std::endl;
for (auto* const alias : module.alias_types()) { for (auto* const alias : module.alias_types()) {
if (!EmitAliasType(alias)) { if (!EmitAliasType(alias)) {
return false; return false;

View File

@ -47,7 +47,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function) {
g.increment_indent(); g.increment_indent();
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"( void my_func() { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
void my_func() {
return; return;
} }
@ -71,7 +73,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function_Name_Collision) {
g.increment_indent(); g.increment_indent();
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"( void main_tint_0() { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
void main_tint_0() {
return; return;
} }
@ -103,7 +107,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function_WithParams) {
g.increment_indent(); g.increment_indent();
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"( void my_func(float a, int b) { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
void my_func(float a, int b) {
return; return;
} }
@ -124,7 +130,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function_EntryPoint_NoName) {
GeneratorImpl g; GeneratorImpl g;
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"(fragment void frag_main() { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
fragment void frag_main() {
} }
)"); )");
@ -144,7 +152,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function_EntryPoint_WithName) {
GeneratorImpl g; GeneratorImpl g;
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"(kernel void my_main() { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
kernel void my_main() {
} }
)"); )");
@ -164,7 +174,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function_EntryPoint_WithNameCollision) {
GeneratorImpl g; GeneratorImpl g;
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"(kernel void main_tint_0() { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
kernel void main_tint_0() {
} }
)"); )");
@ -193,7 +205,9 @@ TEST_F(MslGeneratorImplTest, Emit_Function_WithArrayParams) {
g.increment_indent(); g.increment_indent();
ASSERT_TRUE(g.Generate(m)) << g.error(); ASSERT_TRUE(g.Generate(m)) << g.error();
EXPECT_EQ(g.result(), R"( void my_func(float a[5]) { EXPECT_EQ(g.result(), R"(#include <metal_stdlib>
void my_func(float a[5]) {
return; return;
} }