diff options
| author | 2024-01-22 12:40:50 -0500 | |
|---|---|---|
| committer | 2024-01-31 11:27:21 -0500 | |
| commit | a595e9e8a7a6a742481b1cd05455d3c639095413 (patch) | |
| tree | 03f8dfaec328171c42b090988e93c51e8d726eda /src/video_core/renderer_opengl | |
| parent | renderer_opengl: implement layer stack composition (diff) | |
| download | yuzu-a595e9e8a7a6a742481b1cd05455d3c639095413.tar.gz yuzu-a595e9e8a7a6a742481b1cd05455d3c639095413.tar.xz yuzu-a595e9e8a7a6a742481b1cd05455d3c639095413.zip | |
nvnflinger/gpu: implement layer stack composition
Diffstat (limited to 'src/video_core/renderer_opengl')
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 12 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.h | 4 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 10a9f973c..e33a32592 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -125,15 +125,15 @@ RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_, | |||
| 125 | 125 | ||
| 126 | RendererOpenGL::~RendererOpenGL() = default; | 126 | RendererOpenGL::~RendererOpenGL() = default; |
| 127 | 127 | ||
| 128 | void RendererOpenGL::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) { | 128 | void RendererOpenGL::Composite(std::span<const Tegra::FramebufferConfig> framebuffers) { |
| 129 | if (!framebuffer) { | 129 | if (framebuffers.empty()) { |
| 130 | return; | 130 | return; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | RenderScreenshot(framebuffer); | 133 | RenderScreenshot(framebuffers); |
| 134 | 134 | ||
| 135 | state_tracker.BindFramebuffer(0); | 135 | state_tracker.BindFramebuffer(0); |
| 136 | blit_screen->DrawScreen(std::span(framebuffer, 1), emu_window.GetFramebufferLayout()); | 136 | blit_screen->DrawScreen(framebuffers, emu_window.GetFramebufferLayout()); |
| 137 | 137 | ||
| 138 | ++m_current_frame; | 138 | ++m_current_frame; |
| 139 | 139 | ||
| @@ -159,7 +159,7 @@ void RendererOpenGL::AddTelemetryFields() { | |||
| 159 | telemetry_session.AddField(user_system, "GPU_OpenGL_Version", std::string(gl_version)); | 159 | telemetry_session.AddField(user_system, "GPU_OpenGL_Version", std::string(gl_version)); |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | void RendererOpenGL::RenderScreenshot(const Tegra::FramebufferConfig* framebuffer) { | 162 | void RendererOpenGL::RenderScreenshot(std::span<const Tegra::FramebufferConfig> framebuffers) { |
| 163 | if (!renderer_settings.screenshot_requested) { | 163 | if (!renderer_settings.screenshot_requested) { |
| 164 | return; | 164 | return; |
| 165 | } | 165 | } |
| @@ -181,7 +181,7 @@ void RendererOpenGL::RenderScreenshot(const Tegra::FramebufferConfig* framebuffe | |||
| 181 | glRenderbufferStorage(GL_RENDERBUFFER, GL_SRGB8, layout.width, layout.height); | 181 | glRenderbufferStorage(GL_RENDERBUFFER, GL_SRGB8, layout.width, layout.height); |
| 182 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer); | 182 | glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer); |
| 183 | 183 | ||
| 184 | blit_screen->DrawScreen(std::span(framebuffer, 1), layout); | 184 | blit_screen->DrawScreen(framebuffers, layout); |
| 185 | 185 | ||
| 186 | glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); | 186 | glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); |
| 187 | glPixelStorei(GL_PACK_ROW_LENGTH, 0); | 187 | glPixelStorei(GL_PACK_ROW_LENGTH, 0); |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index df76d3d05..c4625c96e 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h | |||
| @@ -40,7 +40,7 @@ public: | |||
| 40 | std::unique_ptr<Core::Frontend::GraphicsContext> context_); | 40 | std::unique_ptr<Core::Frontend::GraphicsContext> context_); |
| 41 | ~RendererOpenGL() override; | 41 | ~RendererOpenGL() override; |
| 42 | 42 | ||
| 43 | void SwapBuffers(const Tegra::FramebufferConfig* framebuffer) override; | 43 | void Composite(std::span<const Tegra::FramebufferConfig> framebuffers) override; |
| 44 | 44 | ||
| 45 | VideoCore::RasterizerInterface* ReadRasterizer() override { | 45 | VideoCore::RasterizerInterface* ReadRasterizer() override { |
| 46 | return &rasterizer; | 46 | return &rasterizer; |
| @@ -52,7 +52,7 @@ public: | |||
| 52 | 52 | ||
| 53 | private: | 53 | private: |
| 54 | void AddTelemetryFields(); | 54 | void AddTelemetryFields(); |
| 55 | void RenderScreenshot(const Tegra::FramebufferConfig* framebuffer); | 55 | void RenderScreenshot(std::span<const Tegra::FramebufferConfig> framebuffers); |
| 56 | 56 | ||
| 57 | Core::TelemetrySession& telemetry_session; | 57 | Core::TelemetrySession& telemetry_session; |
| 58 | Core::Frontend::EmuWindow& emu_window; | 58 | Core::Frontend::EmuWindow& emu_window; |