shadPS4/src/shader_recompiler/ir/passes
TheTurtle 1f9ac53c28
Some checks are pending
Build and Release / reuse (push) Waiting to run
Build and Release / clang-format (push) Waiting to run
Build and Release / get-info (push) Waiting to run
Build and Release / windows-sdl (push) Blocked by required conditions
Build and Release / windows-qt (push) Blocked by required conditions
Build and Release / macos-sdl (push) Blocked by required conditions
Build and Release / macos-qt (push) Blocked by required conditions
Build and Release / linux-sdl (push) Blocked by required conditions
Build and Release / linux-qt (push) Blocked by required conditions
Build and Release / linux-sdl-gcc (push) Blocked by required conditions
Build and Release / linux-qt-gcc (push) Blocked by required conditions
Build and Release / pre-release (push) Blocked by required conditions
shader_recompiler: Improve divergence handling and readlane elimintation (#2667)
* control_flow_graph: Improve divergence handling

* recompiler: Simplify optimization passes

Removes a redudant constant propagation and cleans up the passes a little

* ir_passes: Add new readlane elimination pass

The algorithm has grown complex enough where it deserves its own pass. The old implementation could only handle a single phi level properly,
however this one should be able to eliminate vast majority of lane cases remaining. It first performs a traversal of the phi tree to ensure
that all phi sources can be rewritten into an expected value and then performs elimintation by recursively duplicating the phi nodes at each step,
in order to preserve control flow.

* clang format

* control_flow_graph: Remove debug code
2025-03-23 00:35:42 +02:00
..
constant_propagation_pass.cpp shader_recompiler: Improve divergence handling and readlane elimintation (#2667) 2025-03-23 00:35:42 +02:00
constant_propogation.h Tessellation (#1528) 2024-12-14 12:56:17 +02:00
dead_code_elimination_pass.cpp shader: Fix block processing order in dead code elimination pass 2024-06-06 02:46:36 +03:00
flatten_extended_userdata_pass.cpp fix ASSERT_MSG arguments (#2337) 2025-02-04 08:51:07 +02:00
hull_shader_transform.cpp shader_recompiler: Improve divergence handling and readlane elimintation (#2667) 2025-03-23 00:35:42 +02:00
identity_removal_pass.cpp video_core: Implement basic compute shaders and more instructions 2024-05-30 01:39:24 +03:00
ir_passes.h shader_recompiler: Improve divergence handling and readlane elimintation (#2667) 2025-03-23 00:35:42 +02:00
lower_buffer_format_to_raw.cpp shader_recompiler: Proper support for inst-typed buffer format operations. (#2469) 2025-02-21 03:01:18 -08:00
readlane_elimination_pass.cpp shader_recompiler: Improve divergence handling and readlane elimintation (#2667) 2025-03-23 00:35:42 +02:00
resource_tracking_pass.cpp shader_recompiler: Remove special case buffers and add support for aliasing (#2428) 2025-02-15 14:06:56 +02:00
ring_access_elimination.cpp shader_recompiler: Improve divergence handling and readlane elimintation (#2667) 2025-03-23 00:35:42 +02:00
shader_info_collection_pass.cpp shader_recompiler: Remove special case buffers and add support for aliasing (#2428) 2025-02-15 14:06:56 +02:00
shared_memory_barrier_pass.cpp video_core: Various small improvements and bug fixes (#2525) 2025-02-24 14:31:12 +02:00
shared_memory_to_storage_pass.cpp shader_recompiler: Remove special case buffers and add support for aliasing (#2428) 2025-02-15 14:06:56 +02:00
srt.h Implement shader resource tables (#1165) 2024-11-01 08:55:53 +02:00
ssa_rewrite_pass.cpp shader_recompilers: Improvements to SSA phi generation and lane instruction elimination (#1667) 2024-12-05 23:14:16 +02:00