https://github.com/shader-slang/slang
- HEAD
- refs/heads/cpp
- refs/heads/csyonghe-patch-1
- refs/heads/csyonghe-patch-2
- refs/heads/csyonghe-patch-3
- refs/heads/csyonghe-patch-4
- refs/heads/csyonghe-patch-5
- refs/heads/csyonghe-patch-6
- refs/heads/csyonghe-patch-7
- refs/heads/csyonghe-patch-8
- refs/heads/glsl
- refs/heads/hlsl-rt-pipeline-tests
- refs/heads/master
- refs/tags/''
- refs/tags/v''
- refs/tags/v0.12.19
- refs/tags/v0.12.26
- refs/tags/v0.12.27
- refs/tags/v0.12.28
- refs/tags/v0.12.29
- refs/tags/v0.13.4
- refs/tags/v0.13.5
- refs/tags/v0.13.6
- refs/tags/v0.13.6.1
- refs/tags/v0.24.39
- refs/tags/v0.24.40
- refs/tags/v0.24.41
- refs/tags/v0.24.42
- refs/tags/v0.24.48
- refs/tags/v0.24.49
- refs/tags/v0.24.50
- refs/tags/v0.24.52
- refs/tags/v0.8.3
- refs/tags/v0.8.4
- refs/tags/v0.8.5
- refs/tags/v0.8.5-rc
- refs/tags/v0.8.6
- refs/tags/v0.8.6-rc
- refs/tags/v0.8.7
- refs/tags/v0.8.8
- refs/tags/v2023.5.5
- v0.18.22
- v2024.1.6
- v2024.1.5
- v2024.1.4
- v2024.1.3
- v2024.1.2
- v2024.1.1
- v2024.1.0
- v2024.0.9
- v2024.0.8
- v2024.0.7
- v2024.0.6
- v2024.0.5
- v2024.0.4
- v2024.0.3
- v2024.0.2
- v2024.0.15
- v2024.0.14
- v2024.0.13
- v2024.0.12
- v2024.0.11
- v2024.0.10
- v2024.0.1
- v2024.0.0
- v2023.5.8
- v2023.5.7
- v2023.5.6
- v2023.5.4
- v2023.5.3
- v2023.5.2
- v2023.5.1
- v2023.5.0
- v2023.4.9
- v2023.4.8
- v2023.4.7
- v2023.4.6
- v2023.4.5
- v2023.4.4
- v2023.4.3
- v2023.4.2
- v2023.4.10
- v2023.4.1
- v2023.4.0
- v2023.3.9
- v2023.3.8
- v2023.3.7
- v2023.3.6
- v2023.3.5
- v2023.3.4
- v2023.3.3
- v2023.3.20
- v2023.3.2
- v2023.3.19
- v2023.3.18
- v2023.3.17
- v2023.3.16
- v2023.3.15
- v2023.3.14
- v2023.3.13
- v2023.3.12
- v2023.3.11
- v2023.3.10
- v2023.3.1
- v2023.3.0
- v2023.2.1
- v2023.2.0
- v2023.1.1
- v2023.1.0
- v2023.0.6
- v2023.0.5
- v2023.0.4
- v2023.0.3
- v2023.0.2
- v2023.0.1
- v2023.0.0
- v0.9.9
- v0.9.8
- v0.9.7
- v0.9.6
- v0.9.5
- v0.9.4
- v0.9.3
- v0.9.2
- v0.9.15
- v0.9.14
- v0.9.13
- v0.9.12
- v0.9.11
- v0.9.10
- v0.9.1
- v0.9.0
- v0.8.9
- v0.8.2
- v0.8.13
- v0.8.12
- v0.8.11
- v0.8.10
- v0.8.1
- v0.8.0
- v0.7.9
- v0.7.8
- v0.7.7
- v0.7.6
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.10
- v0.7.1
- v0.7.0
- v0.6.9
- v0.6.8
- v0.6.7
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.6
- v0.5.5
- v0.5.4
- v0.5.3
- v0.5.2
- v0.5.1
- v0.5.0
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.2
- v0.3.1
- v0.3.0
- v0.28.3
- v0.28.2
- v0.28.1
- v0.28.0
- v0.27.9
- v0.27.8
- v0.27.7
- v0.27.6
- v0.27.5
- v0.27.4
- v0.27.3
- v0.27.21
- v0.27.20
- v0.27.2
- v0.27.19
- v0.27.18
- v0.27.17
- v0.27.16
- v0.27.15
- v0.27.14
- v0.27.13
- v0.27.12
- v0.27.11
- v0.27.10
- v0.27.1
- v0.27.0
- v0.26.0
- v0.25.5
- v0.25.4
- v0.25.3
- v0.25.2
- v0.25.1
- v0.25.0
- v0.24.9
- v0.24.8
- v0.24.7
- v0.24.6
- v0.24.54
- v0.24.53
- v0.24.51
- v0.24.5
- v0.24.47
- v0.24.46
- v0.24.45
- v0.24.44
- v0.24.43
- v0.24.4-fix
- v0.24.4
- v0.24.38
- v0.24.37
- v0.24.36
- v0.24.35
- v0.24.34
- v0.24.33
- v0.24.32
- v0.24.31
- v0.24.30
- v0.24.3
- v0.24.29
- v0.24.28
- v0.24.27.1
- v0.24.27
- v0.24.26.2
- v0.24.26
- v0.24.25
- v0.24.24
- v0.24.23
- v0.24.22
- v0.24.21
- v0.24.20
- v0.24.2
- v0.24.19
- v0.24.18
- v0.24.17
- v0.24.16
- v0.24.15
- v0.24.14
- v0.24.13
- v0.24.12
- v0.24.11
- v0.24.10
- v0.24.1
- v0.24.0
- v0.23.9
- v0.23.8
- v0.23.7
- v0.23.6
- v0.23.5
- v0.23.4
- v0.23.3
- v0.23.2
- v0.23.14
- v0.23.13
- v0.23.12
- v0.23.11
- v0.23.10
- v0.23.1
- v0.23.0
- v0.22.0
- v0.21.2
- v0.21.1
- v0.21.0
- v0.20.1
- v0.20.0
- v0.2.0
- v0.19.9
- v0.19.8
- v0.19.7
- v0.19.6
- v0.19.5
- v0.19.4
- v0.19.3
- v0.19.26
- v0.19.25
- v0.19.24
- v0.19.23
- v0.19.22
- v0.19.21
- v0.19.20
- v0.19.2.1
- v0.19.2
- v0.19.19
- v0.19.18
- v0.19.17
- v0.19.16
- v0.19.15
- v0.19.14
- v0.19.13
- v0.19.12
- v0.19.11
- v0.19.10
- v0.19.1
- v0.19.0
- v0.18.9
- v0.18.8
- v0.18.7
- v0.18.6
- v0.18.5
- v0.18.4-pre
- v0.18.4
- v0.18.3
- v0.18.25
- v0.18.24
- v0.18.23
- v0.18.21
- v0.18.20
- v0.18.2
- v0.18.19
- v0.18.18
- v0.18.17
- v0.18.16
- v0.18.15
- v0.18.14
- v0.18.13
- v0.18.12
- v0.18.11
- v0.18.10
- v0.18.1
- v0.18.0
- v0.17.7
- v0.17.6
- v0.17.5
- v0.17.4
- v0.17.3
- v0.17.2
- v0.17.1
- v0.17.0
- v0.16.9
- v0.16.8
- v0.16.7
- v0.16.6
- v0.16.5
- v0.16.4
- v0.16.3
- v0.16.2
- v0.16.14
- v0.16.13
- v0.16.12
- v0.16.11
- v0.16.10
- v0.16.1
- v0.16.0
- v0.15.9
- v0.15.8
- v0.15.7
- v0.15.6
- v0.15.5
- v0.15.4
- v0.15.3
- v0.15.2
- v0.15.13
- v0.15.12
- v0.15.11.2
- v0.15.11.1
- v0.15.11
- v0.15.10
- v0.15.1
- v0.15.0
- v0.14.3
- v0.14.2
- v0.14.1
- v0.14.0
- v0.13.9
- v0.13.8
- v0.13.7
- v0.13.3
- v0.13.2
- v0.13.13
- v0.13.12
- v0.13.11
- v0.13.10
- v0.13.1
- v0.13.0
- v0.12.9
- v0.12.8
- v0.12.7
- v0.12.6
- v0.12.5
- v0.12.4
- v0.12.30
- v0.12.3
- v0.12.25
- v0.12.24
- v0.12.23
- v0.12.22
- v0.12.21
- v0.12.20
- v0.12.2
- v0.12.18
- v0.12.17
- v0.12.16
- v0.12.15
- v0.12.14
- v0.12.13
- v0.12.12
- v0.12.11
- v0.12.10
- v0.12.1
- v0.12.0
- v0.11.9
- v0.11.8
- v0.11.7
- v0.11.6
- v0.11.5
- v0.11.4
- v0.11.3
- v0.11.23
- v0.11.22
- v0.11.21
- v0.11.20
- v0.11.2
- v0.11.19
- v0.11.18
- v0.11.17
- v0.11.16
- v0.11.15
- v0.11.14
- v0.11.13
- v0.11.12
- v0.11.11
- v0.11.10
- v0.11.1
- v0.11.0
- v0.10.9
- v0.10.8
- v0.10.7
- v0.10.6
- v0.10.5
- v0.10.4
- v0.10.36
- v0.10.35
- v0.10.34
- v0.10.33
- v0.10.32
- v0.10.31
- v0.10.30
- v0.10.3
- v0.10.29
- v0.10.28-rc3
- v0.10.28-rc2
- v0.10.28-rc1
- v0.10.27
- v0.10.26
- v0.10.25
- v0.10.24
- v0.10.23
- v0.10.22
- v0.10.21
- v0.10.20
- v0.10.2
- v0.10.19
- v0.10.18
- v0.10.17
- v0.10.16
- v0.10.15
- v0.10.14
- v0.10.13
- v0.10.12
- v0.10.11
- v0.10.10
- v0.10.1
- v0.10.0
- v0.1.0
- v-test.22.6.15.1
- v-test.22.6.15.0
- v-test-220616-1
- v-test-220615-4
- v-test-220615-3
- v-test-220615-2
Take a new snapshot of a software origin
If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.
Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.![swh spinner](/static/img/swh-spinner.gif)
Processing "take a new snapshot" request ...
Permalinks
To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.
Revision | Author | Date | Message | Commit Date |
---|---|---|---|---|
a083a37 | Yong He | 10 August 2022, 22:37:19 UTC | Add `none` literal that is convertible to `Optional`. (#2356) * Add `none` literal that is convertible to `Optional`. * Fix cpu code gen. * Include vk and cpu test for is-as operator test. * Inline comparison operators. Co-authored-by: Yong He <yhe@nvidia.com> | 10 August 2022, 22:37:19 UTC |
88f04c2 | Yong He | 10 August 2022, 21:11:27 UTC | `is` and `as` operator and `Optional<T>`. (#2355) * `is` and `as` operator and `Optional<T>`. * Fix. Co-authored-by: Yong He <yhe@nvidia.com> | 10 August 2022, 21:11:27 UTC |
fcdb462 | jsmall-nvidia | 10 August 2022, 15:37:26 UTC | Yet more refactoring around Artifact (#2352) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP with hierarchical enums. * Some small fixes and improvements around artifact desc related types. * Improvements around hierarchical enum. * Fixes to get Artifact types refactor to be able to execute tests. * Attempt to better categorize PTX. * Work around for potentially unused function warning. * Typo fix. * Simplify Artifact header. * Small improvements around Artifact kind/payload/style. * Added IDestroyable/ICastable * Add IArtifactList. * First impl of IArtifactUtil. * Use the ICastable interface for IArtifactRepresentation. * Added IArtifactRepresentation & IArtifactAssociated. * Add SLANG_OVERRIDE to avoid gcc/clang warning. * Fix calling convention issue on win32. * Fix missing SLANG_OVERRIDE. * First attempt at file abstraction around Artifact. * Added creation of lock file. * Move functionality for determining file paths to the IArtifactUtil. Add casting to ICastable. * Added some casting/finding mechanisms. * Simplify IArtifact interface, and use Items for file reps. * Fix problem with libraries on DXIL. * Split out ArtifactRepresentation. * Move ArtifactDesc functionality to ArtifactDescUtil. ArtifactInfoUtil becomes ArtifactDescUtil. * Split implementations from the interfaces for Artifact. * Use TypeTextUtil for target name outputting. * Add artifact impls. * Add ICastableList * Added UnknownCastableAdapter * Make ISlangSharedLibrary derive from ICastable, and remain backwards compatible with slang-llvm. * Refactor Representation on Artifact. * Make our ISlangBlobs also derive from ICastable. Make ISlangBlob atomic ref counted. * Split out CastableList and related types, and placed in core. * Small fixes around IArtifact. Improve IArtifact docs. First impl of getChildren for IArtifact. * Documentation improvements for Artifact related types. * Fix typo. * Special case adding a ICastableList to a LazyCastableList. * Small simplification of LazyCastableList, by adding State member. * Removed the ILockFile interface because IFileArtifactRepresentation can be used. | 10 August 2022, 15:37:26 UTC |
1378fff | jsmall-nvidia | 10 August 2022, 14:04:06 UTC | Artifact and ICastable (#2351) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP with hierarchical enums. * Some small fixes and improvements around artifact desc related types. * Improvements around hierarchical enum. * Fixes to get Artifact types refactor to be able to execute tests. * Attempt to better categorize PTX. * Work around for potentially unused function warning. * Typo fix. * Simplify Artifact header. * Small improvements around Artifact kind/payload/style. * Added IDestroyable/ICastable * Add IArtifactList. * First impl of IArtifactUtil. * Use the ICastable interface for IArtifactRepresentation. * Added IArtifactRepresentation & IArtifactAssociated. * Add SLANG_OVERRIDE to avoid gcc/clang warning. * Fix calling convention issue on win32. * Fix missing SLANG_OVERRIDE. * First attempt at file abstraction around Artifact. * Added creation of lock file. * Move functionality for determining file paths to the IArtifactUtil. Add casting to ICastable. * Added some casting/finding mechanisms. * Simplify IArtifact interface, and use Items for file reps. * Fix problem with libraries on DXIL. * Split out ArtifactRepresentation. * Move ArtifactDesc functionality to ArtifactDescUtil. ArtifactInfoUtil becomes ArtifactDescUtil. * Split implementations from the interfaces for Artifact. * Use TypeTextUtil for target name outputting. * Add artifact impls. * Add ICastableList * Added UnknownCastableAdapter * Make ISlangSharedLibrary derive from ICastable, and remain backwards compatible with slang-llvm. * Refactor Representation on Artifact. * Make our ISlangBlobs also derive from ICastable. Make ISlangBlob atomic ref counted. * Fix typo. | 10 August 2022, 14:04:06 UTC |
89083c4 | Yong He | 10 August 2022, 08:58:41 UTC | Language server pointer type support + add `DLLImport` test (#2350) * Language server pointer type support. + Natvis for AST. * Add completion suggestion for GUID. * Make executable test able to use slang-rt. * Fix gcc argument for rpath. * Fix DLLImport on linux. * Fix windows. * Fix. Co-authored-by: Yong He <yhe@nvidia.com> | 10 August 2022, 08:58:41 UTC |
9df7fcb | jsmall-nvidia | 09 August 2022, 15:23:40 UTC | Artifact split interface and implementation (#2349) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP with hierarchical enums. * Some small fixes and improvements around artifact desc related types. * Improvements around hierarchical enum. * Fixes to get Artifact types refactor to be able to execute tests. * Attempt to better categorize PTX. * Work around for potentially unused function warning. * Typo fix. * Simplify Artifact header. * Small improvements around Artifact kind/payload/style. * Added IDestroyable/ICastable * Add IArtifactList. * First impl of IArtifactUtil. * Use the ICastable interface for IArtifactRepresentation. * Added IArtifactRepresentation & IArtifactAssociated. * Add SLANG_OVERRIDE to avoid gcc/clang warning. * Fix calling convention issue on win32. * Fix missing SLANG_OVERRIDE. * First attempt at file abstraction around Artifact. * Added creation of lock file. * Move functionality for determining file paths to the IArtifactUtil. Add casting to ICastable. * Added some casting/finding mechanisms. * Simplify IArtifact interface, and use Items for file reps. * Fix problem with libraries on DXIL. * Split out ArtifactRepresentation. * Move ArtifactDesc functionality to ArtifactDescUtil. ArtifactInfoUtil becomes ArtifactDescUtil. * Split implementations from the interfaces for Artifact. * Use TypeTextUtil for target name outputting. * Add artifact impls. | 09 August 2022, 15:23:40 UTC |
c0733be | jsmall-nvidia | 09 August 2022, 14:31:22 UTC | Support for Items on IArtifact (#2347) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP with hierarchical enums. * Some small fixes and improvements around artifact desc related types. * Improvements around hierarchical enum. * Fixes to get Artifact types refactor to be able to execute tests. * Attempt to better categorize PTX. * Work around for potentially unused function warning. * Typo fix. * Simplify Artifact header. * Small improvements around Artifact kind/payload/style. * Added IDestroyable/ICastable * Add IArtifactList. * First impl of IArtifactUtil. * Use the ICastable interface for IArtifactRepresentation. * Added IArtifactRepresentation & IArtifactAssociated. * Add SLANG_OVERRIDE to avoid gcc/clang warning. * Fix calling convention issue on win32. * Fix missing SLANG_OVERRIDE. * First attempt at file abstraction around Artifact. * Added creation of lock file. * Move functionality for determining file paths to the IArtifactUtil. Add casting to ICastable. * Added some casting/finding mechanisms. * Simplify IArtifact interface, and use Items for file reps. * Fix problem with libraries on DXIL. | 09 August 2022, 14:31:22 UTC |
2db8c15 | Sai Praveen Bangaru | 05 August 2022, 17:19:20 UTC | Added a new differential type system and various improvements (#2343) * Merge slang-ir-diff-jvp.cpp * Added support and tests for other float vector types * Added swizzle test and code to handle it (tests failing currently) * Fixed one test, the other is still pending * Fixed instruction cloning logic to avoid modifying original function * Fixed an issue with custom 'pow_jvp' and added support for vector contructor * Minor update to comments * Fixed support for division * Fixed an issue with uninitialized diagnostic sink * Moved derivative processing to after mandatory inlining. Skip instructions that don't have side-effects and aren't used by anything. * WIP: Handling unconditional control flow and multi-block functions * Support for unconditional multi-block functions * Added a dead code elimination step to the derivative pass * Changed name of 'hasNoSideEffects()' * Refactored variable names * Added initial IR defs for new type system * Added necessary logic for semantic checking * Overhauled type system to use builtin pair types and conform to the IDifferentiable interface * Automatically replace IRDifferentiablePairType to a custom IRStructType * Added generics handling by expanding the conformance context functionality and allowing for type parameters * Minor fix: early return in processPairTypes() * Minor fixes to differentiable resolution on generic types * Added new instructions for differential pairs. Basic tests work now. Looking into generic types. * Adjusted most tests to the new type system. OutType and InOutType are still not properly working. * Updated __jvp to produce both primal and differential output * Moved autodiff related declarations to diff.meta.slang * Refactored variable names * Added initial IR defs for new type system * Added necessary logic for semantic checking * Overhauled type system to use builtin pair types and conform to the IDifferentiable interface * Automatically replace IRDifferentiablePairType to a custom IRStructType * Added generics handling by expanding the conformance context functionality and allowing for type parameters * Minor fix: early return in processPairTypes() * Minor fixes to differentiable resolution on generic types * Added new instructions for differential pairs. Basic tests work now. Looking into generic types. * Adjusted most tests to the new type system. OutType and InOutType are still not properly working. * Updated __jvp to produce both primal and differential output * Moved autodiff related declarations to diff.meta.slang * Removed external changes * Cleanup the transcription logic: each case returns a pair of insts for the primal and differential computation. | 05 August 2022, 17:19:20 UTC |
12a846e | lucy96chen | 04 August 2022, 23:59:28 UTC | Split debug-layer into smaller files (#2344) * checkpoint commit * debug-layer split, does not compile * Almost compiles, rebasing before making any further changes * everything compiles and passes tests locally * Added tools/gfx/debug-layer to premake and ran premake Co-authored-by: Yong He <yonghe@outlook.com> | 04 August 2022, 23:59:28 UTC |
11b29ef | Yong He | 04 August 2022, 21:05:02 UTC | Implicit pointer dereference when using member operator. (#2348) * Implicit pointer dereference when using member operator. * Add expected test result * Fix lookup. Co-authored-by: Yong He <yhe@nvidia.com> | 04 August 2022, 21:05:02 UTC |
e43ef82 | jsmall-nvidia | 03 August 2022, 21:10:46 UTC | Improvements around Artifact (#2346) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP with hierarchical enums. * Some small fixes and improvements around artifact desc related types. * Improvements around hierarchical enum. * Fixes to get Artifact types refactor to be able to execute tests. * Attempt to better categorize PTX. * Work around for potentially unused function warning. * Typo fix. * Simplify Artifact header. * Small improvements around Artifact kind/payload/style. * Added IDestroyable/ICastable * Add IArtifactList. * First impl of IArtifactUtil. * Use the ICastable interface for IArtifactRepresentation. * Added IArtifactRepresentation & IArtifactAssociated. * Add SLANG_OVERRIDE to avoid gcc/clang warning. * Fix calling convention issue on win32. * Fix missing SLANG_OVERRIDE. | 03 August 2022, 21:10:46 UTC |
e81a5fe | Yong He | 03 August 2022, 19:08:37 UTC | Basic pointer usages. (#2342) | 03 August 2022, 19:08:37 UTC |
260fc5f | jsmall-nvidia | 28 July 2022, 14:10:59 UTC | Create nvapi-support.md | 28 July 2022, 14:10:59 UTC |
ed37dcb | lucy96chen | 27 July 2022, 22:53:36 UTC | Split render-cpu into smaller files (#2340) * render-cpu split, does not compile * split finished, one compile error * added missing include and missing destructor implementation * Rerun TeamCity CI | 27 July 2022, 22:53:36 UTC |
de0f8cf | jsmall-nvidia | 27 July 2022, 13:50:31 UTC | Updated slang-binaries (#2341) * #include an absolute path didn't work - because paths were taken to always be relative. * Upgrade slang-binaries. | 27 July 2022, 13:50:31 UTC |
ce6e946 | lucy96chen | 25 July 2022, 20:36:43 UTC | Split render-cuda.cpp into smaller files (#2334) * render-cuda split, compile errors galore due to missing includes etc. * render-cuda split and fully compiles * Ran premake.bat to disable cuda; Added all new files * Removed render-cuda files * CI fixes * Rerun CI | 25 July 2022, 20:36:43 UTC |
129294a | jsmall-nvidia | 25 July 2022, 17:43:27 UTC | Update Slang binaries (#2339) * #include an absolute path didn't work - because paths were taken to always be relative. * Use version of slang-binaries without glslang binaries/premake alpha 13. Co-authored-by: Yong He <yonghe@outlook.com> | 25 July 2022, 17:43:27 UTC |
9566e8a | Yong He | 25 July 2022, 17:08:28 UTC | Allow `class` to implement COM interface, [DLLExport] (#2338) * Allow `class` to implement COM interface, [DLLExport] * Fix [COM] usage in tests and examples with UUIDs. Co-authored-by: Yong He <yhe@nvidia.com> | 25 July 2022, 17:08:28 UTC |
70147fc | jsmall-nvidia | 22 July 2022, 05:52:56 UTC | Small fixes for github actions for windows. (#2337) | 22 July 2022, 05:52:56 UTC |
73b52f6 | Yong He | 22 July 2022, 05:52:27 UTC | Allow dynamic dispatch to handle nested interface-typed fields. (#2336) | 22 July 2022, 05:52:27 UTC |
91c8c3f | jsmall-nvidia | 21 July 2022, 21:10:14 UTC | Upgrade SPIR-V Tools and GLSLANG (#2335) * #include an absolute path didn't work - because paths were taken to always be relative. * Upgrade of SPIR-V Tools * Use slang-pack to get slang-glslang (previously was in slang-binaries) Update slang-glslang used | 21 July 2022, 21:10:14 UTC |
d118134 | jsmall-nvidia | 19 July 2022, 19:25:27 UTC | Typo fixes in cpu-target.md. (#2333) * #include an absolute path didn't work - because paths were taken to always be relative. * Small improvements to cpu-target documentation. * More improvements to cpu-target.md doc. * More CPU target doc improvements. * More improvements around cpu-target.md * More fixes and improvements. * Added test for behavior of actual global and reflection. * Add category to determine cpu word size, so that reflection tests can target width. * Fix some typos in cpu-target.md | 19 July 2022, 19:25:27 UTC |
798db8d | jsmall-nvidia | 19 July 2022, 17:55:01 UTC | Yet more improvements/fixes to cpu-target.md (#2330) * #include an absolute path didn't work - because paths were taken to always be relative. * Small improvements to cpu-target documentation. * More improvements to cpu-target.md doc. * More CPU target doc improvements. * More improvements around cpu-target.md * More fixes and improvements. * Added test for behavior of actual global and reflection. * Add category to determine cpu word size, so that reflection tests can target width. | 19 July 2022, 17:55:01 UTC |
5b4f35b | Sai Praveen Bangaru | 19 July 2022, 03:32:30 UTC | Added forward-mode autodiff support for more instructions (#2331) * Merge slang-ir-diff-jvp.cpp * Added support and tests for other float vector types * Added swizzle test and code to handle it (tests failing currently) * Fixed one test, the other is still pending * Fixed instruction cloning logic to avoid modifying original function * Fixed an issue with custom 'pow_jvp' and added support for vector contructor * Minor update to comments * Fixed support for division * Fixed an issue with uninitialized diagnostic sink * Moved derivative processing to after mandatory inlining. Skip instructions that don't have side-effects and aren't used by anything. * WIP: Handling unconditional control flow and multi-block functions * Support for unconditional multi-block functions * Added a dead code elimination step to the derivative pass * Changed name of 'hasNoSideEffects()' | 19 July 2022, 03:32:30 UTC |
2e4b577 | jsmall-nvidia | 18 July 2022, 19:44:29 UTC | Atomic ref counting for ISlangSharedLibrary (#2332) * #include an absolute path didn't work - because paths were taken to always be relative. * Make ISlangSharedLibrary atomic ref counted. Update docs to say most COM interfaces are *not* atomic ref counted. * Upgrade slang-llvm to use version that atomic ref counts ISlangSharedLibrary. * Fix some typos in docs. * Fix ref count typo. * Fix missing 'override' | 18 July 2022, 19:44:29 UTC |
da8f050 | jsmall-nvidia | 15 July 2022, 19:23:55 UTC | More cpu-target.md improvements. (#2329) * #include an absolute path didn't work - because paths were taken to always be relative. * Small improvements to cpu-target documentation. * More improvements to cpu-target.md doc. * More CPU target doc improvements. * More improvements around cpu-target.md | 15 July 2022, 19:23:55 UTC |
0f85974 | jsmall-nvidia | 15 July 2022, 14:05:55 UTC | Improvements to cpu-target documentation (#2328) * #include an absolute path didn't work - because paths were taken to always be relative. * Small improvements to cpu-target documentation. * More improvements to cpu-target.md doc. | 15 July 2022, 14:05:55 UTC |
5949e2c | Yong He | 14 July 2022, 17:53:39 UTC | Language Server: Auto format bug fixes. (#2326) | 14 July 2022, 17:53:39 UTC |
4af61e2 | Sai Praveen Bangaru | 13 July 2022, 19:55:30 UTC | Added support for differentiating out and inout parameters. (#2323) * Added out/inout tests * Added support for out and inout parameters. Still untested * Fixed and tested support for out and inout types * Removed some comments | 13 July 2022, 19:55:30 UTC |
564f0d8 | jsmall-nvidia | 13 July 2022, 18:32:06 UTC | Small improvements around 'size versioning' and TargetDesc (#2325) * #include an absolute path didn't work - because paths were taken to always be relative. * Small improvement around struct size versioning with TargetDesc. * Small improvements around handling structure size. * Check the structureSize field is the first field. * Work around some issues with gcc and SLANG_OFFSET_OF. | 13 July 2022, 18:32:06 UTC |
049aac1 | Yong He | 13 July 2022, 05:45:05 UTC | Support `class` types. (#2321) * Support `class` types. * Ignore class-keyword test * Fix codereview comments and warnings. Co-authored-by: Yong He <yhe@nvidia.com> | 13 July 2022, 05:45:05 UTC |
a677566 | Sai Praveen Bangaru | 12 July 2022, 15:09:49 UTC | Fixed incorrectly scoped variable causing crashes on certain linux toolchains (#2319) | 12 July 2022, 15:09:49 UTC |
b513d0d | Sai Praveen Bangaru | 12 July 2022, 03:18:06 UTC | Added support for differentiating calls to basic functions, as well as arithmetic on the float3 type (#2313) * Added support for differentiating calls to basic functions, as well as arithmetic on the float3 type * Added test expected result | 12 July 2022, 03:18:06 UTC |
9261c7a | jsmall-nvidia | 06 July 2022, 20:48:08 UTC | WAR for double/host-callable/x86 (#2314) * #include an absolute path didn't work - because paths were taken to always be relative. * Work around for issue with double/x86/llvm. | 06 July 2022, 20:48:08 UTC |
0bf899a | Yong He | 01 July 2022, 22:09:24 UTC | Language server: auto completion of `import` file and directories. (#2312) * Language server: auto completion of `import` file and directories. * Completion of include path. * Improvements. Co-authored-by: Yong He <yhe@nvidia.com> | 01 July 2022, 22:09:24 UTC |
b0ea5ed | jsmall-nvidia | 01 July 2022, 18:02:28 UTC | Fix for issue with redirecting stdout/err to a file (#2311) | 01 July 2022, 18:02:28 UTC |
65cd44d | jsmall-nvidia | 01 July 2022, 14:51:24 UTC | Upgrade to glslang 11.10.0+ (#2306) * #include an absolute path didn't work - because paths were taken to always be relative. * Upgrade to glslang 11.10.0 Co-authored-by: Yong He <yonghe@outlook.com> | 01 July 2022, 14:51:24 UTC |
77af111 | Sai Praveen Bangaru | 30 June 2022, 23:24:24 UTC | Added `[__custom_jvp(func)]` attribute, and modified the derivative pass to only process referenced functions. (#2309) * Added JVPTranscriber to handle differentiation of load, store, var, param and return instructions, as well as conversion of data and function types * Changed class names to be more in line with convention. Added correct type checking for __jvp() and verified that simple calls with only loads and stores are processed correctly * Added logic to differentiate basic arithmetic and literals inside IRConstruct and fixed the way parameters are differentiated * Replaced some SLANG_UNEXPECTED macro uses with diagnostics instead * Added work-list-based on-demand generation of derivative functions * Fixed up a couple of TODOs * Added attribute [__custom_jvp(f)] to assign a custom derivative function to a declaration * Added a test for CustomJVPAttribute on a redeclaration of an imported function * Moving arithmetic test to new folder * Moving arithmetic test to new folder (2) * Added missing test module * Fixed a minor note Co-authored-by: Yong He <yonghe@outlook.com> | 30 June 2022, 23:24:24 UTC |
2c09275 | Yong He | 30 June 2022, 21:19:39 UTC | Language server: extract documentation from ordinary comments (#2308) * Language server: improved documentation formatting. * Extend doc extractor to search in ordinary comments. Reuse language server instance between tests. * Fix test case. * Fix comment. * Fix crash. * Fix enum case doc extraction. * Doc extractor fixes. * Fix. * Fix. Co-authored-by: Yong He <yhe@nvidia.com> | 30 June 2022, 21:19:39 UTC |
5eee6b0 | lucy96chen | 30 June 2022, 18:09:45 UTC | Split render-d3d11.cpp into smaller files (#2307) * render-d3d11 split, does not compile * Compiles but unit tests failing * ran premake.bat * Readded constructor code that was accidentally removed | 30 June 2022, 18:09:45 UTC |
abc100f | Yong He | 29 June 2022, 20:38:50 UTC | Native call marshalling for ComPtr parameters and return values. (#2305) Co-authored-by: Yong He <yhe@nvidia.com> | 29 June 2022, 20:38:50 UTC |
b7638b8 | Yong He | 27 June 2022, 22:36:00 UTC | Language server fixes and improvements (#2304) * Language server: Inlay hints. * Signature help for base exprs that is not a declref. * Fix checking of jvp operator. * Fix. * Add clang-format based auto formatting. * Fix clang error. * Fix clang-format discovery logic. * Fine tune auto formatting and completion experience. * Update macos workflow. * Fixes to configurations. * Fix parser recovery to trigger completion for index exprs. * Typo fix. Co-authored-by: Yong He <yhe@nvidia.com> | 27 June 2022, 22:36:00 UTC |
62d16a2 | Yong He | 25 June 2022, 20:05:35 UTC | Specialize generic/existential calls within generic functions. (#2294) * Expose internals of dce and use it to implement call graph walk. * Specialize calls in generic functions. * Fix clang error. Co-authored-by: Yong He <yhe@nvidia.com> | 25 June 2022, 20:05:35 UTC |
8da47c4 | Sai Praveen Bangaru | 25 June 2022, 19:45:34 UTC | Added basic auto-diff capabilities for local load/store and simple arithmetic. Also added type-checking during the semantic stage. (#2303) * Added JVPTranscriber to handle differentiation of load, store, var, param and return instructions, as well as conversion of data and function types * Changed class names to be more in line with convention. Added correct type checking for __jvp() and verified that simple calls with only loads and stores are processed correctly * Added logic to differentiate basic arithmetic and literals inside IRConstruct and fixed the way parameters are differentiated Co-authored-by: Yong He <yonghe@outlook.com> | 25 June 2022, 19:45:34 UTC |
0229784 | Yong He | 25 June 2022, 01:31:50 UTC | Fix language server crash when processing predefind macros. (#2302) Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: jsmall-nvidia <jsmall@nvidia.com> | 25 June 2022, 01:31:50 UTC |
50b4425 | jsmall-nvidia | 24 June 2022, 20:38:51 UTC | xcode4 premake support (#2300) * #include an absolute path didn't work - because paths were taken to always be relative. * Attempt to make premake work for xcode4. * Make architecture ARM64. * Using ARM64 didn't make any difference. | 24 June 2022, 20:38:51 UTC |
f1b41a7 | jsmall-nvidia | 24 June 2022, 20:08:08 UTC | Handling of temporary files (#2299) * #include an absolute path didn't work - because paths were taken to always be relative. * Work around windows issue with temporary file clash. * Handle the temporary file path actually creates a file. * Fix typo. * Fix typo in linux for temporary file. * Add unit test for io. Tests generateTemporary operation. | 24 June 2022, 20:08:08 UTC |
c12c0ad | jsmall-nvidia | 24 June 2022, 19:29:34 UTC | Add multithreading doc section (#2298) * #include an absolute path didn't work - because paths were taken to always be relative. * Attempt to describe how to multi-thread slang. * Fix HTML typo. * Improve multithreading doc. * Small typo fix. | 24 June 2022, 19:29:34 UTC |
6cf3d49 | Sai Praveen Bangaru | 23 June 2022, 20:02:05 UTC | Added basic syntax to mark and request function derivatives, as well as the framework for passes to process them. (#2297) * Added a decorator to mark functions for forward-mode differentiation * Fill out support for calls to non-decl values The existing compiler logic has a few places (semantic checking plus AST-to-IR lowering) where it assumes that function calls (`InvokeExpr`) are only ever made to expressions that resolve to a specific `Decl` (`DeclRefExpr`). This assumption allows semantic checking and lowering code to inspect things like the parameter list of an actual declaration, rather than just the type signature of the callee, and that infrastructure is used to support various features (e.g., default argument values on parameters). The AST and IR representations themselves have no matching requirement, and the places where the more general case of call expressions would need to be supported were relatively clear in the code. This change attempts to add suitable logic into each of those places. Note that this change does *not* surface any valid way to form input code that would cause these new code paths to be executed, so it is entirely possible that there are bugs in the logic as written here. The primary goal of this change is simply to get a sketch of the correct code checked in so that we have something to build on once we have language features that will require this support. * fixup: warnings-as-errors * Added parser logic for '__jvp(<fn-name>)' operator * Fixed issue with missing overload candidate item and added basic parsing test for the __jvp syntax * Added a blank JVP Auto-diff pass and a pass that replaces 'JVPDerivativeOf' calls with the differentiated function * Added a couple comments * Added parameter handling for the JVP pass Co-authored-by: Theresa Foley <tfoley@nvidia.com> | 23 June 2022, 20:02:05 UTC |
4aa6344 | Yong He | 23 June 2022, 19:41:05 UTC | Preserve specialization cache in IR for specialization pass. (#2293) * Perserve specialization cache in IR for specialization pass. * Fix compile error. * Fix. * Fix. * Fix test case. * Fix. Co-authored-by: Yong He <yhe@nvidia.com> | 23 June 2022, 19:41:05 UTC |
5bd366f | Yong He | 23 June 2022, 18:53:24 UTC | Define proper diagnostic item for two common "unimplemented" cases. (#2296) | 23 June 2022, 18:53:24 UTC |
07a380d | Yong He | 23 June 2022, 02:58:34 UTC | More Language Server Improvements. (#2289) | 23 June 2022, 02:58:34 UTC |
e5a7556 | Yong He | 21 June 2022, 21:55:59 UTC | Lower throwing COM interface method. (#2282) * Lower throwing COM interface method. * Fix. * Fix warnings. Co-authored-by: Yong He <yhe@nvidia.com> | 21 June 2022, 21:55:59 UTC |
ea3800e | lucy96chen | 21 June 2022, 20:14:18 UTC | Added a second set of shaders to the ray tracing test and added another test that uses these shaders; Fixed a bug in Vulkan's RayTracingCommandEncoder::dispatchRays() where the supplied raygen shader index wasn't being used (#2290) | 21 June 2022, 20:14:18 UTC |
92dfec2 | Yong He | 21 June 2022, 16:25:51 UTC | Add CPU executable compile test (#2278) * Add cpu executable compile test * Fix. * Fix permission on linux * retrigger build Co-authored-by: Yong He <yhe@nvidia.com> | 21 June 2022, 16:25:51 UTC |
d2a467c | Sai Praveen Bangaru | 16 June 2022, 15:03:59 UTC | Added a decorator to mark functions for forward-mode differentiation (#2283) | 16 June 2022, 15:03:59 UTC |
37c43e2 | Yong He | 16 June 2022, 09:25:58 UTC | Fix macos release workflow. (#2288) Co-authored-by: Yong He <yhe@nvidia.com> | 16 June 2022, 09:25:58 UTC |
241def9 | Yong He | 16 June 2022, 08:50:43 UTC | Language server: document symbols (#2287) * Language Server: Document Symbol outline. * Fix highlighting of extension decls. Co-authored-by: Yong He <yhe@nvidia.com> | 16 June 2022, 08:50:43 UTC |
23f5673 | Yong He | 16 June 2022, 08:09:23 UTC | Update MacOS workflow to sign and notarize binaries (#2286) * Don't sign slang-llvm and slang-glslang * fix * fix * fix 2 * fix macos release workflow * fix * fix * fix2 * test * fix Co-authored-by: Yong He <yhe@nvidia.com> | 16 June 2022, 08:09:23 UTC |
f5c81d8 | Yong He | 16 June 2022, 04:57:30 UTC | Add signing to Macos release workflow. (#2285) * Update macos workflow * Fetch submodule * fix Co-authored-by: Yong He <yhe@nvidia.com> | 16 June 2022, 04:57:30 UTC |
c8dc014 | Yong He | 15 June 2022, 21:03:40 UTC | Sign macos binaries. | 15 June 2022, 21:03:40 UTC |
69cb218 | lucy96chen | 15 June 2022, 04:08:51 UTC | Swapchain resize now draws both before and after the resize operation (#2281) | 15 June 2022, 04:08:51 UTC |
ebcda2e | Yong He | 14 June 2022, 01:50:35 UTC | Upload artifact in macos build. (#2271) * Update macos.yml * fix. * Create macos release. * fix. * fix * Update release-macos.yml * Update release-macos.yml * Update macos.yml | 14 June 2022, 01:50:35 UTC |
a5422d4 | Yong He | 13 June 2022, 23:50:35 UTC | Follow up on Language Server Improvement (#2275) * Fix typo and improve parser recovery. * Add search path configuration. Co-authored-by: Yong He <yhe@nvidia.com> | 13 June 2022, 23:50:35 UTC |
b0c7eb8 | jsmall-nvidia | 13 June 2022, 22:51:24 UTC | More liveness improvements (#2272) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. * Added HostHostCallable Small changes to use ArtifactDesc/Info instead of large switches. * Fix C++ emit to handle arbitrary function export. * Add options handling for callable without an output being specified. * Can compile with COM interface. Added example using com interface. * Use the IR Ptr type instead of hack in C++ emit for interfaces. * Fix issue with outputting the COM call when ptr is used. * Fix crash issue on compilation failure. * Add support for __global. * Added `ActualGlobalRate` Added special handling around globals and COM interfaces. Tested out in cpu-com-example. * Fix typo in NodeBase. * Support for accessing globals by name working. * Bounds checking for C++ Improved bounds checks for CUDA. * Check that actual global initialization is working. * Fix typo. * Refactor the com replacement such that it doesn't need a cache or do anything special with GlobalVar. * Fix typo in CUDA prelude. * Remove context. Only create replacement if needed. * Split out COM host-callable into a unit-test. * host-callable com testing on C++and llvm. * Comment around the COM ptr replacement. * WIP Zero bound test. * Disable com test on vs 32 bit. Fix C++ prelude * Disable 32 bit targets testing com host-callable. * For now disable zero index test. * Enable bounds checking for CPU/CUDA. * Small fixes. Disable CUDA zero index bound fix. * Add test result for bound check. * Work around for index wrapping issue. * Added Fixed array test. * Only enable prelude asserts via SLANG_PRELUDE_ENABLE_ASSERT (unless defined by the user) * Small fix around instCount. * Improve liveness loop handing and tests. * Improve liveness comment. * More conservative loop handling. * Make liveness deterministic to make testing work. * Added 'span tidy' Added some more tests. * Simplify span simplification, because could collapse inappropriate spans. * Updated liveness with simple loop tracking. * Update test results. * Small tidy up. * Update comments in liveness tests. * Improve liveness comments. * Loop handling without needing LoopInfo tracking. * Improve liveness comments. * Small fix around removing uninteresting spans. Improve naming. * Store current loop information in Loop structure on the stack. * Add processing to statically determine which loop a block belongs to. * Small improvement around leaving a loop. * Fix release build warning. * Small improvement to const correctness around Loop. * Add stores to liveness run information, to allow for more sophisticated loop analysis. | 13 June 2022, 22:51:24 UTC |
b3707a6 | jsmall-nvidia | 13 June 2022, 22:12:59 UTC | Hotfix/default embed stdlib source (#2276) * #include an absolute path didn't work - because paths were taken to always be relative. * Remove default for `disable-stdlib-source` | 13 June 2022, 22:12:59 UTC |
c90c6ab | Yong He | 13 June 2022, 19:20:35 UTC | Language Server improvements. (#2269) * Language Server improvements. - Improve parser robustness around `attribute_syntax`. - Exclude instance members in a static query. - Coloring accessors - Improved signature help cursor range check. * Add expected test result. * Language server: support configuring predefined macros. * Fix constructor highlighting. * Improving performance by supporting incremental text change notifications. * Fix UTF16 positions and highlighting of constructor calls. * Add completion suggestions for HLSL semantics. * Fix tests. * Fix: don't skip static variables in a static query. * Include literal init expr value in hover text. * Fix scenarios where completion failed to trigger. * Fixing language server protocol field initializations. Co-authored-by: Yong He <yhe@nvidia.com> | 13 June 2022, 19:20:35 UTC |
68d9d87 | jsmall-nvidia | 13 June 2022, 18:00:48 UTC | Liveness fixes and improvements (#2270) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. * Added HostHostCallable Small changes to use ArtifactDesc/Info instead of large switches. * Fix C++ emit to handle arbitrary function export. * Add options handling for callable without an output being specified. * Can compile with COM interface. Added example using com interface. * Use the IR Ptr type instead of hack in C++ emit for interfaces. * Fix issue with outputting the COM call when ptr is used. * Fix crash issue on compilation failure. * Add support for __global. * Added `ActualGlobalRate` Added special handling around globals and COM interfaces. Tested out in cpu-com-example. * Fix typo in NodeBase. * Support for accessing globals by name working. * Bounds checking for C++ Improved bounds checks for CUDA. * Check that actual global initialization is working. * Fix typo. * Refactor the com replacement such that it doesn't need a cache or do anything special with GlobalVar. * Fix typo in CUDA prelude. * Remove context. Only create replacement if needed. * Split out COM host-callable into a unit-test. * host-callable com testing on C++and llvm. * Comment around the COM ptr replacement. * WIP Zero bound test. * Disable com test on vs 32 bit. Fix C++ prelude * Disable 32 bit targets testing com host-callable. * For now disable zero index test. * Enable bounds checking for CPU/CUDA. * Small fixes. Disable CUDA zero index bound fix. * Add test result for bound check. * Work around for index wrapping issue. * Added Fixed array test. * Only enable prelude asserts via SLANG_PRELUDE_ENABLE_ASSERT (unless defined by the user) * Small fix around instCount. * Improve liveness loop handing and tests. * Improve liveness comment. * More conservative loop handling. * Make liveness deterministic to make testing work. * Added 'span tidy' Added some more tests. * Simplify span simplification, because could collapse inappropriate spans. * Updated liveness with simple loop tracking. * Update test results. * Small tidy up. * Update comments in liveness tests. * Improve liveness comments. * Loop handling without needing LoopInfo tracking. * Improve liveness comments. * Small fix around removing uninteresting spans. Improve naming. | 13 June 2022, 18:00:48 UTC |
522e141 | jsmall-nvidia | 13 June 2022, 17:34:38 UTC | Hot fix: Language server protocol initialization (#2274) * #include an absolute path didn't work - because paths were taken to always be relative. * Set default values for all language server protocol types. Remove = {}; which causes warning/error on older compilers. | 13 June 2022, 17:34:38 UTC |
bc54fd7 | jsmall-nvidia | 13 June 2022, 15:47:36 UTC | Hotfix: Hover initialization (#2273) * #include an absolute path didn't work - because paths were taken to always be relative. * Fix warning/error on older compiler initializing hover. | 13 June 2022, 15:47:36 UTC |
af331cd | jsmall-nvidia | 13 June 2022, 00:20:04 UTC | Only disable stdlib source when stdlib embedding is enabled (#2268) * #include an absolute path didn't work - because paths were taken to always be relative. * Only disable source, if there is stdlib embedding. * Disable by default stdlib source embedding if stdlib binary embedding is enabled. * Fix typo * Improve comments. | 13 June 2022, 00:20:04 UTC |
4db6bd3 | jsmall-nvidia | 08 June 2022, 23:51:49 UTC | Improved bounds checking for C++/CUDA (#2263) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. * Added HostHostCallable Small changes to use ArtifactDesc/Info instead of large switches. * Fix C++ emit to handle arbitrary function export. * Add options handling for callable without an output being specified. * Can compile with COM interface. Added example using com interface. * Use the IR Ptr type instead of hack in C++ emit for interfaces. * Fix issue with outputting the COM call when ptr is used. * Fix crash issue on compilation failure. * Add support for __global. * Added `ActualGlobalRate` Added special handling around globals and COM interfaces. Tested out in cpu-com-example. * Fix typo in NodeBase. * Support for accessing globals by name working. * Bounds checking for C++ Improved bounds checks for CUDA. * Check that actual global initialization is working. * Fix typo. * Refactor the com replacement such that it doesn't need a cache or do anything special with GlobalVar. * Fix typo in CUDA prelude. * Remove context. Only create replacement if needed. * Split out COM host-callable into a unit-test. * host-callable com testing on C++and llvm. * Comment around the COM ptr replacement. * WIP Zero bound test. * Disable com test on vs 32 bit. Fix C++ prelude * Disable 32 bit targets testing com host-callable. * For now disable zero index test. * Enable bounds checking for CPU/CUDA. * Small fixes. Disable CUDA zero index bound fix. * Add test result for bound check. * Work around for index wrapping issue. * Added Fixed array test. * Only enable prelude asserts via SLANG_PRELUDE_ENABLE_ASSERT (unless defined by the user) | 08 June 2022, 23:51:49 UTC |
1146920 | Yong He | 08 June 2022, 18:54:27 UTC | Add smoke test for language server. (#2266) | 08 June 2022, 18:54:27 UTC |
ff2ae7e | jsmall-nvidia | 08 June 2022, 17:40:09 UTC | Improvements around Visual Studio versions/matching versions (#2267) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. * Added HostHostCallable Small changes to use ArtifactDesc/Info instead of large switches. * Fix C++ emit to handle arbitrary function export. * Add options handling for callable without an output being specified. * Can compile with COM interface. Added example using com interface. * Use the IR Ptr type instead of hack in C++ emit for interfaces. * Fix issue with outputting the COM call when ptr is used. * Fix crash issue on compilation failure. * Add support for __global. * Added `ActualGlobalRate` Added special handling around globals and COM interfaces. Tested out in cpu-com-example. * Fix typo in NodeBase. * Support for accessing globals by name working. * Check that actual global initialization is working. * Refactor the com replacement such that it doesn't need a cache or do anything special with GlobalVar. * Remove context. Only create replacement if needed. * Split out COM host-callable into a unit-test. * host-callable com testing on C++and llvm. * Comment around the COM ptr replacement. * Disable com test on vs 32 bit. Fix C++ prelude * Disable 32 bit targets testing com host-callable. * Use JSON parsing to locate VS version. * Need platform detection in C++prelude. * Fix com host callable test for LLVM. * WIP improments finding downstream compiler version. * Work around for not being able to include "targetConditionals.h" * Matching semantic versioning support. * DownstreamMatchVersion -> DownstreamCompilerMatchVersion Small improvements. | 08 June 2022, 17:40:09 UTC |
8e6e884 | jsmall-nvidia | 08 June 2022, 14:23:01 UTC | Actual global support (#2262) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. * Added HostHostCallable Small changes to use ArtifactDesc/Info instead of large switches. * Fix C++ emit to handle arbitrary function export. * Add options handling for callable without an output being specified. * Can compile with COM interface. Added example using com interface. * Use the IR Ptr type instead of hack in C++ emit for interfaces. * Fix issue with outputting the COM call when ptr is used. * Fix crash issue on compilation failure. * Add support for __global. * Added `ActualGlobalRate` Added special handling around globals and COM interfaces. Tested out in cpu-com-example. * Fix typo in NodeBase. * Support for accessing globals by name working. * Check that actual global initialization is working. * Refactor the com replacement such that it doesn't need a cache or do anything special with GlobalVar. * Remove context. Only create replacement if needed. * Split out COM host-callable into a unit-test. * host-callable com testing on C++and llvm. * Comment around the COM ptr replacement. * Disable com test on vs 32 bit. Fix C++ prelude * Disable 32 bit targets testing com host-callable. * Use JSON parsing to locate VS version. * Need platform detection in C++prelude. * Fix com host callable test for LLVM. * Work around for not being able to include "targetConditionals.h" | 08 June 2022, 14:23:01 UTC |
01d0154 | Yong He | 07 June 2022, 21:57:35 UTC | Code review fixes for language server. (#2265) * Code review fixes for language server. * Fix clang error. * update solution file Co-authored-by: Yong He <yhe@nvidia.com> | 07 June 2022, 21:57:35 UTC |
0c64995 | Yong He | 07 June 2022, 21:10:49 UTC | Major language server features. (#2264) * Major language server features. * Include slangd in binary release. * Fix compiler issues. * Fix compiler error. * Completion resolve. * Various improvements. * Update diagnostic test expected output. * Bug fix for source locations. * Adjust diagnostic update frequency. * Update github actions to store artifacts. * Fix infinite parser loop. * Fix parser recovery. * Fix parser recovery. * Update test. * Fix test. * Disable IR gen for language server. * Allow commit characters in auto completion. * Fix lookup for invoke exprs. * More parser robustness fixes. * update solution file Co-authored-by: Yong He <yhe@nvidia.com> | 07 June 2022, 21:10:49 UTC |
8c4a15c | lucy96chen | 07 June 2022, 18:20:17 UTC | Add simple ray tracing test (#2261) * checkpoint commit * Simple ray tracing test works * Removed unnecessary shaders and code but image is completely black * Simple ray tracing test for a 2x2 texture working; Added new helper functions to gfx-test-texture-util for stripping padding from texture resource readback and dumping textures to disk * Renamed variables * Ignore test if ray tracing isn't supported | 07 June 2022, 18:20:17 UTC |
c4ed238 | lucy96chen | 02 June 2022, 21:02:18 UTC | Add simple swapchain resize test (#2249) * Added swapchain resize test * fixed externals * Rerun CI * Ignore test if swapchain fails to create | 02 June 2022, 21:02:18 UTC |
b39c996 | jsmall-nvidia | 02 June 2022, 18:13:35 UTC | COM interfaces with host callable (#2258) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. * Added HostHostCallable Small changes to use ArtifactDesc/Info instead of large switches. * Fix C++ emit to handle arbitrary function export. * Add options handling for callable without an output being specified. * Can compile with COM interface. Added example using com interface. * Use the IR Ptr type instead of hack in C++ emit for interfaces. * Fix issue with outputting the COM call when ptr is used. * Fix crash issue on compilation failure. | 02 June 2022, 18:13:35 UTC |
bc6bc56 | Yong He | 02 June 2022, 05:29:10 UTC | Clean up void returns. (#2260) * Clean up `IRReturnVoid`. * Update gitignore. Co-authored-by: Yong He <yhe@nvidia.com> | 02 June 2022, 05:29:10 UTC |
4f14efc | jsmall-nvidia | 02 June 2022, 00:37:43 UTC | Disable stdlib source via premake (#2259) * #include an absolute path didn't work - because paths were taken to always be relative. * Added ability to compile slang without stdlib source. It's not requried if stdlib is available if embedded, or is a binary on the file system. Co-authored-by: Yong He <yonghe@outlook.com> | 02 June 2022, 00:37:43 UTC |
17e3b88 | Yong He | 02 June 2022, 00:37:07 UTC | New language feature: basic error handling. (#2253) * New language feature: basic error handling. * Fix. * Fix `tryCall` encoding according to code review. Co-authored-by: Yong He <yhe@nvidia.com> | 02 June 2022, 00:37:07 UTC |
fa10f7d | Yong He | 02 June 2022, 00:36:44 UTC | Add language server daemon. (#2251) * Add language server daemon. * Fix. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: jsmall-nvidia <jsmall@nvidia.com> Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com> | 02 June 2022, 00:36:44 UTC |
fc84455 | lucy96chen | 01 June 2022, 21:33:21 UTC | Vulkan validation error fixes (#2254) * Fixed Vulkan validation errors for incorrect layer counts and view types in Debug * Removed old (and empty) render-vk files; Ran premake.bat | 01 June 2022, 21:33:21 UTC |
393ce4f | Craig Kolb | 31 May 2022, 19:04:08 UTC | Add Slang::String compatibility with std::ostream (#2256) * Work around MacOS compilation issue with embed stlib - The enable-stdlib-generator project is created with 'kind = StaticLib' to allow the build to work, even though the project doesn't actually create a library. - Unlike some other platforms, MacOs "ar" emits an error if no object files are listed to be added to an archive. This causes enable-stdlib-generator to fail on MacOS. - Changing the project's kind to "SharedLib" works around the issue. Other values for kind do not seem to work around the issue. - Add an optional flag to generatorProject to indicate that kind = "SharedLibrary" should be used, rather than "StaticLibrary" - Enable embed stdlib in github_macos_build.sh * Allow Strings to be used with std::ostream. Co-authored-by: jsmall-nvidia <jsmall@nvidia.com> | 31 May 2022, 19:04:08 UTC |
1a83d50 | Craig Kolb | 31 May 2022, 18:16:34 UTC | Work around MacOS compilation issue with embed stlib (#2255) - The enable-stdlib-generator project is created with 'kind = StaticLib' to allow the build to work, even though the project doesn't actually create a library. - Unlike some other platforms, MacOs "ar" emits an error if no object files are listed to be added to an archive. This causes enable-stdlib-generator to fail on MacOS. - Changing the project's kind to "SharedLib" works around the issue. Other values for kind do not seem to work around the issue. - Add an optional flag to generatorProject to indicate that kind = "SharedLibrary" should be used, rather than "StaticLibrary" - Add MacOS fix for SharedLibraryUtils::getSharedLibraryFileName(). - Enable embed stdlib in github_macos_build.sh | 31 May 2022, 18:16:34 UTC |
2d3392f | jsmall-nvidia | 27 May 2022, 21:28:05 UTC | Added NativeStringType (#2252) * #include an absolute path didn't work - because paths were taken to always be relative. * Use TerminatedUnownedStringSlice for literals in output C++. * Remove Escape/Unescape functions used in slang-token-reader.cpp Add target type of 'host-cpp' etc to map to the target types. * Fix some corner cases around string encoding. * Added unit test for string escaping. Fixed some assorted escaping bugs. * Updated test output. * Added decode test. * Stop using hex output, to get around 'greedy' aspect. Use octal instead. | 27 May 2022, 21:28:05 UTC |
abb89b3 | jsmall-nvidia | 26 May 2022, 18:12:46 UTC | Remove LivenessLocation (#2248) * #include an absolute path didn't work - because paths were taken to always be relative. * Remove the need for LivenessLocation. * Use LivenessMode. * Fix some comments. Co-authored-by: Yong He <yonghe@outlook.com> | 26 May 2022, 18:12:46 UTC |
43e1b7c | lucy96chen | 26 May 2022, 17:54:35 UTC | Split render-vk.h/.cpp into a set of smaller files (#2244) * Some preliminary work on splitting render-vk * render-vk split, tests currently crash on null reference * fixed circular include | 26 May 2022, 17:54:35 UTC |
5ff4f42 | jsmall-nvidia | 25 May 2022, 16:46:37 UTC | Slang llvm v13.x 28 (#2250) * #include an absolute path didn't work - because paths were taken to always be relative. * Upgrade to slang-llvm v13.x-28 | 25 May 2022, 16:46:37 UTC |
24e60fd | Theresa Foley | 25 May 2022, 15:14:28 UTC | Allow [mutating] methods on existential values (#2245) The problematic case is when an `interface` has a `[mutating]` method: interface ICounter { [mutating] void increment(); } and code tries to invoke that method on a value of existential type: ICounter c = ...; c.increment(); We know that the existential value `c` is conceptually a tuple of: * A concrete type `X` * A witness that `X : ICounter` * A value `v` of type `X` We simply want to invoke `increment()` on the `v` part, using the `X : ICounter` witness table. The catch that the compiler faces is that the variable `c` is mutable, so we need to be careful that we "snapshot" its value (the tuple `X, X:ICounter, v`) at a single point. The snapshotting behavior is important when invoking a method that involves `This` or associated types in its signature, so we cannot get rid of it. The snapshotting we do relies on the idea of a `LetExpr` AST node, which cannot be written in the input syntax. A `LetExpr` introduces a variable binding (with an initial-value expression) and then evaluates a body expression in the context of that binding. For a call site like `c.increment()` the front-end makes an intermediate copy of `c` and then "opens" that immutable value to get at the elements of the tuple `X`, `X : ICounter`, `v`. The resulting AST after checking looks something like: ICounter c = ...; (let tmp = c in extractExistentialValue(tmp)).increment(); In that form it is more clear why the attempt to call `increment()` fails: 1. The binding `tmp` sure looks immutable 2. There is no logic in the compiler to make `extractExistentialValue(x)` be an l-value if `x` is 3. There is seemingly no logic to write back from `tmp` to `c` when the operation completes Let us walk through those problems in order. Item (1) turns out to be a bit of a non-issue. Despite the way that I've written out `let` expressions above, the logic in `moveTemp()` in the compiler actually introduces a *mutable* binding. Item (2) can be fixed for the purposes of semantic checking by modifying `openExistential()`. Simplistically, we make the overall expression be an l-value if the operand is. Item (3) is handled at the level of AST->IR lowering. Each kind of expression that can form an l-value needs to have a way to represent the "location" of that l-value in the `LoweredValInfo` type. This change adds a case to handle the `extractExistentialVal` operation, by tracking both the extract value (of concrete type) and the underlying l-value (of existential type). Where all of this comes crashing against reality a bit is that the scoping I've drawn for the `let` expressions above kind of doesn't work once we look at types. The basic problem is that the *type* of the `(let tmp = c in ...)` expression is the concrete type `X` that was extracted from the existential. That type can conceptually be written as `ExtractExistentialType(tmp)` which, notably, references `tmp`. That means that we end up with AST expression nodes that reference the variable `tmp` *outside* of its scope. Furthermore, those references to `tmp` can end up being lowered to IR *before* we have lowered the `let ...` expression itself. Fixing the scoping issue turns out to be a major undertaking. The first (and more obvious) issue is needing to address the scoping problem. The solution I implemented includes a bit of refactoring to make all the `SemanticsVisitor` types better able to pass around the contextual scope-dependent state that might be needed during semantic checking, but really only adds a single piece of state. The semantic-checking state used for checking expressions is bottlenecked so that there will (or at least *should*) always be an explicit representation of a "scope" that surrounds a complete expression (as opposed to a sub-expression). When a `LetExpr` needs to be introduced, it is added to a pending list on the active scope, rather than being added locally. Once the complete expression is checked, the resulting expression is wrapped up in the pending `LetExpr`s so that their scope is as broad as possible. Technically this solution doesn't cover all cases. For example: interface ICell { associatedtype Content; Content getContent(); } ... ICell cell = ...; let content = cell.getContent(); In this case the type of `content` refers to the binding introduced by a `LetExpr` in the initial-value expression. I am leaving such issues as a piece of future work, in the hopes that we can get at least a partial fix for the problem in place. A future fix probably nees to extend the scoping even wider (e.g., by unwrapping the `LetExpr`s from the initial-value expression and turning them into distinct temporaries). The second piece of the fix is that we need a way for the modified value of the extracted existential to be "written back" to the original location. Well... We are actually being a little slippery here, based on some logic in the compiler codebase that I guess Just Works. When AST->IR lowering encounters a `LetExpr` that binds an l-value to a name, it actually ends up binding that name more or less as a *reference* to that l-value. At this point the `let`-ness of `LetExpr` is very much in doubt: the binding can be mutable, and it can even be an *alias* of some location?!? In any case, the result is that the AST->IR codegen logic implicitly handles the "write-back" because the `let`-bound temporary is actually an alias for the original location. A more complete future fix might need to introduce a distinct case in `LoweredValInfo` to handle the case of copy of a mutable temporary. | 25 May 2022, 15:14:28 UTC |
5c2e3a8 | Theresa Foley | 23 May 2022, 20:43:40 UTC | Update SPIR-V Headers (#2246) | 23 May 2022, 20:43:40 UTC |
a0e4aa5 | jsmall-nvidia | 19 May 2022, 13:56:49 UTC | Move to shader-slang SPIRV-Tools (#2243) * Use shader-slang/SPIRV-Tools * Update to latest version with fix for compiling on gcc 7.5 | 19 May 2022, 13:56:49 UTC |
69cb6e8 | Alexey Panteleev | 18 May 2022, 17:57:37 UTC | Support for querying which parameters are used in emitted code (#2239) See https://github.com/shader-slang/slang/issues/2213 | 18 May 2022, 17:57:37 UTC |
1148564 | jsmall-nvidia | 18 May 2022, 14:09:28 UTC | Support for `[[vk::spirv_instruction(op)]]` (#2242) * #include an absolute path didn't work - because paths were taken to always be relative. * Add extension required by SPIRVOpDecoration into part of emit (could be a prior pass). * Add [[vk::spirv_instruction]] attribute * Add documentation for [[vk::spirv_instruction]. * Update 08-attributes.md * Update 08-attributes.md | 18 May 2022, 14:09:28 UTC |
d9fd0ff | Alexey Panteleev | 17 May 2022, 22:05:44 UTC | Configuration for warnings (#2241) * Added support for disabling specific warnings or turning them into errors. * Added API entry points for adding diagnostic severity overrides and manipulating some sink flags. | 17 May 2022, 22:05:44 UTC |
05c4c26 | jsmall-nvidia | 17 May 2022, 21:27:12 UTC | Refactor prelude emit (#2236) * #include an absolute path didn't work - because paths were taken to always be relative. * Refactor how prelude output works in emit. * Small improvement to emit output. * Move around comment on target specific language directives based on review. Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com> | 17 May 2022, 21:27:12 UTC |
39fb454 | Theresa Foley | 17 May 2022, 17:56:36 UTC | More proposals (#2232) Checking in more in-progress proposals in the hopes of sparking discussion and/or guiding future implementation work. | 17 May 2022, 17:56:36 UTC |
5a3aa61 | lucy96chen | 17 May 2022, 17:56:14 UTC | Split render-d3d12.h/cpp into a set of smaller files (#2231) * Split render-d3d12 into numerous smaller files to make the code easier to parse * Added all new D3D12 files created from splitting render-d3d12 * Fixed several uses of attachment still floating around; Changed resource-d3d12 and descriptor-heap-d3d12 to match naming conventions of new d3d12 implementation header files * Readded files with name changes because changing them from inside VS apparently results in them being treated as new files * Merged in externals changes from master * Small cleanup changes * Rerun CI Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com> | 17 May 2022, 17:56:14 UTC |