[PR #3816] [MERGED] video_core: Initial implementation of pipeline cache #3735

Closed
opened 2026-02-27 22:04:48 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/shadps4-emu/shadPS4/pull/3816
Author: @psucien
Created: 11/19/2025
Status: Merged
Merged: 11/29/2025
Merged by: @georgemoralis

Base: mainHead: vk/plcache1


📝 Commits (7)

  • ca54a83 Initial implementation
  • 02bc605 Fix for crash caused by stale stages data; cosmetics applied
  • 90d00ab Someone mentioned the assert
  • 9f6d52c Async blob writer
  • 5c788ce Fix for memory leak
  • b24cc42 Remain stuff
  • b7d3eae Async changed to packaged_task

📊 Changes

37 files changed (+1339 additions, -166 deletions)

View changed files

📝 .gitmodules (+3 -0)
📝 CMakeLists.txt (+9 -3)
📝 externals/CMakeLists.txt (+3 -0)
externals/miniz (+1 -0)
📝 src/common/config.cpp (+24 -0)
📝 src/common/config.h (+4 -0)
📝 src/common/path_util.cpp (+1 -0)
📝 src/common/path_util.h (+2 -0)
src/common/serdes.h (+140 -0)
📝 src/emulator.cpp (+2 -0)
📝 src/shader_recompiler/frontend/fetch_shader.cpp (+1 -1)
📝 src/shader_recompiler/frontend/fetch_shader.h (+7 -1)
📝 src/shader_recompiler/frontend/structured_control_flow.cpp (+3 -5)
📝 src/shader_recompiler/frontend/translate/translate.cpp (+2 -1)
📝 src/shader_recompiler/info.h (+67 -50)
📝 src/shader_recompiler/ir/passes/flatten_extended_userdata_pass.cpp (+16 -2)
📝 src/shader_recompiler/ir/passes/hull_shader_transform.cpp (+3 -3)
📝 src/shader_recompiler/ir/passes/ir_passes.h (+2 -2)
📝 src/shader_recompiler/ir/passes/resource_tracking_pass.cpp (+2 -1)
📝 src/shader_recompiler/ir/passes/srt.h (+9 -0)

...and 17 more files

📄 Description

Marked as draft, as there are few tess validation warnings left to fix, yet so far the implementation is reliable enough. For the next steps it would be nice to:

  • minimize latency on new PL creation (there is a room for improvement in serialization sequence)
  • async schedule for IO
  • single container (miniz) + zlib compression for blobs

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/shadps4-emu/shadPS4/pull/3816 **Author:** [@psucien](https://github.com/psucien) **Created:** 11/19/2025 **Status:** ✅ Merged **Merged:** 11/29/2025 **Merged by:** [@georgemoralis](https://github.com/georgemoralis) **Base:** `main` ← **Head:** `vk/plcache1` --- ### 📝 Commits (7) - [`ca54a83`](https://github.com/shadps4-emu/shadPS4/commit/ca54a8331ff426e88148ee0d4cc130c62aec7dc7) Initial implementation - [`02bc605`](https://github.com/shadps4-emu/shadPS4/commit/02bc605d82796d79b07e6dc2d787c702bbf4a5b0) Fix for crash caused by stale stages data; cosmetics applied - [`90d00ab`](https://github.com/shadps4-emu/shadPS4/commit/90d00abb0a30729f20a75ba055c3f0fee527930b) Someone mentioned the assert - [`9f6d52c`](https://github.com/shadps4-emu/shadPS4/commit/9f6d52c0d5dd97b895e24f8ac0bc4aa64fd88048) Async blob writer - [`5c788ce`](https://github.com/shadps4-emu/shadPS4/commit/5c788cea3210af82c3284c2237724826c029e02f) Fix for memory leak - [`b24cc42`](https://github.com/shadps4-emu/shadPS4/commit/b24cc42c6a268b4663d9f20564ed02956f769594) Remain stuff - [`b7d3eae`](https://github.com/shadps4-emu/shadPS4/commit/b7d3eae8c20abb7a09020e28447d1036feb38dab) Async changed to `packaged_task` ### 📊 Changes **37 files changed** (+1339 additions, -166 deletions) <details> <summary>View changed files</summary> 📝 `.gitmodules` (+3 -0) 📝 `CMakeLists.txt` (+9 -3) 📝 `externals/CMakeLists.txt` (+3 -0) ➕ `externals/miniz` (+1 -0) 📝 `src/common/config.cpp` (+24 -0) 📝 `src/common/config.h` (+4 -0) 📝 `src/common/path_util.cpp` (+1 -0) 📝 `src/common/path_util.h` (+2 -0) ➕ `src/common/serdes.h` (+140 -0) 📝 `src/emulator.cpp` (+2 -0) 📝 `src/shader_recompiler/frontend/fetch_shader.cpp` (+1 -1) 📝 `src/shader_recompiler/frontend/fetch_shader.h` (+7 -1) 📝 `src/shader_recompiler/frontend/structured_control_flow.cpp` (+3 -5) 📝 `src/shader_recompiler/frontend/translate/translate.cpp` (+2 -1) 📝 `src/shader_recompiler/info.h` (+67 -50) 📝 `src/shader_recompiler/ir/passes/flatten_extended_userdata_pass.cpp` (+16 -2) 📝 `src/shader_recompiler/ir/passes/hull_shader_transform.cpp` (+3 -3) 📝 `src/shader_recompiler/ir/passes/ir_passes.h` (+2 -2) 📝 `src/shader_recompiler/ir/passes/resource_tracking_pass.cpp` (+2 -1) 📝 `src/shader_recompiler/ir/passes/srt.h` (+9 -0) _...and 17 more files_ </details> ### 📄 Description Marked as draft, as there are few tess validation warnings left to fix, yet so far the implementation is reliable enough. For the next steps it would be nice to: - minimize latency on new PL creation (there is a room for improvement in serialization sequence) - async schedule for IO - single container (miniz) + zlib compression for blobs --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-27 22:04:48 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/shadPS4#3735
No description provided.