From b6060873ce1eea02f99a350f955362e57391ecd1 Mon Sep 17 00:00:00 2001
From: ameerj <52414509+ameerj@users.noreply.github.com>
Date: Thu, 29 Jul 2021 15:45:53 -0400
Subject: [PATCH] gl_compute_pipeline: Add downscale factor to shader uniforms

---
 src/video_core/renderer_opengl/gl_compute_pipeline.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/video_core/renderer_opengl/gl_compute_pipeline.cpp b/src/video_core/renderer_opengl/gl_compute_pipeline.cpp
index ab2baefbb8..a11bd5a02e 100644
--- a/src/video_core/renderer_opengl/gl_compute_pipeline.cpp
+++ b/src/video_core/renderer_opengl/gl_compute_pipeline.cpp
@@ -143,10 +143,19 @@ void ComputePipeline::Configure() {
     }
     texture_cache.FillComputeImageViews(std::span(views.data(), views.size()));
 
+    const bool is_rescaling{texture_cache.IsRescaling()};
+    const f32 config_down_factor{Settings::values.resolution_info.down_factor};
+    const f32 down_factor{is_rescaling ? config_down_factor : 1.0f};
     if (assembly_program.handle != 0) {
         program_manager.BindComputeAssemblyProgram(assembly_program.handle);
+        if (info.uses_rescaling_uniform) {
+            glProgramEnvParameter4fARB(GL_COMPUTE_PROGRAM_NV, 0, down_factor, 0.0f, 0.0f, 1.0f);
+        }
     } else {
         program_manager.BindComputeProgram(source_program.handle);
+        if (info.uses_rescaling_uniform) {
+            glProgramUniform1f(source_program.handle, 0, down_factor);
+        }
     }
     buffer_cache.UnbindComputeTextureBuffers();
     size_t texbuf_index{};