summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/CMakeLists.txt8
-rw-r--r--src/core/hle/service/am/applet_oe.cpp2
-rw-r--r--src/core/hle/service/audio/audio.cpp16
-rw-r--r--src/core/hle/service/audio/audio.h16
-rw-r--r--src/core/hle/service/audio/audout_u.cpp26
-rw-r--r--src/core/hle/service/audio/audout_u.h23
-rw-r--r--src/core/hle/service/hid/hid.cpp61
-rw-r--r--src/core/hle/service/hid/hid.h13
-rw-r--r--src/core/hle/service/lm/lm.cpp2
-rw-r--r--src/core/hle/service/service.cpp12
-rw-r--r--src/core/hle/service/time/time.cpp16
-rw-r--r--src/core/hle/service/time/time.h16
-rw-r--r--src/core/hle/service/time/time_s.cpp58
-rw-r--r--src/core/hle/service/time/time_s.h23
-rw-r--r--src/core/hle/service/vi/vi.cpp5
-rw-r--r--src/video_core/renderer_base.h3
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp32
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.h12
18 files changed, 305 insertions, 39 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 021e2f152..f5c92a5aa 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -41,6 +41,8 @@ set(SRCS
hle/service/am/applet_oe.cpp
hle/service/aoc/aoc_u.cpp
hle/service/apm/apm.cpp
+ hle/service/audio/audio.cpp
+ hle/service/audio/audout_u.cpp
hle/service/hid/hid.cpp
hle/service/lm/lm.cpp
hle/service/nvdrv/devices/nvdisp_disp0.cpp
@@ -53,6 +55,8 @@ set(SRCS
hle/service/service.cpp
hle/service/sm/controller.cpp
hle/service/sm/sm.cpp
+ hle/service/time/time.cpp
+ hle/service/time/time_s.cpp
hle/service/vi/vi.cpp
hle/service/vi/vi_m.cpp
hle/shared_page.cpp
@@ -124,6 +128,8 @@ set(HEADERS
hle/service/am/applet_oe.h
hle/service/aoc/aoc_u.h
hle/service/apm/apm.h
+ hle/service/audio/audio.h
+ hle/service/audio/audout_u.h
hle/service/hid/hid.h
hle/service/lm/lm.h
hle/service/nvdrv/devices/nvdevice.h
@@ -137,6 +143,8 @@ set(HEADERS
hle/service/service.h
hle/service/sm/controller.h
hle/service/sm/sm.h
+ hle/service/time/time.h
+ hle/service/time/time_s.h
hle/service/vi/vi.h
hle/service/vi/vi_m.h
hle/shared_page.h
diff --git a/src/core/hle/service/am/applet_oe.cpp b/src/core/hle/service/am/applet_oe.cpp
index e2bb581ff..f3d66ea96 100644
--- a/src/core/hle/service/am/applet_oe.cpp
+++ b/src/core/hle/service/am/applet_oe.cpp
@@ -81,7 +81,7 @@ private:
void ReceiveMessage(Kernel::HLERequestContext& ctx) {
IPC::RequestBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS);
- rb.Push<u32>(1);
+ rb.Push<u32>(15);
LOG_WARNING(Service, "(STUBBED) called");
}
diff --git a/src/core/hle/service/audio/audio.cpp b/src/core/hle/service/audio/audio.cpp
new file mode 100644
index 000000000..2b4c6c5d0
--- /dev/null
+++ b/src/core/hle/service/audio/audio.cpp
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/audio/audio.h"
+#include "core/hle/service/audio/audout_u.h"
+
+namespace Service {
+namespace Audio {
+
+void InstallInterfaces(SM::ServiceManager& service_manager) {
+ std::make_shared<AudOutU>()->InstallAsService(service_manager);
+}
+
+} // namespace Audio
+} // namespace Service
diff --git a/src/core/hle/service/audio/audio.h b/src/core/hle/service/audio/audio.h
new file mode 100644
index 000000000..cbd56b2a8
--- /dev/null
+++ b/src/core/hle/service/audio/audio.h
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Audio {
+
+/// Registers all Audio services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& service_manager);
+
+} // namespace Audio
+} // namespace Service
diff --git a/src/core/hle/service/audio/audout_u.cpp b/src/core/hle/service/audio/audout_u.cpp
new file mode 100644
index 000000000..c028262c6
--- /dev/null
+++ b/src/core/hle/service/audio/audout_u.cpp
@@ -0,0 +1,26 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/logging/log.h"
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/service/audio/audout_u.h"
+
+namespace Service {
+namespace Audio {
+
+void AudOutU::ListAudioOuts(Kernel::HLERequestContext& ctx) {
+ LOG_WARNING(Service, "(STUBBED) called");
+ IPC::RequestBuilder rb{ctx, 2};
+ rb.Push(RESULT_SUCCESS);
+}
+
+AudOutU::AudOutU() : ServiceFramework("audout:u") {
+ static const FunctionInfo functions[] = {
+ {0x00000000, &AudOutU::ListAudioOuts, "ListAudioOuts"},
+ };
+ RegisterHandlers(functions);
+}
+
+} // namespace Audio
+} // namespace Service
diff --git a/src/core/hle/service/audio/audout_u.h b/src/core/hle/service/audio/audout_u.h
new file mode 100644
index 000000000..42680af94
--- /dev/null
+++ b/src/core/hle/service/audio/audout_u.h
@@ -0,0 +1,23 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/hle_ipc.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Audio {
+
+class AudOutU final : public ServiceFramework<AudOutU> {
+public:
+ AudOutU();
+ ~AudOutU() = default;
+
+private:
+ void ListAudioOuts(Kernel::HLERequestContext& ctx);
+};
+
+} // namespace Audio
+} // namespace Service
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index f838713a3..3f74aed06 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -1,19 +1,74 @@
-// Copyright 2015 Citra Emulator Project
+// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "common/logging/log.h"
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/kernel/client_port.h"
+#include "core/hle/kernel/client_session.h"
+#include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/hid/hid.h"
#include "core/hle/service/service.h"
namespace Service {
namespace HID {
-void Init() {}
+class IAppletResource final : public ServiceFramework<IAppletResource> {
+public:
+ IAppletResource() : ServiceFramework("IAppletResource") {
+ static const FunctionInfo functions[] = {
+ {0, &IAppletResource::GetSharedMemoryHandle, "GetSharedMemoryHandle"},
+ };
+ RegisterHandlers(functions);
-void Shutdown() {}
+ shared_mem = Kernel::SharedMemory::Create(
+ nullptr, 0x40000, Kernel::MemoryPermission::ReadWrite, Kernel::MemoryPermission::Read,
+ 0, Kernel::MemoryRegion::BASE, "HID:SharedMemory");
+ }
+
+private:
+ void GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) {
+ IPC::RequestBuilder rb{ctx, 2, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushCopyObjects(shared_mem);
+ LOG_DEBUG(Service, "called");
+ }
+
+ // Handle to shared memory region designated to HID service
+ Kernel::SharedPtr<Kernel::SharedMemory> shared_mem;
+};
+
+class Hid final : public ServiceFramework<Hid> {
+public:
+ Hid() : ServiceFramework("hid") {
+ static const FunctionInfo functions[] = {
+ {0x00000000, &Hid::CreateAppletResource, "CreateAppletResource"},
+ };
+ RegisterHandlers(functions);
+ }
+ ~Hid() = default;
+
+private:
+ void CreateAppletResource(Kernel::HLERequestContext& ctx) {
+ auto client_port = std::make_shared<IAppletResource>()->CreatePort();
+ auto session = client_port->Connect();
+ if (session.Succeeded()) {
+ LOG_DEBUG(Service, "called, initialized IAppletResource -> session=%u",
+ (*session)->GetObjectId());
+ IPC::RequestBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushMoveObjects(std::move(session).Unwrap());
+ } else {
+ UNIMPLEMENTED();
+ }
+ }
+};
void ReloadInputDevices() {}
+void InstallInterfaces(SM::ServiceManager& service_manager) {
+ std::make_shared<Hid>()->InstallAsService(service_manager);
+}
+
} // namespace HID
} // namespace Service
diff --git a/src/core/hle/service/hid/hid.h b/src/core/hle/service/hid/hid.h
index a1d227dfe..f7621f62d 100644
--- a/src/core/hle/service/hid/hid.h
+++ b/src/core/hle/service/hid/hid.h
@@ -1,20 +1,19 @@
-// Copyright 2015 Citra Emulator Project
+// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
+#include "core/hle/service/service.h"
+
namespace Service {
namespace HID {
-/// Initialize HID service
-void Init();
-
-/// Shutdown HID service
-void Shutdown();
-
/// Reload input devices. Used when input configuration changed
void ReloadInputDevices();
+/// Registers all HID services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& service_manager);
+
} // namespace HID
} // namespace Service
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp
index ca429e15f..2d0d2fb65 100644
--- a/src/core/hle/service/lm/lm.cpp
+++ b/src/core/hle/service/lm/lm.cpp
@@ -144,7 +144,7 @@ void LM::Initialize(Kernel::HLERequestContext& ctx) {
if (session.Succeeded()) {
LOG_DEBUG(Service_SM, "called, initialized logger -> session=%u",
(*session)->GetObjectId());
- IPC::RequestBuilder rb{ctx, 1, 0, 1};
+ IPC::RequestBuilder rb{ctx, 2, 0, 1};
rb.Push(RESULT_SUCCESS);
rb.PushMoveObjects(std::move(session).Unwrap());
registered_loggers.emplace_back(std::move(client_port));
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index b82df6f35..02d434660 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -17,6 +17,7 @@
#include "core/hle/service/am/am.h"
#include "core/hle/service/aoc/aoc_u.h"
#include "core/hle/service/apm/apm.h"
+#include "core/hle/service/audio/audio.h"
#include "core/hle/service/hid/hid.h"
#include "core/hle/service/lm/lm.h"
#include "core/hle/service/nvdrv/nvdrv.h"
@@ -24,6 +25,7 @@
#include "core/hle/service/service.h"
#include "core/hle/service/sm/controller.h"
#include "core/hle/service/sm/sm.h"
+#include "core/hle/service/time/time.h"
#include "core/hle/service/vi/vi.h"
using Kernel::ClientPort;
@@ -78,7 +80,8 @@ Kernel::SharedPtr<Kernel::ClientPort> ServiceFrameworkBase::CreatePort() {
ASSERT(port == nullptr);
Kernel::SharedPtr<Kernel::ServerPort> server_port;
Kernel::SharedPtr<Kernel::ClientPort> client_port;
- std::tie(server_port, client_port) = Kernel::ServerPort::CreatePortPair(max_sessions, service_name);
+ std::tie(server_port, client_port) =
+ Kernel::ServerPort::CreatePortPair(max_sessions, service_name);
port = MakeResult<Kernel::SharedPtr<Kernel::ServerPort>>(std::move(server_port)).Unwrap();
port->SetHleHandler(shared_from_this());
return client_port;
@@ -164,20 +167,19 @@ void Init() {
AM::InstallInterfaces(*SM::g_service_manager);
AOC::InstallInterfaces(*SM::g_service_manager);
APM::InstallInterfaces(*SM::g_service_manager);
+ Audio::InstallInterfaces(*SM::g_service_manager);
+ HID::InstallInterfaces(*SM::g_service_manager);
LM::InstallInterfaces(*SM::g_service_manager);
NVDRV::InstallInterfaces(*SM::g_service_manager);
PCTL::InstallInterfaces(*SM::g_service_manager);
+ Time::InstallInterfaces(*SM::g_service_manager);
VI::InstallInterfaces(*SM::g_service_manager);
- HID::Init();
-
LOG_DEBUG(Service, "initialized OK");
}
/// Shutdown ServiceManager
void Shutdown() {
- HID::Shutdown();
-
SM::g_service_manager = nullptr;
g_kernel_named_ports.clear();
LOG_DEBUG(Service, "shutdown OK");
diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp
new file mode 100644
index 000000000..e3d58aa60
--- /dev/null
+++ b/src/core/hle/service/time/time.cpp
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/time/time.h"
+#include "core/hle/service/time/time_s.h"
+
+namespace Service {
+namespace Time {
+
+void InstallInterfaces(SM::ServiceManager& service_manager) {
+ std::make_shared<TimeS>()->InstallAsService(service_manager);
+}
+
+} // namespace Time
+} // namespace Service
diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h
new file mode 100644
index 000000000..7d0803e24
--- /dev/null
+++ b/src/core/hle/service/time/time.h
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Time {
+
+/// Registers all Time services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& service_manager);
+
+} // namespace Time
+} // namespace Service
diff --git a/src/core/hle/service/time/time_s.cpp b/src/core/hle/service/time/time_s.cpp
new file mode 100644
index 000000000..6b0597d8e
--- /dev/null
+++ b/src/core/hle/service/time/time_s.cpp
@@ -0,0 +1,58 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include <chrono>
+#include "common/logging/log.h"
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/kernel/client_port.h"
+#include "core/hle/kernel/client_session.h"
+#include "core/hle/service/time/time_s.h"
+
+namespace Service {
+namespace Time {
+
+class ISystemClock final : public ServiceFramework<ISystemClock> {
+public:
+ ISystemClock() : ServiceFramework("ISystemClock") {
+ static const FunctionInfo functions[] = {
+ {0, &ISystemClock::GetCurrentTime, "GetCurrentTime"},
+ };
+ RegisterHandlers(functions);
+ }
+
+private:
+ void GetCurrentTime(Kernel::HLERequestContext& ctx) {
+ const s64 time_since_epoch{std::chrono::duration_cast<std::chrono::milliseconds>(
+ std::chrono::system_clock::now().time_since_epoch())
+ .count()};
+ IPC::RequestBuilder rb{ctx, 4};
+ rb.Push(RESULT_SUCCESS);
+ rb.Push<u64>(time_since_epoch);
+ LOG_DEBUG(Service, "called");
+ }
+};
+
+void TimeS::GetStandardUserSystemClock(Kernel::HLERequestContext& ctx) {
+ auto client_port = std::make_shared<ISystemClock>()->CreatePort();
+ auto session = client_port->Connect();
+ if (session.Succeeded()) {
+ LOG_DEBUG(Service, "called, initialized ISystemClock -> session=%u",
+ (*session)->GetObjectId());
+ IPC::RequestBuilder rb{ctx, 2, 0, 1};
+ rb.Push(RESULT_SUCCESS);
+ rb.PushMoveObjects(std::move(session).Unwrap());
+ } else {
+ UNIMPLEMENTED();
+ }
+}
+
+TimeS::TimeS() : ServiceFramework("time:s") {
+ static const FunctionInfo functions[] = {
+ {0x00000000, &TimeS::GetStandardUserSystemClock, "GetStandardUserSystemClock"},
+ };
+ RegisterHandlers(functions);
+}
+
+} // namespace Time
+} // namespace Service
diff --git a/src/core/hle/service/time/time_s.h b/src/core/hle/service/time/time_s.h
new file mode 100644
index 000000000..073227910
--- /dev/null
+++ b/src/core/hle/service/time/time_s.h
@@ -0,0 +1,23 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/hle_ipc.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Time {
+
+class TimeS final : public ServiceFramework<TimeS> {
+public:
+ TimeS();
+ ~TimeS() = default;
+
+private:
+ void GetStandardUserSystemClock(Kernel::HLERequestContext& ctx);
+};
+
+} // namespace Time
+} // namespace Service
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index d3b63949e..b35a7a377 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -12,6 +12,8 @@
#include "core/hle/service/nvdrv/nvdrv_a.h"
#include "core/hle/service/vi/vi.h"
#include "core/hle/service/vi/vi_m.h"
+#include "video_core/renderer_base.h"
+#include "video_core/video_core.h"
namespace Service {
namespace VI {
@@ -743,7 +745,8 @@ void NVFlinger::Compose() {
auto buffer = buffer_queue->AcquireBuffer();
if (buffer == boost::none) {
- // There was no queued buffer to draw.
+ // There was no queued buffer to draw, render previous frame
+ VideoCore::g_renderer->SwapBuffers({});
continue;
}
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h
index d15db6c8c..28893b181 100644
--- a/src/video_core/renderer_base.h
+++ b/src/video_core/renderer_base.h
@@ -5,6 +5,7 @@
#pragma once
#include <memory>
+#include <boost/optional.hpp>
#include "common/assert.h"
#include "common/common_types.h"
@@ -47,7 +48,7 @@ public:
virtual ~RendererBase() {}
/// Swap buffers (render frame)
- virtual void SwapBuffers(const FramebufferInfo& framebuffer_info) = 0;
+ virtual void SwapBuffers(boost::optional<const FramebufferInfo&> framebuffer_info) = 0;
/**
* Set the emulator window to use for renderer
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index a5df91604..50396b5c1 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -4,8 +4,8 @@
#include <algorithm>
#include <cstddef>
-#include <cstring>
#include <cstdlib>
+#include <cstring>
#include <memory>
#include <glad/glad.h>
#include "common/assert.h"
@@ -98,20 +98,23 @@ RendererOpenGL::RendererOpenGL() = default;
RendererOpenGL::~RendererOpenGL() = default;
/// Swap buffers (render frame)
-void RendererOpenGL::SwapBuffers(const FramebufferInfo& framebuffer_info) {
+void RendererOpenGL::SwapBuffers(boost::optional<const FramebufferInfo&> framebuffer_info) {
// Maintain the rasterizer's state as a priority
OpenGLState prev_state = OpenGLState::GetCurState();
state.Apply();
- if (screen_info.texture.width != (GLsizei)framebuffer_info.width ||
- screen_info.texture.height != (GLsizei)framebuffer_info.height ||
- screen_info.texture.pixel_format != framebuffer_info.pixel_format) {
- // Reallocate texture if the framebuffer size has changed.
- // This is expected to not happen very often and hence should not be a
- // performance problem.
- ConfigureFramebufferTexture(screen_info.texture, framebuffer_info);
+ if (framebuffer_info != boost::none) {
+ // If framebuffer_info is provided, reload it from memory to a texture
+ if (screen_info.texture.width != (GLsizei)framebuffer_info->width ||
+ screen_info.texture.height != (GLsizei)framebuffer_info->height ||
+ screen_info.texture.pixel_format != framebuffer_info->pixel_format) {
+ // Reallocate texture if the framebuffer size has changed.
+ // This is expected to not happen very often and hence should not be a
+ // performance problem.
+ ConfigureFramebufferTexture(screen_info.texture, *framebuffer_info);
+ }
+ LoadFBToScreenInfo(*framebuffer_info, screen_info);
}
- LoadFBToScreenInfo(framebuffer_info, screen_info);
DrawScreens();
@@ -290,16 +293,16 @@ void RendererOpenGL::LoadFBToScreenInfo(const FramebufferInfo& framebuffer_info,
* Fills active OpenGL texture with the given RGB color. Since the color is solid, the texture can
* be 1x1 but will stretch across whatever it's rendered on.
*/
-void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b,
+void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a,
const TextureInfo& texture) {
state.texture_units[0].texture_2d = texture.resource.handle;
state.Apply();
glActiveTexture(GL_TEXTURE0);
- u8 framebuffer_data[3] = {color_r, color_g, color_b};
+ u8 framebuffer_data[4] = {color_a, color_b, color_g, color_r};
// Update existing texture
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, framebuffer_data);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, framebuffer_data);
state.texture_units[0].texture_2d = 0;
state.Apply();
@@ -361,6 +364,9 @@ void RendererOpenGL::InitOpenGLObjects() {
state.texture_units[0].texture_2d = 0;
state.Apply();
+
+ // Clear screen to black
+ LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture);
}
void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture,
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h
index dc21d7a38..dd01e1b1a 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.h
+++ b/src/video_core/renderer_opengl/renderer_opengl.h
@@ -37,7 +37,7 @@ public:
~RendererOpenGL() override;
/// Swap buffers (render frame)
- void SwapBuffers(const FramebufferInfo& framebuffer_info) override;
+ void SwapBuffers(boost::optional<const FramebufferInfo&> framebuffer_info) override;
/**
* Set the emulator window to use for renderer
@@ -53,17 +53,15 @@ public:
private:
void InitOpenGLObjects();
- void ConfigureFramebufferTexture(TextureInfo& texture,
- const FramebufferInfo& framebuffer_info);
+ void ConfigureFramebufferTexture(TextureInfo& texture, const FramebufferInfo& framebuffer_info);
void DrawScreens();
void DrawSingleScreen(const ScreenInfo& screen_info, float x, float y, float w, float h);
void UpdateFramerate();
// Loads framebuffer from emulated memory into the display information structure
- void LoadFBToScreenInfo(const FramebufferInfo& framebuffer_info,
- ScreenInfo& screen_info);
- // Fills active OpenGL texture with the given RGB color.
- void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, const TextureInfo& texture);
+ void LoadFBToScreenInfo(const FramebufferInfo& framebuffer_info, ScreenInfo& screen_info);
+ // Fills active OpenGL texture with the given RGBA color.
+ void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a, const TextureInfo& texture);
EmuWindow* render_window; ///< Handle to render window