diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc index b5165338ab..9d58070d89 100644 --- a/src/writer/hlsl/generator_impl.cc +++ b/src/writer/hlsl/generator_impl.cc @@ -1893,9 +1893,11 @@ bool GeneratorImpl::EmitEntryPointData( } switch (var->StorageClass()) { - case ast::StorageClass::kPrivate: case ast::StorageClass::kUniformConstant: break; + case ast::StorageClass::kPrivate: + out << "static "; + break; case ast::StorageClass::kWorkgroup: out << "groupshared "; break; diff --git a/src/writer/hlsl/generator_impl_member_accessor_test.cc b/src/writer/hlsl/generator_impl_member_accessor_test.cc index 423a0465d4..431912d923 100644 --- a/src/writer/hlsl/generator_impl_member_accessor_test.cc +++ b/src/writer/hlsl/generator_impl_member_accessor_test.cc @@ -137,7 +137,7 @@ TEST_F(HlslGeneratorImplTest_MemberAccessor, EmitExpression_MemberAccessor) { float mem; }; -Data str; +static Data str; [numthreads(1, 1, 1)] void test_function() { diff --git a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc index 2b6d3904b1..a1345bd8cb 100644 --- a/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc +++ b/src/writer/hlsl/generator_impl_variable_decl_statement_test.cc @@ -75,7 +75,7 @@ TEST_F(HlslGeneratorImplTest_VariableDecl, Emit_VariableDeclStatement_Private) { gen.increment_indent(); ASSERT_TRUE(gen.Generate(out)) << gen.error(); - EXPECT_THAT(result(), HasSubstr(" float a;\n")); + EXPECT_THAT(result(), HasSubstr(" static float a;\n")); } TEST_F(HlslGeneratorImplTest_VariableDecl, diff --git a/test/bug/tint/749.spvasm.expected.hlsl b/test/bug/tint/749.spvasm.expected.hlsl index 1b2d3db8ae..76a11e3a73 100644 --- a/test/bug/tint/749.spvasm.expected.hlsl +++ b/test/bug/tint/749.spvasm.expected.hlsl @@ -1 +1 @@ -SKIP: TINT_UNIMPLEMENTED crbug.com/tint/726: module-scope private and workgroup variables not yet implemented +SKIP: crbug.com/tint/818: [HLSL] Loop emission broken for `let` function declarations diff --git a/test/ptr_ref/load/global/i32.spvasm.expected.hlsl b/test/ptr_ref/load/global/i32.spvasm.expected.hlsl index 86cdfa8d64..fb22f46e3e 100644 --- a/test/ptr_ref/load/global/i32.spvasm.expected.hlsl +++ b/test/ptr_ref/load/global/i32.spvasm.expected.hlsl @@ -1,4 +1,4 @@ -int I = 0; +static int I = 0; [numthreads(1, 1, 1)] void main() { diff --git a/test/ptr_ref/load/global/i32.wgsl.expected.hlsl b/test/ptr_ref/load/global/i32.wgsl.expected.hlsl index 4a6e9e6c08..e0b038b18e 100644 --- a/test/ptr_ref/load/global/i32.wgsl.expected.hlsl +++ b/test/ptr_ref/load/global/i32.wgsl.expected.hlsl @@ -1,4 +1,4 @@ -int I; +static int I; [numthreads(1, 1, 1)] void main() { diff --git a/test/ptr_ref/load/global/struct_field.spvasm.expected.hlsl b/test/ptr_ref/load/global/struct_field.spvasm.expected.hlsl index 16f9b25224..ff544b6682 100644 --- a/test/ptr_ref/load/global/struct_field.spvasm.expected.hlsl +++ b/test/ptr_ref/load/global/struct_field.spvasm.expected.hlsl @@ -1 +1,14 @@ -SKIP: error: pointers not supported in HLSL +struct S { + int i; +}; + +static S V; + +[numthreads(1, 1, 1)] +void main() { + int i = 0; + const int x_15 = V.i; + i = x_15; + return; +} + diff --git a/test/ptr_ref/load/global/struct_field.wgsl.expected.hlsl b/test/ptr_ref/load/global/struct_field.wgsl.expected.hlsl index 80e03bb9c3..18e0b4159c 100644 --- a/test/ptr_ref/load/global/struct_field.wgsl.expected.hlsl +++ b/test/ptr_ref/load/global/struct_field.wgsl.expected.hlsl @@ -2,7 +2,7 @@ struct S { int i; }; -S V; +static S V; [numthreads(1, 1, 1)] void main() { diff --git a/test/ptr_ref/store/global/i32.spvasm.expected.hlsl b/test/ptr_ref/store/global/i32.spvasm.expected.hlsl index 104200bb03..92138e7db3 100644 --- a/test/ptr_ref/store/global/i32.spvasm.expected.hlsl +++ b/test/ptr_ref/store/global/i32.spvasm.expected.hlsl @@ -1,4 +1,4 @@ -int I = 0; +static int I = 0; [numthreads(1, 1, 1)] void main() { diff --git a/test/ptr_ref/store/global/i32.wgsl.expected.hlsl b/test/ptr_ref/store/global/i32.wgsl.expected.hlsl index 44c165449c..2ae66cf737 100644 --- a/test/ptr_ref/store/global/i32.wgsl.expected.hlsl +++ b/test/ptr_ref/store/global/i32.wgsl.expected.hlsl @@ -1,4 +1,4 @@ -int I; +static int I; [numthreads(1, 1, 1)] void main() { diff --git a/test/ptr_ref/store/global/struct_field.spvasm.expected.hlsl b/test/ptr_ref/store/global/struct_field.spvasm.expected.hlsl index 16f9b25224..0f641c82d2 100644 --- a/test/ptr_ref/store/global/struct_field.spvasm.expected.hlsl +++ b/test/ptr_ref/store/global/struct_field.spvasm.expected.hlsl @@ -1 +1,12 @@ -SKIP: error: pointers not supported in HLSL +struct S { + int i; +}; + +static S V; + +[numthreads(1, 1, 1)] +void main() { + V.i = 5; + return; +} + diff --git a/test/ptr_ref/store/local/i32.wgsl.expected.hlsl b/test/ptr_ref/store/local/i32.wgsl.expected.hlsl index 16f9b25224..b3db42f63d 100644 --- a/test/ptr_ref/store/local/i32.wgsl.expected.hlsl +++ b/test/ptr_ref/store/local/i32.wgsl.expected.hlsl @@ -1 +1 @@ -SKIP: error: pointers not supported in HLSL +SKIP: Failed to generate: error: pointers not supported in HLSL