From c9d425dc08a3b061446986869d256152517c6273 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Wed, 12 Feb 2025 17:53:42 -0800 Subject: [PATCH] fix: Correct number of allocated VGPRs. --- src/video_core/amdgpu/liverpool.h | 5 +++++ src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/video_core/amdgpu/liverpool.h b/src/video_core/amdgpu/liverpool.h index 67821b0f2..525a0c9f1 100644 --- a/src/video_core/amdgpu/liverpool.h +++ b/src/video_core/amdgpu/liverpool.h @@ -143,6 +143,11 @@ struct Liverpool { const u32 num_dwords = bininfo.length / sizeof(u32); return std::span{code, num_dwords}; } + + [[nodiscard]] u32 NumVgprs() const { + // Each increment allocates 4 registers, where 0 = 4 registers. + return (settings.num_vgprs + 1) * 4; + } }; struct HsTessFactorClamp { diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index a936ccf31..f7afd2e75 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -84,7 +84,7 @@ const Shader::RuntimeInfo& PipelineCache::BuildRuntimeInfo(Stage stage, LogicalS const auto BuildCommon = [&](const auto& program) { info.num_user_data = program.settings.num_user_regs; info.num_input_vgprs = program.settings.vgpr_comp_cnt; - info.num_allocated_vgprs = program.settings.num_vgprs * 4; + info.num_allocated_vgprs = program.NumVgprs(); info.fp_denorm_mode32 = program.settings.fp_denorm_mode32; info.fp_round_mode32 = program.settings.fp_round_mode32; };