mirror of
https://github.com/yuzu-emu/yuzu-android
synced 2025-08-12 13:32:32 -07:00
nvnflinger/gpu: implement layer stack composition
This commit is contained in:
@@ -125,15 +125,15 @@ RendererOpenGL::RendererOpenGL(Core::TelemetrySession& telemetry_session_,
|
||||
|
||||
RendererOpenGL::~RendererOpenGL() = default;
|
||||
|
||||
void RendererOpenGL::SwapBuffers(const Tegra::FramebufferConfig* framebuffer) {
|
||||
if (!framebuffer) {
|
||||
void RendererOpenGL::Composite(std::span<const Tegra::FramebufferConfig> framebuffers) {
|
||||
if (framebuffers.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
RenderScreenshot(framebuffer);
|
||||
RenderScreenshot(framebuffers);
|
||||
|
||||
state_tracker.BindFramebuffer(0);
|
||||
blit_screen->DrawScreen(std::span(framebuffer, 1), emu_window.GetFramebufferLayout());
|
||||
blit_screen->DrawScreen(framebuffers, emu_window.GetFramebufferLayout());
|
||||
|
||||
++m_current_frame;
|
||||
|
||||
@@ -159,7 +159,7 @@ void RendererOpenGL::AddTelemetryFields() {
|
||||
telemetry_session.AddField(user_system, "GPU_OpenGL_Version", std::string(gl_version));
|
||||
}
|
||||
|
||||
void RendererOpenGL::RenderScreenshot(const Tegra::FramebufferConfig* framebuffer) {
|
||||
void RendererOpenGL::RenderScreenshot(std::span<const Tegra::FramebufferConfig> framebuffers) {
|
||||
if (!renderer_settings.screenshot_requested) {
|
||||
return;
|
||||
}
|
||||
@@ -181,7 +181,7 @@ void RendererOpenGL::RenderScreenshot(const Tegra::FramebufferConfig* framebuffe
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_SRGB8, layout.width, layout.height);
|
||||
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, renderbuffer);
|
||||
|
||||
blit_screen->DrawScreen(std::span(framebuffer, 1), layout);
|
||||
blit_screen->DrawScreen(framebuffers, layout);
|
||||
|
||||
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
|
||||
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
|
||||
|
@@ -40,7 +40,7 @@ public:
|
||||
std::unique_ptr<Core::Frontend::GraphicsContext> context_);
|
||||
~RendererOpenGL() override;
|
||||
|
||||
void SwapBuffers(const Tegra::FramebufferConfig* framebuffer) override;
|
||||
void Composite(std::span<const Tegra::FramebufferConfig> framebuffers) override;
|
||||
|
||||
VideoCore::RasterizerInterface* ReadRasterizer() override {
|
||||
return &rasterizer;
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
|
||||
private:
|
||||
void AddTelemetryFields();
|
||||
void RenderScreenshot(const Tegra::FramebufferConfig* framebuffer);
|
||||
void RenderScreenshot(std::span<const Tegra::FramebufferConfig> framebuffers);
|
||||
|
||||
Core::TelemetrySession& telemetry_session;
|
||||
Core::Frontend::EmuWindow& emu_window;
|
||||
|
Reference in New Issue
Block a user