summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-emit-spirv.cpp
Commit message (Collapse)AuthorAge
...
* Add `-fvk-use-dx-position-w` and fix ExecutionMode ordering for geometry ↵Yong He2024-03-11
| | | | | | | | | | | | | | | 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 spirv builtin for `SV_ShadingRate`. (#3730)Yong He2024-03-10
|
* [SPIRV] fix code gen for `SV_Coverage`. (#3718)Yong He2024-03-08
| | | | | | | * [SPIRV] fix code gen for `SV_Coverage`. * Fix #3714, #3699. * Fix.
* [SPIRV] Fix pointer lowering bug. (#3713)Yong He2024-03-07
| | | | | * [SPIRV] Fix pointer lowering bug. * Update falcor CI setting.
* Fix SPIRV emit logic of `PrimitiveId` in fragment shader. (#3705)Yong He2024-03-07
|
* [SPIRV] Fix DebugLine generated from source with #line directive. (#3678)Yong He2024-03-05
|
* warnings (#3653)Ellie Hermaszewska2024-03-01
| | | | | | | | | | | * Remove unused code * unused variable warnings * unused variable --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Various SPIRV fixes. (#3655)Yong He2024-03-01
| | | | | * Various SPIRV fixes. * Fix debugValue.
* Fix various crashes when generating debug info. (#3650)Yong He2024-02-29
| | | | | | | | | | | | | | | | | * 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.
* [SPIRV] Fix logic for emitting debug matrix type. (#3649)Yong He2024-02-29
|
* [SPIRV Debug] Properly update output arguments after call. (#3648)Yong He2024-02-29
|
* [SPIRV] Add NonSemanticDebugInfo for step-through debugging. (#3644)Yong He2024-02-28
| | | | | | | * [SPIRV] Add NonSemanticDebugInfo for step-through debugging. * Fix. * Fix.
* SPIRV Fixes. (#3622)Yong He2024-02-23
| | | | | | | | | | | | | * Use SpvSourceLanguageSlang enum. * Fix spirv entrypoint interface. * Cleanup. * Add error on unknown spirv opcode. * Fix CI. * Fix.
* Fix SPIRV lowering issue. (#3608)Yong He2024-02-21
| | | | | | | | | | | | | * Fix SPIRV pointer lowering issue. Fixes #3605. * Add another pointer test. Fixes #3601. * Fixes #3600. * Fix #3595.
* Refactor compiler option representations. (#3598)Yong He2024-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Refactor compiler option representation. * Fix binary compatibility. * Add a test for specifying compiler options at link time. * Fix binary compatibility. * Fix binary compatibility. * Fix backward compatibility on matrix layout. * Fix. * Fix. * Fix. * Fix gfx. * Fix gfx. * Fix dynamic dispatch. * Polish.
* Support pointers in SPIRV. (#3561)Yong He2024-02-08
| | | | | | | | | | | * Support pointers in SPIRV. * Fix test. * Enhance test. * Fix test. * Cleanup.
* Fix spirv emit that leads to pathological downstream time. (#3546)Yong He2024-02-03
|
* Capability type checking. (#3530)Yong He2024-02-02
| | | | | | | | | * Capability type checking. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Atomics+Wave ops intrinsics fixes. (#3542)Yong He2024-02-02
| | | | | | | | | | | | | | | * Fix atomics intrinsics, increase kMaxDescriptorSets. * Add SPIRVASM to known non-differentiable insts. * Support fp16 wave ops when targeting glsl. * Fixes. * Fix vk validation errors. * Fix. * Add to allowed failures.
* [SPIRV] Support `globallycoherent` and `[vk::index()]`. (#3488)Yong He2024-01-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | * [SPIRV] Support `globallycoherent` modifier. * Fix. * Disable executable cooperative vector tests. * Update expected failure. * [SPIRV] Emit varying output index decoration. * Add test. * Update tests. * Fix test. * Emit `SpvExecutionModeEarlyFragmentTests`. * Lower `StructuredBuffer<bool>`. * Support globallycoherent on ByteAddressBuffer. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* SPIRV Legalization fixes. (#3479)Yong He2024-01-23
| | | | | | | | | | | * Fix CFG legalization for SPIRV backend. * Emit DepthReplacing execution mode. * Fix do-while lowering. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Fix incorrect behavior of operator% (#3470)Jay Kwak2024-01-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix incorrect behavior of operator% Fixes #1059. This change fixes the incorrect translation of "operator%" from HLSL to SPIRV. The issue stems from the fact that the behavior of "operator%" in GLSL differs from that in HLSL. In HLSL it behaves as "remainder" where as it behaves as "modulus" in GLSL. We have been using SpvOpFMod for operator% when Slang compiles from HLSL to SPRIV, which is incorrect. This change switches it to SpvOpFRem. The tests are slightly modified to reveal any potential issues. * Change output type of test/compute/frem For testing the operator%, we are using "int" as the output type of the test, "test/compute/frem.slang". Since the operands are in float type, it is more preferable to have a float type as the resulting type. This can be done with an option, "-output-using-type". --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Add `-fspv-reflect` support. (#3464)Yong He2024-01-19
| | | | | | | | | | | | | | | | | | | | | | | | | * Add `-fspv-reflect` support. Closes #3462. * Fix. * Fix. * Remove use of `SPV_GOOGLE_hlsl_functionality1`. * Fix spirv validation error. * Fix test. * Update typename hints. * Update commandline options doc. * Remove superfluous empty lines. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Capability def parsing & codegen + disjoint sets (#3451)Yong He2024-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Capability def parsing & codegen + disjoint sets This change adds a capability definition file, and a code generator to produce C++ code that defines the capability enums and necessary data structures around the capabilities. Extends the existing CapabilitySet class to support expressing disjoint sets of capabilities. This sets up for the next change that will enhance our type checking with reasoning of capability requirements. * Fix cmake. * Fix warning. * Fix. * Fix isBetterForTarget to prefer less specialized option. * Fix. * Fix premake. * Fix intrinsic. * Fix vs sln file. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Lower sv_vertexid to decoration VertexIndex as defined in GL_KHR_vulkan_glsl ↵Pankaj Mistry2023-12-19
| | | | (#3419)
* Add spirv intrinsics for `ConstBufferPointer`. (#3407)Yong He2023-12-13
| | | | | | Fixes #3305. Fixes #3404. Co-authored-by: Yong He <yhe@nvidia.com>
* Add spirv intrinsic definition for `printf`. (#3340)Yong He2023-11-17
|
* GLSL/SPIRV Fixes. (#3337)Yong He2023-11-16
|
* Unify stdlib `Texture` types into one generic type. (#3327)Yong He2023-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Unify Texture types in stdlib into 1 generic type. * Fixes. * Fix. * Fixes. * Fix reflection. * Fix binding reflection. * Add gather intrinsics. * Fix gather intrinsics. * Fix texture type toText. * Fix intrinsic. * fix cuda intrinsic. * Fix project files. * cleanup. * Fix. * Fix. * Fix sampler feedback test. * Fix getDimension intrinsics. * Fix spirv sample image intrinsics. * Fix test. * Fix GLSL intrinsic. * Cleanup. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Fix ICE when lowering an associatedtype declref from an derived interface. ↵Yong He2023-11-06
| | | | | | | | | | | | | | | | | (#3312) * Fix ICE when lowering an associatedtype declref from an derived interface. * Fixes. * Fix test. * Fix GLSL/SPIRV image subscript swizzle store regression. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Several spirv intrinsics and small fix (#3307)Ellie Hermaszewska2023-11-02
| | | | | | | | | | | | | | | * spirv intrinsic for faceforward * spirv intrinsic for fwidth * spirv intrinsic for modf * spirv intrinsic for nonuniformresourceindex * spirv intrinsic for transpose * Make sure address space matches for OpAccessChain * Correct placement for OpDecorate instructions in spirv asm blocks
* Fix warnings for gcc 12.3 (#3286)Ellie Hermaszewska2023-10-25
| | | | | | | | | | | | | | | | | | | * Silence a few gcc out of bounds warnings * Search upwards from executable for prelude directory instead of assuming depth * comment wording * Check return values of read and write * Correct path to vulkan headers in gfx * Correct diagnostic on missing file in slang-embed * Do not use absolute path to libraries in test-context.cpp --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Add `IArray`. (#3281)Yong He2023-10-25
| | | | | | | | | | | | | | | | | | | * Initial support for generic interfaces. * Cleanup. * Add generic syntax for interfaces. * Add `IArray`. * Fix. * Fix. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Type layouts for structured buffers with counters (#3269)Ellie Hermaszewska2023-10-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * More tests for append structured buffer * Append and Consume structured buffer tests for DX12 * neaten * test wobble * Add counter layout information to append/consume structured buffers * add getRWStructuredBufferType * Correct definition of get size for append/consume structured buffers * tweak append structured buffer test * Allow initializing counter buffer in render test * vulkan test for consume structured buffer * Handle null counterVarLayout in getExplicitCounterBindingRangeOffset * remove dead code * Implement atomic counter increment/decrement for spirv * explicit spirv test * Add missing check on result * Hold on to counter resources --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Run curated spirv-opt passes through slang-glslang. (#3266)Yong He2023-10-09
| | | | | | | | | | | | | * Run curated spirv-opt passes through slang-glslang. * Cleanup. * Replace spirv-dis downstream compiler with glslang. * delete slang-spirv-opt.cpp. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Use designated compiler ID in SPIRV backend. (#3261)Yong He2023-10-05
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* SPIRV compiler performance fixes. (#3258)Yong He2023-10-04
| | | | | | | | | | | | | | | * SPIRV compiler performance fixes. * Cleanup. * update project files * Cleanup debug code. * Make redundancy removal non-recursive. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* More direct-SPIRV fixes. (#3257)Yong He2023-10-02
| | | | | | | | | * More direct-SPIRV fixes. * Fix array-reg-to-mem. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Add SPIRV intrinsics for ShaderExecutionReordering and RW/Buffer. (#3252)Yong He2023-10-02
| | | | | | | | | | | | | | | | | * Add SPIRV intrinsics for ShaderExecutionReordering. * Add intrinsics for `Buffer` and `RWBuffer`. * Various spirv fixes. * Marshal bool vector type. * Inline global constants + OpFOrdNotEqual->OpFUnordNotEqual. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* [Direct SPIRV]: ray tracing pipeline intrinsics. (#3244)Yong He2023-09-28
| | | | | | | | | | | * Use a dedicated inst opcode to retrieve ray payload locations. * [Direct SPIRV]: ray tracing pipeline intrinsics. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Support `constref` parameters passing. (#3249)Yong He2023-09-28
| | | | | | | | | | | | | | | * Support `constref` parameters passing. * Fix. * Fix. * Add test and diagnostic on mix use of __constref and no_diff. * check for [constref] on differentiable member method. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* WIP Mesh shaders for SPIR-V (#3226)Ellie Hermaszewska2023-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * SPIR-V impl for SetMeshOutputCounts and DispatchMesh * Unsightly fix for legalization ordering differences between GLSL and SPIR-V * spelling * Start a new block after terminating one in the OpEmitMeshTasksExt SPIR-V asm block * Emit mesh shader decorations in SPIR-V * Mesh and task shader stages for spir-v * Output explicit gl builtins for spir-v * Be more hygenic when SOAizing mesh outputs * Do not create builtin paramter block for spirv mesh outputs * Pass mesh payloads around by ref * comment * less expected failure * remove unused * Add spirv op * Correct type query for default flat modifier --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Various SPIRV fixes. (#3231)Yong He2023-09-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Various SPIRV fixes. - Geometry shader support (WIP). - Fix texture get dimension and load. - Fold global GetElement(MakeArray/MakeVector) insts. - Call spvopt to inline all functions. - Translate OpImageSubscript. - Emit struct member names and global variable names. - Fix lowering of OpBitNot -> OpNot, instead of OpBitReverse. * Fix test. * Fix geometry shader. * Fix geometry shader emit. * Add atomic Image access test. * Fix tests. * don't fail if spirv-opt fails. * Update comments. * Fix test. * Cleanups. * indentation --------- Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
* Direct SPIRV: Rasterization pipeline tests. (#3216)Yong He2023-09-20
| | | | | | | | | | | * Direct SPIRV: Rasterization pipeline tests. * Fixup. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* Handle combined image and samplers in spirv (#3213)Ellie Hermaszewska2023-09-19
| | | | | | | | | * Handle combined image and samplers in spirv * less expected failure --------- Co-authored-by: Yong He <yonghe@outlook.com>
* Memoize types in spirv asm blocks (#3215)Ellie Hermaszewska2023-09-19
| | | | | | | * Neaten emitInst * Memoize types in spirv asm blocks * less expected failure
* Use target-dependent pointer size in natural layout. (#3210)Yong He2023-09-18
| | | Co-authored-by: Yong He <yhe@nvidia.com>
* Direct SPIRV for RayTracing Inline. (#3201)Yong He2023-09-12
| | | | | | | | | | | | | * Direct SPIRV for RayTracing Inline. * Fix. * Cleanup. * Fix compile error. --------- Co-authored-by: Yong He <yhe@nvidia.com>
* SPIR-V image operations (#3163)Ellie Hermaszewska2023-09-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add __truncate and __sampledType for spirv_asm Allows some texture tests to start passing * add __isVector Currently unused * Add 1-vector legalization pass (WIP) * Add capabilities for image types * neaten instruction dumping * add 1-vector test * Add a couple of cases to vec1 legalization * Remove texture tests from expected failures * comment * regenerate vs projects * Remove redundant define form synchapi emulation * refactoring image methods * All sample functions refactored * Remove incorrect glsl intrinsics Partially addresses https://github.com/shader-slang/slang/issues/3174 * __subscript image ops via writing funcs * Extract texture struct writing from core.meta.slang * Abstract out cuda intrinsic * Remvoe erroneous call to opDecorateIndex * spirv asm IR utils * Correct position of loads for SPIR-V asm inst operands * Raise constructors to global scope during spir-v legalization * Correct snippet output * Implement most texture sampling ops for SPIR-V * Legalize 1-vectors for glsl too * Make SPIR-V inst operands non-hoistable * Better 1-vector legalization * Put textures in ptrs for spirv * insert missing break * Add vec1 legalization test * Add some missing pieces to slang-ir-insts * Greatly neaten vec1 legalization * a * Neaten vec1 legalization * Add image read and write intrinsics for spir-v * Squash warnings * regenerate vs projects * Drop redundant guards * Drop 5 tests from expected failure list * Inst numbering changes to cross compile tests * vec1 legalization tests only on vk * Correct location of asm op emit * Inline constant in spirv-asm * Correct signedness for lane in wave intrinsics * Extract element from float1 for cuda * squash warnings * Neaten spirv-emit * dedupe more capabilities * warnings * neaten assert * comments * comments
* Add SPIRV atomics intrinsics and fix buffer layout lowering. (#3170)Yong He2023-08-31
| | | | | | | | | | | | | * Fix atomics intrinsics and buffer layout lowering. * Fix. * Add more test. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>