summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2024-03-20Fix namespace parsing. (#3803)Yong He
* Fix namespace parsing. * Fix.
2024-03-20Change representation of float literal in language translation (#3798)kaizhangNV
* Change representation of float literal in language translation Fix the issue (#3490). Previous implementation could zero out the very small float literal. We now use scientific notation instead to represent the float numbers whose exponential part are larger than a threshold. In other cases, keep using fixed notation. --------- Co-authored-by: Yong He <yonghe@outlook.com>
2024-03-19Use static const in glsl.meta.slang. (#3801)Yong He
2024-03-19Add more cases for `isUniformParameterType`. (#3800)Yong He
2024-03-19Fix type checking for constructors in generic interfaces. (#3799)Yong He
2024-03-19Fix regression on pointer address space handling. (#3797)Yong He
2024-03-19Fix inconsistent digest of precompiled module. (#3796)Yong He
2024-03-18Swap `left` and `right` for matrix multiplication (#3777)Sai Praveen Bangaru
Co-authored-by: Yong He <yonghe@outlook.com>
2024-03-18Check cyclic types after specialization. (#3791)Yong He
2024-03-18Check for cylic types. (#3790)Yong He
2024-03-18Fix SPIRV for mesh shaders, checks for invalid target code&recursion. (#3788)Yong He
* Fix #3780. * Fixers #3781. * Add test for #3781. * Diagnose error on unsupported builtin intrinsic types. * Add check for recursion. * Fix. * Fix. * Fix recursion detection. * Fix. * Fix. * Fix recursion logic. * More fix.
2024-03-18Fix name mangling and source file finding logic for precompiled module ↵Yong He
validation. (#3784) * Fix name mangling. * Fix source validation. * Caching and search path fixes.
2024-03-15Implement raytracing extension(s); resolves #3560 for GLSL & SPIR-V targets ↵ArielG-NV
(#3675) The following PR implements raytracing extensions (GLSL_EXT_ray_tracing, GLSL_EXT_ray_query, GLSL_NV_shader_invocation_reorder & GLSL_NV_ray_tracing_motion_blur); for GLSL & SPIR-V targets. Fully implements all functions, built-in variables, & syntax; resolves #3560 for GLSL & SPIR-V Targets. notes of worth: * __rayPayloadFromLocation, __rayAttributeFromLocation, and __rayCallableFromLocation, were added as SPIR-V Intrinsics to refer to location's of raytracing objects in SPIR-V for when using GLSL syntax.
2024-03-14Mesh shader refactoring and bugfixes (#3702)Ellie Hermaszewska
2024-03-14Support `#include` with angle brackets. (#3773)Yong He
2024-03-14Support unscoped enums. (#3771)Yong He
2024-03-14Add diagnostic on invalid type constraint. (#3769)Yong He
2024-03-14Fix lowering of glsl builtin globals. (#3767)Yong He
2024-03-13Fix side effect checking around storage buffer type. (#3762)Yong He
2024-03-13Fix crash when specializing generic entry points. (#3760)Yong He
2024-03-13Add wrapper type synthesis logic for constructors. (#3756)Yong He
* Add wrapper type synthesis logic for constructors. * Fix.
2024-03-13Implement glsl atomic's [non image or memory scope] with optional ↵ArielG-NV
extension(s); resolves #3587 for GLSL & SPIR-V targets (#3755) The following commit implements atomic operations & types associated with OpenGL 4.6, GL_EXT_vulkan_glsl_relaxed, GLSL_EXT_shader_atomic_float, GLSL_EXT_shader_atomic_float2, for GLSL & SPIR-V targets. Fully implements all functions, and built-in type's, resolves https://github.com/shader-slang/slang/issues/3560 for GLSL & SPRI-V targets. [Atomic extensions for GLSL can be found here](https://github.com/KhronosGroup/GLSL/tree/main) Notes of worth: * atomic_uint is well defined in GLSL->OpenGL, although was removed in GLSL->VK unless a compiler extension is supported (GL_EXT_vulkan_glsl_relaxed). This support entails transforming all atomic_uint operations and references into a storage buffer. SPIR-V has AtomicCounter+AtomicStorage (atomic_uint parallel) but does not implement these capabilities for SPIR-V->VK in any scenario. Due to the case we transform atomic_uint ourselves (GLSL_Syntax->Slang_IR) to accommodate transforming atomic_uint into valid syntax. * GLSL_EXT_shader_atomic_float2 (all float16_t & some float/double operations) support is minimal and worth watching out for if enabling the tests.
2024-03-12Fix `sessionDesc.defaultMatrixLayoutMode` being ineffective. (#3753)Yong He
* Fix `sessionDesc.defaultMatrixLayoutMode` being ineffective. * Fix matrix layout in buffer pointer. * Attempt to fix. * Fix buffer element type lowering for buffer pointers. * Add comment. * Fix test. * Fix member lookup in `Ref<T>`. * Fix validation error. * Enhance test.
2024-03-12Fix derivative implementation of `clamp`. (#3750)Yong He
2024-03-12Make type names spec-conformant in SPIRV reflect. (#3748)Yong He
* Preserve ByteAddressBuffer user type name. * Make user type lowercase. * Make typenames conform to spec. * Use `SpvOpDecorateString`.
2024-03-12[SPIRV] Fix OpMemberDecorateString. (#3747)Yong He
2024-03-12[SPIRV] Use VectorTimesScalar opcode. (#3737)Yong He
* [SPIRV] Use VectorTimesScalar opcode. * Fix.
2024-03-12Support emitting generic target_intrinsic type. (#3745)Yong He
2024-03-11Add `-fvk-use-dx-position-w` and fix ExecutionMode ordering for geometry ↵Yong He
shaders. (#3731) * Add `-fvk-use-dx-position-w`. * Fix ordering of OutputVertices and output primitive type decoration in spirv. * Fix. * fix * Fix. * Move test around.
2024-03-11Link-time specialization fixes. (#3734)Yong He
* Fix method synthesis logic for static differentiable methods. * Support link-time constants in thread group size reflection.
2024-03-10Fix spirv builtin for `SV_ShadingRate`. (#3730)Yong He
2024-03-10Fix crash when trying to constant fold non-existent call. (#3728)Yong He
2024-03-08Enhance link-time type test. (#3724)Yong He
* Enhance link-time type test. * Fix. * Fix.
2024-03-08Add documentation for uniformity analysis. (#3721)Yong He
2024-03-08Parser and module finding logic fixes. (#3720)Yong He
* Fix parsing logic of `struct` decl. Fixes #3716. * Allow `loadModule` to find modules with underscores. * Fix test.
2024-03-08[SPIRV] fix code gen for `SV_Coverage`. (#3718)Yong He
* [SPIRV] fix code gen for `SV_Coverage`. * Fix #3714, #3699. * Fix.
2024-03-07[SPIRV] Fix pointer lowering bug. (#3713)Yong He
* [SPIRV] Fix pointer lowering bug. * Update falcor CI setting.
2024-03-07Link-time constant and linkage API improvements. (#3708)Yong He
* Link-time constant and linkage API improvements. * Fix. * Allow module name to be empty. * Fix. * Fix. * Fix compile error.
2024-03-07Fix SPIRV emit logic of `PrimitiveId` in fragment shader. (#3705)Yong He
2024-03-07Uniformity analysis. (#3704)Yong He
* Uniformity analysis. * Add [NonUniformReturn] decorations to some hlsl intrinsic functions.
2024-03-06Fix the cuda left-hand swizzle issue (#3538) (#3691)kaizhangNV
2024-03-05[slangc] generate an error when `-entry` is not specified for targets that ↵Yong He
require them. (#3679) * [slangc] generate an error when `-entry` is not specified for targets that require them. * Fix. * Fix.
2024-03-05[SPIRV] Fix DebugLine generated from source with #line directive. (#3678)Yong He
2024-03-04Extend `as` and `is` operator to work on generic types. (#3672)Yong He
2024-03-04Implement short-circuit logic operator (#3635)kaizhangNV
* Implement short-circuit logic operator Implement short-circuit evaluation for logic && and || operator. The short-circuit behavior is only used when the operands involved are scalar and the parent function is non-differentiable. In implementation, we define a new class 'LogicOperatorShortCircuitExpr' derived from 'OperatorExpr'. In the visitInvoke() call, we will create a new expression object 'LogicOperatorShortCircuitExpr' if the expression is logic && or ||. So that we can generate new IR code in the new visit function 'visitLogicOperatorShortCircuitExpr' to implement the short-circuit behavior. Add new test to test the short-circuit behavior. * Fix an compile issue occurred in Falcon test Previously, we early return when at least one of the operands of "&&" or "||" is vector in convertToLogicOperatorExpr call. However, in that case the arguments involved in the expression have already been type checked. When it falls-back to 'visitInvokeExpr', it will check the arguments again, and some unexpected behavior could occur which could in turn cause some internal error. So we add a check in the 'visitInvokeExpr' to avoid double type checking of arguments. * Update glsl subgroup test to not use short-circuit Since the short-circuit evaluation could cause the threads diverging in subgroup intrinsics. So change the test to not using "&&" to chain those subgroup intrinsics together. Instead, using "&" to chain them together because those test functions have the return value as bool. * Disable short-circuit in few situations Disable short-circuit in following situations: 1. generic parameter list 2. static const varible initialization * Use a flag to indicate the enablement of short-circuit Instead of using a struct to indicate the state of the outer environment of current expression, use a simple bool flag to indicate whether or not apply the short-circuit to current expression because there few situations where we will disable short-circuiting and in those circumstances, there is no nested. Therefore, a flag is good enough to indicate the case. * Disable short-circuit in index expression Also fix the build issue. (A cleanup for the last change.) * check both 'static' and 'const' modifiers Previously we only check HLSLStaticModifier to decide whether or not using short-circuit, but we really should check both 'static' and 'const' modifiers together, because we only want to disable the short circuit for init expression for 'static const' variable. * relax the restriction of short-circuit for index expression Disable the short-circuit for index expression only when declare an array. * Simplify the logic by creating subVisitor Simplify the logic by create a sub expression visitor so that we don't need to introduce extra recursion. * Call convertToLogicOperatorExpr after args check Change to call convertToLogicOperatorExpr after arguments check in visitInvokeExpr such that we don't have to check whether the arguments checked to avoid the double checking issue.
2024-03-04Add `IGlobalSession::getSessionDescDigest`. (#3669)Yong He
* Add `IGlobalSession::getSessionDescDigest`. * Fix.
2024-03-04Fix lowering logic around imported modules. (#3668)Yong He
* Fix lowering logic around imported modules. * Use actual source loc when emitting SPIRV.
2024-03-03Fix SPIRV pointer codegen. (#3664)Yong He
2024-03-01Enable debug info for swizzledStore. (#3659)Yong He
2024-03-01Make slangc commandline parsing compatible with renderdoc. (#3658)Yong He
* Make slangc commandline parsing compatible with renderdoc. * Fix tests.