summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_opengl/gl_compute_pipeline.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_compute_pipeline.cpp b/src/video_core/renderer_opengl/gl_compute_pipeline.cpp
index ab2baefbb..a11bd5a02 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() {
143 } 143 }
144 texture_cache.FillComputeImageViews(std::span(views.data(), views.size())); 144 texture_cache.FillComputeImageViews(std::span(views.data(), views.size()));
145 145
146 const bool is_rescaling{texture_cache.IsRescaling()};
147 const f32 config_down_factor{Settings::values.resolution_info.down_factor};
148 const f32 down_factor{is_rescaling ? config_down_factor : 1.0f};
146 if (assembly_program.handle != 0) { 149 if (assembly_program.handle != 0) {
147 program_manager.BindComputeAssemblyProgram(assembly_program.handle); 150 program_manager.BindComputeAssemblyProgram(assembly_program.handle);
151 if (info.uses_rescaling_uniform) {
152 glProgramEnvParameter4fARB(GL_COMPUTE_PROGRAM_NV, 0, down_factor, 0.0f, 0.0f, 1.0f);
153 }
148 } else { 154 } else {
149 program_manager.BindComputeProgram(source_program.handle); 155 program_manager.BindComputeProgram(source_program.handle);
156 if (info.uses_rescaling_uniform) {
157 glProgramUniform1f(source_program.handle, 0, down_factor);
158 }
150 } 159 }
151 buffer_cache.UnbindComputeTextureBuffers(); 160 buffer_cache.UnbindComputeTextureBuffers();
152 size_t texbuf_index{}; 161 size_t texbuf_index{};