diff options
| author | 2023-12-08 12:26:13 -0500 | |
|---|---|---|
| committer | 2023-12-08 12:26:13 -0500 | |
| commit | 52e6b8a2d3f64ad27bc6e82d7f157c7fef8a0aba (patch) | |
| tree | 5cdefc0295a05d37f63e30456bbed69e1656089f /src/video_core/renderer_opengl | |
| parent | Merge pull request #12208 from liamwhite/romfs (diff) | |
| parent | texture_cache: fix max_element comparison function (diff) | |
| download | yuzu-52e6b8a2d3f64ad27bc6e82d7f157c7fef8a0aba.tar.gz yuzu-52e6b8a2d3f64ad27bc6e82d7f157c7fef8a0aba.tar.xz yuzu-52e6b8a2d3f64ad27bc6e82d7f157c7fef8a0aba.zip | |
Merge pull request #12274 from liamwhite/srgb-nonsense
renderer_vulkan: do not recreate swapchain for srgb
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 9 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.h | 1 |
3 files changed, 4 insertions, 10 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 9995b6dd4..279e5a4e0 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -714,7 +714,8 @@ bool RasterizerOpenGL::AccelerateDisplay(const Tegra::FramebufferConfig& config, | |||
| 714 | MICROPROFILE_SCOPE(OpenGL_CacheManagement); | 714 | MICROPROFILE_SCOPE(OpenGL_CacheManagement); |
| 715 | 715 | ||
| 716 | std::scoped_lock lock{texture_cache.mutex}; | 716 | std::scoped_lock lock{texture_cache.mutex}; |
| 717 | ImageView* const image_view{texture_cache.TryFindFramebufferImageView(framebuffer_addr)}; | 717 | ImageView* const image_view{ |
| 718 | texture_cache.TryFindFramebufferImageView(config, framebuffer_addr)}; | ||
| 718 | if (!image_view) { | 719 | if (!image_view) { |
| 719 | return false; | 720 | return false; |
| 720 | } | 721 | } |
| @@ -725,7 +726,6 @@ bool RasterizerOpenGL::AccelerateDisplay(const Tegra::FramebufferConfig& config, | |||
| 725 | screen_info.texture.width = image_view->size.width; | 726 | screen_info.texture.width = image_view->size.width; |
| 726 | screen_info.texture.height = image_view->size.height; | 727 | screen_info.texture.height = image_view->size.height; |
| 727 | screen_info.display_texture = image_view->Handle(Shader::TextureType::Color2D); | 728 | screen_info.display_texture = image_view->Handle(Shader::TextureType::Color2D); |
| 728 | screen_info.display_srgb = VideoCore::Surface::IsPixelFormatSRGB(image_view->format); | ||
| 729 | return true; | 729 | return true; |
| 730 | } | 730 | } |
| 731 | 731 | ||
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 6bfed08a1..7a4f0c5c1 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -653,11 +653,7 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { | |||
| 653 | }; | 653 | }; |
| 654 | glNamedBufferSubData(vertex_buffer.handle, 0, sizeof(vertices), std::data(vertices)); | 654 | glNamedBufferSubData(vertex_buffer.handle, 0, sizeof(vertices), std::data(vertices)); |
| 655 | 655 | ||
| 656 | if (screen_info.display_srgb) { | 656 | glDisable(GL_FRAMEBUFFER_SRGB); |
| 657 | glEnable(GL_FRAMEBUFFER_SRGB); | ||
| 658 | } else { | ||
| 659 | glDisable(GL_FRAMEBUFFER_SRGB); | ||
| 660 | } | ||
| 661 | glViewportIndexedf(0, 0.0f, 0.0f, static_cast<GLfloat>(layout.width), | 657 | glViewportIndexedf(0, 0.0f, 0.0f, static_cast<GLfloat>(layout.width), |
| 662 | static_cast<GLfloat>(layout.height)); | 658 | static_cast<GLfloat>(layout.height)); |
| 663 | 659 | ||
| @@ -710,8 +706,7 @@ void RendererOpenGL::RenderScreenshot() { | |||
| 710 | GLuint renderbuffer; | 706 | GLuint renderbuffer; |
| 711 | glGenRenderbuffers(1, &renderbuffer); | 707 | glGenRenderbuffers(1, &renderbuffer); |
| 712 | glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer); | 708 | glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer); |
| 713 | glRenderbufferStorage(GL_RENDERBUFFER, screen_info.display_srgb ? GL_SRGB8 : GL_RGB8, | 709 | glRenderbufferStorage(GL_RENDERBUFFER, GL_SRGB8, layout.width, layout.height); |
| 714 | layout.width, layout.height); | ||
| 715 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer); | 710 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer); |
| 716 | 711 | ||
| 717 | DrawScreen(layout); | 712 | DrawScreen(layout); |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index f1d5fd954..b70607635 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h | |||
| @@ -53,7 +53,6 @@ struct TextureInfo { | |||
| 53 | struct ScreenInfo { | 53 | struct ScreenInfo { |
| 54 | GLuint display_texture{}; | 54 | GLuint display_texture{}; |
| 55 | bool was_accelerated = false; | 55 | bool was_accelerated = false; |
| 56 | bool display_srgb{}; | ||
| 57 | const Common::Rectangle<float> display_texcoords{0.0f, 0.0f, 1.0f, 1.0f}; | 56 | const Common::Rectangle<float> display_texcoords{0.0f, 0.0f, 1.0f, 1.0f}; |
| 58 | TextureInfo texture; | 57 | TextureInfo texture; |
| 59 | }; | 58 | }; |