summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2018-08-11 14:10:55 -0400
committerGravatar GitHub2018-08-11 14:10:55 -0400
commitd64303d185f86901d0f587faf0e9a65d8497169c (patch)
tree27e105a3534a2a92d2ea6468dab723cc156118fa /src
parentMerge pull request #1003 from lioncash/var (diff)
parentvideo_core; Get rid of global g_toggle_framelimit_enabled variable (diff)
downloadyuzu-d64303d185f86901d0f587faf0e9a65d8497169c.tar.gz
yuzu-d64303d185f86901d0f587faf0e9a65d8497169c.tar.xz
yuzu-d64303d185f86901d0f587faf0e9a65d8497169c.zip
Merge pull request #1016 from lioncash/video
video_core: Get rid of global variable g_toggle_framelimit_enabled
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue.h1
-rw-r--r--src/core/settings.cpp6
-rw-r--r--src/video_core/gpu.cpp10
-rw-r--r--src/video_core/gpu.h10
-rw-r--r--src/video_core/renderer_base.cpp19
-rw-r--r--src/video_core/renderer_base.h24
-rw-r--r--src/video_core/video_core.cpp2
-rw-r--r--src/video_core/video_core.h7
8 files changed, 44 insertions, 35 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h
index f86e1056c..db2e17c0c 100644
--- a/src/core/hle/service/nvflinger/buffer_queue.h
+++ b/src/core/hle/service/nvflinger/buffer_queue.h
@@ -6,6 +6,7 @@
6 6
7#include <vector> 7#include <vector>
8#include <boost/optional.hpp> 8#include <boost/optional.hpp>
9#include "common/common_funcs.h"
9#include "common/math_util.h" 10#include "common/math_util.h"
10#include "common/swap.h" 11#include "common/swap.h"
11#include "core/hle/kernel/event.h" 12#include "core/hle/kernel/event.h"
diff --git a/src/core/settings.cpp b/src/core/settings.cpp
index a4623223d..0da159559 100644
--- a/src/core/settings.cpp
+++ b/src/core/settings.cpp
@@ -7,22 +7,18 @@
7#include "core/hle/service/hid/hid.h" 7#include "core/hle/service/hid/hid.h"
8#include "core/settings.h" 8#include "core/settings.h"
9#include "video_core/renderer_base.h" 9#include "video_core/renderer_base.h"
10#include "video_core/video_core.h"
11 10
12namespace Settings { 11namespace Settings {
13 12
14Values values = {}; 13Values values = {};
15 14
16void Apply() { 15void Apply() {
17
18 GDBStub::SetServerPort(values.gdbstub_port); 16 GDBStub::SetServerPort(values.gdbstub_port);
19 GDBStub::ToggleServer(values.use_gdbstub); 17 GDBStub::ToggleServer(values.use_gdbstub);
20 18
21 VideoCore::g_toggle_framelimit_enabled = values.toggle_framelimit;
22
23 auto& system_instance = Core::System::GetInstance(); 19 auto& system_instance = Core::System::GetInstance();
24 if (system_instance.IsPoweredOn()) { 20 if (system_instance.IsPoweredOn()) {
25 system_instance.Renderer().UpdateCurrentFramebufferLayout(); 21 system_instance.Renderer().RefreshBaseSettings();
26 } 22 }
27 23
28 Service::HID::ReloadInputDevices(); 24 Service::HID::ReloadInputDevices();
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index b90937d17..ceaf86654 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -2,6 +2,7 @@
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 "common/assert.h"
5#include "video_core/engines/fermi_2d.h" 6#include "video_core/engines/fermi_2d.h"
6#include "video_core/engines/maxwell_3d.h" 7#include "video_core/engines/maxwell_3d.h"
7#include "video_core/engines/maxwell_compute.h" 8#include "video_core/engines/maxwell_compute.h"
@@ -11,6 +12,15 @@
11 12
12namespace Tegra { 13namespace Tegra {
13 14
15u32 FramebufferConfig::BytesPerPixel(PixelFormat format) {
16 switch (format) {
17 case PixelFormat::ABGR8:
18 return 4;
19 }
20
21 UNREACHABLE();
22}
23
14GPU::GPU(VideoCore::RasterizerInterface& rasterizer) { 24GPU::GPU(VideoCore::RasterizerInterface& rasterizer) {
15 memory_manager = std::make_unique<MemoryManager>(); 25 memory_manager = std::make_unique<MemoryManager>();
16 maxwell_3d = std::make_unique<Engines::Maxwell3D>(rasterizer, *memory_manager); 26 maxwell_3d = std::make_unique<Engines::Maxwell3D>(rasterizer, *memory_manager);
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index 0164c747a..b57312b3b 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -6,7 +6,6 @@
6 6
7#include <memory> 7#include <memory>
8#include <unordered_map> 8#include <unordered_map>
9#include <vector>
10#include "common/common_types.h" 9#include "common/common_types.h"
11#include "core/hle/service/nvflinger/buffer_queue.h" 10#include "core/hle/service/nvflinger/buffer_queue.h"
12#include "video_core/memory_manager.h" 11#include "video_core/memory_manager.h"
@@ -72,14 +71,7 @@ struct FramebufferConfig {
72 /** 71 /**
73 * Returns the number of bytes per pixel. 72 * Returns the number of bytes per pixel.
74 */ 73 */
75 static u32 BytesPerPixel(PixelFormat format) { 74 static u32 BytesPerPixel(PixelFormat format);
76 switch (format) {
77 case PixelFormat::ABGR8:
78 return 4;
79 }
80
81 UNREACHABLE();
82 }
83 75
84 VAddr address; 76 VAddr address;
85 u32 offset; 77 u32 offset;
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp
index 3ca350243..e87016429 100644
--- a/src/video_core/renderer_base.cpp
+++ b/src/video_core/renderer_base.cpp
@@ -4,18 +4,23 @@
4 4
5#include <memory> 5#include <memory>
6#include "core/frontend/emu_window.h" 6#include "core/frontend/emu_window.h"
7#include "core/settings.h"
7#include "video_core/renderer_base.h" 8#include "video_core/renderer_base.h"
8#include "video_core/renderer_opengl/gl_rasterizer.h" 9#include "video_core/renderer_opengl/gl_rasterizer.h"
9 10
10namespace VideoCore { 11namespace VideoCore {
11 12
12RendererBase::RendererBase(EmuWindow& window) : render_window{window} {} 13RendererBase::RendererBase(EmuWindow& window) : render_window{window} {
14 RefreshBaseSettings();
15}
16
13RendererBase::~RendererBase() = default; 17RendererBase::~RendererBase() = default;
14 18
15void RendererBase::UpdateCurrentFramebufferLayout() { 19void RendererBase::RefreshBaseSettings() {
16 const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout(); 20 RefreshRasterizerSetting();
21 UpdateCurrentFramebufferLayout();
17 22
18 render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); 23 renderer_settings.use_framelimiter = Settings::values.toggle_framelimit;
19} 24}
20 25
21void RendererBase::RefreshRasterizerSetting() { 26void RendererBase::RefreshRasterizerSetting() {
@@ -24,4 +29,10 @@ void RendererBase::RefreshRasterizerSetting() {
24 } 29 }
25} 30}
26 31
32void RendererBase::UpdateCurrentFramebufferLayout() {
33 const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout();
34
35 render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height);
36}
37
27} // namespace VideoCore 38} // namespace VideoCore
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h
index 235de23a1..fd8c47592 100644
--- a/src/video_core/renderer_base.h
+++ b/src/video_core/renderer_base.h
@@ -4,9 +4,9 @@
4 4
5#pragma once 5#pragma once
6 6
7#include <atomic>
7#include <memory> 8#include <memory>
8#include <boost/optional.hpp> 9#include <boost/optional.hpp>
9#include "common/assert.h"
10#include "common/common_types.h" 10#include "common/common_types.h"
11#include "video_core/gpu.h" 11#include "video_core/gpu.h"
12#include "video_core/rasterizer_interface.h" 12#include "video_core/rasterizer_interface.h"
@@ -15,11 +15,12 @@ class EmuWindow;
15 15
16namespace VideoCore { 16namespace VideoCore {
17 17
18struct RendererSettings {
19 std::atomic_bool use_framelimiter{false};
20};
21
18class RendererBase : NonCopyable { 22class RendererBase : NonCopyable {
19public: 23public:
20 /// Used to reference a framebuffer
21 enum kFramebuffer { kFramebuffer_VirtualXFB = 0, kFramebuffer_EFB, kFramebuffer_Texture };
22
23 explicit RendererBase(EmuWindow& window); 24 explicit RendererBase(EmuWindow& window);
24 virtual ~RendererBase(); 25 virtual ~RendererBase();
25 26
@@ -32,9 +33,6 @@ public:
32 /// Shutdown the renderer 33 /// Shutdown the renderer
33 virtual void ShutDown() = 0; 34 virtual void ShutDown() = 0;
34 35
35 /// Updates the framebuffer layout of the contained render window handle.
36 void UpdateCurrentFramebufferLayout();
37
38 // Getter/setter functions: 36 // Getter/setter functions:
39 // ------------------------ 37 // ------------------------
40 38
@@ -54,13 +52,23 @@ public:
54 return *rasterizer; 52 return *rasterizer;
55 } 53 }
56 54
57 void RefreshRasterizerSetting(); 55 /// Refreshes the settings common to all renderers
56 void RefreshBaseSettings();
58 57
59protected: 58protected:
59 /// Refreshes settings specific to the rasterizer.
60 void RefreshRasterizerSetting();
61
60 EmuWindow& render_window; ///< Reference to the render window handle. 62 EmuWindow& render_window; ///< Reference to the render window handle.
61 std::unique_ptr<RasterizerInterface> rasterizer; 63 std::unique_ptr<RasterizerInterface> rasterizer;
62 f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer 64 f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer
63 int m_current_frame = 0; ///< Current frame, should be set by the renderer 65 int m_current_frame = 0; ///< Current frame, should be set by the renderer
66
67 RendererSettings renderer_settings;
68
69private:
70 /// Updates the framebuffer layout of the contained render window handle.
71 void UpdateCurrentFramebufferLayout();
64}; 72};
65 73
66} // namespace VideoCore 74} // namespace VideoCore
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp
index 5085ef96b..1e686b89e 100644
--- a/src/video_core/video_core.cpp
+++ b/src/video_core/video_core.cpp
@@ -9,8 +9,6 @@
9 9
10namespace VideoCore { 10namespace VideoCore {
11 11
12std::atomic<bool> g_toggle_framelimit_enabled;
13
14std::unique_ptr<RendererBase> CreateRenderer(EmuWindow& emu_window) { 12std::unique_ptr<RendererBase> CreateRenderer(EmuWindow& emu_window) {
15 return std::make_unique<RendererOpenGL>(emu_window); 13 return std::make_unique<RendererOpenGL>(emu_window);
16} 14}
diff --git a/src/video_core/video_core.h b/src/video_core/video_core.h
index 7c01c0b8d..2dc07540f 100644
--- a/src/video_core/video_core.h
+++ b/src/video_core/video_core.h
@@ -4,7 +4,6 @@
4 4
5#pragma once 5#pragma once
6 6
7#include <atomic>
8#include <memory> 7#include <memory>
9 8
10class EmuWindow; 9class EmuWindow;
@@ -13,12 +12,6 @@ namespace VideoCore {
13 12
14class RendererBase; 13class RendererBase;
15 14
16enum class Renderer { Software, OpenGL };
17
18// TODO: Wrap these in a user settings struct along with any other graphics settings (often set from
19// qt ui)
20extern std::atomic<bool> g_toggle_framelimit_enabled;
21
22/** 15/**
23 * Creates a renderer instance. 16 * Creates a renderer instance.
24 * 17 *