diff options
| author | 2021-07-29 13:27:01 -0400 | |
|---|---|---|
| committer | 2021-11-16 22:11:28 +0100 | |
| commit | f086c82e1f80cae088bb22de9092598dc51979da (patch) | |
| tree | 8e055b4397c2dc9288a8fed65daf171488ecadc9 /src/video_core | |
| parent | texture_cache: Fix blacklists on compute (diff) | |
| download | yuzu-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.cpp | 15 |
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; |