diff options
| author | Yong He <yonghe@outlook.com> | 2024-02-23 16:39:46 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-23 16:39:46 -0800 |
| commit | 401d8cdb12ae69aeb216c80c9bb90240d8359649 (patch) | |
| tree | 4548c9de52bdeff424a0a3969ad407fccb3c0f09 /tests | |
| parent | 58eb6f7da01af1767282ee12b0b4b25c57e52afb (diff) | |
Add slangc interface to compile and use ir modules. (#3615)
* Add slangc interface to compile and use ir modules.
* Fix glsl scalar layout settings not copied to target.
* Fix.
* Cleanups.
Diffstat (limited to 'tests')
11 files changed, 35 insertions, 47 deletions
diff --git a/tests/serialization/extern/extern-test.slang b/tests/serialization/extern/extern-test.slang index 1efb221dc..c46724603 100644 --- a/tests/serialization/extern/extern-test.slang +++ b/tests/serialization/extern/extern-test.slang @@ -1,18 +1,18 @@ // extern-test.slang -//TEST:COMPILE: -module-name module -no-codegen tests/serialization/extern/module-a.slang -o tests/serialization/extern/module-a.slang-lib -//TEST:COMPILE: -module-name module -no-codegen tests/serialization/extern/module-b.slang -o tests/serialization/extern/module-b.slang-lib -//TEST:COMPARE_COMPUTE_EX: -xslang -module-name -xslang module -slang -compute -xslang -r -xslang tests/serialization/extern/module-a.slang-lib -xslang -r -xslang tests/serialization/extern/module-b.slang-lib -shaderobj +//TEST:COMPILE: -no-codegen tests/serialization/extern/module-a.slang -o tests/serialization/extern/module-a.slang-lib +//TEST:COMPILE: -no-codegen tests/serialization/extern/module-b.slang -o tests/serialization/extern/module-b.slang-lib +//TEST:COMPARE_COMPUTE_EX: -slang -compute -xslang -r -xslang tests/serialization/extern/module-a.slang-lib -xslang -r -xslang tests/serialization/extern/module-b.slang-lib -shaderobj //TEST_INPUT:ubuffer(data=[0 0 0 0 ], stride=4):out,name outputBuffer RWStructuredBuffer<int> outputBuffer; // Declare the type exists -[__extern] struct Thing {}; +extern struct Thing {}; // A mechanism to make a Thing without knowing the specific fields. -[__extern] Thing makeThing(int a, int b); +extern Thing makeThing(int a, int b); -[__extern] int doSomething(Thing a, Thing b); +extern int doSomething(Thing a, Thing b); [numthreads(4, 1, 1)] void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) diff --git a/tests/serialization/extern/module-a.slang b/tests/serialization/extern/module-a.slang index 81816a213..59ccf7bcd 100644 --- a/tests/serialization/extern/module-a.slang +++ b/tests/serialization/extern/module-a.slang @@ -2,13 +2,13 @@ // module-a.slang -struct Thing +export struct Thing { int a; int b; }; -Thing makeThing(int a, int b) +export Thing makeThing(int a, int b) { Thing thing; thing.a = a; @@ -16,7 +16,7 @@ Thing makeThing(int a, int b) return thing; } -int foo(Thing thing) +export int foo(Thing thing) { return thing.a + thing.b * 2; } diff --git a/tests/serialization/extern/module-b.slang b/tests/serialization/extern/module-b.slang index 20371f156..2bc646db8 100644 --- a/tests/serialization/extern/module-b.slang +++ b/tests/serialization/extern/module-b.slang @@ -3,10 +3,10 @@ // module-b.slang // This looks like a definition (and it is) but with [__extern] it's definition will be replaced at link time with a defintion -[__extern] struct Thing {}; -[__extern] int foo(Thing thing); +extern struct Thing {}; +extern int foo(Thing thing); -int doSomething(Thing a, Thing b) +export int doSomething(Thing a, Thing b) { return foo(a) + foo(b); } diff --git a/tests/serialization/obfuscated-loc-module.slang b/tests/serialization/obfuscated-loc-module.slang index 63c4f61ee..4837e6486 100644 --- a/tests/serialization/obfuscated-loc-module.slang +++ b/tests/serialization/obfuscated-loc-module.slang @@ -3,13 +3,13 @@ // obfuscated-loc-module.slang -int billy(int v) +export int billy(int v) { return v + 1; } // This function is designed to fail during IR passes/emit. -int silly(int a) +export int silly(int a) { int t = 0; [ForceUnroll(10)] diff --git a/tests/serialization/obfuscated-module-check-loc.slang b/tests/serialization/obfuscated-module-check-loc.slang index 49251760c..87236b576 100644 --- a/tests/serialization/obfuscated-module-check-loc.slang +++ b/tests/serialization/obfuscated-module-check-loc.slang @@ -11,8 +11,8 @@ RWStructuredBuffer<float> outputBuffer; // We *don't* import because if we do we'll get a fresh compilation from source... we want to make sure it's using the -r module //import obfuscated_loc_module; -int silly(int v); -int billy(int v); +extern int silly(int v); +extern int billy(int v); [numthreads(1, 1, 1)] void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) diff --git a/tests/serialization/obfuscated-serialized-module-shared.slang b/tests/serialization/obfuscated-serialized-module-shared.slang new file mode 100644 index 000000000..76b7e3f5c --- /dev/null +++ b/tests/serialization/obfuscated-serialized-module-shared.slang @@ -0,0 +1,5 @@ +struct Thing +{ + int a; + int b; +}; diff --git a/tests/serialization/obfuscated-serialized-module-test.slang b/tests/serialization/obfuscated-serialized-module-test.slang index 927ee06bc..8afe1fb09 100644 --- a/tests/serialization/obfuscated-serialized-module-test.slang +++ b/tests/serialization/obfuscated-serialized-module-test.slang @@ -3,20 +3,12 @@ // A test to try out the basics of module // serialization, obfuscation and source maps. -//TEST:COMPILE: tests/serialization/serialized-module.slang -o tests/serialization/obfuscated-serialized-module.slang-module -g -obfuscate +//TEST:COMPILE: tests/serialization/obfuscated-serialized-module.slang -o tests/serialization/obfuscated-serialized-module.slang-module -g -obfuscate //TEST:COMPARE_COMPUTE_EX:-slang -compute -Xslang... -r tests/serialization/obfuscated-serialized-module.slang-module -obfuscate -X. -shaderobj -//import obfuscated_serialized_module; +import obfuscated_serialized_module_shared; -// This is fragile - needs match the definition in obfuscated_serialized_module -struct Thing -{ - int a; - int b; -}; - -// TODO: need to get the name mangling to line up! -int foo(Thing thing); +extern int foo(Thing thing); //TEST_INPUT:ubuffer(data=[0 0 0 0 ], stride=4):out,name outputBuffer RWStructuredBuffer<int> outputBuffer; diff --git a/tests/serialization/obfuscated-serialized-module.slang b/tests/serialization/obfuscated-serialized-module.slang index 17ddfa662..3aa3b8978 100644 --- a/tests/serialization/obfuscated-serialized-module.slang +++ b/tests/serialization/obfuscated-serialized-module.slang @@ -1,14 +1,9 @@ //TEST_IGNORE_FILE: // obfuscated-serialized-module.slang +import obfuscated_serialized_module_shared; -struct Thing -{ - int a; - int b; -}; - -int foo(Thing thing) +export int foo(Thing thing) { return (thing.a + thing.b) - thing.b; } diff --git a/tests/serialization/serialized-module-shared.slang b/tests/serialization/serialized-module-shared.slang new file mode 100644 index 000000000..143cff6fa --- /dev/null +++ b/tests/serialization/serialized-module-shared.slang @@ -0,0 +1,5 @@ +struct Thing +{ + int a; + int b; +}; diff --git a/tests/serialization/serialized-module-test.slang b/tests/serialization/serialized-module-test.slang index d27fe0458..3e7588a2a 100644 --- a/tests/serialization/serialized-module-test.slang +++ b/tests/serialization/serialized-module-test.slang @@ -9,14 +9,9 @@ //import serialized_module; // This is fragile - needs match the definition in serialized_module -struct Thing -{ - int a; - int b; -}; +import serialized_module_shared; -// TODO: need to get the name mangling to line up! -int foo(Thing thing); +extern int foo(Thing thing); //TEST_INPUT:ubuffer(data=[0 0 0 0 ], stride=4):out,name outputBuffer RWStructuredBuffer<int> outputBuffer; diff --git a/tests/serialization/serialized-module.slang b/tests/serialization/serialized-module.slang index e94edf8d4..861ddb300 100644 --- a/tests/serialization/serialized-module.slang +++ b/tests/serialization/serialized-module.slang @@ -2,13 +2,9 @@ // serialized-module.slang -struct Thing -{ - int a; - int b; -}; +import serialized_module_shared; -int foo(Thing thing) +export int foo(Thing thing) { return (thing.a + thing.b) - thing.b; } |
