summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-03-31Revert "Eliminate empty struct on metal target (#6603)" (#6711)Jay Kwak
This reverts commit b3deec2001ea34e20e9a6af8ddf5cf3866cafac0.
2025-03-31Update CONTRIBUTING License from MIT to Apache 2.0 (#6673)aidanfnv
Fixes #5856 This commit updates the out-of-date license information in https://github.com/shader-slang/slang/blob/master/CONTRIBUTING.md#license to state that contributions are licensed under the Apache License 2.0 with LLVM Exception instead of the MIT License.
2025-03-31[docs] Admonish slangc entry points / shader attributes (#6033)Ben-Fields
* [docs] Admonish slangc entry points / shader attributes Admonish the related non-functional compilation command in the reference manual until #5541 is addressed. * Refine shader attribute description. * Refine shader attribute description * Update with all supported targets Add all targets supporting shader attributes per provided verbiage. --------- Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-26Ignore failure to fetch webgpu_dawn and slang-tint (#6689)Gangzheng Tong
* Ignore failure to fetch webgpu_dawn and slang-tint Fixes #6683 * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
2025-03-26findAndValidateEntryPoint should return null on failing (#6695)kaizhangNV
close #6694 We should return nullptr when findAndValidateEntryPoint fails to valid the entrypoint.
2025-03-26Eliminate empty struct on metal target (#6603)kaizhangNV
* Eliminate empty struct on metal target Close 6573. We previously disabled the type legalization for ParameterBlock on Metal, but Metal doesn't allow empty struct in the argument buffer which is mapped from ParameterBlock, so we will need legalizeEmptyTypes on Metal target. * update test * update function name
2025-03-26Fix SPV_KHR_maximal_reconvergence extension name spelling (#6687)Pavel Asyutchenko
* Fix SPV_KHR_maximal_reconvergence extension name spelling Vulkan validation layers emit warnings on lowercase khr. * Move OpExtension check
2025-03-25Fix mul operator followed by global scope (#6686)Gangzheng Tong
* Fix mul operator followed by global scope This should fix expr like `2.0f * ::a::b::c`. But it will no longer parse something like ``` extension<T> Ptr<T> { static void foo(); } int*::foo() // won't work, but this is a less common case ``` Fixes #6684 * Update simpe-namespace.slang to test global scope
2025-03-25Fix issue in peepholeOptimize (#6543)kaizhangNV
Close #6541. Previously in type legalization pass, we skip the VoidType field when call make_struct, however in some optimization pass we keep counting the VoidType field. We have to make this behavior consistently over all our codebase. So in this change, we spot the make_struct call and leave VoidType field as it.
2025-03-25Improve embed tool to search all include directories as determined by CMake ↵Sai Praveen Bangaru
(#6675) * Improve embed tool to search all include directories as determined by CMake Hopefully this puts an end to prelude generation issues. * Update CMakeLists.txt * Update CMakeLists.txt * Use Slang's string representation instead of malloc-ing chars
2025-03-24Don't load cached builtin module in slang-bootstrap. (#6667)Yong He
* Don't load cached builtin module in slang-bootstrap. * Fixes. * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
2025-03-22Add debugPrintfEXT support (#6659)Darren Wihandi
2025-03-22Add GLSL array length syntax support (#6665)DarrelFW321
2025-03-22Support spirv ops added by multiple extensions (#6615)Dario Mylonopoulos
* spirv: add support for ops added by multiple extensions Some spirv ops are added by multiple extensions and capabilities. This commit adds support to avoid emitting unnecessary extensions and capabilities if one of the options is already required by some other op. * spirv: allow OpRaytracingAccelerationStructure to use multiple extensions This Op is provided by both SPV_KHR_ray_tracing and SPV_KHR_ray_query and the respective capabilities. Use one if already available and otherwise fall back to SPV_KHR_ray_tracing. * tests/vkray: add negative checks for RayTracingKHR and RayQueryKHR - Add new rayquery-compute.slang to test that only RayQueryKHR is needed in compute shaders. - Add checks for RayTracingKHR and RayQueryKHR capabilities and extensions in raygen.slang --------- Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-21Emit errors for missing returns on unsupported targets (#6633)Darren Wihandi
* initial wip * more WIP * preserve old lower behavior * remove unnecessary includes * add test * add no target case in test * fix broken test --------- Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-21Apply pixel interlock execution mode to entry-point functions only (#6661)Darren Wihandi
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-21Add MinSizeRel to CMake preset (#6644)Jay Kwak
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-20Correct modifier isConst initialization (#6645)Gangzheng Tong
The previous implementation had two issues in the modifier processing loop: 1. isConst was incorrectly initialized to true, making the const check redundant 2. Premature loop break could skip processing important modifiers. e.g. isExtern Changes: - Initialize isConst to false by default - Remove early break condition to process all modifiers Fixes: #6606 Co-authored-by: Yong He <yonghe@outlook.com>
2025-03-20Add Nix flake for direnv (#6635)Sam Estep
* Add Nix flake for direnv * Use Sai's suggestion for the `description` * Make `.envrc` optional * Move Nix docs to their own section * Tweak wording * Tweak wording more * Add `nixfmt` --------- Co-authored-by: Sai Praveen Bangaru <31557731+saipraveenb25@users.noreply.github.com> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-20Add -dump-module command to slangc (#6638)cheneym2
* Add -dump-module command to slangc The new -dump-module command to slangc will load and disassemble a slang module, similar to what would be seen by the -dump-ir command, except that -dump-ir tells slangc to print IR as it performs some compilation command. That is, -dump-ir requires some larger compilation task. -dump-module on the otherhand requires no additional goal and will simply load a module and print its IR to stdout independently from other compilation steps. Its intended purpose is to inspect .slang-module files on disk. It can also be used on .slang files which will be parsed and lowered if slang does not find an associated ".slang-module" version of the module on disk. The compilation API is extended with a new IModule::disassemble() method which retrieves the string representation of the dumped IR. Closes #6599 * format code * Use FileStream not FILE * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-20Delete unused Dockerfile (#6629)Sam Estep
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-20Make image format reflection easier (#6550)Devon
* image format json reflection * format code * use direct include --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
2025-03-19Output SPV_KHR_compute_shader_derivatives extension string instead of the NV ↵Darren Wihandi
extension (#6641) * Output SPV_KHR_compute_shader_derivatives instead of the NV extension * add alias for nv extension
2025-03-19Add SPIRV atomic debug type (#6616)Darren Wihandi
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-19Fix reinterpret and bitcast and generic arg parsing. (#6627)Yong He
* Fix reinterpret and bitcast. * Fix warning. * Fix. * Fix. --------- Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-18Implement floating-point pack/unpack intrinsics for all targets (#6503)Darren Wihandi
* Implement floating-point pack/unpack intrinsics * remove unused functions and update caps in glsl meta file * rename pack capability
2025-03-18Fix MSVC warning D9025 when building external dependencies. (#6630)Yong He
* Fix MSVC warning D9025 when building external dependencies. * revert unrelated change.
2025-03-18Fix `IRVar` hoisting when its already in the right block. (#6626)Sai Praveen Bangaru
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-17Delete accidental `lock` file (#6620)Sam Estep
2025-03-17Add auto-diff support for `GetOffsetPtr` (#6625)Sai Praveen Bangaru
2025-03-17Fix crash when swizzling non-differentiable types (#6613)Sai Praveen Bangaru
* Fix crash when swizzling non-differentiable types * Update slang-ir-autodiff-fwd.cpp
2025-03-17Add error diagnostic vectors and matrices with disallowed element types (#6596)Anders Leino
- Add the diagnostic messages, and code to emit them - Add some tests This helps to address issue #6183.
2025-03-16Add help screen to slang-test (#6611)Gangzheng Tong
This commit adds a help screen to slang-test to improve usability; and update README.md with clearer instructions. The help screen is displayed when: - User explicitly requests help with -h or --help flags - An unknown option is provided - A required argument for an option is missing The help screen provides comprehensive documentation of all available options, organized into sections: - Basic options (e.g. bindir, test-dir) - Output modes (e.g. appveyor, travis, teamcity) - Test prefix usage explanation Fixes: #6560 Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-15fix trimming of "v" from version string (#6605)Paradox84
Current releases are removing "v" from "vulkan-sdk-1.4.309.0" when they were supposed to remove it from something like "v1.2.4" https://github.com/shader-slang/slang/releases/tag/vulkan-sdk-1.4.309.0 Fixed it so it only removes "v", if next character is a number Co-authored-by: Yong He <yonghe@outlook.com>
2025-03-15Fix lowering of associated types in generic interfaces (#6600)Sai Praveen Bangaru
* Fix lowering of associated types in generic interfaces. * Update diff-assoctype-generic-interface.slang * Fix-up lowering of differentiable witnesses for implicit ops * Update slang-ir-autodiff-transcriber-base.cpp * Fix issue with differentiating type-packs
2025-03-14Implement GetDimensions for structured buffers on WGSL (#6609)Darren Wihandi
* Implement structured buffer GetDimensions for WGSL * byte address buffer fix * enable wgsl test and minor fixups * maybe fix get equivalent structured buffer * remove unnecessary include * clean up some code in meta file
2025-03-14Fix: Respect user-defined output directory settings for libraries (#6604)Harsh Aggarwal (NVIDIA)
* Fix: Respect user-defined output directory settings for libraries Modified SlangTarget.cmake to properly respect CMAKE_LIBRARY_OUTPUT_DIRECTORY, CMAKE_RUNTIME_OUTPUT_DIRECTORY and CMAKE_ARCHIVE_OUTPUT_DIRECTORY variables when they are explicitly set by the user. This ensures libraries and executables are placed in the directories specified by the user, including handling Multi-Config generators like Visual Studio, Xcode, and Ninja Multi-Config. Fixes #5896: Shared library build output location ignores CMAKE setting * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
2025-03-13Use an explicit dependency for generated headers instead of source file ↵Ellie Hermaszewska
dependency (#6594) * Simplify text writing for core module headers * Use an explicit dependency for generated headers instead of source file dependency From the CMake Docs > Do not list the output in more than one independent target that may build in parallel or the instances of the rule may conflict. Instead, use the add_custom_target() command to drive the command and make the other targets depend on that one. See the Example: Generating Files for Multiple Targets below. --------- Co-authored-by: Yong He <yonghe@outlook.com>
2025-03-13Correct buffer length calculation in dumpSourceBytes (#6593)Ellie Hermaszewska
No functional change as overallocating was ok, but this was wrong Co-authored-by: Yong He <yonghe@outlook.com>
2025-03-13Add mesh shader output topology checks (#6592)Darren Wihandi
* initial wip * more wip * add test * add unexpected for invalid target * fixups and improve error message * fixups and improve error message * remove incorrect comment --------- Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
2025-03-13test for link type layout caching (#6567)Ellie Hermaszewska
* format code * test for link type layout caching --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
2025-03-13test that link time extern struct layouts are visible for nested types (#6568)Ellie Hermaszewska
closes https://github.com/shader-slang/slang/issues/6556
2025-03-12add SLANG_USER_CONFIG (#6584)Simon Kallweit
* add SLANG_USER_CONFIG * format code --------- Co-authored-by: Simon Kallweit <skallweit@nvidia.com> Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: Simon Kallweit <64953474+skallweitNV@users.noreply.github.com>
2025-03-12Migrate render-test away from deprecated compile request API (#6514)Anders Leino
* Add a simple interface parameter test Since there's no documentation, it's nice to have a simple test case in order to experiment with this feature of the testing framework. * Add shader entry point attributes to tests * Fix specialization arguments for tests - Add some missing arguments - Rremove one extraneous argument. * Stop using deprecated compile request in render-test Use a session object instead of the deprecated compile request object. This closes issue #4760.
2025-03-12Add referenced modules as libraries when creating a session (#6569)Anders Leino
In the legacy compile request based API, the referenced modules are added to the request's linkage libraries as part of compiler option parsing. In the non-legacy compilation API, the argument parsing creates a temprary compile request and so those libraries only survive as options. This change will look for such options when creating an ISession object, and again add the referenced modules to the libraries of the new linkage that's contained in the ISession object. This is done in two steps: 1. Factor out a helper to create a referenced module artifact in the same way as it's done during legacy option parsing. 2. Use the helper function to create artifacts to add to the linkage libararies, when the session is created. This helps to address issue #4760, because it enables passing in downstream modules via options, as is required for the following tests: tests/library/library-test.slang.2 (dx12) tests/library/export-test.slang.2 (dx12)
2025-03-11Set the HLSL supported compiler version to 2018 (#6502)Tony (Atanas) Zlatinski
Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com>
2025-03-11Don't crash when precompiling twice (#6576)cheneym2
Abort precompileForTarget if it's already done. Fixes #6516
2025-03-11IR: Add SPIR-V disassembly for embedded downstream IR dumps (#6529)Mukund Keshava
* IR: Add SPIR-V disassembly for embedded downstream IR dumps When dumping IR that contains embedded downstream SPIR-V code (via EmbeddedDownstreamIR instructions), display the disassembled SPIR-V instead of just showing "<binary blob>". This CL also does: - Adds a new interface for disassembly and get result. - Modify export-library-generics.slang test test to check for the disassembled SPIR-V Fixes #6513 * Add module-dual-target-verify test Fixes #6517 Adds a new test to verify that dxil and spirv targets are stored separately in the precompiled blob. * Fix review comments from cheneym2 * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
2025-03-11Add missing error check (#6570)cheneym2
Bail from test if shader doesn't compile.
2025-03-10UseHighestVersion when calling spirv-link (#6559)cheneym2
Precompiled SPIR-V bits can independently resolve to different versions of SPIR-V. To avoid a linker error about mismatched versions, use a linker feature to automatically use the highest version listed in the modules. Fixes #6548