From b9b75cf2c8f017c7d5932c42b1bfb81c4c446ffa Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Sat, 3 May 2025 19:45:05 +0200 Subject: [PATCH] crashes fixed --- src/video_core/renderer_vulkan/shader_cache.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/shader_cache.cpp b/src/video_core/renderer_vulkan/shader_cache.cpp index f07c41aa7..8b12e5209 100644 --- a/src/video_core/renderer_vulkan/shader_cache.cpp +++ b/src/video_core/renderer_vulkan/shader_cache.cpp @@ -348,6 +348,8 @@ void SerializeInfo(std::ostream& info_serialized, Shader::Info info) { writeBin(info_serialized, res.num_dwords); } + writeBin(info_serialized, info.srt_info.flattened_bufsize_dw); + // Flat UD u32 flatCount = static_cast(info.flattened_ud_buf.size()); @@ -645,12 +647,17 @@ void DeserializeInfo(std::istream& info_serialized, Shader::Info& info) { readBin(info_serialized, res.num_dwords); } + readBin(info_serialized, info.srt_info.flattened_bufsize_dw); + // Flat UD + u32 flatCount; readBin(info_serialized, flatCount); info.flattened_ud_buf.clear(); - info.flattened_ud_buf.resize(flatCount); + u32 required_size = std::max(flatCount, info.srt_info.flattened_bufsize_dw); + info.flattened_ud_buf.resize(required_size); + for (u32 i = 0; i < flatCount; ++i) { readBin(info_serialized, info.flattened_ud_buf[i]); }