From bcbce501206855d1c644aa11b203b94c63067af4 Mon Sep 17 00:00:00 2001 From: GPUCode Date: Fri, 25 Aug 2023 20:17:07 +0300 Subject: [PATCH] renderer_vulkan: Fix dynamic state being lost --- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 1 + src/video_core/renderer_vulkan/vk_rasterizer.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 618e35c43..00ac5e66f 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -286,6 +286,7 @@ bool PipelineCache::BindPipeline(const PipelineInfo& info, bool wait_built) { current_info = info; current_pipeline = pipeline; + scheduler.MarkStateNonDirty(StateFlags::Pipeline); return true; } diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 73e8a5c2e..62ce0de09 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -501,8 +501,11 @@ bool RasterizerVulkan::Draw(bool accelerate, bool is_indexed) { SyncAndUploadLUTsLF(); UploadUniforms(accelerate); - // Configure viewport and scissor + // Begin rendering const auto draw_rect = fb_helper.DrawRect(); + renderpass_cache.BeginRendering(framebuffer, draw_rect); + + // Configure viewport and scissor const auto viewport = fb_helper.Viewport(); scheduler.Record([viewport, draw_rect](vk::CommandBuffer cmdbuf) { const vk::Viewport vk_viewport = { @@ -529,9 +532,6 @@ bool RasterizerVulkan::Draw(bool accelerate, bool is_indexed) { cmdbuf.setScissor(0, scissor); }); - // Begin rendering - renderpass_cache.BeginRendering(framebuffer, draw_rect); - // Draw the vertex batch bool succeeded = true; if (accelerate) {