<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/source/slang/slang-compiler-tu.cpp, branch master</title>
<subtitle>Making it easier to work with shaders</subtitle>
<id>https://git.yummers.dev/slang.git/atom?h=master</id>
<link rel='self' href='https://git.yummers.dev/slang.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/'/>
<updated>2025-03-11T18:12:33+00:00</updated>
<entry>
<title>Don't crash when precompiling twice (#6576)</title>
<updated>2025-03-11T18:12:33+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2025-03-11T18:12:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=5d6578b9d58d7ad46503d9124cccf8a68ecd5902'/>
<id>urn:sha1:5d6578b9d58d7ad46503d9124cccf8a68ecd5902</id>
<content type='text'>
Abort precompileForTarget if it's already done.

Fixes #6516</content>
</entry>
<entry>
<title>Fix precompiledTargetModule tests (#6455)</title>
<updated>2025-02-27T02:20:29+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2025-02-27T02:20:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=02706dfc5f0526f4f8ca337be16d7b00640ba168'/>
<id>urn:sha1:02706dfc5f0526f4f8ca337be16d7b00640ba168</id>
<content type='text'>
* Fix precompiledTargetModule tests

Add SPIRV-Tool linker support to gfx unit tests
and use the linker in precompileModule tests
that use precompiled modules to reconstitute
SPIRV shaders that were modularly compiled.

Fix a Slang reference count bug in the
precompile service.

* Use sm_6_6

New DXC requires higher version
for linkability.

* Rename helper function, pass by reference

* Link through slang-glslang

* Add missing files

* Fix metal

* format code

---------

Co-authored-by: slangbot &lt;186143334+slangbot@users.noreply.github.com&gt;
Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Move switch statement bodies to their own lines (#5493)</title>
<updated>2024-11-05T17:47:26+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2024-11-05T17:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=b118451e301d734e3e783b3acdf871f3f6ea851c'/>
<id>urn:sha1:b118451e301d734e3e783b3acdf871f3f6ea851c</id>
<content type='text'>
* Move switch statement bodies to their own lines

* format

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>format</title>
<updated>2024-10-29T06:49:26+00:00</updated>
<author>
<name>Ellie Hermaszewska</name>
<email>ellieh@nvidia.com</email>
</author>
<published>2024-10-29T06:49:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f65d756bff8d4c5cbc15bd0322a2ae8e6b896a21'/>
<id>urn:sha1:f65d756bff8d4c5cbc15bd0322a2ae8e6b896a21</id>
<content type='text'>
* format

* Minor test fixes

* enable checking cpp format in ci</content>
</entry>
<entry>
<title>Fix  spirv codegen for pointer to empty structs. (#5355)</title>
<updated>2024-10-21T15:49:15+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2024-10-21T15:49:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=3e84726f45c66b477569be9e62da71956ab78e94'/>
<id>urn:sha1:3e84726f45c66b477569be9e62da71956ab78e94</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix precompiled glsl modules (#5230)</title>
<updated>2024-10-09T18:42:13+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2024-10-09T18:42:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=1bbc421a663bd494cc1a4dd097852553049cc1d5'/>
<id>urn:sha1:1bbc421a663bd494cc1a4dd097852553049cc1d5</id>
<content type='text'>
When precompiling modules defined
with glsl, it's necessary to link in the
glsl definition module.

Reuse the public fillRequirements declaration</content>
</entry>
<entry>
<title>Add interfaces for retrieving separate linkable downstream binaries (#5128)</title>
<updated>2024-10-04T14:20:57+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2024-10-04T14:20:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f521c2002e6b664944c6c39bab767dca1802887a'/>
<id>urn:sha1:f521c2002e6b664944c6c39bab767dca1802887a</id>
<content type='text'>
* Implement separate downstream library interface

Create a new com interface to house the methods for
precompiling slang modules to target code.

Add methods to count dependent modules and scrape
them for downstream target binaries such that the
downstream target binaries are linkabe outside
of slang, e.g. via spirv-link or dxc.

Fixes #5147

* Rename to _Experimental

Clearly identify this as an interface subject to change.</content>
</entry>
<entry>
<title>Initial -embed-spirv support (#4974)</title>
<updated>2024-09-05T18:59:28+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2024-09-05T18:59:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=313677160a186efebf83fab4df7d08dd119a5cd2'/>
<id>urn:sha1:313677160a186efebf83fab4df7d08dd119a5cd2</id>
<content type='text'>
* Initial -embed-spirv support

Add support for SPIR-V precompilation using the framework
established for DXIL.

Work on #4883

* SLANG_UNUSED

* Add linkage attributes to exported spirv functions

* Combine DXIL and SPIRV paths

* Whitespace fix

* Merge remaining precompiled spirv/dxil paths

* Change inst accessors to return codegentarget

* Add unit test for precompiled spirv

---------

Co-authored-by: Yong He &lt;yonghe@outlook.com&gt;</content>
</entry>
<entry>
<title>Support mixture of precompiled and non-precompiled modules (#4860)</title>
<updated>2024-08-30T06:23:26+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2024-08-30T06:23:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=ddf4a323be5ae4e59dce742f618dbbdee4ed28d8'/>
<id>urn:sha1:ddf4a323be5ae4e59dce742f618dbbdee4ed28d8</id>
<content type='text'>
* Support mixture of precompiled and non-precompiled modules

This changes the implementation of precompile DXIL modules to
accept combinations of modules with precompiled DXIL, ones without,
and ones with a mixture of precompiled DXIL and Slang IR.

During precompilation, module IR is analyzed to find public functions
which appear to be capable of being compiled as HLSL, and those
functions are given a HLSLExport decoration, ensuring they are emitted
as HLSL and preserved in the precompiled DXIL blob. The IR for those
functions is then tagged with a new decoration AvailableInDXIL, which
marks that their implementation is present in the embedded DXIL blob.
The DXIL blob is attached to the IR as before, inside a EmbeddedDXIL
BlobLit instruction.

The logic that determines whether or not functions should be
precompiled to DXIL is a placeholder at this point, returning true
always. A subsequent change will add selection criteria.

During module linking, the full module IR is available, as well
as the optional EmbeddedDXIL blob. The IR for functions implemented
by the blob are tagged with AvailableInDXIL in the module IR.

After linking the IR for all modules to program level IR, the IR for
the functions marked AvailableInDXIL are deleted from the linked IR,
prior to emitting HLSL and compiling linking the result.

This change also changes the point of time when the module IR is
checked for EmbeddedDXIL blobs. Instead of happening at load time
as before, it happens during immediately before final linking, meaning
that the blob does not need to be independently stored with the module
separate from the IR as was done previously.

Work on #4792

* Clean up debug prints

* Call isSimpleHLSLDataType stub

* Address feedback on precompiled dxil support

Allow for IR filtering both before and after linking.
Only mark AvailableInDXIL those functions which pass
both filtering stages. Functions are corrlated using
mangled function names.

Rather than delete functions entirely when linking with
libraries that include precompiled DXIL, instead convert
the IR function definitions to declarations by gutting
them, removing child blocks.

* Use artifact metadata and name list instead of linkedir hack

* Use String instead of UnownedStringSlice

* Update tests

* Renaming

* Minor edits

* Don't fully remove functions post-link

* Unexport before collecting metadata</content>
</entry>
<entry>
<title>Make precompileForTargets work with Slang API (#4845)</title>
<updated>2024-08-15T16:36:41+00:00</updated>
<author>
<name>cheneym2</name>
<email>acheney@nvidia.com</email>
</author>
<published>2024-08-15T16:36:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=27b2229baa635f4cd6316d987a05ae8979ceab68'/>
<id>urn:sha1:27b2229baa635f4cd6316d987a05ae8979ceab68</id>
<content type='text'>
* Make precompileForTargets work with Slang API

precompileForTargets, renamed to precompileForTarget, does not need
an EndToEndCompileRequest and some objects created from it are not
necessary either.

Take only a target enum and a diagnostic blob as input and handle
everything else internally, such as creating the TargetReq with
chosen profile.

Fixes #4790

* Update slang-module.cpp

* Update slang-module.cpp</content>
</entry>
</feed>
