summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ameerj2021-07-29 14:19:51 -0400
committerGravatar Fernando Sahmkow2021-11-16 22:11:29 +0100
commit9bc7b04ca587a349a9fc865d05e30966d6a84d65 (patch)
treeb5bef9b90abf783634d950f4cf852637145e9632 /src
parentgl_graphics_pipeline: Add downscale factor to shader uniforms (diff)
downloadyuzu-9bc7b04ca587a349a9fc865d05e30966d6a84d65.tar.gz
yuzu-9bc7b04ca587a349a9fc865d05e30966d6a84d65.tar.xz
yuzu-9bc7b04ca587a349a9fc865d05e30966d6a84d65.zip
gl_rasterizer: Fix rescale dirty state checking
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index b91e7edf8..615704711 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -533,7 +533,8 @@ void RasterizerOpenGL::SyncViewport() {
533 auto& flags = maxwell3d.dirty.flags; 533 auto& flags = maxwell3d.dirty.flags;
534 const auto& regs = maxwell3d.regs; 534 const auto& regs = maxwell3d.regs;
535 535
536 const bool dirty_viewport = flags[Dirty::Viewports]; 536 const bool rescale_viewports = flags[VideoCommon::Dirty::RescaleViewports];
537 const bool dirty_viewport = flags[Dirty::Viewports] || rescale_viewports;
537 const bool dirty_clip_control = flags[Dirty::ClipControl]; 538 const bool dirty_clip_control = flags[Dirty::ClipControl];
538 539
539 if (dirty_clip_control || flags[Dirty::FrontFace]) { 540 if (dirty_clip_control || flags[Dirty::FrontFace]) {
@@ -574,8 +575,9 @@ void RasterizerOpenGL::SyncViewport() {
574 if (dirty_viewport) { 575 if (dirty_viewport) {
575 flags[Dirty::Viewports] = false; 576 flags[Dirty::Viewports] = false;
576 577
577 const bool force = flags[Dirty::ViewportTransform]; 578 const bool force = flags[Dirty::ViewportTransform] || rescale_viewports;
578 flags[Dirty::ViewportTransform] = false; 579 flags[Dirty::ViewportTransform] = false;
580 flags[VideoCommon::Dirty::RescaleViewports] = false;
579 581
580 const auto& resolution = Settings::values.resolution_info; 582 const auto& resolution = Settings::values.resolution_info;
581 const auto scale_up = [&](u32 value) -> u32 { 583 const auto scale_up = [&](u32 value) -> u32 {
@@ -911,11 +913,14 @@ void RasterizerOpenGL::SyncLogicOpState() {
911 913
912void RasterizerOpenGL::SyncScissorTest() { 914void RasterizerOpenGL::SyncScissorTest() {
913 auto& flags = maxwell3d.dirty.flags; 915 auto& flags = maxwell3d.dirty.flags;
914 if (!flags[Dirty::Scissors]) { 916 if (!flags[Dirty::Scissors] && !flags[VideoCommon::Dirty::RescaleScissors]) {
915 return; 917 return;
916 } 918 }
917 flags[Dirty::Scissors] = false; 919 flags[Dirty::Scissors] = false;
918 920
921 const bool force = flags[VideoCommon::Dirty::RescaleScissors];
922 flags[VideoCommon::Dirty::RescaleScissors] = false;
923
919 const auto& regs = maxwell3d.regs; 924 const auto& regs = maxwell3d.regs;
920 925
921 const auto& resolution = Settings::values.resolution_info; 926 const auto& resolution = Settings::values.resolution_info;
@@ -927,7 +932,7 @@ void RasterizerOpenGL::SyncScissorTest() {
927 return std::max<u32>(converted_value, 1U); 932 return std::max<u32>(converted_value, 1U);
928 }; 933 };
929 for (std::size_t index = 0; index < Maxwell::NumViewports; ++index) { 934 for (std::size_t index = 0; index < Maxwell::NumViewports; ++index) {
930 if (!flags[Dirty::Scissor0 + index]) { 935 if (!force && !flags[Dirty::Scissor0 + index]) {
931 continue; 936 continue;
932 } 937 }
933 flags[Dirty::Scissor0 + index] = false; 938 flags[Dirty::Scissor0 + index] = false;