summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorGravatar Liam2024-01-22 12:40:50 -0500
committerGravatar Liam2024-01-31 11:27:21 -0500
commita595e9e8a7a6a742481b1cd05455d3c639095413 (patch)
tree03f8dfaec328171c42b090988e93c51e8d726eda /src/video_core/renderer_opengl
parentrenderer_opengl: implement layer stack composition (diff)
downloadyuzu-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.cpp12
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.h4
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
126RendererOpenGL::~RendererOpenGL() = default; 126RendererOpenGL::~RendererOpenGL() = default;
127 127
128void RendererOpenGL::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) { 128void 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
162void RendererOpenGL::RenderScreenshot(const Tegra::FramebufferConfig* framebuffer) { 162void 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
53private: 53private:
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;