GPU: Pick up a changed Skip Buffer Effects even without a render resize

The framebuffer manager only switches between buffered and non-buffered
rendering on a render resize. Turning on Auto FrameSkip clears Skip Buffer
Effects without posting one, so after resuming, EmuScreen ran the buffered
path with a GPU still in non-buffered mode. A frame displayed from RAM was
then drawn straight to output with no render pass bound, crashing in
VulkanRenderManager::SetScissor. Treat a mismatch as a resize in
BeginHostFrame, whatever changed the setting.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-20 23:03:00 +02:00
1 parent d3a23e94e9
commit a5e5fc079a
1 file changed
+5
+5
View File
@@ -76,6 +76,11 @@ void GPUCommon::BeginHostFrame(const DisplayLayoutConfig &config) {
UpdateMSAALevel(draw_);
CheckConfigChanged(config);
CheckDisplayResized();
// Skip Buffer Effects only takes effect on a render resize, and not everything that changes it posts one
// (turning on Auto FrameSkip clears it).
if (framebufferManager_ && framebufferManager_->UseBufferedRendering() == g_Config.bSkipBufferEffects) {
renderResized_ = true;
}
CheckRenderResized(config);
// After the resizes, which ask for the post shaders to be rebuilt at the new size.