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; };