<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/source/core/core.vcxproj, 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>2020-12-04T18:03:29+00:00</updated>
<entry>
<title>Projects in 'build' and Slang API separation (#1624)</title>
<updated>2020-12-04T18:03:29+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2020-12-04T18:03:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=47ed0f68602a8ed0c425d2a4666969ad0db04ca6'/>
<id>urn:sha1:47ed0f68602a8ed0c425d2a4666969ad0db04ca6</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Move reflection to reflection-api.

* Slight reorg to pull out potentially Slang internal functions from the reflection API impls.

* Remove visual studio projects

* Fix for slang-binaries copy.

* Add the visual studio projects in build/visual-studio

* Remove miniz project.

* Differentiate the linePath from the filePath.

* Improve comment in premake5.lua + to kick of CI.

* Kick CI.</content>
</entry>
<entry>
<title>Zip FileSystem support (#1617)</title>
<updated>2020-12-02T16:29:38+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2020-12-02T16:29:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=ae222bf4fa131b8b86dd0662b32214eb161ace1a'/>
<id>urn:sha1:ae222bf4fa131b8b86dd0662b32214eb161ace1a</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Add miniz

* Fix for separator in CacheFileSystem.
Add compression unit test for zip.

* Put zip compression into core.

* Remove delimiter stripping if simplifying a path - as stripping will fix delimiters.

* ZipFileSystem WIP.

* More ZipFileSystem working.

* Added isEmpty.
Fixed small bug is contains.

* First pass support for mutability on zip.

* Improvements to File::read/writeAllBytes

* Can access and save archive - but has memory leaks.

* Fix memory leak.

* Some ZIP compression tests.

* Fix memory leak on ScopedAllocation.
Fix off by one bug on UIntSet

* Bug fix in UIntSet

* Fix remaining ZipFileSystem issues.
Adde stand alone unit-test.

* Turn tabs to spaces in slang-io.h

* Renamed mode ReadWrite (instead of just Write)

* Make miniz it's own project.

* Fix windows warning on win32.

* Remove warnings needed when miniz was included as a header library.

* Set the C++ standard via 'flags' in premake.

* Add support for 'implicit' paths.

* Add testing for implicit directories.
Better handling of implicit directories.

* Improve comments in ZipFileSystem.

* Update comment around reader/writer transformation.</content>
</entry>
<entry>
<title>Single pass C++ extraction (#1583)</title>
<updated>2020-10-22T12:46:12+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2020-10-22T12:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=10e1bae34733f1cdb5abc001666b1aafa1c1f406'/>
<id>urn:sha1:10e1bae34733f1cdb5abc001666b1aafa1c1f406</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Added CharUtil.
Added TypeSet to extractor.
First pass at being able to specify all headers for multiple output headers.

* Fix includes for new C++ extractor convension.
Update premake5 to use new extractor mechanisms.

* Small improvements around StringUtil.

* Split out NameConventionUtil.

* Use a 'convert' to convert between convention types.

* Fix output of build message for C++ extractor.
Improve NameConventionUtil interface.

* Improve comments.

* Fix warning on gcc.

* Fix clang warning.

* Fix some typos in NameConventionUtil.

* Small fix to premake5.lua

* Fix generated includes.

* Remove m_reflectType as no longer applicable with TypeSet.

* Fix .gitignore for slang-generated-* files.
Added getConvention to determine convention from slice.
Add versions of split and convert that infer the from convention

* Fix typo in spliting camel.

* LineWhitespace -&gt; HorizontalWhitespace

* Improve CharUtil comments.</content>
</entry>
<entry>
<title>Embed default prelude for CUDA (#1546)</title>
<updated>2020-09-17T19:13:50+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2020-09-17T19:13:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=bbf492a0b78ce8b96372a736b7d591cdc71d5b65'/>
<id>urn:sha1:bbf492a0b78ce8b96372a736b7d591cdc71d5b65</id>
<content type='text'>
* Embed default prelude for CUDA

Slang supports the notion of a "prelude" that gets prepended to the source code we generate in language. For some targets, a prelude is not necessary (e.g., we compile to HLSL/GLSL and then on to DXBC/DXIL/SPIR-V just fine without a prelude), but some targets have been implemented in a way that makes a prelude necessary (notably CPU and CUDA). For the targets that require a prelude, the Slang codebase includes usable preludes under the `prelude/` directory.

Prior to this change, if a user was compiling for such a target (whether via command-line or API), there had to take responsibility for specifying the prelude to use (usually by passing in the contents of the prelude file(s) already included in the Slang distribution).

It is reasonable for a user to expect an out-of-the-box experience where compilation to CUDA PTX or native CPU code should Just Work, similarly to how compilation to SPIR-V Just Works. This change is a step in the direction of providing a user experiene that Just Works for common cases.

The main addition here is a tool called `slang-embed` that we run during our build to turn the `prelude/*.h` files into `prelude/*.h.cpp` files that embed the contents of the original `.h` file as a `const` variable.

By compiling and linking in the generated `.h.cpp` file for the CUDA prelude, we are then able to set the default prelude to use for CUDA at the time a session/linkage is created. That default prelude will be used unless the user manually specifies their own prelude (which current users of the CUDA back-end must be doing).

This change only sets up a default prelude for CUDA because of the way that the CPU prelude is split across multiple files. A strategy that provides a good default prelude for CPU may take more work, but that work might also be unnecessary if we switch to a strategy of using LLVM to generate native code.

The implementation of the `slang-embed` tool is intentionally simple, and it will likely run into issues if/when we need to embed binary files or larger text files. The assumption being made here is that we can address those issues when they arise, and there is no reason to over-engineer the tool right now.

The way that `slang-embed` is integrated into our build process is likely to require some iteration to make sure that it works across all platforms. I expect that this change will have multiple follow-up fixes related to trying to get the build to work as expected across all targets on CI.

* fixup: trying to ensure that embedded prelude gets compiled into slang

* fixup: properly clean up allocations in slang-embed

* fixup: fix double free introduced by previous change

* fixup: off-by-one allocation error</content>
</entry>
<entry>
<title>Add OrderedDictionary to core. (#1523)</title>
<updated>2020-08-28T21:56:53+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2020-08-28T21:56:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=baa789e0c9109bcb1e717ce4a9953709e7345e55'/>
<id>urn:sha1:baa789e0c9109bcb1e717ce4a9953709e7345e55</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ShortList&lt;T&gt; and core.natvis improvements. (#1430)</title>
<updated>2020-07-06T18:58:14+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2020-07-06T18:58:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=cf62f13cdc8a7f21c78f03b097bff6edf09fdead'/>
<id>urn:sha1:cf62f13cdc8a7f21c78f03b097bff6edf09fdead</id>
<content type='text'>
* ShortList&lt;T&gt; and core.natvis improvements.

* Fix gcc build.

* add `getBuffer()`  accessor to `GetArrayViewResult`</content>
</entry>
<entry>
<title>Clean up unused code for IR object ownership (#1416)</title>
<updated>2020-06-30T19:25:27+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2020-06-30T19:25:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=8ced9d2a0efaca8f6dbdaf427be1db52844787b5'/>
<id>urn:sha1:8ced9d2a0efaca8f6dbdaf427be1db52844787b5</id>
<content type='text'>
There was a small but non-trivial amount of code across `IRModule`, the `ObjectScopeManager`, and `StringRepresentationCache` that had to do with managing the lifetimes of `RefObject`s that might be referenced by IR instructions (and thus need to be kept alive for the lifetime of the IR module).

We have long since migrated to a model where IR instruction do not include owned references to `RefObject`s, so these facilities weren't actually needed. This streamlines `IRModule`'s declaration, and trims code that we aren't actually using.

One note for the future is that the `StringRepresentationCache` no longer does what its name implies (it is not a cache of `StringRepresentation`s), so we should consider giving it a more narrowly scoped name. I didn't include that in this change because I wanted to keep the diffs narrow and easy to review.

A follow-on renaming change should be trivial if/when we can agree on what the type should be called at this point. Alternatively, we could simply bake the functionality of `StringRepresentationCache` into he IR deserialiation logic itself, since that is the only code using it.</content>
</entry>
<entry>
<title>Feature/glslang spirv version (#1256)</title>
<updated>2020-03-05T15:59:54+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2020-03-05T15:59:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=6684d32db1f5693bcfb4971558cb30e855cd3bad'/>
<id>urn:sha1:6684d32db1f5693bcfb4971558cb30e855cd3bad</id>
<content type='text'>
* WIP add support for __spirv_version .

* Added IRRequireSPIRVVersionDecoration

* SPIR-V version passed to glslang.
Enable VK wave tests.
Split ExtensionTracker out, so can be cast and used externally to emit.
Added SourceResult.

* Fix warning on Clang.

* Missing hlsl.meta.h

* Refactor communication/parsing of __spirv_version with glslang.

* Fix some debug typos.
Be more precise in handling of substring handling.

* Make glslang forwards and backwards binary compatible.

* Small comment improvements.

* Added slang-spirv-target-info.h/cpp

* Fix for major/minor on gcc.

* Another fix for gcc/clang.

* VS projects include slang-spirv-target-info.h/cpp

* Removed SPIRVTargetInfo
Added SemanticVersion.
Don't bother with passing a target to glslang. Should be separate from 'version'.

* Renamed slang-emit-glsl-extension-tracker.cpp/.h -&gt; slang-glsl-extension-tracker.cpp/.h
Fixed some VS project issues.

* Fix a comment.

* Added slang-semantic-version.cpp/.h

* Added slang-glsl-extension-tracker.cpp/.h

* Added split that can check for input has all been parsed.

* Fix problem on x86 win build.
</content>
</entry>
<entry>
<title>CUDA/C++ backend improvements  (#1198)</title>
<updated>2020-02-04T20:19:48+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2020-02-04T20:19:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=17c6c6044965629a3ae7e8ef004cc0b2ca657c55'/>
<id>urn:sha1:17c6c6044965629a3ae7e8ef004cc0b2ca657c55</id>
<content type='text'>
* WIP with vector float test.

* vector-float test working.

* Fixed remaing tests broken with init changes.

* Improve 64bit-type-support.md

* Disable tests broken on CI system for Dx.

* WIP: Make type available for comparison.

* Moved type conversion into TypeTextUtil.

* Add text/type conversions from DownstreamCompiler to TypeTextUtil.

* Allow compaison taking into account type.

* Removed quantize in vector-float.slang test.
</content>
</entry>
<entry>
<title>Slang compiles CUDA source via NVRTC (#1151)</title>
<updated>2019-12-12T16:39:19+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-12-12T16:39:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=6e6a876a6b5ad3d2ef402757d2e20641f5a2b49b'/>
<id>urn:sha1:6e6a876a6b5ad3d2ef402757d2e20641f5a2b49b</id>
<content type='text'>
* CPPCompiler -&gt; DownstreamCompiler

* Added DownstreamCompileResult to start abstraction such that we don't need files.

* * Split out slang-blob.cpp
* Made CompileResult hold a DownstreamCompileResult - for access to binary or ISlangSharedLibrary

* Keep temporary files in scope.

* Add a hash to the hex dump stream.

* Move all file tracking into DownstreamCompiler.

* WIP support for nvrtc.

* WIP: Adding support for nvrtc compiler.
Adding enum types, wiring up the nvrtc into slang.

* Fix remaining CPPCompiler references.

* Fix order issue on target string matching.

* Use ISlangSharedLibrary for nvrtc.

* Use DownstreamCompiler for nvrtc.

* WIP first pass at compilation win nvrtc.

* Added testing if file is on file system into CommandLineDownstreamCompiler.
Added sourceContentsPath.

* Make test cuda-compile.cu work by just compiling not comparing output.

* Fix warning on clang.
</content>
</entry>
</feed>
