aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_spirv_special.cpp
Commit message (Collapse)AuthorAgeFilesLines
* shader_recompiler: translate Switch 2 task and mesh programsTakoroka3 days1-0/+7
| | | | | | | | | | | | | | | | | | | | | | | Mario Kart World draws some of its geometry with NVN task and mesh programs (the task program culls and writes the mesh workgroup count and a payload to its stage buffer; each mesh workgroup reads it back and writes vertices and primitives). Add Task and Mesh stages and translate them for VK_EXT_mesh_shader: - the ISBE pseudo instruction from the lowering becomes reads and writes of an emulated stage buffer: the task's output region is the task payload, the mesh output regions live in workgroup memory - every EXIT of these stages jumps to one final return, so all invocations reach the epilogue: a barrier, then OpEmitMeshTasksEXT, or OpSetMeshOutputsEXT and a copy of the 32-element vertex and primitive groups (lines named by the mesh header's and the pass-through geometry header's output maps) to arrayed and per-primitive outputs - Sirit lacks the two mesh instructions: they are emitted as OpStore markers and replaced after assembly - fragment inputs a mesh program writes per primitive get PerPrimitiveEXT The captured task and mesh programs of the title translate to SPIR-V that spirv-val accepts.
* [vulkan] Fixed dual-source blending to correctly map shader outputs. (#3637)tarako2026-03-031-0/+14
| | | | | | | | | | | | Fixes Skyward Sword HD eye gitch and a related MoltenVK crash due to the incorrect output mapping. Verified working on mac and android. The test in vk_pipeline_cache.cpp is a bit ugly, but it didn't seem worth it to go lambda/macro just to make it look cleaner. Could change if necessary. Co-authored-by: tarako <none@none.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3637 Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: tarako <r76036296@gmail.com> Co-committed-by: tarako <r76036296@gmail.com>
* proper placement of clip distance initswurl2025-04-241-1/+11
| | | | Signed-off-by: swurl <swurl@swurl.xyz>
* shader compiler: Ensure all clip distances are initialized when usedJPikachu2025-04-211-1/+1
| | | | | Thank you to Ryujinx (riperiperi specifically) for the pointer towards clip distances Huge thanks to crueter for finding where the code works and Camille for giving pointers along the way.
* shader_recompiler: throw on missing geometry streams in geometry shadersLiam2024-02-191-2/+6
|
* Vulkan: Add support for VK_EXT_depth_clip_control.FernandoS272022-12-131-2/+3
|
* general: Convert source file copyright comments over to SPDXMorph2022-04-231-3/+2
| | | | | This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
* emit_spirv: Reduce emit_spirv.h include overheadameerj2021-12-051-0/+1
| | | | emit_spirv.h is included in video_core, which was propagating further includes that video_core did not depend on.
* shader: Add loggingReinUsesLisp2021-07-221-2/+2
|
* shader: Split profile and runtime information in separate structsReinUsesLisp2021-07-221-6/+9
|
* Move SPIR-V emission functions to their own headerReinUsesLisp2021-07-221-0/+1
|
* spirv: Replace Constant/ConstantComposite with Const helperameerj2021-07-221-4/+4
|
* spirv: Fix alpha testFernandoS272021-07-221-0/+5
|
* spirv: Implement alpha testameerj2021-07-221-0/+45
|
* shader: Implement transform feedbacks and define file formatReinUsesLisp2021-07-221-3/+26
|
* shader: Fix fixed pipeline point size on geometry shadersReinUsesLisp2021-07-221-10/+18
|
* shader: Implement geometry shadersReinUsesLisp2021-07-221-12/+30
|
* shader: Implement OUTReinUsesLisp2021-07-221-0/+8
|
* spirv: Add fixed pipeline point sizeReinUsesLisp2021-07-221-0/+4
|
* spirv: Fix default output attribute initializationReinUsesLisp2021-07-221-3/+3
|
* shader: Implement NDC [-1, 1], attribute types and default varying ↵ReinUsesLisp2021-07-221-0/+35
initialization