summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-07-10Do not unnecessarily build llvm tools (#4594)Ellie Hermaszewska
2024-07-10Do not include vk xlib headers from vulkan.h when SLANG_ENABLE_XLIB is not ↵Ellie Hermaszewska
set (#4593)
2024-07-10Include readme and license in release files (#4595)Ellie Hermaszewska
2024-07-10Add individual tests for scalar double intrinsics (#4591)Ellie Hermaszewska
2024-07-10Neaten filecheck output for non-passing nested-parameter-block test (#4592)Ellie Hermaszewska
With this context filecheck can generate a better error when it fails
2024-07-09Change to use cmake in centos7 build (#4572)kaizhangNV
2024-07-09Warnings for uninitialized values (#4530)venkataram-nv
This extends the code for handling uninitialized output parameters. Still needs to handle generic templates and assignment of uninitialized values more carefully. The file containing the relevant code are now in source/slang/slang-ir-use-uninitialized-values.cpp rather than the previous source/slang/slang-ir-use-uninitialized-out-param.h and the top-level function is now checkForUsingUinitializedValues. Additionally a rudimentary test shader has been added for this case, which replaces the old file for out params only; tests/diagnositcs/uninitialized-out.slang becomes tests/diagnositcs/uninitialized.slang. What this does not implement (could be future PRs): * Checking uninitialized fields within constructors * Partially uninitialized values with respect to data structure (e.g. arrays/structs/vector types) * Partially uninitialized values with respect to control flow (e.g. if/else/loop)
2024-07-09Fix Lexer to recognize swizzling on an integer scalar value (#4515)Jay Kwak
* Fix Lexer to recognize swizzling on an integer scalar value Close #4413
2024-07-09Add documentation of the type system and decorations (#4470)Sai Praveen Bangaru
2024-07-09Add intrinsic for clock2x32ARB (#4563)kaizhangNV
2024-07-08Fix the issue in emitFloatCast (#4559)kaizhangNV
* Fix the issue in emitFloatCast In emitFloatCast function, we only considered the input type is float scalar or float vector, so if the input type is a float matrix type, it will crash. We should also handle the float matrix type. Also, we add some diagnose info to point out the source location where there is error happened, so in the future it's easier to tell us what happens. * Add a unit test * Disable the test for metal Metal doesn't support 'double'. " metal 32023.35: /tmp/unknown-YgHAsJ.metal(15): error : 'double' is not supported in Metal matrix<double,int(3),int(4)> b_0 = matrix<double,int(3),int(4)> (a_0); "
2024-07-08Language server performance and document symbol fix. (#4561)Yong He
2024-07-08Treat global variables and parameters as non-differentiable when checking ↵Sai Praveen Bangaru
derivative data-flow (#4526) Global parameters are by-default not differentiable (even if they are of a differentiable type), because our auto-diff passes do not touch anything outside of function bodies. The solution is to use wrapper objects with differentiable getter/setter methods (and we should provide a few such objects in the stdlib). Fixes: #3289 This is a potentially breaking change: User code that was previously working with global variables of a differentiable type will now throw an error (previously the gradient would be dropped without warning). The solution is to use `detach()` to keep same behavior as before or rewrite the access using differentiable getter/setter methods.
2024-07-07correctly setting launch parameters should fix the test (#4551)ArielG-NV
2024-07-05Add vector overloads for or and and (#4529)Ellie Hermaszewska
* Add vector overloads for or and and Closes #4441 and #4434 * Disable cuda checks which use unsupported bool vectors * Add tests for 4531
2024-07-05Correct type for double log10 (#4550)Ellie Hermaszewska
Fixes https://github.com/shader-slang/slang/issues/4549
2024-07-05Add specializations for 1 vectors in functions using the $N glsl intrinsic ↵Ellie Hermaszewska
placement (#4534) Closes #4533 Fixes part of #4531
2024-07-03Add README.md and LICENSE to binary windows and macos packages (#4535)cheneym2
* Add missing README and LICENSE files to packages Add README.md and LICENSE to binary windows and macos packages. Fixes issue #4117 * Update macos.yml * Update release-macos.yml * Update windows.yml
2024-07-02Emit errors when invalid capabilities are used (#4510)ArielG-NV
* Fix invalid capabilities being allowed fixes: #4506 fixes: #4508 1. As per #4506, no longer allow invalid `[require(...)]` 2. As per #4508, no longer allow mismatch between `case` and `require` of a calling function 3. Fixes incorrect hlsl.meta capabilities 4. Added a ref to the parent function/decl for when erroring with capabilities to help debug meta.slang files for when weird source locations are generated. * rename vars and copy lambdas by value * fix some more capabilities * incorrect capabilities on a texture test * push capabilities fix note: seperated capabilities for glsl,spirv,cuda,hlsl since not all functions support all targets (source of capability error) * fix cmd line arg by using `xslang` to passthrough to slangc * let auto-infer run for certain capabilities to reduce simple mistakes --------- Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com>
2024-07-01Fix the type error in kIROp_RWStructuredBufferLoad (#4523)kaizhangNV
* Fix the type error in kIROp_RWStructuredBufferLoad In StructuredBuffer::Load(), we allow any type of integer as the input. However, when emitting glsl code, StructuredBuffer::Load(index) will be translated to the subscript index of the buffer, e.g. buffer[index], however, glsl doesn't allow 64bit integer as the subscript. So the easiest fix is to convert the index to uint when emitting glsl. * Add commit
2024-07-01Support HLSL `.sample` operators for MS textures (#4524)venkataram-nv
* Add `.sample` operator for MS texture types * Adding filecheck tests for `.sample`
2024-07-01Supply SPIRV capability for textureQueryLod (#4522)venkataram-nv
2024-07-01Error out when constructing tensor views from tensors with 0 stride. (#4516)Sai Praveen Bangaru
This avoids a problem with broadcasted tensors. Our tensor-view platform is designed to allow unrestricted access to tensor memory, while broadcasted tensors were designed for 'read-only' use-cases. Trying to write into a broadcasted tensor needs re-allocation, which Slang is not designed to do. For now, we enforce contiguity on tensors with any 0 strides. In the future, we will introduce a ConstTensorView object to allow such tensors to be used as an input. This patch also propagates name-hint information through structs & arrays of tensors, to allow sensible names for the error messages (before this the error messages were temporary inst numbers, which is nearly impossible to debug)
2024-07-01Resource searching for examples (#4518)venkataram-nv
2024-07-01Set debug working directory for slangc.exe (#4513)Jay Kwak
This commit changes the working directory setting in Visual Studio Debugging from "build" directory to the root of the repository. It is often the case that the users debug slang shaders under "tests" directory, and the working directory needs to be manually changed to the root directory of the repository.
2024-07-01 Add clearer information about how to submit a proposal document. (#4514)Shannon Woods
Bug: 4511 Author: Shannon Woods
2024-06-28Parse scope for local variable declaration (#4507)Jay Kwak
When a local variable is declaraed, a scope(::) was not properly parsed for its type name. This commit fixes it. Close #4457
2024-06-28Implement CheckAccessFullyMapped (#4509)Jay Kwak
* Implement CheckAccessFullyMapped Closes #4438 Closes #4445 Closes #1712 Related to #4495 This commit implements "CheckAccessFullyMapped()" for HLSL target. All of other "status" variants for Sample/Load are limited to HLSL by the capability system, because they not properly implemented yet.
2024-06-28Adding a note about the keyword, class. (#4503)Jay Kwak
Closes #4448
2024-06-29Nested initialization list in struct crash fix (#4491)ArielG-NV
2024-06-28fix `WorkgroupSize()` compiler failiure (#4505)ArielG-NV
in some cases was not destroying the hoisted to global `WorkgroupSize()` function removed capability requirement on `gl_WorkGroupSize` since no longer appies (kIROp of `WorkgroupSize` is implemented for all targets) change when destroying inst
2024-06-28Implement HLSL resource bindings and default type `float4` to ↵ArielG-NV
`SubpassInput<T>` (#4462) * Add case to `emitVectorReshape` for `vector<>` type, `scalar` value 1. Add new case 2. Add test * fix warning * fix warning * Implement HLSL resource bindings and default type `float4` to `SubpassInput<T>` fixes: #4440 1. Removed GLSLInputAttachmentIndexLayout modifier and the somewhat 'hacky' binding model 'Input Attachment' previously relied upon. This was changed to work with the slang-type-layout rules system. This change allows Slang automatic bindings, HLSL bindings, GLSL bindings, and translation of GLSL to and from HLSL bindings to work. 2. Added default argument `float4` to SubpassInput<T>. 3. Merged glsl.meta and hlsl.meta SubpassInput logic. * fix InputAttachment attribute checks fix InputAttachment attribute checks for HLSL and GLSL syntax * remove unused var * validate attribute correctly Attributes do not have type information. We must check the type expression to validate attribute usage. * remove hacky validation type based validation before types are fully resolved is quite hacky and unstable to changes and wrapped types * fix warning * remove redundant `!= nullptr` * remove extra `!= nullptr` * fix some warnings/errors * subpass capability to limit to dxc & remove default values in some functions * revert logic to previous logic revert logic to return if we have a binding regardless of if a VarDecl is given the binding
2024-06-27Update the coding convention document. (#4498)Jay Kwak
Put space between control-flow and `(`. This is a default formatting setting of Visual Studio 2019 and 2022. And we have been writing the code in this style for a while.
2024-06-27Enable upload asset for old glibc build (#4501)kaizhangNV
2024-06-27Extend `countbits` intrinsic for vector types (#4499)venkataram-nv
* Extend `countbits` intrinsic for vector types This commit implements the overloading function for `countbits` function. Because HLSL has following overloadings, ``` uint count_bits(uint value); uint2 count_bits(uint2 value); uint3 count_bits(uint3 value); uint4 count_bits(uint4 value); ``` https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/countbits
2024-06-27Switch from ubuntu-18 to centos-7 for older glibc build (#4496)kaizhangNV
2024-06-27Include examples in default build (#4482)venkataram-nv
* Include examples in default build * Omit building examples on unnecessary CI workflows
2024-06-27Cache address-space-legalization of `kIROp_Store` (#4480)ArielG-NV
* Cache address-space-legalization of `kIROp_Store` without caching we will infinetly loop re-processing the same `kIROp_Store` * uncomment tests which should now work with metal * disable gfx backend failing tests
2024-06-27Add API for querying dependency files on IModule (#4493)skallweitNV
* Add API for querying dependency files on IModule * return nullptr
2024-06-27Ray tracing validation (#4418)ccummingsNV
* Ray tracing validation in Vulkan * Clean up RT validation code * Remove redundant api additions * Remove redundant debug utils callback * Ray tracing validation uses extended descriptor for initialization --------- Co-authored-by: Chris Cummings <chriscummings@nvidia.com> Co-authored-by: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Co-authored-by: skallweitNV <64953474+skallweitNV@users.noreply.github.com>
2024-06-27Implement `uint2` variant of `asdouble` intrinsic (#4488)venkataram-nv
* Implement asdouble2 intrinsic and tests Fixes #4437 Adds a new asdouble2 intrinsic for all platforms except Metal. Extends the test for asdouble to test asdouble2 as well.
2024-06-27Remove returned-array-legalization pass for metal (#4478)ArielG-NV
* disable return array optimization pass for metal targets fixes: #4468
2024-06-26Fix Texture2DMSArray (#4485)Jay Kwak
* Fix Texture2DMSArray Close #4427 We had the postfix order wrong for the keyword MS. This commit changes the incorrect name Texture2DArrayMS to Texture2DMSArray.
2024-06-26Expand upon existing `ImageSubscript` support (Metal, GLSL, SPIRV) (#4408)ArielG-NV
* Add additional `ImageSubscript` features: 1. Added ImageSubscript support for Metal & a test case * Merge GLSL/SPIRV/Metal `ImageSubscript` legalization pass 2. Added multisample support to glsl/spirv/metal for when using ImageSubscript * Added in this PR since the overhaul of the code merges together GLSL/SPIRV/Metal implementation 3. Fixed minor metal texture `Load`/`Read` bugs * [HLSL methods of access do not support subscript accessor for texture cube array](https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/texturecubearray) * removed swizzling of uint/int/float * other odd bugs which were causing compile errors note: Compute tests do not work due to what seems to be the GFX backend (causes crash without error report). The tests are disabled. * disable LOD with texture 1d seems that LOD for 1d textures need to be a compile time constant as per an error metal throws * syntax error in hlsl.meta * static_assert alone with intrinsic_asm error provides cleaner errors Note: `static_assert` seems to be unstable and not be fully respected (still require `intrinsic_asm` to avoid a stdlib compile error) * change comment to `// lod is not supported for 1D texture * add `static_assert` in related code gen paths * address review * address review * add asserts as per review comment, NOTE: unclear if these should be release 'asserts' as well
2024-06-25Support atomic intrinsics for Metal (#4473)Jay Kwak
* Support atomic intrinsics for Metal This commit adds a support for the atomic intrinsics in Metal. The atomic member functions for buffers is not implemented yet. Metal requires the first argument for the atomic functions to be an atomic data type. This implementation rely on the fact that we can do a C-style type casting from a regular data type to an atomic data type.
2024-06-25Fix return type address space checking. (#4465)ArielG-NV
solves: `func-resource-result-simple.slang`, related to #4291 when getting the address space of a function return we now check the return address of the inst if the return type is a non pointer type.
2024-06-25Add intrinsic for `IsHelperLane()` in HLSL (#4471)venkataram-nv
Add InHelperLane() intrinsic for HLSL, GLSL, Metal and Spirv.
2024-06-24Add case to `emitVectorReshape` for when using a `vector<M, N>` type with ↵ArielG-NV
`T` value (#4419) * Add case to `emitVectorReshape` for `vector<>` type, `scalar` value 1. Add new case 2. Add test * fix warning * fix warning
2024-06-24Added float2x2 cast to float4 (and vise versa) (#4432)ArielG-NV
* added float4x4<->float4 casting (and related) Note: not adding `matrix<1,N>` and `matrix<N,1>` translations since this will bloat stdlib with many expensive to process `extension` operations. `matrix<N,1>` is already planned to be treated as vectors (which should solve this problem by proxy). * address review * explicit cast mat to vec
2024-06-24Implementing `tbuffer` layout(s) (#4436)ArielG-NV
* Implementing `tbuffer` layouts. 1. Add to layout options 'TextureBuffer' layouts. 2. Add on to existing logic a way to allocate appropriate registers for TextureBufferType (this was made to work with parameter block logic). 3. Added asserts so objects missing a layout will gracefully crash This means `tbuffer` now works for hlsl,glsl,metal targets, spirv has yet to implement logic for `TextureBufferType`. * disable metal tests and fix emitting code a bit fixing the emitting code means metal compilation emits a useful error (help point users/developers to #4435) * fix warning