summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar ameerj2021-07-29 13:27:01 -0400
committerGravatar Fernando Sahmkow2021-11-16 22:11:28 +0100
commitf086c82e1f80cae088bb22de9092598dc51979da (patch)
tree8e055b4397c2dc9288a8fed65daf171488ecadc9 /src/video_core
parenttexture_cache: Fix blacklists on compute (diff)
downloadyuzu-f086c82e1f80cae088bb22de9092598dc51979da.tar.gz
yuzu-f086c82e1f80cae088bb22de9092598dc51979da.tar.xz
yuzu-f086c82e1f80cae088bb22de9092598dc51979da.zip
gl_graphics_pipeline: Add downscale factor to shader uniforms
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/renderer_opengl/gl_graphics_pipeline.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp b/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp
index 0bbda7951..92fda9af0 100644
--- a/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp
+++ b/src/video_core/renderer_opengl/gl_graphics_pipeline.cpp
@@ -443,11 +443,24 @@ void GraphicsPipeline::ConfigureImpl(bool is_indexed) {
443 if (!is_built.load(std::memory_order::relaxed)) { 443 if (!is_built.load(std::memory_order::relaxed)) {
444 WaitForBuild(); 444 WaitForBuild();
445 } 445 }
446 if (assembly_programs[0].handle != 0) { 446 const bool use_assembly{assembly_programs[0].handle != 0};
447 const bool is_rescaling{texture_cache.IsRescaling()};
448 const f32 config_down_factor{Settings::values.resolution_info.down_factor};
449 const f32 down_factor{is_rescaling ? config_down_factor : 1.0f};
450 if (use_assembly) {
447 program_manager.BindAssemblyPrograms(assembly_programs, enabled_stages_mask); 451 program_manager.BindAssemblyPrograms(assembly_programs, enabled_stages_mask);
448 } else { 452 } else {
449 program_manager.BindSourcePrograms(source_programs); 453 program_manager.BindSourcePrograms(source_programs);
450 } 454 }
455 for (size_t stage = 0; stage < source_programs.size(); ++stage) {
456 if (stage_infos[stage].uses_rescaling_uniform) {
457 if (use_assembly) {
458 glProgramEnvParameter4fARB(AssemblyStage(stage), 0, down_factor, 0.0f, 0.0f, 1.0f);
459 } else {
460 glProgramUniform1f(source_programs[stage].handle, 0, down_factor);
461 }
462 }
463 }
451 const VideoCommon::ImageViewInOut* views_it{views.data()}; 464 const VideoCommon::ImageViewInOut* views_it{views.data()};
452 GLsizei texture_binding = 0; 465 GLsizei texture_binding = 0;
453 GLsizei image_binding = 0; 466 GLsizei image_binding = 0;