public static class LibraryBuilderBuilds a CompiledLibrary out of a bound and lowered compilation.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
What a library exports is what its own compilation declared: every type, and the body of every member whose body can stand on its own. Types and functions linked in from another library are not re-exported — a call into one travels as the key that library published, and the consumer resolves it against its own references, which is what keeps one struct from having two identities in a module that references both libraries.
The checks run here rather than in a consumer, because here is where they can be fixed. A body that reads a shader binding cannot be linked into another shader, so it is refused (RVN5001) instead of exported to fail somewhere with no source in sight; a body that touches a stream is refused for the neighbouring but different reason that a stream's location belongs to the consuming shader (RVN5007), and one that touches groupshared storage because the workgroup is the consuming dispatch's (RVN5008). And a stage entry point is not something a library supplies, which is said (RVN5002) rather than silently dropped.
Methods (1)
public static CompiledLibrary Build(Compilation compilation, LoweringResult lowered, DiagnosticBag diagnostics)Builds the library for a compilation.
Used by (8)
- CompileDriverVixen.Raven.Cli
- CompiledLibraryTestsVixen.Raven.Tests
- GroupSharedTestsVixen.Raven.Tests
- InOutTestsVixen.Raven.Tests
- LibraryTreeTestsVixen.Raven.Tests
- SizedArrayTestsVixen.Raven.Tests
- StreamTestsVixen.Raven.Tests
- WritableResourceTestsVixen.Raven.Tests