summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/core.cpp4
-rw-r--r--src/core/core.h10
-rw-r--r--src/core/settings.cpp8
-rw-r--r--src/video_core/renderer_base.cpp14
-rw-r--r--src/video_core/renderer_base.h15
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp7
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h5
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp26
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.h15
-rw-r--r--src/video_core/video_core.cpp7
-rw-r--r--src/video_core/video_core.h3
-rw-r--r--src/yuzu/main.cpp2
-rw-r--r--src/yuzu_cmd/yuzu.cpp2
13 files changed, 54 insertions, 64 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index b7f4b4532..be8cf9c2b 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -86,7 +86,7 @@ System::ResultStatus System::SingleStep() {
86 return RunLoop(false); 86 return RunLoop(false);
87} 87}
88 88
89System::ResultStatus System::Load(EmuWindow* emu_window, const std::string& filepath) { 89System::ResultStatus System::Load(EmuWindow& emu_window, const std::string& filepath) {
90 app_loader = Loader::GetLoader(std::make_shared<FileSys::RealVfsFile>(filepath)); 90 app_loader = Loader::GetLoader(std::make_shared<FileSys::RealVfsFile>(filepath));
91 91
92 if (!app_loader) { 92 if (!app_loader) {
@@ -163,7 +163,7 @@ Cpu& System::CpuCore(size_t core_index) {
163 return *cpu_cores[core_index]; 163 return *cpu_cores[core_index];
164} 164}
165 165
166System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) { 166System::ResultStatus System::Init(EmuWindow& emu_window, u32 system_mode) {
167 LOG_DEBUG(HW_Memory, "initialized OK"); 167 LOG_DEBUG(HW_Memory, "initialized OK");
168 168
169 CoreTiming::Init(); 169 CoreTiming::Init();
diff --git a/src/core/core.h b/src/core/core.h
index c123fe401..515923a24 100644
--- a/src/core/core.h
+++ b/src/core/core.h
@@ -81,11 +81,12 @@ public:
81 81
82 /** 82 /**
83 * Load an executable application. 83 * Load an executable application.
84 * @param emu_window Pointer to the host-system window used for video output and keyboard input. 84 * @param emu_window Reference to the host-system window used for video output and keyboard
85 * input.
85 * @param filepath String path to the executable application to load on the host file system. 86 * @param filepath String path to the executable application to load on the host file system.
86 * @returns ResultStatus code, indicating if the operation succeeded. 87 * @returns ResultStatus code, indicating if the operation succeeded.
87 */ 88 */
88 ResultStatus Load(EmuWindow* emu_window, const std::string& filepath); 89 ResultStatus Load(EmuWindow& emu_window, const std::string& filepath);
89 90
90 /** 91 /**
91 * Indicates if the emulated system is powered on (all subsystems initialized and able to run an 92 * Indicates if the emulated system is powered on (all subsystems initialized and able to run an
@@ -186,11 +187,12 @@ private:
186 187
187 /** 188 /**
188 * Initialize the emulated system. 189 * Initialize the emulated system.
189 * @param emu_window Pointer to the host-system window used for video output and keyboard input. 190 * @param emu_window Reference to the host-system window used for video output and keyboard
191 * input.
190 * @param system_mode The system mode. 192 * @param system_mode The system mode.
191 * @return ResultStatus code, indicating if the operation succeeded. 193 * @return ResultStatus code, indicating if the operation succeeded.
192 */ 194 */
193 ResultStatus Init(EmuWindow* emu_window, u32 system_mode); 195 ResultStatus Init(EmuWindow& emu_window, u32 system_mode);
194 196
195 /// AppLoader used to load the current executing application 197 /// AppLoader used to load the current executing application
196 std::unique_ptr<Loader::AppLoader> app_loader; 198 std::unique_ptr<Loader::AppLoader> app_loader;
diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index 444bcc387..79e0b347b 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -5,10 +5,9 @@
5#include "core/gdbstub/gdbstub.h" 5#include "core/gdbstub/gdbstub.h"
6#include "core/hle/service/hid/hid.h" 6#include "core/hle/service/hid/hid.h"
7#include "core/settings.h" 7#include "core/settings.h"
8#include "video_core/renderer_base.h"
8#include "video_core/video_core.h" 9#include "video_core/video_core.h"
9 10
10#include "core/frontend/emu_window.h"
11
12namespace Settings { 11namespace Settings {
13 12
14Values values = {}; 13Values values = {};
@@ -20,9 +19,8 @@ void Apply() {
20 19
21 VideoCore::g_toggle_framelimit_enabled = values.toggle_framelimit; 20 VideoCore::g_toggle_framelimit_enabled = values.toggle_framelimit;
22 21
23 if (VideoCore::g_emu_window) { 22 if (VideoCore::g_renderer) {
24 auto layout = VideoCore::g_emu_window->GetFramebufferLayout(); 23 VideoCore::g_renderer->UpdateCurrentFramebufferLayout();
25 VideoCore::g_emu_window->UpdateCurrentFramebufferLayout(layout.width, layout.height);
26 } 24 }
27 25
28 Service::HID::ReloadInputDevices(); 26 Service::HID::ReloadInputDevices();
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp
index 30075b23c..dbe3edf09 100644
--- a/src/video_core/renderer_base.cpp
+++ b/src/video_core/renderer_base.cpp
@@ -2,14 +2,22 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <atomic>
6#include <memory> 5#include <memory>
6#include "core/frontend/emu_window.h"
7#include "video_core/renderer_base.h" 7#include "video_core/renderer_base.h"
8#include "video_core/renderer_opengl/gl_rasterizer.h" 8#include "video_core/renderer_opengl/gl_rasterizer.h"
9#include "video_core/video_core.h" 9
10RendererBase::RendererBase(EmuWindow& window) : render_window{window} {}
11RendererBase::~RendererBase() = default;
12
13void RendererBase::UpdateCurrentFramebufferLayout() {
14 const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout();
15
16 render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height);
17}
10 18
11void RendererBase::RefreshRasterizerSetting() { 19void RendererBase::RefreshRasterizerSetting() {
12 if (rasterizer == nullptr) { 20 if (rasterizer == nullptr) {
13 rasterizer = std::make_unique<RasterizerOpenGL>(); 21 rasterizer = std::make_unique<RasterizerOpenGL>(render_window);
14 } 22 }
15} 23}
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h
index 89a960eaf..1cb161b7f 100644
--- a/src/video_core/renderer_base.h
+++ b/src/video_core/renderer_base.h
@@ -18,23 +18,21 @@ public:
18 /// Used to reference a framebuffer 18 /// Used to reference a framebuffer
19 enum kFramebuffer { kFramebuffer_VirtualXFB = 0, kFramebuffer_EFB, kFramebuffer_Texture }; 19 enum kFramebuffer { kFramebuffer_VirtualXFB = 0, kFramebuffer_EFB, kFramebuffer_Texture };
20 20
21 virtual ~RendererBase() {} 21 explicit RendererBase(EmuWindow& window);
22 virtual ~RendererBase();
22 23
23 /// Swap buffers (render frame) 24 /// Swap buffers (render frame)
24 virtual void SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) = 0; 25 virtual void SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) = 0;
25 26
26 /**
27 * Set the emulator window to use for renderer
28 * @param window EmuWindow handle to emulator window to use for rendering
29 */
30 virtual void SetWindow(EmuWindow* window) = 0;
31
32 /// Initialize the renderer 27 /// Initialize the renderer
33 virtual bool Init() = 0; 28 virtual bool Init() = 0;
34 29
35 /// Shutdown the renderer 30 /// Shutdown the renderer
36 virtual void ShutDown() = 0; 31 virtual void ShutDown() = 0;
37 32
33 /// Updates the framebuffer layout of the contained render window handle.
34 void UpdateCurrentFramebufferLayout();
35
38 // Getter/setter functions: 36 // Getter/setter functions:
39 // ------------------------ 37 // ------------------------
40 38
@@ -53,9 +51,8 @@ public:
53 void RefreshRasterizerSetting(); 51 void RefreshRasterizerSetting();
54 52
55protected: 53protected:
54 EmuWindow& render_window; ///< Reference to the render window handle.
56 std::unique_ptr<VideoCore::RasterizerInterface> rasterizer; 55 std::unique_ptr<VideoCore::RasterizerInterface> rasterizer;
57 f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer 56 f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer
58 int m_current_frame = 0; ///< Current frame, should be set by the renderer 57 int m_current_frame = 0; ///< Current frame, should be set by the renderer
59
60private:
61}; 58};
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index a1c47bae9..6555db5bb 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -14,7 +14,6 @@
14#include "common/logging/log.h" 14#include "common/logging/log.h"
15#include "common/math_util.h" 15#include "common/math_util.h"
16#include "common/microprofile.h" 16#include "common/microprofile.h"
17#include "common/scope_exit.h"
18#include "core/core.h" 17#include "core/core.h"
19#include "core/frontend/emu_window.h" 18#include "core/frontend/emu_window.h"
20#include "core/hle/kernel/process.h" 19#include "core/hle/kernel/process.h"
@@ -37,7 +36,7 @@ MICROPROFILE_DEFINE(OpenGL_Drawing, "OpenGL", "Drawing", MP_RGB(128, 128, 192));
37MICROPROFILE_DEFINE(OpenGL_Blits, "OpenGL", "Blits", MP_RGB(100, 100, 255)); 36MICROPROFILE_DEFINE(OpenGL_Blits, "OpenGL", "Blits", MP_RGB(100, 100, 255));
38MICROPROFILE_DEFINE(OpenGL_CacheManagement, "OpenGL", "Cache Mgmt", MP_RGB(100, 255, 100)); 37MICROPROFILE_DEFINE(OpenGL_CacheManagement, "OpenGL", "Cache Mgmt", MP_RGB(100, 255, 100));
39 38
40RasterizerOpenGL::RasterizerOpenGL() { 39RasterizerOpenGL::RasterizerOpenGL(EmuWindow& window) : emu_window{window} {
41 // Create sampler objects 40 // Create sampler objects
42 for (size_t i = 0; i < texture_samplers.size(); ++i) { 41 for (size_t i = 0; i < texture_samplers.size(); ++i) {
43 texture_samplers[i].Create(); 42 texture_samplers[i].Create();
@@ -395,7 +394,7 @@ void RasterizerOpenGL::Clear() {
395 if (clear_mask == 0) 394 if (clear_mask == 0)
396 return; 395 return;
397 396
398 ScopeAcquireGLContext acquire_context; 397 ScopeAcquireGLContext acquire_context{emu_window};
399 398
400 auto [dirty_color_surface, dirty_depth_surface] = 399 auto [dirty_color_surface, dirty_depth_surface] =
401 ConfigureFramebuffers(use_color_fb, use_depth_fb); 400 ConfigureFramebuffers(use_color_fb, use_depth_fb);
@@ -425,7 +424,7 @@ void RasterizerOpenGL::DrawArrays() {
425 MICROPROFILE_SCOPE(OpenGL_Drawing); 424 MICROPROFILE_SCOPE(OpenGL_Drawing);
426 const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs; 425 const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs;
427 426
428 ScopeAcquireGLContext acquire_context; 427 ScopeAcquireGLContext acquire_context{emu_window};
429 428
430 auto [dirty_color_surface, dirty_depth_surface] = 429 auto [dirty_color_surface, dirty_depth_surface] =
431 ConfigureFramebuffers(true, regs.zeta.Address() != 0 && regs.zeta_enable != 0); 430 ConfigureFramebuffers(true, regs.zeta.Address() != 0 && regs.zeta_enable != 0);
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index e150be58f..6d6d85cc1 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -21,11 +21,12 @@
21#include "video_core/renderer_opengl/gl_state.h" 21#include "video_core/renderer_opengl/gl_state.h"
22#include "video_core/renderer_opengl/gl_stream_buffer.h" 22#include "video_core/renderer_opengl/gl_stream_buffer.h"
23 23
24class EmuWindow;
24struct ScreenInfo; 25struct ScreenInfo;
25 26
26class RasterizerOpenGL : public VideoCore::RasterizerInterface { 27class RasterizerOpenGL : public VideoCore::RasterizerInterface {
27public: 28public:
28 RasterizerOpenGL(); 29 explicit RasterizerOpenGL(EmuWindow& renderer);
29 ~RasterizerOpenGL() override; 30 ~RasterizerOpenGL() override;
30 31
31 void DrawArrays() override; 32 void DrawArrays() override;
@@ -144,6 +145,8 @@ private:
144 145
145 RasterizerCacheOpenGL res_cache; 146 RasterizerCacheOpenGL res_cache;
146 147
148 EmuWindow& emu_window;
149
147 std::unique_ptr<GLShader::ProgramManager> shader_program_manager; 150 std::unique_ptr<GLShader::ProgramManager> shader_program_manager;
148 OGLVertexArray sw_vao; 151 OGLVertexArray sw_vao;
149 OGLVertexArray hw_vao; 152 OGLVertexArray hw_vao;
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index 7810b9147..74383c7cf 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -92,23 +92,23 @@ static std::array<GLfloat, 3 * 2> MakeOrthographicMatrix(const float width, cons
92 return matrix; 92 return matrix;
93} 93}
94 94
95ScopeAcquireGLContext::ScopeAcquireGLContext() { 95ScopeAcquireGLContext::ScopeAcquireGLContext(EmuWindow& emu_window_) : emu_window{emu_window_} {
96 if (Settings::values.use_multi_core) { 96 if (Settings::values.use_multi_core) {
97 VideoCore::g_emu_window->MakeCurrent(); 97 emu_window.MakeCurrent();
98 } 98 }
99} 99}
100ScopeAcquireGLContext::~ScopeAcquireGLContext() { 100ScopeAcquireGLContext::~ScopeAcquireGLContext() {
101 if (Settings::values.use_multi_core) { 101 if (Settings::values.use_multi_core) {
102 VideoCore::g_emu_window->DoneCurrent(); 102 emu_window.DoneCurrent();
103 } 103 }
104} 104}
105 105
106RendererOpenGL::RendererOpenGL() = default; 106RendererOpenGL::RendererOpenGL(EmuWindow& window) : RendererBase{window} {}
107RendererOpenGL::~RendererOpenGL() = default; 107RendererOpenGL::~RendererOpenGL() = default;
108 108
109/// Swap buffers (render frame) 109/// Swap buffers (render frame)
110void RendererOpenGL::SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) { 110void RendererOpenGL::SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) {
111 ScopeAcquireGLContext acquire_context; 111 ScopeAcquireGLContext acquire_context{render_window};
112 112
113 Core::System::GetInstance().perf_stats.EndSystemFrame(); 113 Core::System::GetInstance().perf_stats.EndSystemFrame();
114 114
@@ -130,10 +130,10 @@ void RendererOpenGL::SwapBuffers(boost::optional<const Tegra::FramebufferConfig&
130 // Load the framebuffer from memory, draw it to the screen, and swap buffers 130 // Load the framebuffer from memory, draw it to the screen, and swap buffers
131 LoadFBToScreenInfo(*framebuffer, screen_info); 131 LoadFBToScreenInfo(*framebuffer, screen_info);
132 DrawScreen(); 132 DrawScreen();
133 render_window->SwapBuffers(); 133 render_window.SwapBuffers();
134 } 134 }
135 135
136 render_window->PollEvents(); 136 render_window.PollEvents();
137 137
138 Core::System::GetInstance().frame_limiter.DoFrameLimiting(CoreTiming::GetGlobalTimeUs()); 138 Core::System::GetInstance().frame_limiter.DoFrameLimiting(CoreTiming::GetGlobalTimeUs());
139 Core::System::GetInstance().perf_stats.BeginSystemFrame(); 139 Core::System::GetInstance().perf_stats.BeginSystemFrame();
@@ -356,7 +356,7 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x,
356 * Draws the emulated screens to the emulator window. 356 * Draws the emulated screens to the emulator window.
357 */ 357 */
358void RendererOpenGL::DrawScreen() { 358void RendererOpenGL::DrawScreen() {
359 const auto& layout = render_window->GetFramebufferLayout(); 359 const auto& layout = render_window.GetFramebufferLayout();
360 const auto& screen = layout.screen; 360 const auto& screen = layout.screen;
361 361
362 glViewport(0, 0, layout.width, layout.height); 362 glViewport(0, 0, layout.width, layout.height);
@@ -380,14 +380,6 @@ void RendererOpenGL::DrawScreen() {
380/// Updates the framerate 380/// Updates the framerate
381void RendererOpenGL::UpdateFramerate() {} 381void RendererOpenGL::UpdateFramerate() {}
382 382
383/**
384 * Set the emulator window to use for renderer
385 * @param window EmuWindow handle to emulator window to use for rendering
386 */
387void RendererOpenGL::SetWindow(EmuWindow* window) {
388 render_window = window;
389}
390
391static const char* GetSource(GLenum source) { 383static const char* GetSource(GLenum source) {
392#define RET(s) \ 384#define RET(s) \
393 case GL_DEBUG_SOURCE_##s: \ 385 case GL_DEBUG_SOURCE_##s: \
@@ -445,7 +437,7 @@ static void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum
445 437
446/// Initialize the renderer 438/// Initialize the renderer
447bool RendererOpenGL::Init() { 439bool RendererOpenGL::Init() {
448 ScopeAcquireGLContext acquire_context; 440 ScopeAcquireGLContext acquire_context{render_window};
449 441
450 if (GLAD_GL_KHR_debug) { 442 if (GLAD_GL_KHR_debug) {
451 glEnable(GL_DEBUG_OUTPUT); 443 glEnable(GL_DEBUG_OUTPUT);
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h
index 59d92a3dc..ab7de41c8 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.h
+++ b/src/video_core/renderer_opengl/renderer_opengl.h
@@ -34,24 +34,21 @@ struct ScreenInfo {
34/// Helper class to acquire/release OpenGL context within a given scope 34/// Helper class to acquire/release OpenGL context within a given scope
35class ScopeAcquireGLContext : NonCopyable { 35class ScopeAcquireGLContext : NonCopyable {
36public: 36public:
37 ScopeAcquireGLContext(); 37 explicit ScopeAcquireGLContext(EmuWindow& window);
38 ~ScopeAcquireGLContext(); 38 ~ScopeAcquireGLContext();
39
40private:
41 EmuWindow& emu_window;
39}; 42};
40 43
41class RendererOpenGL : public RendererBase { 44class RendererOpenGL : public RendererBase {
42public: 45public:
43 RendererOpenGL(); 46 explicit RendererOpenGL(EmuWindow& window);
44 ~RendererOpenGL() override; 47 ~RendererOpenGL() override;
45 48
46 /// Swap buffers (render frame) 49 /// Swap buffers (render frame)
47 void SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) override; 50 void SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) override;
48 51
49 /**
50 * Set the emulator window to use for renderer
51 * @param window EmuWindow handle to emulator window to use for rendering
52 */
53 void SetWindow(EmuWindow* window) override;
54
55 /// Initialize the renderer 52 /// Initialize the renderer
56 bool Init() override; 53 bool Init() override;
57 54
@@ -72,8 +69,6 @@ private:
72 void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a, 69 void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a,
73 const TextureInfo& texture); 70 const TextureInfo& texture);
74 71
75 EmuWindow* render_window; ///< Handle to render window
76
77 OpenGLState state; 72 OpenGLState state;
78 73
79 // OpenGL object IDs 74 // OpenGL object IDs
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp
index 289140f31..06b13e681 100644
--- a/src/video_core/video_core.cpp
+++ b/src/video_core/video_core.cpp
@@ -13,16 +13,13 @@
13 13
14namespace VideoCore { 14namespace VideoCore {
15 15
16EmuWindow* g_emu_window = nullptr; ///< Frontend emulator window
17std::unique_ptr<RendererBase> g_renderer; ///< Renderer plugin 16std::unique_ptr<RendererBase> g_renderer; ///< Renderer plugin
18 17
19std::atomic<bool> g_toggle_framelimit_enabled; 18std::atomic<bool> g_toggle_framelimit_enabled;
20 19
21/// Initialize the video core 20/// Initialize the video core
22bool Init(EmuWindow* emu_window) { 21bool Init(EmuWindow& emu_window) {
23 g_emu_window = emu_window; 22 g_renderer = std::make_unique<RendererOpenGL>(emu_window);
24 g_renderer = std::make_unique<RendererOpenGL>();
25 g_renderer->SetWindow(g_emu_window);
26 if (g_renderer->Init()) { 23 if (g_renderer->Init()) {
27 LOG_DEBUG(Render, "initialized OK"); 24 LOG_DEBUG(Render, "initialized OK");
28 } else { 25 } else {
diff --git a/src/video_core/video_core.h b/src/video_core/video_core.h
index 37da62436..8707e9881 100644
--- a/src/video_core/video_core.h
+++ b/src/video_core/video_core.h
@@ -18,7 +18,6 @@ namespace VideoCore {
18enum class Renderer { Software, OpenGL }; 18enum class Renderer { Software, OpenGL };
19 19
20extern std::unique_ptr<RendererBase> g_renderer; ///< Renderer plugin 20extern std::unique_ptr<RendererBase> g_renderer; ///< Renderer plugin
21extern EmuWindow* g_emu_window; ///< Emu window
22 21
23// TODO: Wrap these in a user settings struct along with any other graphics settings (often set from 22// TODO: Wrap these in a user settings struct along with any other graphics settings (often set from
24// qt ui) 23// qt ui)
@@ -28,7 +27,7 @@ extern std::atomic<bool> g_toggle_framelimit_enabled;
28void Start(); 27void Start();
29 28
30/// Initialize the video core 29/// Initialize the video core
31bool Init(EmuWindow* emu_window); 30bool Init(EmuWindow& emu_window);
32 31
33/// Shutdown the video core 32/// Shutdown the video core
34void Shutdown(); 33void Shutdown();
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index be38cfa9b..341867f7b 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -402,7 +402,7 @@ bool GMainWindow::LoadROM(const QString& filename) {
402 402
403 system.SetGPUDebugContext(debug_context); 403 system.SetGPUDebugContext(debug_context);
404 404
405 const Core::System::ResultStatus result{system.Load(render_window, filename.toStdString())}; 405 const Core::System::ResultStatus result{system.Load(*render_window, filename.toStdString())};
406 406
407 render_window->DoneCurrent(); 407 render_window->DoneCurrent();
408 408
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index b5392c499..5ff6266bf 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -162,7 +162,7 @@ int main(int argc, char** argv) {
162 162
163 SCOPE_EXIT({ system.Shutdown(); }); 163 SCOPE_EXIT({ system.Shutdown(); });
164 164
165 const Core::System::ResultStatus load_result{system.Load(emu_window.get(), filepath)}; 165 const Core::System::ResultStatus load_result{system.Load(*emu_window, filepath)};
166 166
167 switch (load_result) { 167 switch (load_result) {
168 case Core::System::ResultStatus::ErrorGetLoader: 168 case Core::System::ResultStatus::ErrorGetLoader: