| Age | Commit message (Collapse) | Author |
|
* Add cautionary desclaimers on interop mechanisms.
* Fix.
|
|
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
|
|
|
|
* Add wrapper type synthesis logic for constructors.
* Fix.
|
|
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.
|
|
* 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.
|
|
|
|
* Preserve ByteAddressBuffer user type name.
* Make user type lowercase.
* Make typenames conform to spec.
* Use `SpvOpDecorateString`.
|
|
|
|
* Create vk-gl-cts-nightly.yml
Action to run VK-GL-CTS expected slang passing test list nightly on schedule to run at 12am Pacific time.
|
|
* return buffer creation errors in vulkan
* return pipeline creation errors in vulkan
---------
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
* [SPIRV] Use VectorTimesScalar opcode.
* Fix.
|
|
|
|
|
|
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.
|
|
* Fix method synthesis logic for static differentiable methods.
* Support link-time constants in thread group size reflection.
|
|
|
|
|
|
|
|
* Enhance link-time type test.
* Fix.
* Fix.
|
|
|
|
* Fix parsing logic of `struct` decl.
Fixes #3716.
* Allow `loadModule` to find modules with underscores.
* Fix test.
|
|
* [SPIRV] fix code gen for `SV_Coverage`.
* Fix #3714, #3699.
* Fix.
|
|
|
|
* [SPIRV] Fix pointer lowering bug.
* Update falcor CI setting.
|
|
* Link-time constant and linkage API improvements.
* Fix.
* Allow module name to be empty.
* Fix.
* Fix.
* Fix compile error.
|
|
|
|
* Uniformity analysis.
* Add [NonUniformReturn] decorations to some hlsl intrinsic functions.
|
|
|
|
|
|
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
Fixes bug #3585
|
|
require them. (#3679)
* [slangc] generate an error when `-entry` is not specified for targets that require them.
* Fix.
* Fix.
|
|
|
|
|
|
* 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.
|
|
|
|
* Add `IGlobalSession::getSessionDescDigest`.
* Fix.
|
|
* Fix lowering logic around imported modules.
* Use actual source loc when emitting SPIRV.
|
|
|
|
|
|
* Make slangc commandline parsing compatible with renderdoc.
* Fix tests.
|
|
|
|
* Add documentation for debugging.
* typo
|
|
* Remove duplicate function
* neaten
---------
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
* Remove unused code
* unused variable warnings
* unused variable
---------
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
* Various SPIRV fixes.
* Fix debugValue.
|
|
* Fix crash when generating debug info for geometry shaders.
* Fix.
* Fix source language field in DebugCompilationUnit.
* Fix.
* Emit DebugEntryPoint inst.
* Add trivial test.
* Cleanup.
* More cleanup.
|
|
|