aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/opcodes.cpp
Commit message (Collapse)AuthorAgeFilesLines
* shader_recompiler: translate Switch 2 task and mesh programsTakoroka2 days1-2/+2
| | | | | | | | | | | | | | | | | | | | | | | 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] Implementation for VK_EXT_shader_quad_control (#4168)CamilleLaVey2026-08-281-2/+2
| | | | | | | | An experimental approach to introduce an smarter way to use and access QUAD's capabilities on shaders, suggested by @gidoly some months ago, finally came into something usable; current implementation checks GLASM, GLSL and Vulkan on their own way, stablishes proper emitters and receivers for Quads inside our recompiler, which are the introductions for future changes; checks for support and actual feature bit, OpCodes and mask were added within this PR. Meanwhile the expected behavior was to reduce graphical issues (on games with Quad shaders reliant), we encountered a very slight performance increase depending on what game and shader are actually compiled. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4168 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: Samuel <lizzie@eden-emu.dev>
* [shader_recompiler] fix META_TABLE/NUM_ARGS table being duplicated per TU ↵lizzie2026-07-071-0/+24
| | | | | | | | | | | | | | that included opcodes.h (#4180) small oopsie; we dont need 6 copies of the same 22KB table (removes 5*22 = 110 KB worth of redundant stuff) this also enforces static on the types defined in the header so they arent memoized into a non-inlined value (aka. compiler just grabs value instead of well, yknow, assuming its a constant area) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4180 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
* 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.
* shader_recompiler: Reduce unused includesameerj2022-03-201-2/+0
|
* shader: Inline common Opcode and Inst functionsReinUsesLisp2021-07-221-89/+1
|
* shader: Calculate number of arguments in an opcode at compile timeReinUsesLisp2021-07-221-3/+12
|
* shader: Implement tessellation shaders, polygon mode and invocation idReinUsesLisp2021-07-221-0/+1
|
* shader: Address feedback + clang formatlat9nq2021-07-221-1/+1
|
* shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq2021-07-221-1/+1
| | | | | | | | | | | | | | | | | Mostly fixing unused *, implicit conversion, braced scalar init, fpermissive, and some others. Some Clang errors likely remain in video_core, and std::ranges is still a pertinent issue in shader_recompiler shader_recompiler: cmake: Force bracket depth to 1024 on Clang Increases the maximum fold expression depth thread_worker: Include condition_variable Don't use list initializers in control flow Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
* shader: Unroll "using enum" for opcode declarationsReinUsesLisp2021-07-221-1/+27
|
* shader: Initial support for textures and TEXReinUsesLisp2021-07-221-1/+1
|
* shader: Add pools and rename filesReinUsesLisp2021-07-221-0/+67