diff options
author | FengChen <vonchenplus@gmail.com> | 2022-12-08 15:51:18 +0100 |
---|---|---|
committer | FengChen <vonchenplus@gmail.com> | 2022-12-08 16:10:52 +0100 |
commit | 1e64b5e2ec798f7d71fec73fc4e8642441e04bb9 (patch) | |
tree | b2bdc0d7ef6817d13e7c40d1c152a2e4912ed92e | |
parent | video_core: Adjust topology update logic (diff) | |
download | yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.tar yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.tar.gz yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.tar.bz2 yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.tar.lz yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.tar.xz yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.tar.zst yuzu-1e64b5e2ec798f7d71fec73fc4e8642441e04bb9.zip |
-rw-r--r-- | src/video_core/engines/draw_manager.cpp | 13 | ||||
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 3 | ||||
-rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 3 |
3 files changed, 9 insertions, 10 deletions
diff --git a/src/video_core/engines/draw_manager.cpp b/src/video_core/engines/draw_manager.cpp index 36e4ec89d..49a16266e 100644 --- a/src/video_core/engines/draw_manager.cpp +++ b/src/video_core/engines/draw_manager.cpp @@ -52,12 +52,15 @@ void DrawManager::ProcessMethodCall(u32 method, u32 argument) { } void DrawManager::Clear(u32 layer_count) { - maxwell3d->rasterizer->Clear(layer_count); + if (maxwell3d->ShouldExecute()) { + maxwell3d->rasterizer->Clear(layer_count); + } } void DrawManager::DrawDeferred() { - if (draw_state.draw_mode != DrawMode::Instance || draw_state.instance_count == 0) + if (draw_state.draw_mode != DrawMode::Instance || draw_state.instance_count == 0) { return; + } DrawEnd(draw_state.instance_count + 1, true); draw_state.instance_count = 0; } @@ -112,8 +115,9 @@ void DrawManager::DrawEnd(u32 instance_count, bool force_draw) { const auto& regs{maxwell3d->regs}; switch (draw_state.draw_mode) { case DrawMode::Instance: - if (!force_draw) + if (!force_draw) { break; + } [[fallthrough]]; case DrawMode::General: draw_state.base_instance = regs.global_base_instance_index; @@ -185,7 +189,8 @@ void DrawManager::ProcessDraw(bool draw_indexed, u32 instance_count) { UpdateTopology(); - if (maxwell3d->ShouldExecute()) + if (maxwell3d->ShouldExecute()) { maxwell3d->rasterizer->Draw(draw_indexed, instance_count); + } } } // namespace Tegra::Engines diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 64ed6f628..a44b8c454 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -138,9 +138,6 @@ void RasterizerOpenGL::LoadDiskResources(u64 title_id, std::stop_token stop_load void RasterizerOpenGL::Clear(u32 layer_count) { MICROPROFILE_SCOPE(OpenGL_Clears); - if (!maxwell3d->ShouldExecute()) { - return; - } const auto& regs = maxwell3d->regs; bool use_color{}; diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 8d7a5e400..c9ace956c 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -216,9 +216,6 @@ void RasterizerVulkan::Draw(bool is_indexed, u32 instance_count) { void RasterizerVulkan::Clear(u32 layer_count) { MICROPROFILE_SCOPE(Vulkan_Clearing); - if (!maxwell3d->ShouldExecute()) { - return; - } FlushWork(); query_cache.UpdateCounters(); |